package Ġcom . pat res . automation . util . extension Ċ Ċ import Ġcom . pat res . automation . gui . font . Font Automation Icon Ċ import Ġcom . pat res . automation . gui . font . Font Automation Icon View Ċ import Ġde . j ens d . fx . glyph s . Glyph Icon Ċ import Ġde . j ens d . fx . glyph s . Glyph Icons Ċ import Ġde . j ens d . fx . glyph s . fontawesome . FontAwesome Icon Ċ import Ġde . j ens d . fx . glyph s . fontawesome . FontAwesome Icon View Ċ import Ġjavafx . animation . Key Frame Ċ import Ġjavafx . animation . Timeline Ċ import Ġjavafx . collections . Observable List Ċ import Ġjavafx . scene . Node Ċ import Ġjavafx . scene . Parent Ċ import Ġjavafx . scene . control . Tooltip Ċ import Ġjavafx . util . Duration Ċ import Ġjava . util .* Ċ import Ġkotlin . reflect . K Class ĊĊ Ċ @ Suppress (" UN CHECK ED _ CAST ") Ċ fun ĠParent . swap ( node : ĠNode , Ġnode To Swap : ĠNode ) Ġ{ ĊĠĠĠ Ġ// ĠWork around Ġfor Ġprivate Ġmembers ĊĠĠĠ Ġval Ġchildren From Field Ġ= ĠgetObject From Field ( Parent :: class , Ġthis , Ġ" children ") Ġas ĠObservable List < Node > ĊĠĠĠ Ġval Ġchildren Trigger Per mutation Field Ġ= ĠParent :: class . java . getDeclared Field (" children Trigger Per mutation ") ĊĠĠĠ Ġchildren Trigger Per mutation Field . is Accessible Ġ= Ġtrue ĊĊĠĠĠ Ġif Ġ( node To Swap Ġ!== Ġnode ) Ġ{ ĊĠĠĠĠĠĠĠ Ġchildren Trigger Per mutation Field . set Boolean ( this , Ġtrue ) ĊĠĠĠĠĠĠĠ Ġtry Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġposition Of Node Ġ= Ġchildren From Field . indexOf ( node ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġposition Of Node To Swap Ġ= Ġchildren From Field . indexOf ( node To Swap ) ĊĊĠĠĠĠĠĠĠĠĠĠĠ Ġchildren From Field . remove ( node ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġchildren From Field . remove ( node To Swap ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġif Ġ( position Of Node Ġ> Ġposition Of Node To Swap ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġchildren From Field . add ( position Of Node To Swap , Ġnode ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġchildren From Field . add ( position Of Node , Ġnode To Swap ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} Ġelse Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġchildren From Field . add ( position Of Node , Ġnode To Swap ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġchildren From Field . add ( position Of Node To Swap , Ġnode ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġ} Ġfinally Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġchildren Trigger Per mutation Field . set Boolean ( this , Ġfalse ) ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} Ċ } Ċ Ċ fun ĠTooltip . start Timing ( time : ĠDouble ) Ġ{ ĊĠĠĠ Ġtry Ġ{ ĊĠĠĠĠĠĠĠ Ġval Ġfield Behavior Ġ= Ġthis . java Class . getDeclared Field (" BE HAV IOR ") ĊĠĠĠĠĠĠĠ Ġfield Behavior . is Accessible Ġ= Ġtrue ĊĠĠĠĠĠĠĠ Ġval Ġobj Behavior Ġ= Ġfield Behavior . get ( this ) ĊĊĠĠĠĠĠĠĠ Ġval Ġfield Timer Ġ= Ġobj Behavior . java Class . getDeclared Field (" activation Timer ") ĊĠĠĠĠĠĠĠ Ġfield Timer . is Accessible Ġ= Ġtrue ĊĠĠĠĠĠĠĠ Ġval Ġobj Timer Ġ= Ġfield Timer . get ( obj Behavior ) Ġas ĠTimeline ĊĊĠĠĠĠĠĠĠ Ġobj Timer . key Frames . clear () ĊĠĠĠĠĠĠĠ Ġobj Timer . key Frames . add ( Key Frame ( Duration ( time ))) ĊĠĠĠ Ġ} Ġcatch Ġ( e : ĠException ) Ġ{ ĊĠĠĠĠĠĠĠ Ġe . printStackTrace () ĊĠĠĠ Ġ} Ċ } Ċ Ċ fun ĠGlyph Icons . get Icon (): ĠGlyph Icon < *> ? Ġ{ ĊĠĠĠ Ġval Ġgraphic : ĠGlyph Icon < *> ? Ġ= Ġwhen Ġ( this ) Ġ{ ĊĠĠĠĠĠĠĠ Ġis ĠFont Awesome Icon Ġ-> ĠFont Awesome Icon View ( this ) ĊĠĠĠĠĠĠĠ Ġis ĠFont Automation Icon Ġ-> ĠFont Automation Icon View ( this ) ĊĠĠĠĠĠĠĠ Ġelse Ġ-> Ġnull ĊĠĠĠ Ġ} ĊĠĠĠ Ġgraphic ?. getStyle Class ()?. add (" sub - icon ") ĊĠĠĠ Ġreturn Ġgraphic Ċ } Ċ Ċ fun ĠGlyph Icons . get Icon ( size : ĠString ): ĠGlyph Icon < *> ? Ġ{ ĊĠĠĠ Ġval Ġgraphic : ĠGlyph Icon < *> ? Ġ= Ġwhen Ġ( this ) Ġ{ ĊĠĠĠĠĠĠĠ Ġis ĠFont Awesome Icon Ġ-> ĠFont Awesome Icon View ( this , Ġsize ) ĊĠĠĠĠĠĠĠ Ġis ĠFont Automation Icon Ġ-> ĠFont Automation Icon View ( this , Ġsize ) ĊĠĠĠĠĠĠĠ Ġelse Ġ-> Ġnull ĊĠĠĠ Ġ} ĊĠĠĠ Ġgraphic ?. getStyle Class ()?. add (" sub - icon ") ĊĠĠĠ Ġreturn Ġgraphic Ċ } Ċ Ċ @ Suppress (" UN CHECK ED _ CAST ") Ċ fun Ġ< T Ġ: ĠNode > ĠNode . calculate Typed Parent ( type : ĠK Class < T >): ĠT ? Ġ{ ĊĠĠĠ Ġval Ġpotential Parent Ġ= Ġparent ĊĠĠĠ Ġreturn Ġwhen Ġ{ ĊĠĠĠĠĠĠĠ Ġtype . is Instance ( potential Parent ) Ġ-> Ġpotential Parent Ġas ĠT ĊĠĠĠĠĠĠĠ Ġpotential Parent Ġis ĠNode Ġ-> Ġpotential Parent . calculate Typed Parent ( type ) ĊĠĠĠĠĠĠĠ Ġelse Ġ-> Ġnull ĊĠĠĠ Ġ} Ċ } Ċ Ċ @ Suppress (" UN CHECK ED _ CAST ") Ċ fun Ġ< T Ġ: ĠNode > ĠNode . has Parent ( type : ĠK Class < T >): ĠBoolean Ġ{ ĊĠĠĠ Ġval Ġpotential Parent Ġ= Ġparent ĊĠĠĠ Ġreturn Ġwhen Ġ{ ĊĠĠĠĠĠĠĠ Ġtype . is Instance ( potential Parent ) Ġ-> Ġtrue ĊĠĠĠĠĠĠĠ Ġpotential Parent Ġis ĠNode Ġ-> Ġpotential Parent . has Parent ( type ) ĊĠĠĠĠĠĠĠ Ġelse Ġ-> Ġfalse ĊĠĠĠ Ġ} Ċ } Ċ Ċ fun ĠParent . getAll Nodes (): ĠArrayList < Node > Ġ{ ĊĠĠĠ Ġval Ġnodes Ġ= ĠArrayList < Node >() ĊĠĠĠ Ġfun Ġrecurse Nodes ( node : ĠNode ) Ġ{ ĊĠĠĠĠĠĠĠ Ġnodes . add ( node ) ĊĠĠĠĠĠĠĠ Ġif Ġ( node Ġis ĠParent ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġfor Ġ( child Ġin Ġnode . children Un modifiable ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġrecurse Nodes ( child ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} ĊĠĠĠ Ġrecurse Nodes ( this ) ĊĠĠĠ Ġreturn Ġnodes Ċ } ĊĊ