package Ġcom . fun iv an . idea . edit Usage s Ċ Ċ import Ġcom . fun iv an . idea . edit Usage s . structures . Document New Lines Ċ import Ġcom . fun iv an . idea . edit Usage s . structures . Replace Structure Ċ import Ġcom . fun iv an . idea . edit Usage s . structures . Re places Items Comparator Ċ import Ġcom . intellij . openapi . action System . An Action Ċ 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 . command . Command Processor Ċ import Ġcom . intellij . openapi . file Editor . File Document Manager Ċ import Ġcom . intellij . openapi . ui . MessageType Ċ import Ġcom . intellij . openapi . ui . popup . Bal loon Ċ import Ġcom . intellij . openapi . ui . popup . JB Popup Factory Ċ import Ġcom . intellij . openapi . vfs . V fs Util Ċ import Ġcom . intellij . openapi . wm . WindowManager Ċ import Ġcom . intellij . psi . Psi Document Manager Ċ import Ġcom . intellij . ui . awt . Relative Point Ċ import Ġjava . util .* Ċ import Ġjava . util . regex . Pattern Ċ Ċ @ Suppress (" NAME _ SH ADO WING ") Ċ /** Ċ Ġ* Ġ@ author ĠI van ĠSh cher bak Ġal ot of all @ gmail . com Ċ Ġ*/ Ċ class ĠApply Custom Patch Action Ġ: ĠAn Action () Ġ{ ĊĊĠĠĠ Ġoverride Ġfun ĠactionPerformed ( event : ĠAn ActionEvent ) Ġ{ ĊĠĠĠĠĠĠĠ Ġval Ġdata Context Ġ= Ġevent . data Context ĊĠĠĠĠĠĠĠ Ġval Ġproject Ġ= ĠCommon Data Keys . PROJECT . getData ( data Context ) Ġ?: Ġreturn ĊĠĠĠĠĠĠĠ ĠPsi Document Manager . getInstance ( project ). commit All Documents () ĊĠĠĠĠĠĠĠ Ġval Ġeditor Ġ= ĠCommon Data Keys . EDITOR . getData ( data Context ) Ġ?: Ġreturn ĊĊĠĠĠĠĠĠĠ Ġval Ġdocument Ġ= Ġeditor . document ĊĠĠĠĠĠĠĠ Ġval Ġtext Ġ= Ġdocument . text ĊĊĠĠĠĠĠĠĠ Ġval Ġlines Ġ= Ġtext . split ("// file :" . to Regex ()). drop Last While ({ Ġit . isEmpty () Ġ}). iterator () ĊĠĠĠĠĠĠĠ Ġval Ġpattern Ġ= ĠPattern . compile ("^ ([ ^\ n ]+ ): (\\ d +)\ n (. + )$ ", ĠPattern . DOT ALL ) ĊĠĠĠĠĠĠĠ Ġval Ġdocuments For Change Ġ= ĠHashMap < String , ĠDocument New Lines >() ĊĠĠĠĠĠĠĠ Ġfor Ġ( line Ġin Ġlines ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġmatch Ġ= Ġpattern . matcher ( line ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġif Ġ(! match . find ()) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġcontinue ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠ Ġval ĠfilePath Ġ= Ġmatch . group ( 1 ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġfile Ġ= ĠV fs Util . find Relative File ( filePath , Ġproject . base Dir ) Ġ?: Ġcontinue ĊĠĠĠĠĠĠĠĠĠĠĠ Ġval ĠlineNumber Ġ= ĠInteger . parseInt ( match . group ( 2 )) Ġ- Ġ 1 ĊĠĠĠĠĠĠĠĠĠĠĠ Ġvar Ġvalue Ġ= Ġmatch . group ( 3 ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġvalue Ġ= Ġvalue . replace ("\ n +$ ". to Regex (), Ġ"") ĊĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġfile Document Ġ= ĠFile Document Manager . getInstance (). getDocument ( file ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġif Ġ( file Document Ġ== Ġnull ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġcontinue ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠ Ġvar Ġdocument New Structure : ĠDocument New Lines ? Ġ= Ġdocuments For Change [ filePath ] ĊĠĠĠĠĠĠĠĠĠĠĠ Ġif Ġ( document New Structure Ġ== Ġnull ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġdocument New Structure Ġ= ĠDocument New Lines ( file Document ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġdocuments For Change . put ( filePath , Ġdocument New Structure ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠ Ġdocument New Structure . re places . add ( Replace Structure ( value , ĠlineNumber )) ĊĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠ ĠCommand Processor . getInstance (). execute Command ( project , Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ ĠApplication Manager . getApplication (). run Write Action Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġvar Ġitems Ġ= Ġ 0 ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġvar Ġfiles Ġ= Ġ 0 ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġfor Ġ( doc Ġin Ġdocuments For Change . values ) Ġ{ ĊĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġreplaces Ġ= Ġdoc . re places ĊĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ// ĠWe Ġneed Ġto Ġchange Ġelements Ġfrom Ġthe Ġbottom Ġto Ġthe Ġtop Ġof Ġthe Ġdocument . ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ// ĠSo Ġsort Ġthem Ġby Ġstart Ġposition ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠCollections . sort ( re places , ĠRe places Items Comparator ()) ĊĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġdocument Ġ= Ġdoc . document ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġfor Ġ( r Ġin Ġreplaces ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġstart Offset Ġ= Ġdocument . getLine Start Offset ( r . line ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġend Offset Ġ= Ġdocument . getLine End Offset ( r . line ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġdocument . replace String ( start Offset , Ġend Offset , Ġr . value ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġitems ++ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġfiles ++ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġstatus Bar Ġ= ĠWindow Manager . getInstance (). getStatus Bar ( project ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġif Ġ( status Bar Ġ!= Ġnull ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠJ B Popup Factory . getInstance () ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ. create Html Text Bal loon Builder (" Processed . ĠFiles : Ġ$ files Ġlines :$ items ", ĠMessageType . INFO , Ġnull ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ. set Fade out Time ( 7 5 0 0 ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ. create Bal loon () ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ. show ( Relative Point . get Center Of ( status Bar . component ), ĠBal loon . Position . at Right ) ĊĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġ}, Ġ" Apply Ġcustom Ġpatch ", Ġ" Apply Ġcustom Ġpatch ") ĊĊĠĠĠ Ġ} Ċ } Ċ