package Ġorg . kotlin academy . desktop . views Ċ Ċ import Ġjavafx . animation . Interpolator Ċ import Ġjavafx . animation . Timeline Ċ import Ġjavafx . beans . property . Simple Boolean Property Ċ import Ġjavafx . collections . FX Collections . observable ArrayList Ċ import Ġjavafx . geometry . Pos Ċ import Ġjavafx . geometry . Pos . BOTTOM _ RIGHT Ċ import Ġjavafx . scene . control . Button Ċ import Ġjavafx . scene . paint . Color Ċ import Ġkotlinx . coroutines . experimental . java fx . Java Fx Ċ import Ġorg . kotlin academy . data . Article Ċ import Ġorg . kotlin academy . data . News Ċ import Ġorg . kotlin academy . data . url Ċ import Ġorg . kotlin academy . desktop . Styles Ċ import Ġorg . kotlin academy . presentation . news . News Presenter Ċ import Ġorg . kotlin academy . presentation . news . News View Ċ import Ġorg . kotlin academy . resp ositor ies . News Repository Impl Ċ import Ġt orn ad of x .* ĊĊ Ċ class ĠT ornado News View Ġ: ĠBase T ornado View (" Kotlin ĠA cademy "), ĠNews View Ġ{ ĊĠĠĠ Ġprivate Ġval Ġloading Property Ġ= ĠSimple Boolean Property () ĊĠĠĠ Ġoverride Ġvar Ġloading Ġby Ġloading Property ĊĊĠĠĠ Ġprivate Ġval Ġrefresh Property Ġ= ĠSimple Boolean Property () ĊĠĠĠ Ġoverride Ġvar Ġrefresh Ġby Ġrefresh Property ĊĊĠĠĠ Ġprivate Ġval Ġnews List Ġ= Ġobservable ArrayList < Article >() !! ĊĊĠĠĠ Ġprivate Ġval Ġnews Repository Ġ= ĠNews Repository Impl () ĊĠĠĠ Ġprivate Ġval Ġpresenter Ġ= ĠNews Presenter ( Java Fx , Ġthis , Ġnews Repository ) ĊĊĠĠĠ Ġoverride Ġval Ġroot Ġ= Ġborder pane Ġ{ ĊĠĠĠĠĠĠĠ Ġadd Class ( Styles . news View ) ĊĠĠĠĠĠĠĠ Ġtop Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġstack pane Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġadd Class ( Styles . header ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġv box Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġadd Class ( Styles . list Center ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġlabel ( title ). addClass ( Styles . header Title ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġlabel (" With Ġmission Ġto Ġsimplify ĠKotlin Ġlearning ") ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġbutton Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġenable When ( refresh Property . not ()) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġgraphic Ġ= Ġsvg icon ( Styles . refresh Icon , Ġ 2 0 , ĠColor . WHITE ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġstack pane Constraints Ġ{ Ġalignment Ġ= ĠPos . TOP _ LEFT Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġadd Class ( Styles . icon ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġaction ( presenter :: on Refresh ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġrotate When Refresh ing () ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġtooltip (" Click Ġto Ġrefresh Ġthe Ġnews Ġlist ") ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġcenter Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġstack pane Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġlist view ( news List ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġremove When ( loading Property ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġadd Class ( Styles . news List ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġcell Fragment ( News List Fragment :: class ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġon User Select Ġ{ Ġif Ġ( it Ġis ĠArticle ) Ġhost Services . show Document ( it . url ) Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġprogress bar Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġremove When ( loading Property . not ()) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġbutton Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġgraphic Ġ= Ġsvg icon ( Styles . reply Icon ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġadd Class ( Styles . icon , ĠStyles . general Feedback ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġstack pane Constraints Ġ{ Ġalignment Ġ= ĠBOTTOM _ RIGHT Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġtooltip (" Click Ġto Ġleave Ġa Ġcomment ") ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġaction Ġ{ Ġfind < Feedback Form >( Scope ()). open Modal () Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġprivate Ġfun ĠButton . rotate When Refresh ing () Ġ{ ĊĠĠĠĠĠĠĠ Ġval Ġrotation Ġ= Ġrotate ( 0 . 3 . seconds , Ġ 3 6 0 , ĠInterpol ator . LINEAR , Ġplay Ġ= Ġfalse ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġcycle Count Ġ= ĠTimeline . IN DEFIN ITE ĊĠĠĠĠĠĠĠĠĠĠĠ Ġis Auto Reverse Ġ= Ġtrue ĊĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠ Ġrefresh Property . onChange Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġif Ġ( it ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġrotation . play From Start () ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} Ġelse Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġrotation . stop () ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġrotate Ġ= Ġ 0 . 0 ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġoverride Ġfun Ġon Dock () Ġ{ ĊĠĠĠĠĠĠĠ Ġpresenter . onCreate () ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġoverride Ġfun Ġshow List ( news : ĠList < News >) Ġ{ ĊĠĠĠĠĠĠĠ Ġnews List . set All ( news . filter Is Instance < Article >()) ĊĠĠĠ Ġ} Ċ }