package Ġio . nac ular . do od le . controls . panels Ċ Ċ import Ġio . nac ular . do od le . controls . theme . Split Panel Behavior Ċ import Ġio . nac ular . do od le . core . View Ċ import Ġio . nac ular . do od le . core . behavior Ċ import Ġio . nac ular . do od le . drawing . Canvas Ċ import Ġio . nac ular . do od le . geometry . Point Ċ import Ġio . nac ular . do od le . layout . constr ain Ċ import Ġio . nac ular . do od le . layout . fill Ċ import Ġio . nac ular . do od le . utils . Change Observer s Ċ import Ġio . nac ular . do od le . utils . Change Observer s Impl Ċ import Ġio . nac ular . do od le . utils . Orientation Ċ import Ġio . nac ular . do od le . utils . Orientation . Vertical ĊĊ Ċ class ĠSplit Panel ( orientation : ĠOrientation Ġ= ĠVertical , Ġratio : ĠFloat Ġ= Ġ 0 . 5 f ): ĠView () Ġ{ ĊĊĠĠĠ Ġvar Ġbehavior : ĠSplit Panel Behavior ? Ġby Ġbehavior Ġ{ Ġ_, new Ġ-> ĊĊĠĠĠĠĠĠĠĠĠĠĠ Ġdivider ?. let Ġ{ Ġchildren Ġ-= Ġit Ġ} ĊĊĠĠĠĠĠĠĠĠĠĠĠ Ġnew ?. also Ġ{ Ġbehavior Ġ-> ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġdivider Ġ= Ġbehavior . divider ( this ) ĊĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġdivider ?. let Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġif Ġ( behavior . divider Visible ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġpanel Spacing Ġ= Ġit . width ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġchildren Ġ+= Ġit ĊĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġit . z Order Ġ= Ġ 1 ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġif Ġ( divider Ġ!= Ġnull ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġupdate Layout () ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠ Ġvar Ġfirst Item : ĠView ? Ġ= Ġnull ; Ġset ( new ) Ġ{ ĊĠĠĠĠĠĠĠ Ġif Ġ( new Ġ== Ġfield ) Ġ{ Ġreturn Ġ} ĊĊĠĠĠĠĠĠĠ Ġfield ?. let Ġ{ Ġchildren Ġ-= Ġit Ġ} ĊĊĠĠĠĠĠĠĠ Ġfield Ġ Ġ= Ġnew ĊĊĠĠĠĠĠĠĠ Ġfield ?. let Ġ{ Ġchildren Ġ+= Ġit Ġ} ĊĊĠĠĠĠĠĠĠ Ġfire Changed () ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġvar Ġlast Item : ĠView ? Ġ= Ġnull ; Ġset ( new ) Ġ{ ĊĠĠĠĠĠĠĠ Ġif Ġ( new Ġ== Ġfield ) Ġ{ Ġreturn Ġ} ĊĊĠĠĠĠĠĠĠ Ġfield ?. let Ġ{ Ġchildren Ġ-= Ġit Ġ} ĊĊĠĠĠĠĠĠĠ Ġfield Ġ Ġ= Ġnew ĊĊĠĠĠĠĠĠĠ Ġfield ?. let Ġ{ Ġchildren Ġ+= Ġit Ġ} ĊĊĠĠĠĠĠĠĠ Ġfire Changed () ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġvar Ġorientation Ġ= Ġorientation ; Ġset ( new ) Ġ{ Ġif Ġ( new Ġ!= Ġfield ) Ġ{ Ġfield Ġ= Ġnew ; Ġfire Changed () Ġ} Ġ} ĊĊĠĠĠ Ġvar Ġratio Ġ= Ġratio ; Ġset ( new ) Ġ{ Ġif Ġ( new Ġ!= Ġfield ) Ġ{ Ġfield Ġ= Ġnew ; Ġre layout (); Ġchanged _() Ġ} Ġ} ĊĊĠĠĠ Ġprivate Ġvar Ġdivider ĠĠĠĠĠ Ġ= Ġnull Ġas ĠView ? ĊĠĠĠ Ġprivate Ġvar Ġpanel Spacing Ġ= Ġ 0 . 0 ĊĊĠĠĠ Ġ@ Suppress (" Private PropertyName ") ĊĠĠĠ Ġprivate Ġval Ġchanged _ Ġ= ĠChange Observer s Impl ( this ) ĊĊĠĠĠ Ġval Ġchanged : ĠChange Observer s < Split Panel > Ġ= Ġchanged _ ĊĊĠĠĠ Ġpublic Ġoverride Ġvar Ġin sets ĊĠĠĠĠĠĠĠ Ġget ( ĠĠ Ġ) Ġ= Ġsuper . in sets ĊĠĠĠĠĠĠĠ Ġset ( new ) Ġ{ Ġif Ġ( new Ġ!= Ġsuper . in sets ) Ġ{ Ġsuper . in sets Ġ= Ġnew ; Ġre layout () Ġ} Ġ} ĊĊĠĠĠ Ġinit Ġ{ ĊĠĠĠĠĠĠĠ Ġrequire ( ratio Ġin Ġ 0 . 0 f Ġ.. Ġ 1 . 0 f ) Ġ{ Ġ" ratio Ġmust Ġbe Ġin Ġ 0 Ġ.. Ġ 1 " Ġ} ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġoverride Ġfun Ġrender ( canvas : ĠCanvas ) Ġ{ ĊĠĠĠĠĠĠĠ Ġbehavior ?. render ( this , Ġcanvas ) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġoverride Ġfun Ġcontains ( point : ĠPoint ) Ġ= Ġsuper . contains ( point ) Ġ&& Ġbehavior ?. contains ( this , Ġpoint ) Ġ?: Ġtrue ĊĊĠĠĠ Ġprivate Ġfun Ġfire Changed () Ġ{ ĊĠĠĠĠĠĠĠ Ġupdate Layout () ĊĠĠĠĠĠĠĠ Ġchanged _() ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġ@ Suppress (" NAME _ SH ADO WING ") ĊĠĠĠ Ġprivate Ġfun Ġupdate Layout () Ġ{ ĊĠĠĠĠĠĠĠ Ġval Ġfirst ĠĠ Ġ= Ġfirst Item ĊĠĠĠĠĠĠĠ Ġval Ġlast ĠĠĠ Ġ= Ġlast Item ĊĠĠĠĠĠĠĠ Ġval Ġdivider Ġ= Ġdivider ĊĊĠĠĠĠĠĠĠ Ġval Ġlayout Ġ= Ġwhen Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġfirst Ġ!= Ġnull Ġ&& Ġlast Ġ!= Ġnull Ġ-> Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġconstr ain ( first , Ġlast ) Ġ{ Ġfirst , Ġlast Ġ-> ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġfirst . top ĠĠĠ Ġ= Ġfirst . parent . top ĠĠĠ Ġ+ Ġ{ Ġin sets . top ĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġfirst . left ĠĠ Ġ= Ġfirst . parent . left ĠĠ Ġ+ Ġ{ Ġin sets . left ĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġfirst . bottom Ġ= Ġfirst . parent . bottom Ġ- Ġ{ Ġin sets . bottom Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġfirst . right Ġ Ġ= Ġfirst . left Ġ+ Ġ( first . parent . width Ġ- Ġ{ Ġpanel Spacing Ġ+ Ġin sets . left Ġ+ Ġin sets . right Ġ}) Ġ* Ġ{ Ġratio Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġlast . top ĠĠĠĠ Ġ= Ġfirst . top ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġlast . left ĠĠĠ Ġ= Ġfirst . right Ġ+ Ġ{ Ġpanel Spacing Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġlast . bottom Ġ Ġ= Ġfirst . bottom ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġlast . right ĠĠ Ġ= Ġlast . parent . right Ġ- Ġ{ Ġin sets . right Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠĠĠĠĠ Ġfirst Ġ!= Ġnull Ġ-> Ġconstr ain ( first ) Ġ{ Ġfill ( it ) Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠ Ġlast Ġ Ġ!= Ġnull Ġ-> Ġconstr ain ( last Ġ) Ġ{ Ġfill ( it ) Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠ Ġelse Ġ-> Ġnull ĊĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠ Ġlayout ?. let Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġif Ġ( divider Ġ!= Ġnull Ġ&& Ġfirst Ġ!= Ġnull ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġit . constr ain ( divider , Ġfirst ) Ġ{ Ġdivider , Ġfirst Ġ-> ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġdivider . top ĠĠĠĠ Ġ= Ġfirst . top ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġdivider . bottom Ġ Ġ= Ġfirst . bottom ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġdivider . center X Ġ= Ġdivider . parent . left Ġ+ Ġ{ Ġin sets . left Ġ} Ġ+ Ġ( divider . parent . width Ġ- Ġ{ Ġpanel Spacing Ġ+ Ġin sets . left Ġ+ Ġin sets . right Ġ}) Ġ* Ġ{ Ġratio Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠ Ġthis . layout Ġ= Ġlayout ĊĠĠĠ Ġ} Ċ }