// ĠCopyright Ġ 2 0 0 0 - 2 0 1 9 ĠJetBrains Ġs . r . o . ĠUse Ġof Ġthis Ġsource Ġcode Ġis Ġgoverned Ġby Ġthe ĠApache Ġ 2 . 0 Ġlicense Ġthat Ġcan Ġbe Ġfound Ġin Ġthe ĠLICENSE Ġfile . Ċ package Ġcom . intellij . code Insight . hints . settings . language Ċ Ċ import Ġcom . intellij . code Insight . hints . ChangeListener Ċ import Ġcom . intellij . code Insight . hints . Immediate Configurable Ċ import Ġcom . intellij . ui . Context Help Label Ċ import Ġcom . intellij . util . ui . J BU I Ċ import Ġjava . awt . Component Ċ import Ġjava . awt . Dimension Ċ import Ġjavax . swing . Box Ċ import Ġjavax . swing . BoxLayout Ċ import Ġjavax . swing . J CheckBox Ċ import Ġjavax . swing . JPanel Ċ Ċ internal Ġclass ĠC ases Panel ( ĊĠ Ġcases : ĠList < Immediate Configurable . Case >, ĊĠ Ġmain CheckBox Name : ĠString , ĊĠ Ġprivate Ġval Ġload Main CheckBox Value : Ġ() Ġ-> ĠBoolean , ĊĠ Ġprivate Ġval Ġon User Changed Main CheckBox : Ġ( Boolean ) Ġ-> ĠUnit , ĊĠ Ġlistener : ĠChange Listener Ċ ) Ġ: ĠJPanel () Ġ{ ĊĠ Ġprivate Ġval Ġcase List Panel Ġ= ĠCase List Panel ( cases , Ġlistener ) ĊĠ Ġprivate Ġval Ġmain CheckBox Ġ= ĠJ CheckBox ( main CheckBox Name , Ġload Main CheckBox Value ()) ĊĊĠ Ġinit Ġ{ ĊĠĠĠ Ġlayout Ġ= ĠBox Layout ( this , ĠBox Layout . Y _ AXIS ) ĊĠĠĠ Ġadd ( main CheckBox ) ĊĠĠĠ Ġif Ġ( cases . isNotEmpty ()) Ġ{ ĊĠĠĠĠĠ Ġadd ( case List Panel ) ĊĠĠĠ Ġ} ĊĠĠĠ Ġmain CheckBox . addActionListener Ġ{ ĊĠĠĠĠĠ Ġval Ġselected Ġ= Ġmain CheckBox . isSelected ĊĠĠĠĠĠ Ġcase List Panel . setEnabled Check boxes ( selected ) ĊĠĠĠĠĠ Ġon User Changed Main CheckBox ( selected ) ĊĠĠĠ Ġ} ĊĠĠĠ Ġcase List Panel . setEnabled Check boxes ( load Main CheckBox Value ()) ĊĠĠĠ Ġre validate () ĊĠ Ġ} ĊĊĠ Ġfun Ġupdate From Settings () Ġ{ ĊĠĠĠ Ġval Ġmain CheckBox Selected Ġ= Ġload Main CheckBox Value () ĊĠĠĠ Ġmain CheckBox . isSelected Ġ= Ġmain CheckBox Selected ĊĠĠĠ Ġcase List Panel . setEnabled Check boxes ( main CheckBox Selected ) ĊĠĠĠ Ġcase List Panel . update CheckBox es () ĊĠ Ġ} Ċ } Ċ Ċ private Ġclass ĠCase List Panel ( val Ġcases : ĠList < Immediate Configurable . Case >, Ġlistener : ĠChange Listener ) Ġ: ĠJPanel () Ġ{ ĊĠ Ġval Ġcheck Boxes Ġ= Ġmutable ListOf < J CheckBox >() ĊĊĠ Ġinit Ġ{ ĊĠĠĠ Ġlayout Ġ= ĠBox Layout ( this , ĠBox Layout . Y _ AXIS ) ĊĠĠĠ Ġborder Ġ= ĠJ BU I . B orders . empty ( 0 , Ġ 2 0 , Ġ 0 , Ġ 0 ) ĊĠĠĠ Ġadd ( Box . create Rigid Area ( J BU I . size ( 0 , Ġ 5 ))) ĊĠĠĠ Ġfor Ġ( case Ġin Ġcases ) Ġ{ ĊĠĠĠĠĠ Ġval ĠcheckBox Ġ= ĠJ CheckBox ( case . name , Ġcase . value ) ĊĠĠĠĠĠ ĠcheckBox . alignment X Ġ= ĠComponent . LEFT _ ALIGNMENT ĊĠĠĠĠĠ Ġcheck Boxes . add ( checkBox ) ĊĠĠĠĠĠ ĠcheckBox . addActionListener Ġ{ ĊĠĠĠĠĠĠĠ Ġcase . value Ġ= ĠcheckBox . isSelected ĊĠĠĠĠĠĠĠ Ġlistener . settings Changed () ĊĠĠĠĠĠ Ġ} ĊĠĠĠĠĠ Ġval Ġdescription Ġ= Ġcase . extended Description ĊĠĠĠĠĠ Ġif Ġ( description Ġ!= Ġnull ) Ġ{ ĊĠĠĠĠĠĠĠ Ġval ĠcheckBox Panel Ġ= ĠJPanel () ĊĠĠĠĠĠĠĠ ĠcheckBox Panel . layout Ġ= ĠBox Layout ( checkBox Panel , ĠBox Layout . X _ AXIS ) ĊĠĠĠĠĠĠĠ ĠcheckBox Panel . alignment X Ġ= ĠComponent . LEFT _ ALIGNMENT ĊĠĠĠĠĠĠĠ ĠcheckBox Panel . add ( checkBox ) ĊĠĠĠĠĠĠĠ ĠcheckBox Panel . add ( Box . create Rigid Area ( J BU I . size ( 5 , Ġ 0 ))) ĊĠĠĠĠĠĠĠ ĠcheckBox Panel . add ( Context Help Label . create ( description )) ĊĠĠĠĠĠĠĠ Ġadd ( checkBox Panel ) ĊĠĠĠĠĠ Ġ} Ġelse Ġ{ ĊĠĠĠĠĠĠĠ Ġadd ( checkBox ) ĊĠĠĠĠĠ Ġ} ĊĠĠĠĠĠ Ġadd ( Box . create Rigid Area ( Dimension ( 0 , Ġ 3 ))) ĊĠĠĠ Ġ} ĊĠĠĠ Ġadd ( Box . create Rigid Area ( J BU I . size ( 0 , Ġ 5 ))) ĊĠ Ġ} ĊĊĠ Ġfun Ġset Enabled Check boxes ( value : ĠBoolean ) Ġ{ ĊĠĠĠ Ġfor Ġ( checkBox Ġin Ġcheck Boxes ) Ġ{ ĊĠĠĠĠĠ ĠcheckBox . isEnabled Ġ= Ġvalue ĊĠĠĠ Ġ} ĊĠ Ġ} ĊĊĠ Ġfun Ġupdate CheckBox es () Ġ{ ĊĠĠĠ Ġfor Ġ(( index , ĠcheckBox ) Ġin Ġcheck Boxes . with Index ()) Ġ{ ĊĠĠĠĠĠ ĠcheckBox . isSelected Ġ= Ġcases [ index ]. value ĊĠĠĠ Ġ} ĊĠ Ġ} Ċ }