package Ġio . github . sl up ik . sche m ab lock . java fx . element . block . size Ċ Ċ import Ġio . github . sl up ik . sche m ab lock . java fx . element . background . Custom Shape Ċ import Ġjavafx . application . Platform Ċ import Ġjavafx . geometry . Pos Ċ import Ġjavafx . scene . control . Label Ċ import Ġjavafx . scene . layout . Pane Ċ import Ġjavafx . scene . layout . Region Ċ import Ġjavafx . scene . layout . V Box Ċ import Ġjavafx . scene . shape . Ellipse Ċ Ċ /** Ċ Ġ* ĠAll Ġrights Ġreserved Ġ& Ġcopyright ĠÂ© Ċ Ġ*/ Ċ class ĠReactive Element Size Controller Ġconstructor ( ĊĠĠĠĠĠĠĠ Ġprivate Ġval Ġcontainer : ĠP ane , ĊĠĠĠĠĠĠĠ Ġprivate Ġval Ġbackground : ĠCustom Shape , ĊĠĠĠĠĠĠĠ Ġprivate Ġval Ġdescription : ĠLabel Ċ ) Ġ: ĠElement Size Controller Ġ{ ĊĊĠĠĠ Ġprivate Ġval Ġtext Size Provider : ĠText Size Provider Ġ= ĠText Size Provider ( description ) ĊĊĠĠĠ Ġoverride Ġfun Ġbind Elements () Ġ{ ĊĠĠĠĠĠĠĠ Ġcontainer . pref Width Ġ= Ġbackground . outer Width ĊĠĠĠĠĠĠĠ Ġcontainer . pref Height Ġ= Ġbackground . outer Height ĊĊĠĠĠĠĠĠĠ Ġbackground . outer Width Property (). bind ( container . pref Width Property ()) ĊĠĠĠĠĠĠĠ Ġbackground . outer Height Property (). bind ( container . pref Height Property ()) ĊĊĠĠĠĠĠĠĠ Ġbind Description Container Size () ĊĊĠĠĠĠĠĠĠ Ġdescription . maxWidth Property (). bind ( background . innerWidth Property ()) ĊĠĠĠĠĠĠĠ Ġdescription . max Height Property (). bind ( background . innerHeight Property ()) ĊĊĠĠĠĠĠĠĠ Ġsetup Listeners Trigger ing Font Change () ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġprivate Ġfun Ġbind Description Container Size () Ġ{ ĊĠĠĠĠĠĠĠ Ġval Ġdesc Container Ġ= Ġget Desc Container () ĊĠĠĠĠĠĠĠ Ġif Ġ( desc Container Ġ!= Ġnull ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġdesc Container . min Width Property (). bind ( container . width Property ()) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġdesc Container . min Height Property (). bind ( container . height Property ()) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġdesc Container . pref Width Property (). bind ( container . width Property ()) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġdesc Container . pref Height Property (). bind ( container . height Property ()) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġdesc Container . maxWidth Property (). bind ( container . width Property ()) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġdesc Container . max Height Property (). bind ( container . height Property ()) ĊĊĠĠĠĠĠĠĠĠĠĠĠ Ġif ( desc Container Ġis ĠV Box ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġdesc Container . alignment Ġ= ĠPos . CENTER ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġ} Ġelse Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġthrow ĠRuntimeException (" Container Ġof Ġdescription Ġof Ġelement Ġshould Ġbe Ġa Ġtype Ġof ĠRegion Ġbut Ġit 's Ġnot .") ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġprivate Ġfun Ġget Desc Container (): ĠRegion ? Ġ= ĊĠĠĠĠĠĠĠĠĠĠĠ Ġif Ġ( description . parent Ġis ĠRegion ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġdescription . parent Ġas ĠRegion ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} Ġelse Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġnull ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠ Ġprivate Ġfun Ġsetup Listeners Trigger ing Font Change () Ġ{ ĊĠĠĠĠĠĠĠ Ġbackground . innerWidth Property (). addListener Ġ{ Ġ_, Ġ_, ĠnewValue Ġ-> ĊĠĠĠĠĠĠĠĠĠĠĠ Ġreset FontSize ( newValue . toDouble (), Ġbackground . innerHeight ) ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġbackground . innerHeight Property (). addListener Ġ{ Ġ_, Ġ_, ĠnewValue Ġ-> ĊĠĠĠĠĠĠĠĠĠĠĠ Ġreset FontSize ( background . innerWidth , ĠnewValue . toDouble ()) ĊĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠ Ġdescription . text Property (). addListener Ġ{ Ġ_, Ġ_, Ġ_ Ġ-> ĊĠĠĠĠĠĠĠĠĠĠĠ Ġreset FontSize ( background . innerWidth , Ġbackground . innerHeight ) ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġprivate Ġfun Ġreset FontSize ( width : ĠDouble , Ġheight : ĠDouble ) Ġ{ ĊĠĠĠĠĠĠĠ Ġval Ġfont Ġ= Ġtext Size Provider . getFont For Container Size ( width , Ġheight ) ĊĠĠĠĠĠĠĠ Ġdescription . font Ġ= Ġfont ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġoverride Ġfun Ġset Size ( width : ĠDouble , Ġheight : ĠDouble ) Ġ{ ĊĠĠĠĠĠĠĠ Ġcontainer . pref Width Ġ= Ġwidth ĊĠĠĠĠĠĠĠ Ġcontainer . pref Height Ġ= Ġheight ĊĠĠĠĠĠĠĠ Ġreset Pos () ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġoverride Ġfun Ġset Width ( width : ĠDouble ) Ġ{ ĊĠĠĠĠĠĠĠ Ġcontainer . pref Width Ġ= Ġwidth ĊĠĠĠĠĠĠĠ Ġreset Pos () ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġoverride Ġfun Ġset Height ( height : ĠDouble ) Ġ{ ĊĠĠĠĠĠĠĠ Ġcontainer . pref Height Ġ= Ġheight ĊĠĠĠĠĠĠĠ Ġreset Pos () ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġprivate Ġfun Ġreset Pos () Ġ{ ĊĠĠĠĠĠĠĠ ĠPlatform . run Later Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġif Ġ( background Ġis ĠEl lipse ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġcontainer . layout X Ġ= Ġcontainer . width Ġ/ Ġ 2 ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġcontainer . layout Y Ġ= Ġcontainer . height Ġ/ Ġ 2 ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} Ċ Ċ }