package Ġcn . var sa . idea . p de . partial . plugin . config Ċ Ċ import Ġcn . var sa . idea . p de . partial . plugin . i 1 8 n . Ec lipse P DE Partial Bund les . message Ċ import Ġcn . var sa . idea . p de . partial . plugin . listener .* Ċ import Ġcom . intellij . icons .* Ċ import Ġcom . intellij . openapi . action System .* Ċ import Ġcom . intellij . openapi . file Chooser .* Ċ import Ġcom . intellij . openapi . options .* Ċ import Ġcom . intellij . openapi . project .* Ċ import Ġcom . intellij . openapi . roots .* Ċ import Ġcom . intellij . openapi . ui .* Ċ import Ġcom . intellij . ui .* Ċ import Ġcom . intellij . ui . components .* Ċ import Ġcom . intellij . ui . components . panels .* Ċ import Ġcom . intellij . util . ui .* Ċ import Ġcom . intellij . util . ui . components .* Ċ import Ġorg . jetbrains . kotlin . idea . util .* Ċ import Ġjava . awt .* Ċ import Ġjava . awt . event .* Ċ import Ġjavax . swing .* Ċ Ċ class ĠTarget Configurable ( private Ġval Ġproject : ĠProject ) Ġ: ĠSearch able Configurable , ĠPanel With Anchor Ġ{ ĊĠĠĠ Ġprivate Ġval Ġservice Ġby Ġlazy Ġ{ ĠTarget Definition Service . getInstance ( project ) Ġ} ĊĠĠĠ Ġprivate Ġvar Ġmy Anchor : ĠJ Component ? Ġ= Ġnull ĊĠĠĠ Ġprivate Ġval Ġlocation Modified Ġ= Ġmutable Set Of < Pair < Target Location Definition ?, ĠTarget Location Definition ? >>() ĊĊĠĠĠ Ġprivate Ġval Ġpanel Ġ= ĠJ B Tabbed Pane () ĊĊĠĠĠ Ġprivate Ġval Ġlauncher Jar Combo Ġ= ĠCombo Box < String >() ĊĠĠĠ Ġprivate Ġval Ġlauncher Combo Ġ= ĠCombo Box < String >() ĊĠĠĠ Ġprivate Ġval Ġlauncher Jar Ġ= ĊĠĠĠĠĠĠĠ ĠL abeled Component . create ( launcher Jar Combo , Ġmessage (" config . target . launcher Jar "), ĠBorderLayout . WEST ) ĊĠĠĠ Ġprivate Ġval Ġlauncher Ġ= ĠL abeled Component . create ( launcher Combo , Ġmessage (" config . target . launcher "), ĠBorderLayout . WEST ) ĊĊĠĠĠ Ġprivate Ġval Ġlocation Model Ġ= ĠDefault ListModel < Target Location Definition >() ĊĠĠĠ Ġprivate Ġval Ġlocation List Ġ= ĠJ B List ( location Model ). apply Ġ{ ĊĠĠĠĠĠĠĠ Ġset Empty Text ( message (" config . target . empty ")) ĊĠĠĠĠĠĠĠ Ġcell Renderer Ġ= Ġobject Ġ: ĠCo lo red List Cell Renderer < Target Location Definition >() Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġoverride Ġfun Ġcustomize Cell Renderer ( ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġlist : ĠJ List < out ĠTarget Location Definition >, ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġvalue : ĠTarget Location Definition ?, ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġindex : ĠInt , ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġselected : ĠBoolean , ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġhas Focus : ĠBoolean ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġvalue ?. also Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġappend ( it . location ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġappend ( ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġmessage (" config . target . location Info In fix ", Ġit . bundles . size , Ġit . dependency ), ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠSimple Text Attributes . GRAY _ ATTRIBUTES ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġobject Ġ: ĠDouble ClickListener () Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġoverride Ġfun Ġon DoubleClick ( event : ĠMouseEvent ): ĠBoolean Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġselection Ġ= Ġ! is Selection Empty ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġif Ġ( selection ) Ġedit Location () ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġreturn Ġselection ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġ}. install On ( this ) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġprivate Ġval Ġstartup Model Ġ= ĠDefault ListModel < Pair < String , ĠInt >>() ĊĠĠĠ Ġprivate Ġval Ġstartup List Ġ= ĠJ B List ( startup Model ). apply Ġ{ ĊĠĠĠĠĠĠĠ Ġset Empty Text ( message (" config . startup . empty ")) ĊĠĠĠĠĠĠĠ Ġcell Renderer Ġ= Ġobject Ġ: ĠCo lo red List Cell Renderer < Pair < String , ĠInt >>() Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġoverride Ġfun Ġcustomize Cell Renderer ( ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġlist : ĠJ List < out ĠPair < String , ĠInt >>, ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġvalue : ĠPair < String , ĠInt > ?, ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġindex : ĠInt , ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġselected : ĠBoolean , ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġhas Focus : ĠBoolean ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġvalue ?. also Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġappend ( it . first ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġappend (" Ġ-> Ġ", ĠSimple Text Attributes . GRAY _ ATTRIBUTES ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġappend ( it . second . toString ()) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġobject Ġ: ĠDouble ClickListener () Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġoverride Ġfun Ġon DoubleClick ( event : ĠMouseEvent ): ĠBoolean Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġselection Ġ= Ġ! is Selection Empty ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġif Ġ( selection ) Ġedit Startup () ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġreturn Ġselection ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġ}. install On ( this ) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġinit Ġ{ ĊĠĠĠĠĠĠĠ Ġ// ĠTarget Ġtab ĊĠĠĠĠĠĠĠ Ġval Ġreload ActionButton Ġ= Ġobject Ġ: ĠAn ActionButton ( message (" config . target . reload "), ĠAll Icons . Actions . Refresh ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġoverride Ġfun ĠactionPerformed ( e : ĠAn ActionEvent ) Ġ= Ġlocation List . selected Value . background Resolve ( project ) ĊĠĠĠĠĠĠĠ Ġ}. apply Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġis Enabled Ġ= Ġfalse ĊĠĠĠĠĠĠĠĠĠĠĠ Ġlocation List . add List Selection Listener Ġ{ Ġis Enabled Ġ= Ġlocation List . is Selection Empty . not () Ġ} ĊĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠ Ġval Ġlauncher Panel Ġ= ĠVertical Box (). apply Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġadd ( launcher Jar ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġadd ( launcher ) ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġval Ġlocations Panel Ġ= ĠBorder LayoutPanel (). with Border ( ĊĠĠĠĠĠĠĠĠĠĠĠ ĠIde Border Factory . create Title d Border ( ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġmessage (" config . target . border Hint "), Ġfalse , ĠJ BU I . in sets Top ( 8 ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ). set Show Line ( true ) ĊĠĠĠĠĠĠĠ Ġ). addTo Center ( Toolbar Decorator . create Decorator ( location List ). set Add Action Ġ{ Ġadd Location () Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ. set Remove Action Ġ{ Ġremove Location () Ġ}. set Edit Action Ġ{ Ġedit Location () Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ. add Extra Action ( reload ActionButton ). create Panel ()). addTo Bottom ( launcher Panel ) ĊĊĠĠĠĠĠĠĠ Ġpanel . add Tab ( message (" config . target . tab "), Ġlocations Panel ) ĊĊĠĠĠĠĠĠĠ Ġ// ĠStartup Ġtab ĊĠĠĠĠĠĠĠ Ġval Ġstartup Panel Ġ= ĠBorder LayoutPanel (). with Border ( ĊĠĠĠĠĠĠĠĠĠĠĠ ĠIde Border Factory . create Title d Border ( ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġmessage (" config . startup . border Hint "), Ġfalse , ĠJ BU I . in sets Top ( 8 ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ). set Show Line ( true ) ĊĠĠĠĠĠĠĠ Ġ). addTo Center ( Toolbar Decorator . create Decorator ( startup List ). set Add Action Ġ{ Ġadd Startup () Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ. set Remove Action Ġ{ Ġremove Startup () Ġ}. set Edit Action Ġ{ Ġedit Startup () Ġ}. create Panel ()) ĊĊĠĠĠĠĠĠĠ Ġpanel . add Tab ( message (" config . startup . tab "), Ġstartup Panel ) ĊĊĠĠĠĠĠĠĠ Ġ// ĠAnchor ĊĠĠĠĠĠĠĠ Ġmy Anchor Ġ= ĠUI Util . merge Components With Anchor ( launcher Jar , Ġlauncher ) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġoverride Ġfun Ġcreate Component (): ĠJ Component Ġ= Ġpanel ĊĠĠĠ Ġoverride Ġfun Ġget DisplayName (): ĠString Ġ= Ġmessage (" config . displayName ") ĊĠĠĠ Ġoverride Ġfun ĠgetId (): ĠString Ġ= Ġ" cn . var sa . idea . p de . partial . plugin . config . Target Configurable " ĊĠĠĠ Ġoverride Ġfun Ġget Help Topic (): ĠString Ġ= Ġid ĊĊĠĠĠ Ġoverride Ġfun Ġget Anchor (): ĠJ Component ? Ġ= Ġmy Anchor ĊĠĠĠ Ġoverride Ġfun Ġset Anchor ( anchor : ĠJ Component ?) Ġ{ ĊĠĠĠĠĠĠĠ Ġmy Anchor Ġ= Ġanchor ĊĊĠĠĠĠĠĠĠ Ġlauncher Jar . anchor Ġ= Ġanchor ĊĠĠĠĠĠĠĠ Ġlauncher . anchor Ġ= Ġanchor ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġoverride Ġfun Ġis Modified (): ĠBoolean Ġ{ ĊĠĠĠĠĠĠĠ Ġlocation Modified . isNotEmpty (). if True Ġ{ Ġreturn Ġtrue Ġ} ĊĠĠĠĠĠĠĠ Ġif Ġ( launcher Jar Combo . item Ġ!= Ġservice . launcher Jar Ġ|| Ġlauncher Combo . item Ġ!= Ġservice . launcher ) Ġreturn Ġtrue ĊĊĠĠĠĠĠĠĠ Ġval Ġlocations Ġ= Ġlocation Model . elements (). toList () ĊĠĠĠĠĠĠĠ Ġif Ġ( locations . size Ġ!= Ġservice . locations . size ) Ġreturn Ġtrue ĊĠĠĠĠĠĠĠ Ġlocations . run Ġ{ Ġmap Indexed Ġ{ Ġindex , Ġdef Ġ-> Ġdef Ġ!= Ġservice . locations [ index ] Ġ}. any Ġ{ Ġit Ġ} Ġ}. if True Ġ{ Ġreturn Ġtrue Ġ} ĊĊĠĠĠĠĠĠĠ Ġval Ġstart ups Ġ= Ġstartup Model . elements (). toList () ĊĠĠĠĠĠĠĠ Ġif Ġ( start ups . size Ġ!= Ġservice . startup Levels . size ) Ġreturn Ġtrue ĊĠĠĠĠĠĠĠ Ġservice . startup Levels . entries . run Ġ{ Ġmap Indexed Ġ{ Ġindex , Ġentry Ġ-> Ġstart ups [ index ]. run Ġ{ Ġfirst Ġ!= Ġentry . key Ġ|| Ġsecond Ġ!= Ġentry . value Ġ} Ġ} Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ. any Ġ{ Ġit Ġ}. if True Ġ{ Ġreturn Ġtrue Ġ} ĊĊĠĠĠĠĠĠĠ Ġreturn Ġfalse ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġoverride Ġfun Ġapply () Ġ{ ĊĠĠĠĠĠĠĠ Ġservice . launcher Jar Ġ= Ġlauncher Jar Combo . item ĊĠĠĠĠĠĠĠ Ġservice . launcher Ġ= Ġlauncher Combo . item ĊĊĠĠĠĠĠĠĠ Ġservice . locations . also Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġit . clear () ĊĠĠĠĠĠĠĠĠĠĠĠ Ġit Ġ+= Ġlocation Model . elements (). toList () ĊĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠ Ġservice . startup Levels . also Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġit . clear () ĊĠĠĠĠĠĠĠĠĠĠĠ Ġit Ġ+= Ġstartup Model . elements (). toList () ĊĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠ ĠTarget Definition ChangeListener . notify Locations Changed ( project ) ĊĠĠĠĠĠĠĠ Ġlocation Modified . clear () ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġoverride Ġfun Ġreset () Ġ{ ĊĠĠĠĠĠĠĠ Ġlocation Model . clear () ĊĠĠĠĠĠĠĠ Ġlocation Modified . clear () ĊĠĠĠĠĠĠĠ Ġstartup Model . clear () ĊĊĠĠĠĠĠĠĠ Ġlauncher Jar Combo . item Ġ= Ġservice . launcher Jar ĊĠĠĠĠĠĠĠ Ġlauncher Combo . item Ġ= Ġservice . launcher ĊĊĠĠĠĠĠĠĠ Ġservice . locations . forEach ( location Model :: addElement ) ĊĠĠĠĠĠĠĠ Ġservice . startup Levels . forEach Ġ{ Ġstartup Model . addElement ( it . to Pair ()) Ġ} ĊĊĠĠĠĠĠĠĠ Ġupdate ComboBox () ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġprivate Ġfun Ġupdate ComboBox () Ġ{ ĊĠĠĠĠĠĠĠ Ġlauncher Jar Combo . also Ġ{ Ġcombo Box Ġ-> ĊĠĠĠĠĠĠĠĠĠĠĠ Ġcombo Box . removeAll Items () ĊĠĠĠĠĠĠĠĠĠĠĠ Ġlocation Model . elements (). toList (). map NotNull ( Target Location Definition :: launcher Jar ). distinct () ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ. forEach ( comboBox :: addItem ) ĊĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠ Ġlauncher Combo . also Ġ{ Ġcombo Box Ġ-> ĊĠĠĠĠĠĠĠĠĠĠĠ Ġcombo Box . removeAll Items () ĊĠĠĠĠĠĠĠĠĠĠĠ Ġlocation Model . elements (). toList (). map NotNull ( Target Location Definition :: launcher ). distinct () ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ. forEach ( comboBox :: addItem ) ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġprivate Ġfun Ġadd Location () Ġ{ ĊĠĠĠĠĠĠĠ Ġval Ġdialog Ġ= ĠEdit Location Dialog () ĊĠĠĠĠĠĠĠ Ġif Ġ( dialog . show AndGet ()) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġlocation Ġ= Ġdialog . getNew Location () ĊĊĠĠĠĠĠĠĠĠĠĠĠ Ġlocation Model . addElement ( location ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġlocation List . setSelected Value ( location , Ġtrue ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġlocation Modified Ġ+= ĠPair ( null , Ġlocation ) ĊĊĠĠĠĠĠĠĠĠĠĠĠ Ġlocation . background Resolve ( project , Ġon Finished Ġ= Ġ{ Ġupdate ComboBox () Ġ}) ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġprivate Ġfun Ġremove Location () Ġ{ ĊĠĠĠĠĠĠĠ Ġif Ġ( location List . is Selection Empty . not ()) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġlocation Ġ= Ġlocation List . selected Value ĊĠĠĠĠĠĠĠĠĠĠĠ Ġlocation Model . remove Element ( location ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġlocation Modified Ġ+= ĠPair ( location , Ġnull ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġupdate ComboBox () ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġprivate Ġfun Ġedit Location () Ġ{ ĊĠĠĠĠĠĠĠ Ġif Ġ( location List . is Selection Empty . not ()) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġindex Ġ= Ġlocation List . selectedIndex ĊĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġvalue Ġ= Ġlocation List . selected Value ĊĊĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġdialog Ġ= ĠEdit Location Dialog ( default Path Ġ= Ġvalue . location ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġif Ġ( dialog . show AndGet ()) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġlocation Ġ= Ġdialog . getNew Location () ĊĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġlocation Model . set ( index , Ġlocation ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġlocation List . setSelected Value ( location , Ġtrue ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġlocation Modified Ġ+= ĠPair ( value , Ġlocation ) ĊĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġlocation . background Resolve ( project , Ġon Finished Ġ= Ġ{ Ġupdate ComboBox () Ġ}) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġprivate Ġfun Ġadd Startup () Ġ{ ĊĠĠĠĠĠĠĠ Ġval Ġdialog Ġ= ĠEdit Startup Dialog () ĊĠĠĠĠĠĠĠ Ġif Ġ( dialog . show AndGet ()) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġlevel Ġ= Ġdialog . getNew Level () ĊĊĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġindex Ġ= Ġstartup Model . elements (). toList (). indexOf First Ġ{ Ġit . first Ġ== Ġlevel . first Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠ Ġif Ġ( index Ġ> Ġ- 1 ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġstartup Model . set ( index , Ġlevel ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} Ġelse Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġstartup Model . addElement ( level ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠĠĠĠĠ Ġstartup List . setSelected Value ( level , Ġtrue ) ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġprivate Ġfun Ġremove Startup () Ġ{ ĊĠĠĠĠĠĠĠ Ġif Ġ( startup List . is Selection Empty . not ()) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġstartup Model . remove Element ( startup List . selected Value ) ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġprivate Ġfun Ġedit Startup () Ġ{ ĊĠĠĠĠĠĠĠ Ġif Ġ( startup List . is Selection Empty . not ()) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġindex Ġ= Ġstartup List . selectedIndex ĊĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġvalue Ġ= Ġstartup List . selected Value ĊĊĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġdialog Ġ= ĠEdit Startup Dialog ( s ymbolic Name Ġ= Ġvalue . first , Ġlevel Ġ= Ġvalue . second ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġif Ġ( dialog . show AndGet ()) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġlevel Ġ= Ġdialog . getNew Level () ĊĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġstartup Model . set ( index , Ġlevel ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġstartup List . setSelected Value ( level , Ġtrue ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġinner Ġclass ĠEdit Location Dialog ( ĊĠĠĠĠĠĠĠ Ġtitle : ĠString Ġ= Ġmessage (" config . target . location Dialog . title "), ĊĠĠĠĠĠĠĠ Ġprivate Ġval Ġdescription : ĠString Ġ= Ġmessage (" config . target . location Dialog . description "), ĊĠĠĠĠĠĠĠ Ġprivate Ġval Ġdefault Path : ĠString Ġ= Ġ"", ĊĠĠĠ Ġ) Ġ: ĠDialog Wrapper ( project ), ĠPanel With Anchor Ġ{ ĊĠĠĠĠĠĠĠ Ġprivate Ġval Ġfile Description Ġ= ĠFile Chooser Descriptor Factory . create Single Folder Descriptor () ĊĠĠĠĠĠĠĠ Ġprivate Ġvar Ġmy Anchor : ĠJ Component ? Ġ= Ġnull ĊĊĠĠĠĠĠĠĠ Ġprivate Ġval Ġpath Field Ġ= ĊĠĠĠĠĠĠĠĠĠĠĠ ĠFile Chooser Factory . getInstance (). create File TextField ( file Description , Ġmy Disposable ). field . apply Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġcolumns Ġ= Ġ 2 5 ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġprivate Ġval Ġpath Component Ġ= ĠTextField With Browse Button ( path Field ). apply Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġadd Browse Folder Listener ( title , Ġdescription , Ġproject , Ġfile Description ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġtext Ġ= Ġdefault Path ĊĠĠĠĠĠĠĠ Ġ}. let Ġ{ ĠL abeled Component . create ( it , Ġdescription , ĠBorderLayout . WEST ) Ġ} ĊĊĠĠĠĠĠĠĠ Ġprivate Ġval Ġdependency ComboBox Ġ= ĠCombo Box ( Dependency Scope . values (). map Ġ{ Ġit . displayName Ġ}. to Typed Array ()) ĊĠĠĠĠĠĠĠ Ġprivate Ġval Ġdependency Component Ġ= ĠL abeled Component . create ( ĊĠĠĠĠĠĠĠĠĠĠĠ Ġdependency ComboBox , Ġmessage (" config . target . location Dialog . dependency "), ĠBorderLayout . WEST ĊĠĠĠĠĠĠĠ Ġ) ĊĊĠĠĠĠĠĠĠ Ġinit Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ ĠsetTitle ( title ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġinit () ĊĊĠĠĠĠĠĠĠĠĠĠĠ Ġanchor Ġ= ĠUI Util . merge Components With Anchor ( path Component , Ġdependency Component ) ĊĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠ Ġoverride Ġfun Ġcreate Center Panel (): ĠJ Component Ġ= ĠVertical Box (). apply Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġadd ( path Component ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġadd ( dependency Component ) ĊĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠ Ġoverride Ġfun Ġget Anchor (): ĠJ Component ? Ġ= Ġmy Anchor ĊĠĠĠĠĠĠĠ Ġoverride Ġfun Ġset Anchor ( anchor : ĠJ Component ?) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġmy Anchor Ġ= Ġanchor ĊĊĠĠĠĠĠĠĠĠĠĠĠ Ġpath Component . anchor Ġ= Ġanchor ĊĠĠĠĠĠĠĠĠĠĠĠ Ġdependency Component . anchor Ġ= Ġanchor ĊĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠ Ġfun Ġget New Location (): ĠTarget Location Definition Ġ= ĠTarget Location Definition ( path Field . text ). apply Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġdependency Ġ= Ġdependency ComboBox . item Ġ?: ĠDependency Scope . COMPILE . displayName ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġinner Ġclass ĠEdit Startup Dialog ( ĊĠĠĠĠĠĠĠ Ġtitle : ĠString Ġ= Ġmessage (" config . target . startup Dialog . title "), ĊĠĠĠĠĠĠĠ Ġdescription : ĠString Ġ= Ġmessage (" config . target . startup Dialog . description "), ĊĠĠĠĠĠĠĠ Ġsymbolic Name : ĠString Ġ= Ġ"", ĊĠĠĠĠĠĠĠ Ġlevel : ĠInt Ġ= Ġ 4 , ĊĠĠĠ Ġ) Ġ: ĠDialog Wrapper ( project ), ĠPanel With Anchor Ġ{ ĊĠĠĠĠĠĠĠ Ġprivate Ġvar Ġmy Anchor : ĠJ Component ? Ġ= Ġnull ĊĊĠĠĠĠĠĠĠ Ġprivate Ġval Ġname TextField Ġ= ĠJ B TextField ( s ymbolic Name ) ĊĠĠĠĠĠĠĠ Ġprivate Ġval Ġlevel Spinner Ġ= ĠJ B Int Spinner ( level , Ġ- 1 , ĠInt . MAX _ VALUE , Ġ 1 ) ĊĊĠĠĠĠĠĠĠ Ġprivate Ġval Ġname Component Ġ= ĠL abeled Component . create ( name TextField , Ġdescription , ĠBorderLayout . WEST ) ĊĠĠĠĠĠĠĠ Ġprivate Ġval Ġlevel Component Ġ= ĊĠĠĠĠĠĠĠĠĠĠĠ ĠL abeled Component . create ( level Spinner , Ġmessage (" config . target . startup Dialog . level "), ĠBorderLayout . WEST ) ĊĊĠĠĠĠĠĠĠ Ġinit Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ ĠsetTitle ( title ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġinit () ĊĊĠĠĠĠĠĠĠĠĠĠĠ Ġanchor Ġ= ĠUI Util . merge Components With Anchor ( name Component , Ġlevel Component ) ĊĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠ Ġoverride Ġfun Ġcreate Center Panel (): ĠJ Component Ġ= ĠVertical Box (). apply Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġadd ( name Component ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġadd ( level Component ) ĊĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠ Ġoverride Ġfun Ġget Anchor (): ĠJ Component ? Ġ= Ġmy Anchor ĊĠĠĠĠĠĠĠ Ġoverride Ġfun Ġset Anchor ( anchor : ĠJ Component ?) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġmy Anchor Ġ= Ġanchor ĊĊĠĠĠĠĠĠĠĠĠĠĠ Ġname Component . anchor Ġ= Ġanchor ĊĠĠĠĠĠĠĠĠĠĠĠ Ġlevel Component . anchor Ġ= Ġanchor ĊĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠ Ġfun Ġget New Level (): ĠPair < String , ĠInt > Ġ= ĠPair ( name TextField . text , Ġlevel Spinner . number ) ĊĠĠĠ Ġ} Ċ } Ċ