package Ġg ma . logs . app . controller . config Ċ Ċ import Ġg ma . commons . fx . find Expand And Select Ċ import Ġg ma . logs . app . model . config . Configuration Category Ċ import Ġg ma . logs . app . model . config . Configuration Manager Ċ import Ġg ma . logs . app . view . config . Configuration Edit Common Tree Fragment Ċ import Ġjavafx . beans . property . Simple ObjectProperty Ċ import Ġjavafx . scene . control . Tree Cell Ċ import Ġjavafx . scene . control . TreeItem Ċ import Ġjavafx . scene . control . TreeView Ċ import Ġt orn ad of x .* Ċ Ċ class ĠConfigur ations Edit Controller Ġ: ĠController () Ġ{ ĊĊĠĠĠ Ġval Ġselected ItemProperty Ġ= ĠSimple ObjectProperty < Any >() ĊĊĠĠĠ Ġval ĠviewModel Ġ= ĠConfigur ations Edit ViewModel ( this ) ĊĊĠĠĠ Ġval Ġtree Formatter : ĠTree Cell <* >. ( Any ) Ġ-> ĠUnit Ġ= Ġ{ ĊĠĠĠĠĠĠĠ Ġif Ġ( it Ġis ĠConfiguration Scope ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġtext Property (). bind ( it . name Binding ) ĊĠĠĠĠĠĠĠ Ġ} Ġelse Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġtext Ġ= Ġ( it Ġas ĠConfiguration Category ). name ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġfun Ġtree Child Factory ( item : ĠTree Item < Any >): ĠIterable < Any >? Ġ= Ġwith ( item . value ) Ġ{ ĊĠĠĠĠĠĠĠ Ġwhen Ġ( this ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġis ĠConfiguration Category Ġ-> ĠviewModel . get Configurations ( this ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġis ĠConfiguration Scope Ġ-> Ġnull ĊĠĠĠĠĠĠĠĠĠĠĠ Ġelse Ġ/* Ġroot Ġ*/ Ġ-> ĠConfiguration Manager . categories ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġfun Ġok Action (): ĠBoolean Ġ{ ĊĠĠĠĠĠĠĠ Ġif Ġ(! viewModel . commit ()) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġfailed Ġ= ĠviewModel . validators . first Ġ{ Ġ! it . validate ( true ) Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠ Ġfailed . node . find Parent < Configuration Edit Common Tree Fragment >() ?. let Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġselected ItemProperty . value Ġ= Ġit . scope ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠ Ġfailed . node . request Focus () ĊĠĠĠĠĠĠĠĠĠĠĠ Ġreturn Ġfalse ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġreturn Ġtrue ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġval Ġcan AddNew Configuration Binding Ġ= Ġselected ItemProperty . boolean Binding Ġ{ Ġit Ġ!= Ġnull Ġ} ĊĠĠĠ Ġfun Ġon AddNew Configuration ( tree : ĠTree View < Any >) Ġ{ ĊĠĠĠĠĠĠĠ Ġval Ġselected Ġ= Ġselected ItemProperty . value ĊĠĠĠĠĠĠĠ Ġval Ġcategory Ġ= ĊĠĠĠĠĠĠĠĠĠĠĠ Ġif Ġ( selected Ġis ĠConfiguration Scope ) Ġselected . configuration . category Ġelse Ġselected Ġas ĠConfiguration Category ĊĊĠĠĠĠĠĠĠ Ġval Ġconfiguration Ġ= ĠviewModel . add Configuration ( Configuration Manager . new Configuration ( category )) ĊĠĠĠĠĠĠĠ Ġtree . find Expand And Select ( configuration ) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġval Ġcan Delete Selected Configuration Binding Ġ= ĊĠĠĠĠĠĠĠ Ġselected ItemProperty . boolean Binding Ġ{ Ġit Ġis ĠConfiguration Scope Ġ} ĊĊĠĠĠ Ġfun ĠonDelete Selected Configuration () Ġ{ ĊĠĠĠĠĠĠĠ Ġ( selected ItemProperty . value Ġas ? ĠConfiguration Scope )?. let Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ ĠviewModel . remove Configuration ( it ) ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġval Ġcan Duplicate Selected Configuration Binding Ġ= ĊĠĠĠĠĠĠĠ Ġselected ItemProperty . boolean Binding Ġ{ Ġit Ġis ĠConfiguration Scope Ġ} ĊĊĠĠĠ Ġfun Ġon Duplicate Selected Configuration ( tree : ĠTree View < Any >) Ġ{ ĊĠĠĠĠĠĠĠ Ġ( selected ItemProperty . value Ġas ? ĠConfiguration Scope )?. let Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġduplicate Ġ= ĠviewModel . add Configuration ( Configuration Manager . duplicate Configuration ( it . configuration )) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġtree . find Expand And Select ( duplicate ) ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} Ċ Ċ } Ċ