package Ġcom . by ted ance . tools . code locator . panels Ċ Ċ import Ġcom . by ted ance . tools . code locator . action . Open Class Action Ċ import Ġcom . by ted ance . tools . code locator . model . W Activity Ċ import Ġcom . by ted ance . tools . code locator . model . W Fragment Ċ import Ġcom . by ted ance . tools . code locator . utils . Image Utils Ċ import Ġcom . by ted ance . tools . code locator . utils . Mob Ċ import Ġcom . intellij . ide . DataManager Ċ import Ġcom . intellij . openapi . action System . Default Action Group Ċ import Ġcom . intellij . openapi . ui . popup . JB Popup Factory Ċ import Ġcom . intellij . ui . awt . Relative Point Ċ import Ġjava . awt . Point Ċ import Ġjava . awt . event . Mouse Adapter Ċ import Ġjava . awt . event . MouseEvent Ċ import Ġjava . util .* Ċ import Ġjavax . swing .* Ċ import Ġjavax . swing . tree . Default Mutable TreeNode Ċ import Ġjavax . swing . tree . Default Tree Model Ċ import Ġjavax . swing . tree . Tree Path Ċ Ċ class ĠActivity Tree Panel ( val Ġcode Locator Window : ĠCode Locator Window ) Ġ: ĠJPanel () Ġ{ ĊĊĠĠĠ Ġprivate Ġvar Ġm Tree Root : ĠDefault Mutable TreeNode ? Ġ= Ġnull ĊĊĠĠĠ Ġprivate Ġvar Ġm J Tree : ĠJ Tree ? Ġ= Ġnull ĊĊĠĠĠ Ġprivate Ġval Ġm Tree Model Ġ= ĠDefault Tree Model ( null ) ĊĊĠĠĠ Ġprivate Ġvar Ġm Activity : ĠW Activity ? Ġ= Ġnull ĊĊĠĠĠ Ġprivate Ġvar Ġm Last Select Fragment : ĠW Fragment ? Ġ= Ġnull ĊĊĠĠĠ Ġinit Ġ{ ĊĠĠĠĠĠĠĠ Ġset Layout ( BoxLayout ( this , ĠBox Layout . Y _ AXIS )) ĊĠĠĠĠĠĠĠ Ġborder Ġ= ĠBorder Factory . create Empty Border ( 0 , Ġ 0 , Ġ 0 , Ġ 0 ) ĊĠĠĠĠĠĠĠ Ġm J Tree Ġ= ĠJ Tree ( m Tree Model ) ĊĊĠĠĠĠĠĠĠ Ġval Ġscroll Panel Ġ= ĠJ ScrollPane ( mJ Tree ) ĊĠĠĠĠĠĠĠ Ġadd ( scroll Panel ) ĊĊĠĠĠĠĠĠĠ Ġscroll Panel . vertical ScrollBar . add Adjustment Listener Ġ{ Ġm J Tree !!. rep aint () Ġ} ĊĠĠĠĠĠĠĠ Ġscroll Panel . horizontal ScrollBar . add Adjustment Listener Ġ{ Ġm J Tree !!. rep aint () Ġ} ĊĊĠĠĠĠĠĠĠ Ġm J Tree !!. set Cell Renderer ( My Tree Cell Renderer ( code Locator Window )) ĊĠĠĠĠĠĠĠ Ġm J Tree !!. add Tree Selection Listener Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġselect Node Ġ= Ġm J Tree !!. last Selected Path Component Ġas ? ĠDefault Mutable TreeNode ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ?: Ġreturn @ add Tree Selection Listener ĊĠĠĠĠĠĠĠĠĠĠĠ ĠMob . mob ( Mob . Action . CLICK , ĠMob . Button . ACTIVITY _ TREE ) ĊĊĠĠĠĠĠĠĠĠĠĠĠ Ġm On Get Fragment Info Listener ?. on Get Fragment Or Activity Info ( select Node . user Object ) ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġm J Tree !!. add Mouse Listener ( object Ġ: ĠMouse Adapter () Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġoverride Ġfun Ġmouse Clicked ( e : ĠMouseEvent ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġif Ġ( e . button Ġ!= ĠMouseEvent . BUTTON 3 ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġreturn ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġpath : ĠTree Path Ġ= Ġm J Tree !!. getPath For Location ( e . x , Ġe . y ) Ġ?: Ġreturn ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġselection Path Ġ= Ġm J Tree !!. selection Path ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġif Ġ( selection Path Ġ!= Ġpath ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġm J Tree !!. selection Path Ġ= Ġpath ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġshow Pop ( mJ Tree !! , Ġe . x , Ġe . y ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġ}) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġprivate Ġfun ĠgetCurrent Fragment (): ĠW Fragment ? Ġ{ ĊĠĠĠĠĠĠĠ Ġval Ġselect Node Ġ= Ġm J Tree !!. last Selected Path Component Ġas ? ĠDefault Mutable TreeNode ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ?: Ġreturn Ġnull ĊĠĠĠĠĠĠĠ Ġreturn Ġselect Node . user Object Ġas ? ĠW Fragment ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġfun Ġshow Pop ( container : ĠJ Component , Ġx : ĠInt , Ġy : ĠInt ) Ġ{ ĊĠĠĠĠĠĠĠ Ġval Ġselect Node Ġ= Ġm J Tree !!. last Selected Path Component Ġas ? ĠDefault Mutable TreeNode Ġ?: Ġreturn ĊĊĠĠĠĠĠĠĠ Ġif Ġ( select Node . user Object Ġ! is ĠW Fragment Ġ&& Ġselect Node . user Object Ġ! is ĠW Activity ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġreturn ĊĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠ Ġval Ġaction Group Ġ= ĠDefault Action Group (" list Group ", Ġtrue ) ĊĊĠĠĠĠĠĠĠ Ġval Ġcopy Info Ġ= Ġif Ġ( select Node . user Object Ġis ĠW Fragment ) Ġ( select Node . user Object Ġas ĠW Fragment ). className Ġelse Ġ( select Node . user Object Ġas ĠW Activity ). className ĊĊĠĠĠĠĠĠĠ Ġaction Group . add ( Open Class Action ( code Locator Window . project , Ġcode Locator Window , Ġ" è·³è½¬ ç±» æĸĩä»¶ ", ĠImage Utils . load Icon (" class _ enable "), Ġcopy Info )) ĊĊĠĠĠĠĠĠĠ Ġval Ġfactory Ġ= ĠJ B Popup Factory . getInstance () ĊĠĠĠĠĠĠĠ Ġval Ġpop Ġ= Ġfactory . create Action Group Popup ( ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ" Code Locator ", ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġaction Group , ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠData Manager . getInstance (). getData Context (), ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠJ B Popup Factory . Action Selection A id . SPEED SEARCH , ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġtrue ĊĠĠĠĠĠĠĠ Ġ) ĊĠĠĠĠĠĠĠ Ġval Ġpoint Ġ= ĠPoint ( x , Ġy ) ĊĠĠĠĠĠĠĠ Ġpop . show ( Relative Point ( container , Ġpoint )) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġfun Ġset Activity ( activity : ĠW Activity ?) Ġ{ ĊĠĠĠĠĠĠĠ Ġm Activity Ġ= Ġactivity ĊĠĠĠĠĠĠĠ Ġif Ġ( m Activity Ġ== Ġnull ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġm Tree Root Ġ= Ġnull ĊĠĠĠĠĠĠĠĠĠĠĠ Ġm Last Select Fragment Ġ= Ġnull ĊĠĠĠĠĠĠĠ Ġ} Ġelse Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġselect Node Ġ= Ġm J Tree ?. last Selected Path Component Ġas ? ĠDefault Mutable TreeNode ĊĠĠĠĠĠĠĠĠĠĠĠ Ġm Last Select Fragment Ġ= Ġselect Node ?. user Object Ġas ? ĠW Fragment ĊĠĠĠĠĠĠĠĠĠĠĠ Ġm Tree Root Ġ= Ġcreate TreeNode By Activity ( activity !! ) ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġm Tree Model . set Root ( m Tree Root ) ĊĊĠĠĠĠĠĠĠ Ġif Ġ( m Last Select Fragment Ġ!= Ġnull ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ ĠsetCurrent Fragment ( m Last Select Fragment !! ) ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġfun ĠsetCurrent Fragment ( fragment : ĠW Fragment ) Ġ{ ĊĠĠĠĠĠĠĠ Ġif Ġ( fragment Ġ== ĠgetCurrent Fragment ()) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġreturn ĊĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠ Ġvar Ġstack : ĠStack < W Fragment > Ġ= ĠStack () ĊĠĠĠĠĠĠĠ Ġvar Ġtmp Obj : ĠW Fragment ? Ġ= Ġfragment ĊĠĠĠĠĠĠĠ Ġwhile Ġ( tmp Obj Ġ!= Ġnull ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġif Ġ( tmp Obj Ġis ĠW Fragment ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġstack . push ( tmp Obj ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġtmp Obj Ġ= Ġtmp Obj . parent Fragment ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} Ġelse Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġbreak ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġvar Ġpath : ĠTree Path ? Ġ= ĠTree Path ( m Tree Root ) ĊĠĠĠĠĠĠĠ Ġm J Tree !!. expand Path ( path ) ĊĊĠĠĠĠĠĠĠ Ġwhile Ġ(! stack . isEmpty ()) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġfind Fragment Node Ġ= Ġfind Fragment Node ( stack . pop (), Ġm Tree Root !! ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġfind Fragment Node Ġ?: Ġreturn ĊĠĠĠĠĠĠĠĠĠĠĠ Ġif Ġ( path Ġ== Ġnull ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġpath Ġ= ĠTree Path ( find Fragment Node ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} Ġelse Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġpath Ġ= Ġpath . path By Adding Child ( find Fragment Node ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠ Ġm J Tree !!. expand Path ( path ) ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġpath Ġ?: Ġreturn ĊĠĠĠĠĠĠĠ Ġm J Tree !!. selection Path Ġ= Ġpath ĊĠĠĠĠĠĠĠ ĠSw ing Utilities . invoke Later Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġm J Tree !!. scroll Path To Visible ( path ) ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġprivate Ġfun Ġfind Fragment Node ( fragment : ĠW Fragment , Ġnode : ĠDefault Mutable TreeNode ): ĠDefault Mutable TreeNode ? Ġ{ ĊĠĠĠĠĠĠĠ Ġif Ġ( node . user Object Ġ== Ġfragment ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġreturn Ġnode ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġfor Ġ( i Ġin Ġ 0 Ġuntil Ġnode . child Count ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġfind View Node Ġ= Ġfind Fragment Node ( fragment , Ġnode . getChild At ( i ) Ġas ĠDefault Mutable TreeNode ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġif Ġ( find View Node Ġ!= Ġnull ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġreturn Ġfind View Node ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġreturn Ġnull ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġprivate Ġfun Ġcreate TreeNode By Activity ( activity : ĠW Activity ): ĠDefault Mutable TreeNode Ġ{ ĊĠĠĠĠĠĠĠ Ġval Ġactivity Node Ġ= ĠDefault Mutable TreeNode ( activity ) ĊĠĠĠĠĠĠĠ Ġfor Ġ( i Ġin Ġ 0 Ġuntil Ġactivity . fragment Count ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġactivity Node . add ( create TreeNode By Fragment ( activity . get Fragment At ( i ))) ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġreturn Ġactivity Node ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġprivate Ġfun Ġcreate TreeNode By Fragment ( fragment : ĠW Fragment ): ĠDefault Mutable TreeNode Ġ{ ĊĠĠĠĠĠĠĠ Ġval Ġfragment Node Ġ= ĠDefault Mutable TreeNode ( fragment ) ĊĠĠĠĠĠĠĠ Ġfor Ġ( i Ġin Ġ 0 Ġuntil Ġfragment . fragment Count ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġfragment Node . add ( create TreeNode By Fragment ( fragment . get Fragment At ( i ))) ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġreturn Ġfragment Node ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġprivate Ġvar Ġm On Get Fragment Info Listener : ĠOn Get Fragment Info Listener ? Ġ= Ġnull ĊĊĠĠĠ Ġfun Ġset On Get Fragment Info Listener ( listener : ĠOn Get Fragment Info Listener ) Ġ{ ĊĠĠĠĠĠĠĠ Ġm On Get Fragment Info Listener Ġ= Ġlistener ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġinterface ĠOn Get Fragment Info Listener Ġ{ ĊĠĠĠĠĠĠĠ Ġfun Ġon Get Fragment Or Activity Info ( fragment Or Activity : ĠAny ) ĊĠĠĠ Ġ} Ċ }