package Ġde . fl ap do od le . k fx . layout . absolute Ċ Ċ import Ġcom . sun . java fx . scene . Group Helper Ċ import Ġjavafx . beans . property . Boolean Property Ċ import Ġjavafx . beans . property . Boolean Property Base Ċ import Ġjavafx . collections . Observable List Ċ import Ġjavafx . geometry . Bounds Ċ import Ġjavafx . scene . Node Ċ import Ġjavafx . scene . Parent Ċ Ċ open Ġclass ĠK Group Ġ: ĠParent Ġ{ ĊĠĠĠ Ġinit Ġ{ ĊĠĠĠĠĠĠĠ Ġ// ĠTo Ġinitialize Ġthe Ġclass Ġhelper Ġat Ġthe Ġbegin ing Ġeach Ġconstructor Ġof Ġthis Ġclass ĊĠĠĠĠĠĠĠ ĠK Group Helper . init Helper ( this ) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġ/** ĊĠĠĠĠ Ġ* ĠConstructs Ġa Ġgroup . ĊĠĠĠĠ Ġ*/ ĊĠĠĠ Ġconstructor () Ġ{} ĊĊĠĠĠ Ġ/** ĊĠĠĠĠ Ġ* ĠConstructs Ġa Ġgroup Ġconsisting Ġof Ġchildren . ĊĠĠĠĠ Ġ* ĊĠĠĠĠ Ġ* Ġ@ param Ġchildren Ġchildren . ĊĠĠĠĠ Ġ*/ ĊĠĠĠ Ġconstructor ( var arg Ġchildren : ĠNode ?) Ġ{ ĊĠĠĠĠĠĠĠ Ġget Children (). addAll (* children ) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġ/** ĊĠĠĠĠ Ġ* ĠConstructs Ġa Ġgroup Ġconsisting Ġof Ġthe Ġgiven Ġchildren . ĊĠĠĠĠ Ġ* ĊĠĠĠĠ Ġ* Ġ@ param Ġchildren Ġchildren Ġof Ġthe Ġgroup ĊĠĠĠĠ Ġ* Ġ@ throws ĠNullPointerException Ġif Ġthe Ġspecified Ġcollection Ġis Ġnull ĊĠĠĠĠ Ġ* Ġ@ since ĠJava FX Ġ 8 . 0 ĊĠĠĠĠ Ġ*/ ĊĠĠĠ Ġconstructor ( children : ĠCollection < Node > ?) Ġ{ ĊĠĠĠĠĠĠĠ Ġget Children (). addAll ( children !! ) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġ/** ĊĠĠĠĠ Ġ* ĠControls Ġwhether Ġor Ġnot Ġthis Ġ` Group ` Ġwill Ġautomatically Ġresize Ġany ĊĠĠĠĠ Ġ* Ġmanaged Ġres izable Ġchildren Ġto Ġtheir Ġpreferred Ġsizes ĊĠĠĠĠ Ġ* Ġduring Ġthe Ġlayout Ġpass . ĠIf Ġset Ġto Ġ` false `, Ġthen Ġthe Ġapplication Ġis ĊĠĠĠĠ Ġ* Ġresponsible Ġfor Ġsetting Ġthe Ġsize Ġof Ġthis ĠGroup 's Ġres izable Ġchildren , Ġotherwise ĊĠĠĠĠ Ġ* Ġsuch Ġnodes Ġmay Ġend Ġup Ġwith Ġa Ġzero Ġwidth / height Ġand Ġwill Ġnot Ġbe Ġvisible . ĊĠĠĠĠ Ġ* ĠThis Ġvariable Ġhas Ġno Ġeffect Ġon Ġcontent Ġnodes Ġwhich Ġare Ġnot Ġres izable Ġ( Shape , ĠText , Ġetc ). ĊĠĠĠĠ Ġ* ĊĠĠĠĠ Ġ* Ġ@ defaultValue Ġtrue ĊĠĠĠĠ Ġ*/ ĊĠĠĠ Ġprivate Ġvar Ġauto Size Children : ĠBoolean Property ? Ġ= Ġnull ĊĠĠĠ Ġfun Ġset AutoSize Children ( value : ĠBoolean ) Ġ{ ĊĠĠĠĠĠĠĠ Ġauto Size Children Property (). set ( value ) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġfun Ġis AutoSize Children (): ĠBoolean Ġ{ ĊĠĠĠĠĠĠĠ Ġreturn Ġif Ġ( auto Size Children Ġ== Ġnull ) Ġtrue Ġelse Ġauto Size Children !!. get () ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġfun Ġauto Size Children Property (): ĠBoolean Property Ġ{ ĊĠĠĠĠĠĠĠ Ġif Ġ( auto Size Children Ġ== Ġnull ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġauto Size Children Ġ= Ġobject Ġ: ĠBoolean Property Base ( true ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġoverride Ġfun Ġinvalid ated () Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġrequest Layout () ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġoverride Ġfun Ġget Bean (): ĠAny Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġreturn Ġthis @ K Group ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġoverride Ġfun ĠgetName (): ĠString Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġreturn Ġ" auto Size Children " ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġreturn Ġauto Size Children Ġas ĠBoolean Property ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġ/** ĊĠĠĠĠ Ġ* ĠGets Ġthe Ġlist Ġof Ġchildren Ġof Ġthis Ġ` Group `. ĊĠĠĠĠ Ġ* Ġ@ return Ġthe Ġlist Ġof Ġchildren Ġof Ġthis Ġ` Group `. ĊĠĠĠĠ Ġ*/ ĊĠĠĠ Ġpublic Ġoverride Ġfun Ġget Children (): ĠObservable List < Node > Ġ{ ĊĠĠĠĠĠĠĠ Ġreturn Ġsuper . getChildren () ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġ/* ĊĠĠĠĠ Ġ* ĠNote : ĠThis Ġmethod ĠMUST Ġonly Ġbe Ġcalled Ġvia Ġits Ġaccessor Ġmethod . ĊĠĠĠĠ Ġ*/ ĊĠĠĠ Ġprivate Ġfun Ġdo Compute Layout Bounds (): ĠBounds ? Ġ{ ĊĠĠĠĠĠĠĠ Ġlayout () Ġ// ĠNeeds Ġto Ġdone Ġprem ature ly , Ġas Ġwe Ġotherwise Ġdon 't Ġknow Ġthe Ġbounds Ġof Ġthe Ġchildren ĊĠĠĠĠĠĠĠ Ġreturn Ġnull Ġ// Ġhelper Ġonly Ġrequires Ġthis Ġnode Ġto Ġcall Ġlayout (). ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġ/** ĊĠĠĠĠ Ġ* ĠGroup Ġdefines Ġthe Ġpreferred Ġwidth Ġas Ġsimply Ġbeing Ġthe Ġwidth Ġof Ġits Ġlayout Ġbounds , Ġwhich ĊĠĠĠĠ Ġ* Ġin Ġturn Ġis Ġsimply Ġthe Ġunion Ġof Ġthe Ġlayout Ġbounds Ġof Ġall Ġof Ġits Ġchildren . ĠThat Ġis , ĊĠĠĠĠ Ġ* Ġthe Ġpreferred Ġwidth Ġis Ġthe Ġone Ġthat Ġit Ġis Ġat , Ġbecause Ġa ĠGroup Ġcannot Ġbe Ġresized . ĊĠĠĠĠ Ġ* ĊĠĠĠĠ Ġ* ĠNote : Ġas Ġthe Ġlayout Ġbounds Ġin Ġautos ize ĠGroup Ġdepend Ġon Ġthe ĠGroup Ġto Ġbe Ġalready Ġla id - out , ĊĠĠĠĠ Ġ* Ġthis Ġcall Ġwill Ġdo Ġthe Ġlayout Ġof Ġthe ĠGroup Ġif Ġnecessary . ĊĠĠĠĠ Ġ* ĊĠĠĠĠ Ġ* Ġ@ param Ġheight ĠThis Ġparameter Ġis Ġignored Ġby ĠGroup ĊĠĠĠĠ Ġ* Ġ@ return ĠThe Ġlayout Ġbounds Ġwidth ĊĠĠĠĠ Ġ*/ ĊĠĠĠ Ġoverride Ġfun Ġpref Width ( height : ĠDouble ): ĠDouble Ġ{ ĊĠĠĠĠĠĠĠ Ġif Ġ( is AutoSize Children ()) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġlayout () ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġval Ġresult Ġ= Ġlayout Bounds . width ĊĠĠĠĠĠĠĠ Ġreturn Ġif Ġ( java . lang . Double . isNaN ( result ) Ġ|| Ġresult Ġ< Ġ 0 ) Ġ 0 . 0 Ġelse Ġresult ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġ/** ĊĠĠĠĠ Ġ* ĠGroup Ġdefines Ġthe Ġpreferred Ġheight Ġas Ġsimply Ġbeing Ġthe Ġheight Ġof Ġits Ġlayout Ġbounds , Ġwhich ĊĠĠĠĠ Ġ* Ġin Ġturn Ġis Ġsimply Ġthe Ġunion Ġof Ġthe Ġlayout Ġbounds Ġof Ġall Ġof Ġits Ġchildren . ĠThat Ġis , ĊĠĠĠĠ Ġ* Ġthe Ġpreferred Ġheight Ġis Ġthe Ġone Ġthat Ġit Ġis Ġat , Ġbecause Ġa ĠGroup Ġcannot Ġbe Ġresized . ĊĠĠĠĠ Ġ* ĊĠĠĠĠ Ġ* ĠNote : Ġas Ġthe Ġlayout Ġbounds Ġin Ġautos ize ĠGroup Ġdepend Ġon Ġthe ĠGroup Ġto Ġbe Ġalready Ġla id - out , ĊĠĠĠĠ Ġ* Ġthis Ġcall Ġwill Ġdo Ġthe Ġlayout Ġof Ġthe ĠGroup Ġif Ġnecessary . ĊĠĠĠĠ Ġ* ĊĠĠĠĠ Ġ* Ġ@ param Ġwidth ĠThis Ġparameter Ġis Ġignored Ġby ĠGroup ĊĠĠĠĠ Ġ* Ġ@ return ĠThe Ġlayout Ġbounds Ġheight ĊĠĠĠĠ Ġ*/ ĊĠĠĠ Ġoverride Ġfun Ġpref Height ( width : ĠDouble ): ĠDouble Ġ{ ĊĠĠĠĠĠĠĠ Ġif Ġ( is AutoSize Children ()) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġlayout () ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġval Ġresult Ġ= Ġlayout Bounds . height ĊĠĠĠĠĠĠĠ Ġreturn Ġif Ġ( java . lang . Double . isNaN ( result ) Ġ|| Ġresult Ġ< Ġ 0 ) Ġ 0 . 0 Ġelse Ġresult ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġoverride Ġfun ĠminHeight ( width : ĠDouble ): ĠDouble Ġ{ ĊĠĠĠĠĠĠĠ Ġreturn Ġpref Height ( width ) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġoverride Ġfun ĠminWidth ( height : ĠDouble ): ĠDouble Ġ{ ĊĠĠĠĠĠĠĠ Ġreturn Ġpref Width ( height ) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġ/** ĊĠĠĠĠ Ġ* ĠGroup Ġimplements Ġlayout Children Ġsuch Ġthat Ġeach Ġchild Ġis Ġresized Ġto Ġits Ġpreferred ĊĠĠĠĠ Ġ* Ġsize , Ġif Ġthe Ġchild Ġis Ġres izable . ĠNon - resizable Ġchildren Ġare Ġsimply Ġleft Ġalone . ĊĠĠĠĠ Ġ* ĠIf Ġ[ auto Size Children ][. auto Size Children Property ] Ġis Ġfalse , Ġthen ĠGroup Ġdoes Ġnothing Ġin Ġthis Ġmethod . ĊĠĠĠĠ Ġ*/ ĊĠĠĠ Ġoverride Ġfun Ġlayout Children () Ġ{ ĊĠĠĠĠĠĠĠ Ġif Ġ( is AutoSize Children ()) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġsuper . layout Children () ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} ĊĊĊĊĠĠĠ Ġcompanion Ġobject Ġ{ ĊĠĠĠĠĠĠĠ Ġinit Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ// ĠThis Ġis Ġused Ġby Ġclasses Ġin Ġdifferent Ġpackages Ġto Ġget Ġaccess Ġto ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ// Ġprivate Ġand Ġpackage Ġprivate Ġmethods . ĊĠĠĠĠĠĠĠĠĠĠĠ ĠK Group Helper . set Group Accessor Ġ{ Ġnode Ġ-> Ġ( node Ġas ĠK Group ). do Compute Layout Bounds () Ġ} ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} Ċ } Ċ