/**************************************************************************** Ċ Ġ* ĠCopyright Ġ( C ) Ġ 2 0 1 6 - 2 0 2 0 ĠY ev gen y ĠK ras ik ĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ* Ċ Ġ* ĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ* Ċ Ġ* ĠLicensed Ġunder Ġthe ĠApache ĠLicense , ĠVersion Ġ 2 . 0 Ġ( the Ġ" License "); ĠĠĠĠĠĠĠĠĠ Ġ* Ċ Ġ* Ġyou Ġmay Ġnot Ġuse Ġthis Ġfile Ġexcept Ġin Ġcompliance Ġwith Ġthe ĠLicense . ĠĠĠĠĠĠĠĠ Ġ* Ċ Ġ* ĠYou Ġmay Ġobtain Ġa Ġcopy Ġof Ġthe ĠLicense Ġat ĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ* Ċ Ġ* ĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ* Ċ Ġ* Ġhttp :// www . apache . org / licenses / LICENSE - 2 . 0 ĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ* Ċ Ġ* ĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ* Ċ Ġ* ĠUnless Ġrequired Ġby Ġapplicable Ġlaw Ġor Ġagreed Ġto Ġin Ġwriting , Ġsoftware ĠĠĠĠĠ Ġ* Ċ Ġ* Ġdistributed Ġunder Ġthe ĠLicense Ġis Ġdistributed Ġon Ġan Ġ" AS ĠIS " ĠBASIS , ĠĠĠĠĠĠĠ Ġ* Ċ Ġ* ĠWITHOUT ĠWARRANTIES ĠOR ĠCONDITIONS ĠOF ĠANY ĠKIND , Ġeither Ġexpress Ġor Ġimplied . Ġ* Ċ Ġ* ĠSee Ġthe ĠLicense Ġfor Ġthe Ġspecific Ġlanguage Ġgoverning Ġpermissions Ġand ĠĠĠĠĠ Ġ* Ċ Ġ* Ġlimitations Ġunder Ġthe ĠLicense . ĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ* Ċ Ġ************************************************************************* ***/ Ċ Ċ package Ġcom . gitlab . y kr as ik . game dex . java fx Ċ Ċ import Ġcom . j fo enix . utils . J FX Node Utils Ċ import Ġjavafx . beans . value . Observable Value Ċ import Ġjavafx . event . EventTarget Ċ import Ġjavafx . geometry . Bounds Ċ import Ġjavafx . geometry . Insets Ċ import Ġjavafx . geometry . Orientation Ċ import Ġjavafx . geometry . Rectangle 2 D Ċ import Ġjavafx . scene . Node Ċ import Ġjavafx . scene . Parent Ċ import Ġjavafx . scene . control .* Ċ import Ġjavafx . scene . input . Key Combination Ċ import Ġjavafx . scene . input . KeyEvent Ċ import Ġjavafx . scene . layout . Region Ċ import Ġjavafx . scene . paint . Color Ċ import Ġjavafx . stage . Screen Ċ import Ġjavafx . stage . Stage Ċ import Ġkotlinx . coroutines .* Ċ import Ġt orn ad of x .* Ċ import Ġkotlin . reflect . K Class Ċ import Ġkotlin . reflect . full . declared Member Functions Ċ import Ġkotlin . reflect . jvm . is Accessible Ċ Ċ /** Ċ Ġ* ĠUser : Ġy kr as ik Ċ Ġ* ĠDate : Ġ 0 2 / 0 1 / 2 0 1 7 Ċ Ġ* ĠTime : Ġ 2 0 : 4 5 Ċ Ġ*/ Ċ val Ġscreen Bounds : ĠRectangle 2 D Ġ= ĠScreen . get Primary (). bounds Ċ Ċ private Ġobject ĠStyles heet Lock Ċ Ċ fun Ġ< T Ġ: ĠStyles heet > Ġimport Style sheet Safe ( stylesheet Type : ĠK Class < T >) Ġ= Ġsynchronized ( Style sheet Lock ) Ġ{ Ġimport Style sheet ( stylesheet Type ) Ġ} Ċ Ċ fun ĠUI Component . call On Dock () Ġ{ ĊĠĠĠ Ġon Dock () ĊĠĠĠ Ġon Dock Listeners ?. forEach Ġ{ Ġit . invoke ( this ) Ġ} Ċ } Ċ Ċ fun ĠUI Component . call On Un dock () Ġ{ ĊĠĠĠ Ġon Un dock () ĊĠĠĠ Ġon Un dock Listeners ?. forEach Ġ{ Ġit . invoke ( this ) Ġ} Ċ } Ċ Ċ fun ĠRegion . print Size ( id : ĠString ) Ġ{ ĊĠĠĠ Ġprint Width ( id ) ĊĠĠĠ Ġprint Height ( id ) Ċ } Ċ Ċ fun ĠRegion . print Width ( id : ĠString ) Ġ= Ġprint Size ( id , Ġ" width ", ĠminWidth Property (), ĠmaxWidth Property (), Ġpref Width Property (), Ġwidth Property ()) Ċ fun ĠRegion . print Height ( id : ĠString ) Ġ= Ġprint Size ( id , Ġ" height ", ĠminHeight Property (), ĠmaxHeight Property (), Ġpref Height Property (), Ġheight Property ()) Ċ Ċ fun Ġ< S , ĠT > ĠTable Column Base < S , ĠT >. print Width ( id : ĠString ) Ġ{ ĊĠĠĠ Ġprint Size ( id , Ġ" width ", ĠminWidth Property (), ĠmaxWidth Property (), Ġpref Width Property (), Ġwidth Property ()) Ċ } Ċ Ċ fun ĠStage . print Width ( id : ĠString ) Ġ{ ĊĠĠĠ Ġprint Size ( id , Ġ" width ", ĠminWidth Property (), ĠmaxWidth Property (), Ġnull , Ġwidth Property ()) Ċ } Ċ Ċ private Ġfun Ġprint Size ( ĊĠĠĠ Ġid : ĠString , ĊĠĠĠ Ġsize Name : ĠString , ĊĠĠĠ Ġmin : ĠObservable Value < Number >, ĊĠĠĠ Ġmax : ĠObservable Value < Number >, ĊĠĠĠ Ġpref : ĠObservable Value < Number > ?, ĊĠĠĠ Ġactual : ĠObservable Value < Number >, Ċ ) Ġ{ ĊĠĠĠ Ġprintln ("$ id Ġmin -$ size Name Ġ= Ġ${ min . value }") ĊĠĠĠ Ġprintln ("$ id Ġmax -$ size Name Ġ= Ġ${ max . value }") ĊĠĠĠ Ġpref ?. let Ġ{ Ġprintln ("$ id Ġpref -$ size Name Ġ= Ġ${ it . value }") Ġ} ĊĠĠĠ Ġprintln ("$ id Ġ$ size Name Ġ= Ġ${ actual . value }") ĊĊĠĠĠ Ġmin . print Changes ("$ id Ġmin -$ size Name ") ĊĠĠĠ Ġmax . print Changes ("$ id Ġmax -$ size Name ") ĊĠĠĠ Ġpref ?. print Changes ("$ id Ġpref -$ size Name ") ĊĠĠĠ Ġactual . print Changes ("$ id Ġ$ size Name ") Ċ } Ċ Ċ fun ĠRegion . padding ( op : Ġ( Inset Builder . () Ġ-> ĠUnit )) Ġ{ ĊĠĠĠ Ġval Ġbuilder Ġ= ĠIn set Builder ( this ) ĊĠĠĠ Ġop ( builder ) ĊĠĠĠ Ġpadding Ġ= ĠIn sets ( builder . top . toDouble (), Ġbuilder . right . toDouble (), Ġbuilder . bottom . toDouble (), Ġbuilder . left . toDouble ()) Ċ } Ċ Ċ class ĠIn set Builder ( region : ĠRegion ) Ġ{ ĊĠĠĠ Ġvar Ġtop : ĠNumber Ġ= Ġregion . padding . top ĊĠĠĠ Ġvar Ġbottom : ĠNumber Ġ= Ġregion . padding . bottom ĊĠĠĠ Ġvar Ġright : ĠNumber Ġ= Ġregion . padding . right ĊĠĠĠ Ġvar Ġleft : ĠNumber Ġ= Ġregion . padding . left Ċ } Ċ Ċ fun ĠEvent Target . vertical Separator ( padding : ĠNumber ? Ġ= Ġ 1 0 , Ġop : ĠSe parator . () Ġ-> ĠUnit Ġ= Ġ{}) Ġ= Ġseparator ( Orientation . VERTICAL , Ġop ). apply Ġ{ ĊĠĠĠ Ġpadding ?. let Ġ{ ĊĠĠĠĠĠĠĠ Ġpadding Ġ{ Ġright Ġ= Ġit ; Ġleft Ġ= Ġit Ġ} ĊĠĠĠ Ġ} Ċ } Ċ Ċ fun ĠNode . mouse Transparent When ( expr : Ġ() Ġ-> ĠObservable Value < Boolean >) Ġ{ ĊĠĠĠ Ġmouse Transparent Property (). clean Bind ( expr ()) Ċ } Ċ Ċ inline Ġfun Ġ< T Ġ: ĠUI Component > ĠParent . addComponent ( component : ĠT , Ġf : ĠT . () Ġ-> ĠUnit Ġ= Ġ{}) Ġ{ ĊĠĠĠ Ġadd ( component . root ) ĊĠĠĠ Ġf ( component ) Ċ } Ċ Ċ fun ĠControl . do Not Consume Mouse Events () Ġ{ ĊĠĠĠ Ġval Ġmethod Ġ= ĠSk in Base :: class . declared Member Functions . find Ġ{ Ġit . name Ġ== Ġ" consume Mouse Events " Ġ} !! ĊĠĠĠ Ġmethod . is Accessible Ġ= Ġtrue ĊĠĠĠ Ġskin Property (). perform Ġ{ ĊĠĠĠĠĠĠĠ Ġif Ġ( it Ġis ĠSk in Base ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġmethod . call ( it , Ġfalse ) ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} Ċ } Ċ Ċ fun ĠNode . make Drag gable () Ġ{ ĊĠĠĠ Ġvar Ġmouse X Ġ= Ġ 0 . 0 ĊĠĠĠ Ġvar ĠmouseY Ġ= Ġ 0 . 0 ĊĊĠĠĠ Ġset On Mouse Pressed Ġ{ Ġevent Ġ-> ĊĠĠĠĠĠĠĠ Ġmouse X Ġ= Ġevent . scene X ĊĠĠĠĠĠĠĠ ĠmouseY Ġ= Ġevent . scene Y ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġset On Mouse Drag ged Ġ{ Ġevent Ġ-> ĊĠĠĠĠĠĠĠ Ġval Ġdelta X Ġ= Ġevent . scene X Ġ- Ġmouse X ĊĠĠĠĠĠĠĠ Ġval Ġdelta Y Ġ= Ġevent . scene Y Ġ- ĠmouseY ĊĠĠĠĠĠĠĠ Ġre locate ( layout X Ġ+ Ġdelta X , Ġlayout Y Ġ+ Ġdelta Y ) ĊĠĠĠĠĠĠĠ Ġmouse X Ġ= Ġevent . scene X ĊĠĠĠĠĠĠĠ ĠmouseY Ġ= Ġevent . scene Y ĊĠĠĠ Ġ} Ċ } Ċ Ċ val ĠNode . vertical ScrollBar : ĠScroll Bar ? ĊĠĠĠ Ġget () Ġ= Ġlookup All (". scroll - bar ") ĊĠĠĠĠĠĠĠ Ġ. as Sequence () ĊĠĠĠĠĠĠĠ Ġ. map Ġ{ Ġit Ġas ĠScroll Bar Ġ} ĊĠĠĠĠĠĠĠ Ġ. filter Ġ{ Ġit . orientation Ġ== ĠOrientation . VERTICAL Ġ} ĊĠĠĠĠĠĠĠ Ġ. first OrNull () Ċ Ċ val ĠColor . hex : ĠString Ġget () Ġ= ĠJ FX Node Utils . color To Hex ( this ) Ċ val ĠString . color : ĠColor Ġget () Ġ= ĠColor . valueOf ( this ) Ċ fun ĠColor . with Opacity ( opacity : ĠDouble ): ĠColor Ġ= ĠColor ( red , Ġgreen , Ġblue , Ġopacity ) Ċ Ċ val ĠNode . bounds In Screen : ĠBounds Ġget () Ġ= Ġlocal To Screen ( bounds In Local ) Ċ Ċ fun ĠBounds . contains Delta ( x : ĠDouble , Ġy : ĠDouble , Ġdelta : ĠDouble ): ĠBoolean Ġ{ ĊĠĠĠ Ġreturn Ġ! isEmpty Ġ&& Ġx Ġin Ġ( min X Ġ- Ġdelta ) .. ( max X Ġ+ Ġdelta ) Ġ&& Ġy Ġin Ġ( min Y Ġ- Ġdelta ) .. ( max Y Ġ+ Ġdelta ) Ċ } Ċ Ċ inline Ġfun Ġdebounce ( millis : ĠLong , Ġcross inline Ġf : Ġ() Ġ-> ĠUnit ): ĠJob Ġ= ĠJava Fx Scope . launch Ġ{ ĊĠĠĠ Ġdelay ( millis ) ĊĠĠĠ Ġf () Ċ } Ċ Ċ inline Ġfun ĠNode . local Shortcut ( combin ation : ĠString , Ġcross inline Ġaction : Ġ() Ġ-> ĠUnit ) Ġ= Ġlocal Shortcut ( Key Combination . valueOf ( combin ation ), Ġaction ) Ċ inline Ġfun ĠNode . local Shortcut ( combin ation : ĠKey Combination , Ġcross inline Ġaction : Ġ() Ġ-> ĠUnit ) Ġ{ ĊĠĠĠ Ġadd Event Filter ( KeyEvent . KEY _ PRES SED ) Ġ{ Ġe Ġ-> ĊĠĠĠĠĠĠĠ Ġif Ġ( combin ation . match ( e )) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġaction () ĊĠĠĠĠĠĠĠĠĠĠĠ Ġe . consume () ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} Ċ } Ċ Ċ fun ĠUI Component . local Shortcut ( button : ĠButton Base , Ġcombination : ĠString ) Ġ= Ġlocal Shortcut ( button , ĠKey Combination . valueOf ( combin ation )) Ċ fun ĠUI Component . local Shortcut ( button : ĠButton Base , Ġcombination : ĠKey Combination ) Ġ{ ĊĠĠĠ Ġrun Later Ġ{ ĊĠĠĠĠĠĠĠ Ġroot . local Shortcut ( combin ation ) Ġ{ Ġbutton . fire () Ġ} ĊĠĠĠ Ġ} Ċ } Ċ Ċ object ĠJava Fx Scope Ġ: ĠCor outine Scope Ġ{ ĊĠĠĠ Ġoverride Ġval Ġcoroutine Context Ġ= ĠDispatch ers . Main . immediate Ċ }