package Ġui . dialog Ċ Ċ import Ġconfig . active Config Ċ import Ġconfig . json Mapper Ċ import Ġentity . Raw Upload Template Ċ import Ġexec . logger Ċ import Ġjavafx . f xml . FXML Ċ import Ġjavafx . f xml . Initial izable Ċ import Ġjavafx . scene . control . Alert Ċ import Ġjavafx . scene . control . Button Type Ċ import Ġjavafx . scene . control . TextArea Ċ import Ġjavafx . scene . control . TextField Ċ import Ġjavafx . scene . layout . Pane Ċ import Ġjavafx . stage . FileChooser Ċ import Ġjavafx . stage . Stage Ċ import Ġui . alert . Sized Alert Ċ import Ġjava . io . File Ċ import Ġjava . net . URL Ċ import Ġjava . util .* Ċ Ċ class ĠTemplate Editor Controller Ġ: ĠInitial izable Ġ{ ĊĊĠĠĠ Ġ@ FXML ĊĠĠĠ Ġlateinit Ġvar Ġroot Pane : ĠP ane ĊĊĠĠĠ Ġ@ FXML ĊĠĠĠ Ġlateinit Ġvar Ġtitle Input : ĠTextField ĊĠĠĠ Ġ@ FXML ĊĠĠĠ Ġlateinit Ġvar Ġdescription Input : ĠText Area ĊĠĠĠ Ġ@ FXML ĊĠĠĠ Ġlateinit Ġvar Ġtags Input : ĠTextField ĊĊĠĠĠ Ġoverride Ġfun Ġinitialize ( location : ĠURL ?, Ġresources : ĠResource Bundle ?) Ġ{ ĊĠĠĠĠĠĠĠ Ġ// ĠN OP ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġ@ FXML ĊĠĠĠ Ġprivate Ġfun Ġhandle Load () Ġ{ ĊĠĠĠĠĠĠĠ Ġtry Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġanswer Ġ= ĠSized Alert ( Alert . Alert Type . INFORMATION , Ġ" Loading Ġa Ġinput Data Ġwill Ġdiscard Ġall Ġun saved Ġchanges .\ n Are Ġyou Ġsure Ġyou Ġwant Ġto Ġload Ġa Ġinput Data Ġfile ?", ĠButton Type . YES , ĠButton Type . NO ). show And Wait () ĊĠĠĠĠĠĠĠĠĠĠĠ Ġif Ġ( answer . isPresent Ġ&& Ġanswer . get () Ġ== ĠButton Type . YES ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġcho oser Ġ= ĠFile Chooser () ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġtarget File : ĠFile ? Ġ= Ġcho oser . show Open Dialog ( root Pane . scene . window ) ĊĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġif Ġ( target File Ġ!= Ġnull ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġtarget File . inputStream () ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ. use Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġtemplate Ġ= Ġjson Mapper . readValue ( it , ĠRaw Upload Template :: class . java ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġtitle Input . text Ġ= Ġtemplate . title Template ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġdescription Input . text Ġ= Ġtemplate . description Template ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġtags Input . text Ġ= Ġtemplate . tags . join ToString (", Ġ") ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġactive Config . last Vis ited Template Directory Ġ= Ġtarget File . parent File ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġ} Ġcatch Ġ( e : ĠException ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġlogger . error (" An Ġunhandled ĠException Ġoccurred !", Ġe ) ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġ@ FXML ĊĠĠĠ Ġprivate Ġfun Ġhandle Save () Ġ{ ĊĠĠĠĠĠĠĠ Ġtry Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġcho oser Ġ= ĠFile Chooser () ĊĊĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġtarget File Ġ= Ġcho oser . show Save Dialog ( root Pane . scene . window ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġif Ġ( target File Ġ!= Ġnull ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġtags Ġ= Ġtags Input . text . split ("," ). map Ġ{ Ġit . trim () Ġ}. to Typed Array () ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġtemplate Ġ= ĠRaw Upload Template ( title Input . text , Ġdescription Input . text , Ġ"", Ġtags ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġtarget File . output Stream (). use Ġ{ Ġjson Mapper . writeValue ( it , Ġtemplate ) Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġactive Config . last Vis ited Template Directory Ġ= Ġtarget File . parent File ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġ} Ġcatch Ġ( e : ĠException ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġlogger . error (" An Ġunhandled ĠException Ġoccurred !", Ġe ) ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġ@ FXML ĊĠĠĠ Ġprivate Ġfun Ġhandle Cancel () Ġ= Ġ( root Pane . scene . window Ġas ĠStage ). close () Ċ }