package Ġcom . h end ra angg rian . open p ss . control Ċ Ċ import Ġcom . h end ra angg rian . open p ss . R Ċ import Ġcom . h end ra angg rian . open p ss . util . to Java Ċ import Ġcom . h end ra angg rian . open p ss . util . to J oda Ċ import Ġcom . j fo enix . controls . J FX Time Picker Ċ import Ġjavafx . beans . property . ObjectProperty Ċ import Ġjavafx . beans . property . Simple ObjectProperty Ċ import Ġjavafx . geometry . Pos Ċ import Ġjavafx . scene . control . Button Ċ import Ġjavafx . scene . image . ImageView Ċ import Ġk tf x . coroutines . on Action Ċ import Ġk tf x . getValue Ċ import Ġk tf x . j fo enix . layouts . j fx Button Ċ import Ġk tf x . j fo enix . layouts . j fx Time Picker Ċ import Ġk tf x . layouts . K tf x H Box Ċ import Ġk tf x . text . build String Converter Ċ import Ġk tf x . to Binding Ċ import Ġorg . joda . time . Local Time Ċ Ċ /** Ċ Ġ* ĠTwo Ġfields Ġ( hour Ġand Ġminute ) Ġthat Ġrepresents Ġ[ Local Time ]. Ċ Ġ* Ċ Ġ* Ġ[ Time Box ] Ġwidth Ġis Ġdeli ber ately Ġmeasured Ġto Ġmatch Ġ[ com . h end ra angg rian . ui . scene . control . For ced DatePicker ]' s Ġwidth . Ċ Ġ*/ Ċ open Ġclass ĠTime Box Ġ@ Jvm Over loads Ġconstructor ( pref ill : ĠLocal Time Ġ= ĠLocal Time . MID N IGHT ) Ġ: ĠK tf x H Box ( 0 . 0 ) Ġ{ ĊĊĠĠĠ Ġlateinit Ġvar Ġpicker : ĠJ FX Time Picker ĊĠĠĠ Ġvar Ġprevious Button : ĠButton ĊĠĠĠ Ġvar Ġnext Button : ĠButton ĊĠĠĠ Ġvar Ġon Overlap : Ġ(( Boolean ) Ġ-> ĠUnit )? Ġ= Ġnull ĊĊĠĠĠ Ġprivate Ġval Ġvalue Property Ġ= ĠSimple ObjectProperty < Local Time >() ĊĠĠĠ Ġfun Ġvalue Property (): ĠObject Property < Local Time > Ġ= Ġvalue Property ĊĠĠĠ Ġval Ġvalue : ĠLocal Time ? Ġby Ġvalue Property ĊĊĠĠĠ Ġinit Ġ{ ĊĠĠĠĠĠĠĠ Ġalignment Ġ= ĠPos . CENTER ĊĠĠĠĠĠĠĠ Ġprevious Button Ġ= Ġj fx Button ( graphic Ġ= ĠImageView ( R . image . btn _ previous )) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġstyle Class Ġ+= ĠR . style . flat ĊĠĠĠĠĠĠĠĠĠĠĠ Ġon Action Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġpicker . value Ġ= Ġwhen Ġ( picker . value . hour ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ 0 Ġ-> Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġon Overlap ?. invoke ( false ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġjava . time . Local Time . of ( 2 3 , Ġpicker . value . minute , Ġpicker . value . second ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġelse Ġ-> Ġpicker . value . minus Hours ( 1 ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġpicker Ġ= Ġj fx Time Picker Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġeditor . alignment Ġ= ĠPos . CENTER ĊĠĠĠĠĠĠĠĠĠĠĠ ĠsetIs 2 4 Hour View ( true ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġvalue Ġ= Ġpref ill . to Java () ĊĠĠĠĠĠĠĠĠĠĠĠ Ġis Editable Ġ= Ġfalse ĊĠĠĠĠĠĠĠĠĠĠĠ ĠmaxWidth Ġ= Ġ 1 1 6 . 0 ĊĠĠĠĠĠĠĠĠĠĠĠ Ġconverter Ġ= Ġbuild String Converter Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġfrom String Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġa Ġ= Ġit . split (': ') ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġjava . time . Local Time . of ( a [ 0 ]. toInt (), Ġa [ 1 ]. toInt (), Ġ 0 ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠtoString Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġs Ġ= Ġit . toString () ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġwhen Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġs . split (': '). size Ġ> Ġ 2 Ġ-> Ġs . substring Before Last (': ') ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġelse Ġ-> Ġs ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġnext Button Ġ= Ġj fx Button ( graphic Ġ= ĠImageView ( R . image . btn _ next )) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġstyle Class Ġ+= ĠR . style . flat ĊĠĠĠĠĠĠĠĠĠĠĠ Ġon Action Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġpicker . value Ġ= Ġwhen Ġ( picker . value . hour ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ 2 3 Ġ-> Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġon Overlap ?. invoke ( true ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġjava . time . Local Time . of ( 0 , Ġpicker . value . minute , Ġpicker . value . second ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġelse Ġ-> Ġpicker . value . plus Hours ( 1 ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠ Ġvalue Property . bind ( picker . value Property (). to Binding Ġ{ Ġit !!. to J oda () Ġ}) ĊĠĠĠ Ġ} Ċ } Ċ