package Ġname . k ro pp . intellij . make file . tool Window Ċ Ċ import Ġcom . intellij . execution . impl .* Ċ import Ġcom . intellij . ide .* Ċ import Ġcom . intellij . openapi . action System .* Ċ import Ġcom . intellij . openapi . action System . Common Data Keys .* Ċ import Ġcom . intellij . openapi . project .* Ċ import Ġcom . intellij . openapi . ui .* Ċ import Ġcom . intellij . openapi . wm .* Ċ import Ġcom . intellij . psi . search .* Ċ import Ġcom . intellij . ui .* Ċ import Ġcom . intellij . ui . content . impl .* Ċ import Ġcom . intellij . ui . tree Structure .* Ċ import Ġcom . intellij . util . ui . tree .* Ċ import Ġname . k ro pp . intellij . make file .* Ċ import Ġjava . awt .* Ċ import Ġjava . awt . event .* Ċ import Ġjava . awt . event . MouseEvent .* Ċ import Ġjavax . swing .* Ċ import Ġjavax . swing . tree .* Ċ Ċ class ĠMake Tool Window Factory Ġ: ĠTool Window Factory Ġ{ ĊĠ Ġoverride Ġfun Ġcreate Tool Window Content ( project : ĠProject , Ġtool Window : ĠTool Window ) Ġ{ ĊĠĠĠ Ġtool Window . title Ġ= Ġ" make " ĊĊĠĠĠ Ġval Ġcontent Manager Ġ= Ġtool Window . content Manager ĊĊĠĠĠ Ġval Ġoptions Ġ= ĠMakefile Tool Window Options ( project ) ĊĊĠĠĠ ĠD umb Service . getInstance ( project ). run When Smart Ġ{ ĊĠĠĠĠĠ Ġval Ġmodel Ġ= ĠDefault Tree Model ( options . getRoot Node ()) ĊĊĠĠĠĠĠ Ġval Ġpanel Ġ= ĠSimple Tool Window Panel ( true ) ĊĊĠĠĠĠĠ Ġval Ġtree Ġ= Ġobject Ġ: ĠTree ( model ), ĠData Provider Ġ{ ĊĠĠĠĠĠĠĠ Ġoverride Ġfun ĠgetData ( data Id : ĠString ): ĠAny ? Ġ{ ĊĠĠĠĠĠĠĠĠĠ Ġif Ġ( P SI _ ELEMENT .` is `( data Id )) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġselected Nodes Ġ= Ġget Selected Nodes ( Makefile Target Node :: class . java , Ġ{ true }) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġif Ġ( selected Nodes . any ()) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġselected Ġ= Ġselected Nodes . first () ĊĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġreturn ĠMakefile Target Index . get ( selected . name , Ġproject , ĠGlobal Search Scope . file Scope ( selected . parent . psi File )). first OrNull () ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠ Ġreturn Ġnull ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠ Ġ}. apply Ġ{ ĊĠĠĠĠĠĠĠ Ġcell Renderer Ġ= ĠMakefile Cell Renderer () ĊĠĠĠĠĠĠĠ Ġselection Model . selection Mode Ġ= ĠTree Selection Model . SINGLE _ TREE _ SELECTION ĊĠĠĠĠĠĠĠ Ġis Root Visible Ġ= Ġfalse ĊĠĠĠĠĠĠĠ Ġshows Root Handles Ġ= Ġtrue ĊĠĠĠĠĠ Ġ} ĊĠĠĠĠĠ ĠTree Util . install Actions ( tree ) ĊĠĠĠĠĠ ĠTree Speed Search ( tree ) ĊĠĠĠĠĠ Ġpanel . add ( ScrollPane Factory . create ScrollPane ( tree )) ĊĊĠĠĠĠĠ Ġval Ġtool Bar Panel Ġ= ĠJPanel ( GridLayout ()) ĊĊĠĠĠĠĠ Ġval Ġrun Manager Ġ= ĠRun ManagerImpl . getInstance Impl ( project ) ĊĊĠĠĠĠĠ Ġval Ġauto Scroll Handler Ġ= Ġobject Ġ: ĠAuto Scroll To Source Handler () Ġ{ ĊĠĠĠĠĠĠĠ Ġoverride Ġfun Ġis Auto Scroll Mode (): ĠBoolean Ġ= Ġoptions . auto Scroll To Source ĊĠĠĠĠĠĠĠ Ġoverride Ġfun Ġset Auto Scroll Mode ( state : ĠBoolean ) Ġ{ ĊĠĠĠĠĠĠĠĠĠ Ġoptions . auto Scroll To Source Ġ= Ġstate ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠ Ġ} ĊĠĠĠĠĠ Ġauto Scroll Handler . install ( tree ) ĊĊĠĠĠĠĠ Ġval Ġrun Target Action Ġ= ĠMakefile Tool Window Run Target Action ( tree , Ġproject , Ġrun Manager ) ĊĠĠĠĠĠ Ġrun Target Action . register Custom Shortcut Set ( Custom Shortcut Set ( KeyEvent . VK _ ENTER ), Ġpanel ) ĊĠĠĠĠĠ Ġtree . add Mouse Listener ( object Ġ: ĠMouse Adapter () Ġ{ ĊĠĠĠĠĠĠĠ Ġoverride Ġfun Ġmouse Pressed ( e : ĠMouseEvent ?) Ġ{ ĊĠĠĠĠĠĠĠĠĠ Ġif Ġ( e ?. click Count Ġ== Ġ 2 Ġ&& Ġe . button Ġ== ĠBUTTON 1 ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ ĠAction Manager . getInstance (). try To Execute ( run Target Action , Ġe , Ġtree , Ġ"", Ġtrue ) ĊĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠ Ġ}) ĊĊĠĠĠĠĠ Ġval Ġgo To Target Action Ġ= ĠMakefile Tool Window Go To Target Action ( tree , Ġproject ) ĊĠĠĠĠĠ Ġgo To Target Action . register Custom Shortcut Set ( Custom Shortcut Set ( KeyEvent . VK _ F 4 ), Ġpanel ) ĊĊĠĠĠĠĠ Ġval Ġgroup Ġ= ĠDefault Action Group () ĊĠĠĠĠĠ Ġgroup . add ( run Target Action ) ĊĠĠĠĠĠ Ġgroup . add Separator () ĊĠĠĠĠĠ Ġval Ġtree Expand er Ġ= ĠDefault Tree Expand er ( tree ) ĊĠĠĠĠĠ Ġgroup . add ( Common Actions Manager . getInstance (). create Expand All Action ( tree Expand er , Ġtree )) ĊĠĠĠĠĠ Ġgroup . add ( Common Actions Manager . getInstance (). create Collapse All Action ( tree Expand er , Ġtree )) ĊĠĠĠĠĠ Ġgroup . addAction ( Makefile Tool Window Aut osc roll To Source Action ( options , Ġauto Scroll Handler , Ġtree )) ĊĠĠĠĠĠ Ġgroup . add Separator () ĊĠĠĠĠĠ Ġgroup . addAction ( Makefile Tool Window Sort Alphabet ically Action ( options , Ġmodel )) ĊĠĠĠĠĠ Ġgroup . addAction ( Makefile Tool Window Show Special Action ( options , Ġmodel )) ĊĊĠĠĠĠĠ Ġtool Bar Panel . add ( Action Manager . getInstance (). create Action Toolbar (" Make Tool Window Toolbar ", Ġgroup , Ġtrue ). component ) ĊĊĠĠĠĠĠ Ġpanel . toolbar Ġ= Ġtool Bar Panel ĊĊĠĠĠĠĠ Ġcontent Manager . add Content ( Content Impl ( panel , Ġ"", Ġtrue )) ĊĠĠĠ Ġ} ĊĠ Ġ} Ċ } Ċ