package Ġorg . kode in . di . t orn ad of x Ċ Ċ import Ġjavafx . scene .* Ċ import Ġorg . kode in . di .* Ċ import Ġt orn ad of x .* Ċ Ċ /** Ċ Ġ* ĠGetting Ġthe Ġglobal Ġ[ DI ] Ġcontainer Ġfrom Ġthe Ġ[ App ] Ġparameter Ġif Ġits Ġ[ DI Aware ] Ċ Ġ*/ Ċ private Ġfun Ġk ode in DI ( getApplication : Ġ() Ġ-> ĠApp ) Ġ= ĠLazy DI Ġ{ Ġ( getApplication () Ġas ĠD IA ware ). di Ġ} ĊĊ Ċ /** Ċ Ġ* ĠGetting Ġa Ġglobal Ġ[ DI ] Ġcontainer Ġfrom Ġthe Ġrunning Ġ[ App ] Ċ Ġ*/ Ċ fun ĠComponent . kode in DI () Ġ= Ġk ode in DI Ġ{ Ġapp Ġ} Ċ Ċ /** Ċ Ġ* ĠAlias Ġto Ġ` di ` Ċ Ġ*/ Ċ fun ĠComponent . closest K ode in DI () Ġ= Ġk ode in DI () Ċ Ċ /** Ċ Ġ* ĠUnique Ġvalue Ġto Ġbe Ġable Ġto Ġset Ġa Ġ[ DI ] Ġcontainer Ġinto ĠNode # properties Ċ Ġ*/ Ċ private Ġconst Ġval ĠK ODE IN _ DI _ KEY Ġ= Ġ" KO DE IN _ DI _ KEY " Ċ Ċ /** Ċ Ġ* ĠInstalling Ġa Ġ[ DI ] Ġcontainer Ġinto ĠNode # properties Ġif Ġthere Ġis Ġnone Ċ Ġ*/ Ċ fun ĠNode . kode in DI ( init : ĠDI . Main Builder . () Ġ-> ĠUnit ) Ġ= Ġadd K ode in DI Property ( DI Ġ{ Ġinit () Ġ}) Ċ Ċ /** Ċ Ġ* ĠAlias Ġto Ġ` di ` Ċ Ġ*/ Ċ fun ĠNode . closest K ode in DI ( init : ĠDI . Main Builder . () Ġ-> ĠUnit ) Ġ= Ġk ode in DI ( init ) Ċ Ċ /** Ċ Ġ* ĠInstalling Ġa Ġ[ DI ] Ġcontainer Ġinto ĠNode # properties Ġif Ġthere Ġis Ġnone Ċ Ġ*/ Ċ fun ĠNode . add K ode in DI Property ( di : ĠDI ) Ġ{ ĊĠĠĠ Ġif Ġ( properties [ KO DE IN _ DI _ KEY ] Ġ!= Ġnull ) ĊĠĠĠĠĠĠĠ Ġthrow ĠIllegalArgumentException (" There Ġis Ġalready Ġa ĠDI Ġcontainer Ġfor Ġthe Ġnode Ġ${ this }") ĊĊĠĠĠ Ġproperties [ KO DE IN _ DI _ KEY ] Ġ= Ġdi Ċ } Ċ Ċ /** Ċ Ġ* ĠGetting Ġthe Ġnearest Ġ[ DI ] Ġcontainer Ġin Ġthe ĠNode Ġhierarchy , Ċ Ġ* Ġgoing Ġfrom Ġparent Ġto Ġparent Ġand Ġretrieve Ġthe Ġfirst Ġ[ DI ] Ġcontainer Ġencountered Ċ Ġ* Ċ Ġ* ĠIf Ġno Ġ[ DI ] Ġcontainer Ġis Ġnot Ġfound Ġin Ġthe Ġhierarchy , Ġwe Ġtry Ġto Ġretrieve Ġthe Ġone Ġfrom Ġthe ĠApp Ġif Ġthere Ġis Ġone Ċ Ġ*/ Ċ fun ĠNode . kode in DI (): ĠLazy DI Ġ= Ġwhen Ġ{ ĊĠĠĠ Ġproperties [ KO DE IN _ DI _ KEY ] Ġ!= Ġnull Ġ-> ĠLazy DI Ġ{ Ġproperties [ KO DE IN _ DI _ KEY ] Ġas ĠDI Ġ} ĊĠĠĠ Ġelse Ġ-> Ġparent ?. kode in DI () Ġ?: Ġwhen Ġ{ ĊĠĠĠĠĠĠĠ ĠFX . application Ġis ĠD IA ware Ġ-> ĠLazy DI Ġ{ Ġ( FX . application Ġas ĠD IA ware ). di Ġ} ĊĠĠĠĠĠĠĠ Ġelse Ġ-> Ġthrow ĠIllegalStateException (" No ĠDI Ġcontainer Ġfound Ġfor Ġ[ ${ this }] ") ĊĠĠĠ Ġ} Ċ } Ċ Ċ /** Ċ Ġ* ĠAlias Ġto Ġ` di ` Ċ Ġ*/ Ċ fun ĠNode . closest K ode in DI () Ġ= Ġk ode in DI ()