package Ġcom . lun iv ore . st ir ry Ċ Ċ import Ġcom . sun . java fx . stage . Stage Helper Ċ import Ġjavafx . application . Application Ċ import Ġjavafx . application . Platform Ċ import Ġjavafx . embed . swing . J FX Panel Ċ import Ġjavafx . scene . Node Ċ import Ġjavafx . scene . Parent Ċ import Ġjavafx . scene . input . Clipboard Ċ import Ġjavafx . scene . input . Data Format Ċ import Ġjavafx . stage . Modal ity Ċ import Ġjavafx . stage . Stage Ċ import Ġorg . apache . logging . log 4 j . Log Manager Ċ import Ġjava . util . concurrent . Array BlockingQueue Ċ import Ġjava . util . concurrent . TimeUnit ĊĊ Ċ class ĠSt ir ry Ġ{ ĊĊĠĠĠ Ġcompanion Ġobject Ġ{ ĊĠĠĠĠĠĠĠ Ġval Ġlogger Ġ= ĠLog Manager . getLogger () ĊĠĠĠĠĠĠĠ Ġvar Ġstage : ĠStage ? Ġ= Ġnull ĊĊĠĠĠĠĠĠĠ Ġfun Ġinitialize () Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġlogger . debug (" Initializing Ġplatform ...") ĊĠĠĠĠĠĠĠĠĠĠĠ ĠJ FX Panel () ĊĠĠĠĠĠĠĠĠĠĠĠ Ġlogger . debug (" ... platform Ġinitialized ") ĊĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠ Ġfun Ġrun On Platform ( run nable : Ġ() Ġ-> ĠUnit ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġlogger . debug (" Waiting Ġfor Ġplatform ...") ĊĠĠĠĠĠĠĠĠĠĠĠ Ġvar Ġqueue Ġ= ĠArray BlockingQueue < Boolean >( 1 ) ĊĠĠĠĠĠĠĠĠĠĠĠ ĠPlatform . run Later ({ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġrunnable () ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġqueue . put ( true ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ}) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġqueue . poll ( 1 L , ĠTimeUnit . SECONDS ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġlogger . debug (" ... platform Ġidle ") ĊĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠ Ġfun Ġfind Root (): ĠParent Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġstages With Roots Ġ= ĠStage Helper . get Stages () ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ. filter Ġ{ Ġit . scene Ġ!= Ġnull Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ. filter Ġ{ Ġit . scene . root Ġ!= Ġnull Ġ} ĊĊĠĠĠĠĠĠĠĠĠĠĠ Ġif Ġ( stages With Roots . count () Ġ< Ġ 1 ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġthrow ĠIllegalStateException (" No Ġroot Ġnode Ġwas Ġfound ") ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠĠĠĠĠ Ġif Ġ( stages With Roots . count () Ġ> Ġ 1 ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġthrow ĠIllegalStateException (" More Ġthan Ġone Ġroot Ġnode Ġwas Ġfound ") ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠĠĠĠĠ Ġreturn Ġstages With Roots [ 0 ]. scene . root ĊĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠ Ġfun ĠwaitFor Platform () Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġrun On Platform Ġ{ Ġ} ĊĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠ Ġfun Ġlaunch App ( application : ĠApplication ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġrun On Platform Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġif Ġ( stage Ġ== Ġnull ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġstage Ġ= ĠStage () ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġapplication . start ( stage ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠPlatform . set Implicit Exit ( false ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠ Ġfun Ġstop () Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġrun On Platform Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġstage C los ers : ĠList < Runnable > ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ= ĠStage Helper . get Stages (). map Ġ{ Ġit Ġ-> ĠRunnable Ġ{ Ġit . close () Ġ} Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġstage C los ers . forEach Ġ{ Ġit . run () Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠ ĠwaitFor Platform () ĊĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠ Ġfun Ġget Clipboard ( format : ĠData Format ): ĠAny ? Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġvar Ġresult : ĠAny ? Ġ= Ġnull ĊĠĠĠĠĠĠĠĠĠĠĠ ĠwaitFor Platform () ĊĠĠĠĠĠĠĠĠĠĠĠ Ġrun On Platform Ġ{ Ġresult Ġ= ĠClip board . getSystem Clipboard (). getContent ( format ) Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠ Ġreturn Ġresult ĊĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠ Ġfun Ġfind Modal Dialog (): ĠParent Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġmodal Stages Ġ= ĠStage Helper . get Stages (). filtered Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġit . modal ity Ġ== ĠMod ality . APPLICATION _ MOD AL Ġ|| Ġit . modal ity Ġ== ĠMod ality . WINDOW _ MOD AL ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠĠĠĠĠ Ġif Ġ( modal Stages . count () Ġ< Ġ 1 ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġthrow ĠIllegalStateException (" Could Ġnot Ġfind Ġmodal Ġdialog ") ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠ Ġif Ġ( modal Stages . count () Ġ> Ġ 1 ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġthrow ĠIllegalStateException (" More Ġthan Ġone Ġmodal Ġdialog Ġis Ġpresent ") ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠĠĠĠĠ Ġreturn Ġmodal Stages [ 0 ]. scene . root ĊĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠ Ġinline Ġfun Ġ< re ified ĠT Ġ: ĠNode > Ġfind In Root ( predicate : Ġ( T ) Ġ-> ĠBoolean ): ĠResult < T > Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġreturn Ġfind Root (). find < T >( predicate ) ĊĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠ Ġinline Ġfun Ġ< re ified ĠT Ġ: ĠNode > Ġfind In Modal Dialog ( predicate : Ġ( T ) Ġ-> ĠBoolean ): ĠResult < T > Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġreturn Ġfind Modal Dialog (). find < T >( predicate ) ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} Ċ } ĊĊ