/* Ċ Ġ* ĠCopyright Ġ 2 0 1 7 - 2 0 1 9 ĠAl jos cha ĠG re be Ċ Ġ* Ċ Ġ* Ġ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 Ċ Ġ* Ċ Ġ* ĠĠ Ġhttps :// 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 . alm ight y alp aca . jetbrains . plugins . discord . plugin . settings . options . types Ċ Ċ import Ġcom . alm ight y alp aca . jetbrains . plugins . discord . plugin . settings . options . Option Creator Ċ import Ġcom . alm ight y alp aca . jetbrains . plugins . discord . plugin . settings . options . Option Holder Ċ import Ġcom . alm ight y alp aca . jetbrains . plugins . discord . plugin . settings . options . impl . Option Provider Impl Ċ import Ġcom . alm ight y alp aca . jetbrains . plugins . discord . plugin . utils . g bc Ċ import Ġcom . intellij . ui . Ide Border Factory Ċ import Ġorg . j dom . Element Ċ import Ġjava . awt . Grid BagConstraints Ċ import Ġjava . awt . Grid BagLayout Ċ import Ġjava . awt . Insets Ċ import Ġjavax . swing . JPanel Ċ import Ġkotlin . math . round ToInt Ċ import Ġkotlin . reflect . K Property Ċ Ċ fun ĠOption Creator < in ĠOption Holder >. group ( description : ĠString ) Ġ= ĠOption Provider Impl ( this , ĠOption Group ( description )) Ċ Ċ class ĠOption Group ( description : ĠString ) Ġ: ĠOption < Group >( description ), ĠOption Holder , ĠGroup . Provider Ġ{ ĊĠĠĠ Ġprivate Ġval Ġvalue Ġ= ĠGroup ( this ) ĊĠĠĠ Ġoverride Ġfun ĠgetValue ( this Ref : ĠOption Holder , Ġproperty : ĠK Property <* >) Ġ= Ġvalue ĊĊĠĠĠ Ġoverride Ġfun Ġadd ChangeListener ( listener : Ġ( Group ) Ġ-> ĠUnit ) Ġ= Ġthrow ĠException (" Cannot Ġlisten Ġto Ġgroup Ġchanges ") ĊĊĠĠĠ Ġoverride Ġval Ġcomponent Ġby Ġlazy Ġ{ ĊĠĠĠĠĠĠĠ ĠJPanel (). apply Ġpanel @{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġlayout Ġ= ĠGrid BagLayout () ĊĊĠĠĠĠĠĠĠĠĠĠĠ Ġvar Ġy Ġ= Ġ 0 ĊĠĠĠĠĠĠĠĠĠĠĠ Ġfor Ġ( option Ġin Ġoptions . values ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġadd ( option . component , Ġg bc Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġgrid x Ġ= Ġ 0 ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġgrid y Ġ= Ġy ++ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġgrid width Ġ= Ġ 1 ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġgrid height Ġ= Ġ 1 ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġanchor Ġ= ĠGridBagConstraints . NORTH WEST ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġfill Ġ= ĠGridBagConstraints . HORIZONTAL ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġweight x Ġ= Ġ 1 . 0 ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ}) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġfont Height Ġ= Ġget Font Metrics ( font ). height ĊĊĠĠĠĠĠĠĠĠĠĠĠ Ġif Ġ( description . isNotBlank ()) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġborder Ġ= ĠIde Border Factory . create Title d Border ( description , Ġfalse , ĠIn sets (( font Height Ġ* Ġ 1 . 5 ). round ToInt (), Ġ 0 , Ġfont Height , Ġ 0 )) ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġoverride Ġvar Ġis Component Enabled : ĠBoolean Ġ= Ġtrue ĊĠĠĠĠĠĠĠ Ġset ( value ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġfield Ġ= Ġvalue ĊĊĠĠĠĠĠĠĠĠĠĠĠ Ġfor Ġ( option Ġin Ġoptions . values ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġoption . is Component Enabled Ġ= Ġvalue ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠ Ġoverride Ġval Ġoptions : ĠMutable Map < String , ĠOption <* >> Ġ= ĠLinkedHashMap () ĊĊĠĠĠ Ġoverride Ġval Ġis Modified : ĠBoolean ĊĠĠĠĠĠĠĠ Ġget () Ġ= Ġoptions . values . any ( Option <* >:: is Modified ) ĊĠĠĠ Ġoverride Ġval Ġis Default : ĠBoolean ĊĠĠĠĠĠĠĠ Ġget () Ġ= Ġoptions . values . all ( Option <* >:: is Default ) ĊĊĠĠĠ Ġoverride Ġfun Ġapply () Ġ= Ġsuper . apply () ĊĠĠĠ Ġoverride Ġfun Ġreset () Ġ= Ġsuper . reset () ĊĊĠĠĠ Ġoverride Ġfun Ġwrite Xml ( element : ĠElement , Ġkey : ĠString ) Ġ{ ĊĠĠĠĠĠĠĠ Ġfor Ġ(( child Key , Ġoption ) Ġin Ġoptions ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġif Ġ(! option . is Default ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġoption . write Xml ( element , Ġchild Key ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġoverride Ġfun Ġread Xml ( element : ĠElement , Ġkey : ĠString ) Ġ{ ĊĠĠĠĠĠĠĠ Ġfor Ġ(( child Key , Ġoption ) Ġin Ġoptions ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġoption . read Xml ( element , Ġchild Key ) ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} Ċ } Ċ Ċ class ĠGroup ( private Ġval Ġoption : ĠOption Group ) Ġ: ĠValue (), ĠOption Holder Ġby Ġoption Ġ{ ĊĠĠĠ Ġinterface ĠProvider Ġ: ĠValue . Provider Ġ{ ĊĠĠĠĠĠĠĠ Ġoverride Ġoperator Ġfun ĠgetValue ( this Ref : ĠOption Holder , Ġproperty : ĠK Property < *> ): ĠGroup ĊĠĠĠ Ġ} Ċ } Ċ