import Ġjava FX Med i ators . Custom FX TableView Ċ import Ġjavafx . event . EventHandler Ċ import Ġjavafx . f xml . FXML Ċ import Ġjavafx . scene . Node Ċ import Ġjavafx . scene . control . ContextMenu Ċ import Ġjavafx . scene . control . MenuItem Ċ import Ġti OP F . Mapper . Project Ċ import Ġti OP F . Mapper . Project . Unit . Class Item . Prop Ċ import Ġti OP F . Object List Ċ Ċ class ĠProperties Edit Controller ( private Ġval Ġproperties : ĠObject List < Prop >, Ġresource : ĠString ): ĠBase Pane Controller ( properties , Ġresource ) Ġ{ ĊĠĠĠ Ġ@ FXML ĊĠĠĠ Ġlateinit Ġvar Ġproperties Table : ĠCustom FX TableView ĊĠĠĠ Ġoverride Ġfun Ġfinish Load ( project : ĠProject ): ĠNode Ġ{ ĊĠĠĠĠĠĠĠ Ġval Ġresult Ġ= Ġsuper . finish Load ( project ) ĊĊĠĠĠĠĠĠĠ Ġadd Mediator ( properties Table , Ġproperties , ĠarrayOf ( ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ" name ( 1 0 0 ,\" Name \") ", ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ" type ( 1 0 0 ,\" Type \") ", ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ" virtual ( 1 0 0 ,\" Virtual \", | )" ĊĠĠĠĠĠĠĠ Ġ)) ĊĊĠĠĠĠĠĠĠ Ġval Ġadd Item Ġ= ĠMenuItem (" Add ĠProperty ") ĊĠĠĠĠĠĠĠ Ġval Ġdel Item Ġ= ĠMenuItem (" Delete ĠProperty ") ĊĠĠĠĠĠĠĠ Ġdel Item . is Disable Ġ= Ġtrue ĊĊĊĠĠĠĠĠĠĠ Ġproperties Table . selection Model . selected ItemProperty (). addListener Ġ{ Ġ_, Ġ_, ĠnewValue Ġ-> ĊĠĠĠĠĠĠĠĠĠĠĠ Ġdel Item . is Disable Ġ= ĠnewValue Ġ== Ġnull ĊĠĠĠĠĠĠĠĠĠĠĠ Ġif Ġ( newValue Ġ!= Ġnull ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġname Ġ= ĠnewValue . text ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġdel Item . text Ġ= Ġ" Delete ĠProperty Ġ\"$ name \"" ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠ Ġelse ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġdel Item . text Ġ= Ġ" Delete ĠProperty " ĊĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠ Ġproperties Table . context Menu Ġ= ĠContext Menu ( addItem , Ġdel Item ) ĊĠĠĠĠĠĠĠ Ġproperties Table . context Menu . on Action Ġ= ĠEventHandler Ġ{ Ġevent Ġ-> ĊĠĠĠĠĠĠĠĠĠĠĠ Ġwhen Ġ( event . target ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġadd Item Ġ-> Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġprop Ġ= Ġproperties . add Unique Item (" Property _ New ", Ġ" name ", Ġ:: ĠProp ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ// Ġsome Ġdefaults ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġprop . type Ġ= Ġ" String " ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġdel Item Ġ-> Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġtable Item Ġ= Ġproperties Table . selection Model . selected Item ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġif Ġ( table Item Ġ!= Ġnull ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġitem Ġ= Ġtable Item . item Mediator . model ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġif Ġ( item Ġ!= Ġnull Ġ&& Ġitem Ġis ĠProp ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġproperties . remove ( item ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠ Ġreturn Ġresult ĊĠĠĠ Ġ} Ċ }