package Ġorg . jetbrains . kotlin . preferences . compiler Ċ Ċ import Ġorg . eclipse . j face . dialogs . ID ialog Constants Ċ import Ġorg . eclipse . j face . dialogs . Message Dialog Ċ import Ġorg . eclipse . j face . dialogs . Tray Dialog Ċ import Ġorg . eclipse . swt . SW T Ċ import Ġorg . eclipse . swt . layout . GridLayout Ċ import Ġorg . eclipse . swt . widgets . Composite Ċ import Ġorg . eclipse . swt . widgets . Control Ċ import Ġorg . eclipse . swt . widgets . Shell Ċ import Ġorg . jetbrains . kotlin . core . preferences . Compiler Plugin Ċ import Ġorg . jetbrains . kotlin . core . preferences . Preferences Collection Ċ import Ġorg . jetbrains . kotlin . swt . builders .* Ċ Ċ class ĠCompiler Plugin Dialog ( ĊĠĠĠĠĠĠĠ Ġshell : ĠShell , ĊĠĠĠĠĠĠĠ Ġprivate Ġval Ġall Plugins : ĠPreferences Collection < Compiler Plugin >, ĊĠĠĠĠĠĠĠ Ġprivate Ġval Ġplugin : ĠCompiler Plugin ? Ċ ) Ġ: ĠTr ay Dialog ( shell ) Ġ{ ĊĠĠĠ Ġprivate Ġvar Ġkey Field Ġ= Ġplugin ?. key ĊĊĠĠĠ Ġprivate Ġvar Ġpath Field Ġ= Ġplugin ?. jar Path ĊĠĠĠĠĊĠĠĠ Ġprivate Ġvar Ġargs Field Ġ= Ġplugin ?. args ?. join ToString ( separator Ġ= Ġ"\ n ") ĊĠĠĠĠĊĠĠĠ Ġprivate Ġval Ġnew Key : ĠString ĊĠĠĠĠĠĠĠ Ġget () Ġ= Ġkey Field ?. trim () Ġ?: Ġ"" ĊĊĊĠĠĠ Ġoverride Ġfun Ġcreate Dialog Area ( parent : ĠComposite ): ĠControl Ġ= ĊĠĠĠĠĠĠĠĠĠĠĠ Ġparent . as View . grid Container ( cols Ġ= Ġ 2 ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ( control . layout Ġas ĠGrid Layout ). margin Top Ġ= Ġ 1 0 ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġlabel (" Plugin Ġname :") ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġtext Field (:: key Field , Ġstyle Ġ= ĠSWT . BORDER ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġlayout ( horizontal Grab Ġ= Ġtrue ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġlabel (" Path Ġto Ġjar :") ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġtext Field (:: path Field , Ġstyle Ġ= ĠSWT . BORDER ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġlayout ( horizontal Grab Ġ= Ġtrue ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġgroup (" Plugin Ġoptions :") Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġlayout ( horizontal Span Ġ= Ġ 2 , Ġhorizontal Grab Ġ= Ġtrue , Ġvertical Grab Ġ= Ġtrue ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġtext Field (:: args Field , Ġstyle Ġ= ĠSWT . BORDER Ġor ĠSWT . MULTI Ġor ĠSWT . V _ SCROLL ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġlayout ( suggest ed Height Ġ= Ġ 2 0 0 , Ġsuggested Width Ġ= Ġ 4 5 0 ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġlabel (" Note : Ġplugin Ġoptions Ġshould Ġmatch Ġthe Ġ< plugin Ġid >:< key >= < value > Ġpattern ") ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ}. control ĊĊĠĠĠ Ġoverride Ġfun Ġconfigure Shell ( new Shell : ĠShell ) Ġ{ ĊĠĠĠĠĠĠĠ Ġsuper . configure Shell ( new Shell ) ĊĠĠĠĠĠĠĠ Ġnew Shell . text Ġ= Ġif Ġ( plugin Ġ== Ġnull ) Ġ" New Ġcompiler Ġplugin " Ġelse Ġ" Edit Ġcompiler Ġplugin " ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġoverride Ġfun Ġis Help Available () Ġ= Ġfalse ĊĊĠĠĠ Ġoverride Ġfun Ġbutton Pressed ( button Id : ĠInt ) Ġ{ ĊĠĠĠĠĠĠĠ Ġval Ġsuccessful Ġ= Ġtry Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġwhen Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġbutton Id Ġ!= ĠID ialog Constants . OK _ ID Ġ-> Ġtrue ĊĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġkey Field . isNull Or Blank () Ġ-> Ġthrow ĠValidation Exception (" Plugin Ġname Ġcannot Ġbe Ġblank ") ĊĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġplugin Ġ!= Ġnull Ġ&& Ġnew Key Ġ== Ġplugin . key Ġ-> Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġwith ( plugin ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġjar Path Ġ= Ġpath Field ?. trim () ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġargs Ġ= Ġprocess Args () ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġtrue ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġnew Key Ġin Ġall Plugins Ġ-> Ġthrow ĠValidation Exception (" Plugin Ġwith Ġchosen Ġname Ġalready Ġexists ") ĊĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġelse Ġ-> Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġplugin ?. delete () ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġwith ( all Plugins [ new Key ]) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġjar Path Ġ= Ġpath Field ?. trim () ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġactive Ġ= Ġplugin ?. active Ġ?: Ġtrue ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġargs Ġ= Ġprocess Args () ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġtrue ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġ} Ġcatch Ġ( e : ĠValidation Exception ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ ĠMessage Dialog . open Error ( shell , Ġ" Validation Ġerror ", Ġe . message ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġfalse ĊĠĠĠĠĠĠĠ Ġ} ĊĊĊĠĠĠĠĠĠĠ Ġif Ġ( successful ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġsuper . button Pressed ( button Id ) ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} ĊĠĠĠĠĊĠĠĠ Ġprivate Ġfun Ġprocess Args () Ġ: ĠList < String > Ġ{ ĊĠĠĠĠĠĠĠ Ġval Ġprocessed Args Ġ= Ġargs Field . or Empty () ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ. line Sequence () ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ. map ( String :: trim ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ. filter Not ( String :: isEmpty ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ. toList () ĊĊĠĠĠĠĠĠĠ Ġprocessed Args . find Ġ{ Ġ""" .+ :. += .+ """. to Regex (). match Ent ire ( it ) Ġ== Ġnull Ġ} ?. also Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġthrow ĠValidation Exception ("$ it Ġdoes Ġnot Ġmatch Ġthe Ġ< plugin Ġid >:< key >= < value > Ġpattern .") ĊĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠ Ġval Ġplugin Prefixes Ġ= Ġprocessed Args . map Ġ{ Ġ""" ^ .+ : """. to Regex (). find ( it )?. value Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ. toSet () ĊĠĠĠĠĠĠĠ Ġif Ġ( plugin Prefixes . size Ġ> Ġ 1 ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġthrow ĠValidation Exception (" Plugin Ġarguments Ġhave Ġdifferent Ġprefixes ") ĊĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠ Ġreturn Ġprocessed Args ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġoverride Ġfun Ġcreate Buttons For Button Bar ( parent : ĠComposite ) Ġ{ ĊĠĠĠĠĠĠĠ Ġcreate Button ( parent , ĠID ialog Constants . OK _ ID , ĠID ialog Constants . OK _ LABEL , Ġtrue ) ĊĠĠĠĠĠĠĠ Ġcreate Button ( parent , ĠID ialog Constants . CANCEL _ ID , ĠID ialog Constants . CANCEL _ LABEL , Ġfalse ) ĊĠĠĠ Ġ} Ċ } Ċ Ċ private Ġclass ĠValidation Exception ( message : ĠString ): ĠException ( message )