package Ġcn . var sa . idea . p de . partial . plugin . helper Ċ Ċ import Ġcom . intellij . openapi . module .* Ċ import Ġcom . intellij . openapi . project .* Ċ import Ġcom . intellij . openapi . util . text .* Ċ import Ġcom . intellij . psi .* Ċ import Ġcom . intellij . psi . search .* Ċ import Ġcom . intellij . psi . util .* Ċ import Ġcom . intellij . util .* Ċ import Ġorg . jetbrains . lang . manifest .* Ċ import Ġorg . jetbrains . lang . manifest . psi .* Ċ Ċ object ĠPsi Helper Ġ{ ĊĠĠĠ Ġfun Ġget Activator Class ( project : ĠProject ): ĠPsi Class ? Ġ= ĊĠĠĠĠĠĠĠ ĠCached Values Manager . getManager ( project ). get Cached Value ( project ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġpsi Class Ġ= ĠJava Psi Facade . getInstance ( project ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ. find Class (" org . osgi . framework . Bundle Activator ", ĠProject Scope . get Libraries Scope ( project )) ĊĠĠĠĠĠĠĠĠĠĠĠ ĠCached Value Provider . Result . create ( psi Class , ĠPsi Modification Tracker . MO DIF ICATION _ COUNT ) ĊĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠ Ġfun Ġis Activator ( element : ĠPsi Element ): ĠBoolean Ġ= ĊĠĠĠĠĠĠĠ Ġ( element Ġas ? ĠPsi Class )?. take Unless Ġ{ Ġit . has Modifier Property ( Psi Modifier . AB STR ACT ) Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ? . let Ġ{ Ġget Activator Class ( it . project )?. let Ġ{ Ġactiv ator Ġ-> Ġit . isIn her itor ( activ ator , Ġtrue ) Ġ} Ġ} Ġ== Ġtrue ĊĊĠĠĠ Ġfun Ġresolve Package ( element : ĠPsi Element , ĠpackageName : ĠString ): ĠArray < Psi Directory > Ġ= ĊĠĠĠĠĠĠĠ ĠJava Psi Facade . getInstance ( element . project ). find Package ( packageName )?. get Directories ( ĊĠĠĠĠĠĠĠĠĠĠĠ ĠModule Util Core . find Module For Psi Element ( element )?. getModule With Dependencies And Libraries Scope ( false ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ?: ĠProject Scope . getAll Scope ( element . project ) ĊĠĠĠĠĠĠĠ Ġ) Ġ?: ĠPsi Directory . EMPTY _ ARRAY ĊĊĠĠĠ Ġfun Ġis Header ( element : ĠPsi Element ?, Ġheader Name : ĠString ): ĠBoolean Ġ= Ġelement Ġis ĠHeader Ġ&& Ġheader Name Ġ== Ġelement . name ĊĊĠĠĠ Ġfun Ġset Header ( manifest File : ĠManifest File , Ġheader Name : ĠString , Ġheader Value : ĠString ) Ġ{ ĊĠĠĠĠĠĠĠ Ġval Ġheader Ġ= Ġmanifest File . getHeader ( header Name ) ĊĠĠĠĠĠĠĠ Ġval Ġnew Header Ġ= Ġcreate Header ( manifest File . project , Ġheader Name , Ġheader Value ) ĊĠĠĠĠĠĠĠ Ġif Ġ( header Ġ!= Ġnull ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġheader . replace ( new Header ) ĊĠĠĠĠĠĠĠ Ġ} Ġelse Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġadd Header ( manifest File , Ġnew Header ) ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġfun Ġappend To Header ( manifest File : ĠManifest File , Ġheader Name : ĠString , Ġheader Value : ĠString ) Ġ{ ĊĠĠĠĠĠĠĠ Ġvar Ġvalue Text Ġ= Ġheader Value ĊĠĠĠĠĠĠĠ Ġval Ġheader Ġ= Ġmanifest File . getHeader ( header Name ) ĊĠĠĠĠĠĠĠ Ġif Ġ( header Ġ!= Ġnull ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġval ĠoldValue Ġ= Ġheader . header Value ĊĠĠĠĠĠĠĠĠĠĠĠ Ġif Ġ( oldValue Ġ!= Ġnull ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġvar Ġold Text Ġ= ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠString Util . trim Trailing ( header . text . substring ( oldValue . start Offset In Parent , Ġheader . text Length )) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġif Ġ( old Text . isNotEmpty ()) Ġold Text Ġ+= Ġ", \ n Ġ" ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġvalue Text Ġ= Ġold Text Ġ+ Ġvalue Text ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠ Ġheader . replace ( create Header ( manifest File . project , Ġheader Name , Ġvalue Text )) ĊĠĠĠĠĠĠĠ Ġ} Ġelse Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġadd Header ( manifest File , Ġcreate Header ( manifest File . project , Ġheader Name , Ġvalue Text )) ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġprivate Ġfun Ġcreate Header ( project : ĠProject , Ġheader Name : ĠString , Ġvalue Text : ĠString ): ĠHeader Ġ{ ĊĠĠĠĠĠĠĠ Ġval Ġtext Ġ= Ġ"$ header Name : Ġ$ value Text \ n " ĊĠĠĠĠĠĠĠ Ġval Ġfile Ġ= ĠPsi File Factory . getInstance ( project ). create File FromText (" D UMMY . MF ", ĠManifest FileType . INSTANCE , Ġtext ) ĊĠĠĠĠĠĠĠ Ġreturn Ġ( file Ġas ĠManifest File ). getHeader ( header Name ) Ġ?: Ġthrow ĠInc orrect OperationException (" Bad Ġheader : Ġ'$ text '") ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġprivate Ġfun Ġadd Header ( manifest File : ĠManifest File , Ġnew Header : ĠHeader ) Ġ{ ĊĠĠĠĠĠĠĠ Ġval Ġsection Ġ= Ġmanifest File . main Section ĊĠĠĠĠĠĠĠ Ġval Ġheaders Ġ= Ġmanifest File . headers ĊĠĠĠĠĠĠĠ Ġwhen Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġsection Ġ== Ġnull Ġ-> Ġmanifest File . add ( new Header . parent ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġheaders . isEmpty () Ġ-> Ġsection . add Before ( new Header , Ġsection . firstChild ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġelse Ġ-> Ġsection . add After ( new Header , Ġheaders . last ()) ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} Ċ } Ċ