package Ġcom . so yle . stories . location . create Location Dialog Ċ Ċ import Ġcom . so yle . stories . common .* Ċ import Ġcom . so yle . stories . common . components . Components Styles Ċ import Ġcom . so yle . stories . common . components . buttons . primary Button Ċ import Ġcom . so yle . stories . common . components . buttons . secondary Button Ċ import Ġcom . so yle . stories . common . components . sur faces . Elevation Ċ import Ġcom . so yle . stories . common . components . sur faces . Surface . Companion . as Surface Ċ import Ġcom . so yle . stories . common . components . text . Field Label . Companion . field Label Ċ import Ġcom . so yle . stories . common . components . text . Window Title . Companion . window Title Ċ import Ġcom . so yle . stories . di . get Ċ import Ġcom . so yle . stories . di . resolve Ċ import Ġcom . so yle . stories . domain . location . Location Ċ import Ġcom . so yle . stories . domain . validation . Single Line Ċ import Ġcom . so yle . stories . domain . validation . Single Non Blank Line Ċ import Ġcom . so yle . stories . domain . validation . count Lines Ċ import Ġcom . so yle . stories . location . controllers . Create New Location Controller Ċ import Ġcom . so yle . stories . location . events . Create New Location Notifier Ċ import Ġcom . so yle . stories . project . Project Scope Ċ import Ġcom . so yle . stories . project . Work Bench Ċ import Ġcom . so yle . stories . use case . location . createNew Location . Create New Location Ċ import Ġjavafx . beans . property . Simple String Property Ċ import Ġjavafx . event . EventHandler Ċ import Ġjavafx . geometry . Insets Ċ import Ġjavafx . geometry . Pos Ċ import Ġjavafx . scene . Parent Ċ import Ġjavafx . scene . Scene Ċ import Ġjavafx . scene . input . KeyCode Ċ import Ġjavafx . scene . input . KeyEvent Ċ import Ġjavafx . scene . layout . Region Ċ import Ġjavafx . scene . layout . V Box Ċ import Ġjavafx . stage . Modal ity Ċ import Ġjavafx . stage . Stage Ċ import Ġjavafx . stage . Stage Style Ċ import Ġjavafx . stage . Window Ċ import Ġkotlinx . coroutines . Dispatch ers Ċ import Ġkotlinx . coroutines . Job Ċ import Ġkotlinx . coroutines . Supervisor Job Ċ import Ġkotlinx . coroutines . java fx . Java Fx Ċ import Ġkotlinx . coroutines . with Context Ċ import Ġt orn ad of x .* Ċ Ċ class ĠCreate Location Dialog ( ĊĠĠĠ Ġprivate Ġval Ġthread Transformer : ĠThread Transformer , ĊĠĠĠ Ġprivate Ġval ĠonCreate Location : Ġsuspend Ġ( Create New Location . Response Model ) Ġ-> ĠUnit , ĊĠĠĠ Ġprivate Ġval Ġcreate Location Controller : ĠCreate New Location Controller , ĊĠĠĠ Ġprivate Ġval Ġlocale : ĠCreate Location Dialog Locale Ċ ) Ġ{ ĊĊĠĠĠ Ġinterface ĠFactory Ġ{ ĊĠĠĠĠĠĠĠ Ġoperator Ġfun Ġinvoke ( onCreate Location : Ġsuspend Ġ( Create New Location . Response Model ) Ġ-> ĠUnit Ġ= Ġ{} ): ĠCreate Location Dialog ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġprivate Ġval Ġname Ġ= ĠSimple String Property ("") ĊĠĠĠ Ġprivate Ġval Ġdescription Ġ= ĠSimple String Property ("") ĊĠĠĠ Ġprivate Ġval ĠerrorMessage Ġ= Ġstring Property ( null ) ĊĊĠĠĠ Ġinner Ġclass ĠView Ġ: ĠV Box () Ġ{ ĊĊĠĠĠĠĠĠĠ Ġinit Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġas Surface Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġabsolute Elevation Ġ= ĠE levation . getValue ( 2 4 ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠ Ġpadding Ġ= ĠIn sets ( 1 6 . 0 ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġspacing Ġ= Ġ 1 6 . 0 ĊĠĠĠĠĠĠĠĠĠĠĠ Ġis Fill Width Ġ= Ġtrue ĊĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠ Ġinit Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġv box Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġspacing Ġ= Ġ 4 . 0 ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġlabel Ġ= Ġfield Label ( locale . name ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġinput Ġ= Ġtext field Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġid Ġ= ĠStyles . name . name ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġname . bind ( text Property ()) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġscoped Listener ( errorMessage ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġdecorators . clear () ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġif Ġ( it Ġ!= Ġnull ) Ġadd Decorator ( Simple Message Decorator ( it , ĠValidation Severity . Error )) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġaction (:: attempt Create Location ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġlabel . label For Ġ= Ġinput ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠ Ġv box Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġspacing Ġ= Ġ 4 . 0 ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġlabel Ġ= Ġfield Label ( locale . description ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġinput Ġ= Ġtext field Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġid Ġ= ĠStyles . description . name ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġdescription . bind ( text Property ()) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġlabel . label For Ġ= Ġinput ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠ Ġsp acer () ĊĠĠĠĠĠĠĠĠĠĠĠ Ġh box Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġalignment Ġ= ĠPos . BOTTOM _ RIGHT ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġspacing Ġ= Ġ 8 . 0 ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġprimary Button ( locale . create ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġis Default Button Ġ= Ġtrue ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġdisable When ( name . isEmpty ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġaction (:: attempt Create Location ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġsecondary Button ( locale . cancel ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġis Cancel Button Ġ= Ġtrue ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġaction Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġscene ?. window ?. hide () ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠ Ġ} ĊĊĠĠĠ Ġprivate Ġval Ġroot : ĠRegion Ġby Ġlazy Ġ{ ĠView () Ġ} ĊĊĠĠĠ Ġprivate Ġfun Ġattempt Create Location () Ġ{ ĊĠĠĠĠĠĠĠ ĠerrorMessage . unbind () ĊĠĠĠĠĠĠĠ ĠerrorMessage . set ( null ) ĊĠĠĠĠĠĠĠ Ġval Ġname Line Count Ġ= Ġ( count Lines ( name . value ) Ġas ? ĠSingle Line )?. let ( Single Non Blank Line :: create ) ĊĠĠĠĠĠĠĠ Ġif Ġ( name Line Count Ġ!= Ġnull ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġawait Create Location ( name Line Count , Ġdescription . value ) ĊĠĠĠĠĠĠĠ Ġ} Ġelse Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ ĠerrorMessage . bind ( locale . please Provide AL ocation Name ) ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġprivate Ġfun Ġawait Create Location ( name : ĠSingle Non Blank Line , Ġdescription : ĠString ) Ġ{ ĊĠĠĠĠĠĠĠ Ġroot . is Disable Ġ= Ġtrue ĊĠĠĠĠĠĠĠ Ġthread Transformer . async Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġdeferred Ġ= Ġcreate Location Controller . createNew Location ( name , Ġdescription ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġcreation Response Ġ= Ġtry Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġdeferred . await () ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} Ġfinally Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġgui Update Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġroot . is Disable Ġ= Ġfalse ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠ ĠonCreate Location ( creation Response ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġgui Update Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġroot . scene . window . hide () ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġfun Ġshow ( owner : ĠWindow ? Ġ= Ġnull ) ĊĠĠĠ Ġ{ ĊĠĠĠĠĠĠĠ ĠStage ( Stage Style . UT ILITY ). apply Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġif Ġ( owner Ġ!= Ġnull ) Ġinit Owner ( owner ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġinit Modal ity ( Modal ity . APPLICATION _ MOD AL ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġadd Event Filter ( KeyEvent . KEY _ PRES SED ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġif Ġ( it . code Ġ== ĠKeyCode . ESCAPE ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġclose () ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠ Ġscene Ġ= ĠScene ( root ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġroot . fit To Parent Size () ĊĠĠĠĠĠĠĠĠĠĠĠ Ġtitle Property (). bind ( locale . new Location ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġshow () ĊĠĠĠĠĠĠĠĠĠĠĠ Ġcenter On Screen () ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġclass ĠStyles Ġ: ĠStyles heet () ĊĠĠĠ Ġ{ ĊĠĠĠĠĠĠĠ Ġcompanion Ġobject Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġname Ġby Ġcss id () ĊĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġdescription Ġby Ġcss id () ĊĠĠĠĠĠĠĠ Ġ} ĊĊĊĊĠĠĠ Ġ} Ċ Ċ }