/* Ċ Ġ* ĠCopyright Ġ 1 9 9 9 - 2 0 1 7 ĠAlibaba ĠGroup . Ċ Ġ* Ċ Ġ* ĠLicensed Ġunder Ġthe ĠApache ĠLicense , ĠVersion Ġ 2 . 0 Ġ( the Ġ" License "); Ċ Ġ* Ġyou Ġmay Ġnot Ġuse Ġthis Ġfile Ġexcept Ġin Ġcompliance Ġwith Ġthe ĠLicense . Ċ Ġ* ĠYou Ġmay Ġobtain Ġa Ġcopy Ġof Ġthe ĠLicense Ġat Ċ Ġ* Ċ Ġ* ĠĠĠĠĠ Ġhttp :// www . apache . org / licenses / LICENSE - 2 . 0 Ċ Ġ* Ċ Ġ* ĠUnless Ġrequired Ġby Ġapplicable Ġlaw Ġor Ġagreed Ġto Ġin Ġwriting , Ġsoftware Ċ Ġ* Ġdistributed Ġunder Ġthe ĠLicense Ġis Ġdistributed Ġon Ġan Ġ" AS ĠIS " ĠBASIS , Ċ Ġ* ĠWITHOUT ĠWARRANTIES ĠOR ĠCONDITIONS ĠOF ĠANY ĠKIND , Ġeither Ġexpress Ġor Ġimplied . Ċ Ġ* ĠSee Ġthe ĠLicense Ġfor Ġthe Ġspecific Ġlanguage Ġgoverning Ġpermissions Ġand Ċ Ġ* Ġlimitations Ġunder Ġthe ĠLicense . Ċ Ġ*/ Ċ package Ġcom . alibaba . p 3 c . idea . quick fix Ċ Ċ import Ġcom . intellij . code Inspection . Local Quick Fix Ċ import Ġcom . intellij . openapi . action System . Action Manager Ċ import Ġcom . intellij . openapi . action System . An ActionEvent Ċ import Ġcom . intellij . openapi . action System . Common Data Keys Ċ import Ġcom . intellij . openapi . application . Application Manager Ċ import Ġcom . intellij . openapi . file Editor . File Editor Manager Ċ import Ġcom . intellij . openapi . project . Project Ċ import Ġcom . intellij . psi . Java Psi Facade Ċ import Ġcom . intellij . psi . Psi Document Manager Ċ import Ġcom . intellij . psi . Psi File Ċ import Ġcom . intellij . psi . Psi Identifier Ċ import Ġcom . intellij . psi . Psi Local Variable Ċ import Ġcom . intellij . psi . Psi Member Ċ import Ġcom . intellij . psi . Psi Parameter Ċ import Ġjava . lang . reflect . Method Ċ Ċ /** Ċ Ġ* Ċ Ġ* Ċ Ġ* Ġ@ author Ġca ik ang Ċ Ġ* Ġ@ date Ġ 2 0 1 7 / 0 2 / 2 7 Ċ Ġ*/ Ċ interface ĠAli Quick Fix Ġ: ĠLocal Quick Fix Ġ{ ĊĊĠĠĠ Ġval Ġrule Name : ĠString ĊĠĠĠ Ġval Ġonly On Th Fly : ĠBoolean ĊĊĠĠĠ Ġoverride Ġfun Ġget Family Name (): ĠString Ġ{ ĊĠĠĠĠĠĠĠ Ġreturn ĠgroupName ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġcompanion Ġobject Ġ{ ĊĠĠĠĠĠĠĠ Ġconst Ġval ĠgroupName Ġ= Ġ" Ali ĠQuick Fix " ĊĊĠĠĠĠĠĠĠ Ġfun Ġdo Quick Fix ( ĊĠĠĠĠĠĠĠĠĠĠĠ Ġnew Identifier : ĠString , ĊĠĠĠĠĠĠĠĠĠĠĠ Ġproject : ĠProject , ĊĠĠĠĠĠĠĠĠĠĠĠ Ġpsi Identifier : ĠPsi Identifier ĊĠĠĠĠĠĠĠ Ġ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġoffset Ġ= Ġpsi Identifier . text Offset ĊĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġcannot Fix Ġ= Ġpsi Identifier . parent Ġ! is ĠPsi Member ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ&& Ġ!( psi Identifier . parent Ġis ĠPsi Local Variable Ġ|| Ġpsi Identifier . parent Ġis ĠPsi Parameter ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġif Ġ( cannot Fix ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġreturn ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġeditor Ġ= ĠFile Editor Manager . getInstance ( project ). selected Text Editor Ġ?: Ġreturn ĊĠĠĠĠĠĠĠĠĠĠĠ Ġeditor . caret Model . moveTo Offset ( psi Identifier . text Offset ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġpsi File Ġ= Ġpsi Identifier . containing File ĊĊĠĠĠĠĠĠĠĠĠĠĠ Ġcommit Document IfNeeded ( psi File , Ġproject ) ĊĊĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġpsi Facade Ġ= ĠJava Psi Facade . getInstance ( project ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġfactory Ġ= Ġpsi Facade . element Factory ĊĊĠĠĠĠĠĠĠĠĠĠĠ Ġtry Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġapplication Ġ= ĠApplication Manager . getApplication () ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġis Write Thread Method : ĠMethod Ġ= ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġapplication . java Class . getDeclared Method (" is Write Thread ") ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġis Write Thread Ġ= Ġis Write Thread Method . invoke ( application ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġif Ġ(!( is Write Thread Ġas ĠBoolean )) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġan Action Ġ= ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠAction Manager . getInstance (). getAction (" Rename Element ") ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġevent Ġ= ĠAn ActionEvent . createFrom DataContext ( ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ" MainMenu ", ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġan Action . template Presentation ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġwhen Ġ( it ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠCommon Data Keys . PROJECT . name Ġ-> Ġproject ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠCommon Data Keys . EDITOR . name Ġ-> Ġeditor ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠCommon Data Keys . P SI _ FILE . name Ġ-> Ġpsi File ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠCommon Data Keys . P SI _ ELEMENT . name Ġ-> Ġpsi Identifier . parent ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġelse Ġ-> Ġnull ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġan Action . action Performed ( event ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} Ġcatch Ġ( e : ĠException ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} Ġfinally Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠĠĠĠĠ Ġ// Ġorigin ĠPsi Identifier Ġis Ġunavailable ĊĠĠĠĠĠĠĠĠĠĠĠ Ġpsi File . findElement At ( offset )?. replace ( factory . create Identifier ( new Identifier )) ĊĊĠĠĠĠĠĠĠĠĠĠĠ Ġcommit Document IfNeeded ( psi File , Ġproject ) ĊĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠ Ġprivate Ġfun Ġcommit Document IfNeeded ( file : ĠPsi File ?, Ġproject : ĠProject ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġif Ġ( file Ġ== Ġnull ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġreturn ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġmanager Ġ= ĠPsi Document Manager . getInstance ( project ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġcached Document Ġ= Ġmanager . get Cached Document ( file ) Ġ?: Ġreturn ĊĠĠĠĠĠĠĠĠĠĠĠ Ġmanager . commit Document ( cached Document ) ĊĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠ Ġ} Ċ } Ċ