/* Ċ Ġ* Ġ ĠCopyright Ġ( c ) Ġ 2 0 1 7 ĠD mit ry ĠZ hur av lev , ĠSer ge i ĠSte pan ov Ċ Ġ* Ċ Ġ* Ġ ĠLicensed Ġunder Ġthe ĠApache ĠLicense , ĠVersion Ġ 2 . 0 Ġ( the Ġ" License "); Ċ Ġ* Ġ Ġyou Ġmay Ġnot Ġuse Ġthis Ġfile Ġexcept Ġin Ġcompliance Ġwith Ġthe ĠLicense . Ċ Ġ* Ġ ĠYou Ġmay Ġobtain Ġa Ġcopy Ġof Ġthe ĠLicense Ġat Ċ Ġ* Ċ Ġ* Ġ Ġhttp :// www . apache . org / licenses / LICENSE - 2 . 0 Ċ Ġ* Ċ Ġ* Ġ ĠUnless Ġrequired Ġby Ġapplicable Ġlaw Ġor Ġagreed Ġto Ġin Ġwriting , Ġsoftware Ċ Ġ* Ġ Ġdistributed Ġunder Ġthe ĠLicense Ġis Ġdistributed Ġon Ġan Ġ" AS ĠIS " ĠBASIS , Ċ Ġ* Ġ ĠWITHOUT ĠWARRANTIES ĠOR ĠCONDITIONS ĠOF ĠANY ĠKIND , Ġeither Ġexpress Ġor Ġimplied . Ċ Ġ* Ġ ĠSee Ġthe ĠLicense Ġfor Ġthe Ġspecific Ġlanguage Ġgoverning Ġpermissions Ġand Ċ Ġ* Ġ Ġlimitations Ġunder Ġthe ĠLicense . Ċ Ġ*/ Ċ package Ġcom . hot swap . agent . plugin . settings Ċ Ċ import Ġcom . hot swap . agent . plugin . services . Download Manager Ċ import Ġcom . hot swap . agent . plugin . util . Constants . Companion . D CE VM _ HOW _ TO _ INSTALL _ URL Ċ import Ġcom . hot swap . agent . plugin . util . Constants . Companion . D CE VM _ RELEASE S _ URL Ċ import Ġcom . hot swap . agent . plugin . util . D CE VM Util Ċ import Ġcom . hot swap . agent . plugin . util . Hot Swap Agent Path Util Ċ import Ġcom . intellij . execution . Run Manager Ċ import Ġcom . intellij . openapi . file Chooser . FileChooser Descriptor Ċ import Ġcom . intellij . openapi . options . Configurable Ċ import Ġcom . intellij . openapi . project . Project Ċ import Ġcom . intellij . openapi . roots . Project Root Manager Ċ import Ġcom . intellij . ui . Document Adapter Ċ import Ġcom . intellij . util . execution . Parameters List Util Ċ import Ġjava . awt . Card Layout Ċ import Ġjava . awt . Color Ċ import Ġjava . io . File Ċ import Ġjava . util .* Ċ import Ġjavax . swing . J Component Ċ import Ġjavax . swing . event . Document Event Ċ Ċ /** Ċ Ġ* Ġ@ author ĠD mit ry ĠZ hur av lev Ċ Ġ* ĠĠĠĠĠĠĠĠ ĠDate : ĠĠ 0 9 . 0 3 . 2 0 1 7 Ċ Ġ*/ Ċ class ĠHot Swap Agent Plugin Settings Configurable ( project : ĠProject ) Ġ: ĠConfigur able Ġ{ ĊĠĠĠ Ġcompanion Ġobject Ġ{ ĊĠĠĠĠĠĠĠ Ġval Ġbundle Ġ= ĠResource Bundle . get Bundle (" Hot Swap Agent Int ellij Plugin Bundle ") !! ĊĠĠĠĠĠĠĠ Ġprivate Ġconst Ġval ĠD CE VM _ NOT _ DE TERMIN ED Ġ= Ġ"< not Ġdetermined >" ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġprivate Ġvar Ġstate Changed : ĠBoolean Ġ= Ġfalse ĊĠĠĠ Ġprivate Ġval Ġform Ġ= ĠHot Swap Agent Plugin Settings Form () ĊĠĠĠ Ġprivate Ġval Ġdownload Manager Ġ= ĠDownload Manager . getInstance ( project ) ĊĠĠĠ Ġprivate Ġval Ġproject Root Manager Ġ= ĠProject Root Manager . getInstance ( project ) ĊĠĠĠ Ġprivate Ġval Ġstate Provider Ġ= ĠHot Swap Agent Plugin Settings Provider . getInstance ( project ) ĊĠĠĠ Ġprivate Ġval Ġrun Manager Ġ= ĠRun Manager . getInstance ( project ) ĊĊĠĠĠ Ġoverride Ġfun Ġis Modified () Ġ= Ġstate Changed ĊĊĠĠĠ Ġoverride Ġfun Ġget DisplayName () Ġ= Ġbundle . getString (" settings . hot swap . plugin . name ") ĊĊĊĠĠĠ Ġoverride Ġfun Ġapply () Ġ{ ĊĠĠĠĠĠĠĠ Ġstate Provider . currentState . agent Path Ġ= Ġform . agent Install Path Field . text ĊĠĠĠĠĠĠĠ Ġstate Provider . currentState . enable Agent ForAll Configuration Ġ= Ġform . apply Agent To All Configurations Box . isSelected ĊĠĠĠĠĠĠĠ Ġstate Provider . currentState . selected Run Configurations Ġ= Ġform . configuration Table Provider . getSelected Configuration Names () ĊĠĠĠĠĠĠĠ Ġstate Provider . currentState . disabled Plugins Ġ= Ġform . disabled Plugins Field . text . parse () ĊĠĠĠĠĠĠĠ Ġshow Update Button () ĊĠĠĠĠĠĠĠ Ġstate Changed Ġ= Ġfalse ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġoverride Ġfun Ġcreate Component (): ĠJ Component ? Ġ{ ĊĠĠĠĠĠĠĠ Ġsetup Form Components () ĊĠĠĠĠĠĠĠ Ġreturn Ġform . root Panel ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġoverride Ġfun Ġreset () Ġ{ ĊĠĠĠĠĠĠĠ Ġform . agent Install Path Field . text Ġ= Ġstate Provider . currentState . agent Path ĊĠĠĠĠĠĠĠ Ġform . apply Agent To All Configurations Box . isSelected Ġ= Ġstate Provider . currentState . enable Agent ForAll Configuration ĊĠĠĠĠĠĠĠ Ġform . disabled Plugins Field . text Ġ= Ġstate Provider . currentState . disabled Plugins . join String () ĊĠĠĠĠĠĠĠ Ġstate Changed Ġ= Ġfalse ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġoverride Ġfun Ġget Help Topic () Ġ= Ġnull ĊĊĠĠĠ Ġprivate Ġfun Ġsetup Form Components () Ġ{ ĊĠĠĠĠĠĠĠ Ġproject Root Manager . project Sdk ?. let Ġ{ Ġsdk Ġ-> ĊĠĠĠĠĠĠĠĠĠĠĠ Ġform . dce vm Version Label . text Ġ= ĠD CE VM Util . determine D CE VM Version ( sdk ) Ġ?: ĠD CE VM _ NOT _ DE TERMIN ED ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġform . agent Install Path Field . add Browse Folder Listener ( null , Ġnull , Ġnull , ĠFile Chooser Descriptor ( false , Ġfalse , Ġtrue , Ġtrue , Ġfalse , Ġfalse )) ĊĠĠĠĠĠĠĠ Ġform . agent Install Path Field . textField . document . add Document Listener ( object Ġ: ĠDocument Adapter () Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġoverride Ġfun Ġtext Changed ( event : ĠDocument Event ?) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġstate Changed Ġ= Ġform . agent Install Path Field . textField . text Ġ!= Ġstate Provider . currentState . agent Path ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġ}) ĊĠĠĠĠĠĠĠ Ġform . disabled Plugins Field . document . add Document Listener ( object : ĠDocument Adapter (){ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġoverride Ġfun Ġtext Changed ( event : ĠDocument Event ?) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġstate Changed Ġ= Ġform . disabled Plugins Field . text Ġ!= Ġstate Provider . currentState . disabled Plugins . join String () ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġ}) ĊĠĠĠĠĠĠĠ Ġform . apply Agent To All Configurations Box . addItem Listener Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġstate Changed Ġ= Ġform . apply Agent To All Configurations Box . isSelected Ġ!= Ġstate Provider . currentState . enable Agent ForAll Configuration ĊĠĠĠĠĠĠĠĠĠĠĠ Ġform . configuration Table Provider . table View . isEnabled Ġ= Ġ! form . apply Agent To All Configurations Box . isSelected ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġform . update Button . addActionListener Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġwith ( download Manager ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġdownload Agent Jar S ynchronously ( artifact To Download Ġ= Ġget Latest Agent Descriptor OrDefault (), Ġcan Be Canceled Ġ= Ġfalse ) Ġ{ Ġdownloaded Agent Path Ġ-> ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġform . agent Install Path Field . textField . text Ġ= Ġdownloaded Agent Path ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġform . dce vm Download Suggestion Label . apply Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġset Html Text (""" ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠD CE VM Ġinstallation Ġnot Ġfound Ġfor ĠJDK Ġspecified Ġfor Ġthe Ġcurrent Ġproject . ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠYou Ġshould Ġ< a > download </ a > Ġand """) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġforeground Ġ= ĠColor . red ĊĠĠĠĠĠĠĠĠĠĠĠ Ġset Hyper link Target ( D CE VM _ RELEASE S _ URL ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġis Visible Ġ= Ġform . dce vm Version Label . text Ġ== ĠD CE VM _ NOT _ DE TERMIN ED ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġform . dce vm How To Install Label . apply Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġset Html Text (""" < a > install </ a > Ġit . """) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġforeground Ġ= ĠColor . red ĊĠĠĠĠĠĠĠĠĠĠĠ Ġset Hyper link Target ( D CE VM _ HOW _ TO _ INSTALL _ URL ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġis Visible Ġ= Ġform . dce vm Version Label . text Ġ== ĠD CE VM _ NOT _ DE TERMIN ED ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġform . configuration Table Provider . apply Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġadd Model ChangeListener Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġstate Changed Ġ= Ġstate Provider . currentState . selected Run Configurations Ġ!= Ġform . configuration Table Provider . getSelected Configuration Names () ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠ Ġset Items ( run Manager . all Configurations List . to Table Items ()) ĊĠĠĠĠĠĠĠĠĠĠĠ ĠsetSelected ( state Provider . currentState . selected Run Configurations ) ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġprivate Ġfun Ġshow Update Button () Ġ{ ĊĠĠĠĠĠĠĠ Ġval Ġcurrent Version Ġ= ĠHot Swap Agent Path Util . determine Agent Version From Path ( state Provider . currentState . agent Path ) ĊĠĠĠĠĠĠĠ Ġval Ġshow Ġ= Ġcurrent Version Ġ!= Ġnull Ġ&& ĠFile ( state Provider . currentState . agent Path ). exists () Ġ&& Ġdownload Manager . is Latest Agent Version Available ( current Version ) ĊĠĠĠĠĠĠĠ Ġif Ġ( show ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ( form . update Button Panel . layout Ġas ĠCard Layout ). show ( form . update Button Panel , Ġ" card With Update Button ") ĊĠĠĠĠĠĠĠ Ġ} Ġelse Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ( form . update Button Panel . layout Ġas ĠCard Layout ). show ( form . update Button Panel , Ġ" empty Card ") ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġprivate Ġfun ĠString . parse () Ġ= ĠParameters List Util . COL ON _ LINE _ PARSER .` fun `( this ). map ( String :: trim ). to Mutable Set () ĊĊĠĠĠ Ġprivate Ġfun ĠSet < String >. join String () Ġ= ĠParameters List Util . COL ON _ LINE _ JOIN ER .` fun `( this . toList ()) Ċ }