package Ġde . sn ick it . fort e . view . tasks Ċ Ċ import Ġde . sn ick it . fort e . Utility . get Elapsed Time String Ċ import Ġde . sn ick it . fort e . controller . F orte Controller Ċ import Ġde . sn ick it . fort e . persistence . Task Ċ import Ġde . sn ick it . fort e . persistence . Working Session Ċ import Ġde . sn ick it . fort e . view . Styles Ċ import Ġjavafx . animation . Key Frame Ċ import Ġjavafx . animation . Timeline Ċ import Ġjavafx . event . EventHandler Ċ import Ġjavafx . scene . control . Button Ċ import Ġjavafx . scene . control . Label Ċ import Ġjavafx . scene . layout . Priority Ċ import Ġjavafx . scene . paint . Color Ċ import Ġt orn ad of x .* Ċ Ċ import Ġjavafx . util . Duration . seconds Ċ import Ġorg . slf 4 j . LoggerFactory Ċ Ċ class ĠTask View Element ( private Ġval Ġtask : ĠTask ) Ġ: ĠView (" Task View Element ") Ġ{ ĊĊĠĠĠ Ġprivate Ġval Ġlogger Ġ= ĠLoggerFactory . getLogger ( this . java Class ) ĊĠĠĠ Ġprivate Ġval Ġf orte Controller : ĠF orte Controller Ġby Ġdi () ĊĊĠĠĠ Ġprivate Ġvar Ġworking Session : ĠWorking Session ĊĠĠĠ Ġprivate Ġval Ġlabel : ĠLabel ĊĠĠĠ Ġprivate Ġval Ġtimeline : ĠTimeline ĊĠĠĠ Ġprivate Ġval Ġstart Stop Button : ĠButton ĊĊĠĠĠ Ġinit Ġ{ ĊĠĠĠĠĠĠĠ Ġworking Session Ġ= Ġf orte Controller . get Latest Or New Working Session ( task ) ĊĠĠĠĠĠĠĠ Ġif Ġ( working Session . starting Time Ġ!= Ġnull ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġtask . active Ġ= Ġtrue ĊĠĠĠĠĠĠĠĠĠĠĠ Ġf orte Controller . setActive Working Session ( working Session , Ġthis ) ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġlabel Ġ= Ġlabel Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġtext Ġ= Ġworking Session . get Elapsed Time (). get Elapsed Time String () ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġtimeline Ġ= Ġtimeline ( false ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġcycle Count Ġ= ĠTimeline . IN DEFIN ITE ĊĠĠĠĠĠĠĠĠĠĠĠ Ġkey Frames Ġ+= ĠKey Frame ( seconds ( 1 . 0 ), ĠEventHandler Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġlabel . text Ġ= Ġworking Session . get Elapsed Time (). get Elapsed Time String () ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ}) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġif Ġ( task . active ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġplay () ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġstart Stop Button Ġ= Ġget Start Stop Button () ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġoverride Ġval Ġroot Ġ= Ġborder pane Ġ{ ĊĠĠĠĠĠĠĠ Ġthis . addClass ( Styles . task View Element ) ĊĊĠĠĠĠĠĠĠ Ġstyle Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ ĠborderRadius Ġ= Ġmulti ( box ( 1 0 . px )) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġbackground Radius Ġ= Ġmulti ( box ( 1 0 . px )) ĊĠĠĠĠĠĠĠĠĠĠĠ ĠbackgroundColor Ġ= Ġmulti ( Color . web ( task . color )) ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġtop Ġ= Ġh box Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġadd ( label ( task . getTitle ())) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġpadding All Ġ= Ġ 2 . 0 ĊĠĠĠĠĠĠĠĠĠĠĠ Ġadd ( region Ġ{ Ġh grow Ġ= ĠPriority . ALWAYS Ġ}) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġadd ( h box Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġbutton Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġadd Class ( Styles . remove Button ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġgraphic Ġ= ĠStyles . remove Icon () ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġbutton Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġadd Class ( Styles . remove Button ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġgraphic Ġ= ĠStyles . edit Icon () ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ}) ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġcenter Ġ= Ġlabel ĊĠĠĠĠĠĠĠ Ġbottom Ġ= Ġh box Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġpadding Bottom Ġ= Ġ 5 . 0 ĊĠĠĠĠĠĠĠĠĠĠĠ Ġregion Ġ{ Ġh grow Ġ= ĠPriority . ALWAYS Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠ Ġadd ( start Stop Button ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġregion Ġ{ Ġh grow Ġ= ĠPriority . ALWAYS Ġ} ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġprivate Ġfun Ġstart Session () Ġ{ ĊĠĠĠĠĠĠĠ Ġworking Session Ġ= Ġf orte Controller . start Working Session ( working Session , Ġthis ) ĊĠĠĠĠĠĠĠ Ġtimeline . play () ĊĠĠĠĠĠĠĠ Ġstart Stop Button . graphic Ġ= ĠStyles . get Stop Button () ĊĠĠĠĠĠĠĠ Ġtask . active Ġ= Ġtrue ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġfun Ġend Session () Ġ{ ĊĠĠĠĠĠĠĠ Ġworking Session Ġ= Ġf orte Controller . stop Working Session ( working Session ) ĊĠĠĠĠĠĠĠ Ġtimeline . stop () ĊĠĠĠĠĠĠĠ Ġstart Stop Button . graphic Ġ= ĠStyles . getStart Button () ĊĠĠĠĠĠĠĠ Ġtask . active Ġ= Ġfalse ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġprivate Ġfun Ġget Start Stop Button () Ġ= Ġbutton Ġ{ ĊĠĠĠĠĠĠĠ Ġadd Class ( Styles . start Stop Button ) ĊĠĠĠĠĠĠĠ Ġgraphic Ġ= Ġif Ġ( task . active ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ ĠStyles . get Stop Button () ĊĠĠĠĠĠĠĠ Ġ} Ġelse ĠStyles . getStart Button () ĊĠĠĠĠĠĠĠ Ġthis . on Action Ġ= ĠEventHandler Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġif Ġ( task . active ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġlogger . info (" STOP ") ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġend Session () ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} Ġelse Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġlogger . info (" START ") ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġstart Session () ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} Ċ Ċ } Ċ