package Ġcom . example Ċ Ċ import Ġkotlinx . serialization . Un stable Default Ċ import Ġpl . tre k soft . k vision . core . on Event Ċ import Ġpl . tre k soft . k vision . form . Form Panel Ċ import Ġpl . tre k soft . k vision . form . form Panel Ċ import Ġpl . tre k soft . k vision . form . check . CheckBox Ċ import Ġpl . tre k soft . k vision . form . text . Text Ċ import Ġpl . tre k soft . k vision . form . text . TextInput Type Ċ import Ġpl . tre k soft . k vision . html . button Ċ import Ġpl . tre k soft . k vision . html . ButtonStyle Ċ import Ġpl . tre k soft . k vision . i 1 8 n . I 1 8 n . tr Ċ import Ġpl . tre k soft . k vision . panel . HP anel Ċ import Ġpl . tre k soft . k vision . panel . Simple Panel Ċ import Ġpl . tre k soft . k vision . panel . Stack Panel Ċ import Ġpl . tre k soft . k vision . panel . simple Panel Ċ import Ġpl . tre k soft . k vision . utils . ENTER _ KEY Ċ import Ġpl . tre k soft . k vision . utils . px Ċ Ċ @ Un stable Default Ċ object ĠEdit Panel Ġ: ĠStack Panel () Ġ{ ĊĊĠĠĠ Ġprivate Ġvar Ġediting Index : ĠInt ? Ġ= Ġnull ĊĊĠĠĠ Ġprivate Ġval Ġform Panel : ĠForm Panel < Address > ĊĠĠĠ Ġprivate Ġval Ġmain Panel : ĠSimple Panel ĊĊĠĠĠ Ġinit Ġ{ ĊĠĠĠĠĠĠĠ Ġpadding Ġ= Ġ 1 0 . px ĊĊĠĠĠĠĠĠĠ Ġform Panel Ġ= Ġform Panel Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġadd ( Address :: firstName , ĠText ( label Ġ= Ġtr (" First Ġname :" ))) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġadd ( Address :: lastName , ĠText ( label Ġ= Ġtr (" Last Ġname :" ))) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġadd ( Address :: email , ĠText ( TextInput Type . EMAIL , Ġlabel Ġ= Ġtr (" E - mail :" ))) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġadd ( Address :: fav our ite , ĠCheckBox ( label Ġ= Ġtr (" Mark Ġas Ġfavour ite "))) ĊĊĠĠĠĠĠĠĠĠĠĠĠ Ġadd ( HP anel ( spacing Ġ= Ġ 1 0 ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġbutton ( tr (" Save "), Ġ" fas Ġfa - check ", ĠButton Style . PRIMARY ). onClick Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġsave () ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġbutton ( tr (" Cancel "), Ġ" fas Ġfa - times ", ĠButton Style . SECOND ARY ). onClick Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġcancel () ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ}) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġon Event Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġkey down Ġ= Ġ{ Ġe Ġ-> ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġif Ġ( e . keyCode Ġ== ĠENTER _ KEY ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġsave () ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġmain Panel Ġ= Ġsimple Panel Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġbutton ( tr (" Add Ġnew Ġaddress "), Ġ" fas Ġfa - plus ", Ġstyle Ġ= ĠButton Style . PRIMARY ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠonClick Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġadd () ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġprivate Ġfun Ġadd () Ġ{ ĊĠĠĠĠĠĠĠ Ġediting Index Ġ= Ġnull ĊĠĠĠĠĠĠĠ Ġform Panel . clear Data () ĊĠĠĠĠĠĠĠ Ġactive Child Ġ= Ġform Panel ĊĠĠĠĠĠĠĠ Ġform Panel . get Control ( Address :: firstName )?. focus () ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġfun Ġedit ( index : ĠInt ) Ġ{ ĊĠĠĠĠĠĠĠ Ġediting Index Ġ= Ġindex ĊĠĠĠĠĠĠĠ Ġform Panel . setData ( Model . addresses [ index ]) ĊĠĠĠĠĠĠĠ Ġactive Child Ġ= Ġform Panel ĊĠĠĠĠĠĠĠ Ġform Panel . get Control ( Address :: firstName )?. focus () ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġprivate Ġfun Ġsave () Ġ{ ĊĠĠĠĠĠĠĠ Ġediting Index ?. let Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ ĠModel . addresses . set ( it , Ġform Panel . getData ()) ĊĠĠĠĠĠĠĠ Ġ} Ġ?: ĠModel . addresses . add ( form Panel . getData ()) ĊĠĠĠĠĠĠĠ Ġediting Index Ġ= Ġnull ĊĠĠĠĠĠĠĠ Ġactive Child Ġ= Ġmain Panel ĊĠĠĠĠĠĠĠ ĠModel . store Addresses () ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġprivate Ġfun Ġcancel () Ġ{ ĊĠĠĠĠĠĠĠ Ġediting Index Ġ= Ġnull ĊĠĠĠĠĠĠĠ Ġactive Child Ġ= Ġmain Panel ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġfun Ġdelete ( index : ĠInt ) Ġ{ ĊĠĠĠĠĠĠĠ ĠModel . addresses . remove At ( index ) ĊĠĠĠĠĠĠĠ Ġediting Index ?. let Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġif Ġ( index Ġ== Ġit ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġcancel () ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} Ġelse Ġif Ġ( index Ġ< Ġit ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġediting Index ?. dec () ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ ĠModel . store Addresses () ĊĠĠĠ Ġ} Ċ } Ċ