package Ġui . settings . widget Ċ Ċ import Ġcom . intellij . ui . Ide Border Factory Ċ import Ġui . settings . Settings State Ċ import Ġutil . add Text ChangeListener Ċ import Ġutil . update Text Ċ import Ġjava . awt . Grid BagLayout Ċ import Ġjavax . swing . JLabel Ċ import Ġjavax . swing . JPanel Ċ import Ġjavax . swing . JTextField Ċ Ċ class ĠCustom Variable Details Panel Ġ: ĠJPanel () Ġ{ ĊĊĠĠĠ Ġvar Ġon Name TextChanged : Ġ(( String ) Ġ-> ĠUnit )? Ġ= Ġnull ĊĊĠĠĠ Ġprivate Ġval Ġname TextField Ġ= ĠJTextField () ĊĊĠĠĠ Ġprivate Ġvar Ġlisteners Blocked Ġ= Ġfalse ĊĊĠĠĠ Ġinit Ġ{ ĊĠĠĠĠĠĠĠ Ġborder Ġ= ĠIde Border Factory . create Title d Border (" Custom ĠVariable ĠDetails ", Ġfalse ) ĊĠĠĠĠĠĠĠ Ġlayout Ġ= ĠGrid BagLayout () ĊĊĠĠĠĠĠĠĠ Ġadd ( JLabel (" Custom ĠVariable ĠName :" ), Ġconstraints Left ( 0 , Ġ 0 )) ĊĠĠĠĠĠĠĠ Ġadd ( name TextField , Ġconstraints Right ( 1 , Ġ 0 )) ĊĊĠĠĠĠĠĠĠ Ġname TextField . add Text ChangeListener Ġ{ Ġif Ġ(! listeners Blocked ) Ġon Name TextChanged ?. invoke ( it ) Ġ} ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġfun Ġrender ( state : ĠSettings State ) Ġ{ ĊĠĠĠĠĠĠĠ Ġlisteners Blocked Ġ= Ġtrue ĊĠĠĠĠĠĠĠ Ġval Ġselected Custom Variable Ġ= Ġstate . selected Custom Variable ĊĠĠĠĠĠĠĠ Ġname TextField . update Text ( selected Custom Variable ?. name Ġ?: Ġ"") ĊĊĠĠĠĠĠĠĠ Ġis Enabled Ġ= Ġselected Custom Variable Ġ!= Ġnull ĊĠĠĠĠĠĠĠ Ġcomponents . forEach Ġ{ Ġit . isEnabled Ġ= Ġselected Custom Variable Ġ!= Ġnull Ġ} ĊĠĠĠĠĠĠĠ Ġlisteners Blocked Ġ= Ġfalse ĊĠĠĠ Ġ} Ċ } ĊĊĊ