package Ġcom . k ne el awk . mod pack editor . ui . util Ċ Ċ import Ġjavafx . application . Platform Ċ import Ġjavafx . beans . property . Property Ċ import Ġt orn ad of x . run Later Ċ import Ġjava . util . concurrent . atomic . Atomic Reference Ċ import Ġkotlin . reflect . K Property Ċ Ċ /** Ċ Ġ* ĠUtility Ġto Ġwrap Ġproperties Ġso Ġthat Ġset Ġoperations Ġonly Ġhappen Ġon Ġthe ĠJava FX Ġapplication Ġthread . Ċ Ġ*/ Ċ class ĠObject Property Wrapper < T >( private Ġval Ġproperty : ĠProperty < T >) Ġ{ ĊĠĠĠ Ġprivate Ġval Ġupdate Ġ= ĠAtomic Reference < T >() ĊĊĠĠĠ Ġoperator Ġfun ĠsetValue ( this Ref : ĠAny , Ġk Property : ĠK Property <* >, Ġvalue : ĠT ) Ġ{ ĊĠĠĠĠĠĠĠ Ġif Ġ( Platform . is Fx Application Thread ()) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġproperty . value Ġ= Ġvalue ĊĠĠĠĠĠĠĠ Ġ} Ġelse Ġif Ġ( update . get AndSet ( value ) Ġ== Ġnull ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġrun Later Ġ{ Ġproperty . value Ġ= Ġupdate . get AndSet ( null ) Ġ} ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġoperator Ġfun ĠgetValue ( this Ref : ĠAny , Ġk Property : ĠK Property < *> ): ĠT Ġ{ ĊĠĠĠĠĠĠĠ Ġreturn Ġproperty . value !! ĊĠĠĠ Ġ} Ċ }