package Ġcom . no ah char l ton . z ulu . widget Ċ Ċ import Ġcom . no ah char l ton . z ulu . Point Ċ import Ġcom . no ah char l ton . z ulu . Rectangle Ċ import Ġcom . no ah char l ton . z ulu . Size Ċ Ċ enum Ġclass ĠFlex Direction Ġ{ ĊĠĠĠ ĠH ORIZONTAL , ĠV ERT ICAL Ċ } Ċ Ċ class ĠFlex Pane ( var ĠflexDirection : ĠFlex Direction , Ġvar Ġspacing : ĠInt Ġ= Ġ 1 0 ) Ġ: ĠP ane () Ġ{ ĊĊĠĠĠ Ġprivate Ġval Ġchildren : ĠLinkedHashMap < Widget , ĠInt > Ġ= ĠLinkedHashMap (); ĊĊĠĠĠ Ġfun Ġadd Child ( child : ĠWidget , Ġflex : ĠInt ) Ġ{ ĊĠĠĠĠĠĠĠ Ġchildren [ child ] Ġ= Ġflex ; ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġoverride Ġfun Ġlayout () Ġ{ ĊĠĠĠĠĠĠĠ Ġval Ġstatic Children Ġ= Ġchildren . filter Ġ{ Ġentry Ġ-> Ġentry . value Ġ== Ġ 0 Ġ} ĊĠĠĠĠĠĠĠ Ġval Ġdynamic Children Ġ= Ġchildren . filter Ġ{ Ġentry Ġ-> Ġentry . value Ġ!= Ġ 0 Ġ} ĊĠĠĠĠĠĠĠ Ġval Ġcontent Pane Ġ= ĠgetContent Rect () ĊĠĠĠĠĠĠĠ Ġvar Ġspace : ĠFloat Ġ= Ġget Major ( content Pane . as Size ()). toFloat () ĊĊĠĠĠĠĠĠĠ Ġstatic Children . keys . forEach Ġ{ Ġwidget Ġ-> ĊĠĠĠĠĠĠĠĠĠĠĠ Ġspace Ġ-= Ġget Major ( widget . size ) Ġ+ Ġspacing ĊĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠ Ġvar Ġdynamic Segments Ġ= Ġ 0 ĊĠĠĠĠĠĠĠ Ġdynamic Children . values . forEach Ġ{ Ġflex Ġ-> Ġdynamic Segments Ġ+= Ġflex Ġ} ĊĊĠĠĠĠĠĠĠ Ġspace Ġ-= Ġspacing Ġ* Ġ( dynamic Children . size Ġ- Ġ 1 )// Last Ġchild Ġhas Ġno Ġspacing ĊĊĠĠĠĠĠĠĠ Ġvar Ġspace Per Segment : ĠFloat Ġ= Ġspace Ġ/ Ġdynamic Segments ĊĠĠĠĠĠĠĠ Ġlayout Children ( content Pane , Ġspace Per Segment ) ĊĊĠĠĠĠĠĠĠ Ġsuper . layout () ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġprivate Ġfun Ġlayout Children ( content Pane : ĠRectangle , Ġspace Per Segment : ĠFloat ) Ġ{ ĊĠĠĠĠĠĠĠ Ġvar Ġpos : ĠFloat Ġ= Ġget Major ( content Pane . as Point ()). toFloat () ĊĊĠĠĠĠĠĠĠ Ġthis . children . forEach Ġ{ Ġentry Ġ-> ĊĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġwidget Ġ= Ġentry . key ĊĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġflex Ġ= Ġentry . value ĊĊĠĠĠĠĠĠĠĠĠĠĠ Ġset Major ( widget . pos , Ġpos . toInt ()) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġset Minor ( widget . pos , Ġget Minor ( content Pane . as Point ())) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġset Minor ( widget . size , Ġget Minor ( content Pane . as Size ())) ĊĊĠĠĠĠĠĠĠĠĠĠĠ Ġif Ġ( flex Ġ== Ġ 0 ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġpos Ġ+= Ġget Major ( widget . size ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} Ġelse Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġset Major ( widget . size , Ġ( flex Ġ* Ġspace Per Segment ). toInt ()) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġpos Ġ+= Ġflex Ġ* Ġspace Per Segment ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠĠĠĠĠ Ġpos Ġ+= Ġspacing ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġprivate Ġfun Ġget Major ( pos : ĠPoint ): ĠInt Ġ{ ĊĠĠĠĠĠĠĠ Ġreturn Ġif Ġ( flex Direction Ġ== ĠFlex Direction . HORIZONTAL ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġpos . x ĊĠĠĠĠĠĠĠ Ġ} Ġelse Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġpos . y ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġprivate Ġfun Ġget Major ( size : ĠSize ): ĠInt Ġ{ ĊĠĠĠĠĠĠĠ Ġif Ġ( flex Direction Ġ== ĠFlex Direction . HORIZONTAL ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġreturn Ġsize . width ĊĠĠĠĠĠĠĠ Ġ} Ġelse Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġreturn Ġsize . height ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġprivate Ġfun Ġset Major ( pos : ĠPoint , Ġvalue : ĠInt ) Ġ{ ĊĠĠĠĠĠĠĠ Ġif Ġ( flex Direction Ġ== ĠFlex Direction . HORIZONTAL ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġpos . x Ġ= Ġvalue ĊĠĠĠĠĠĠĠ Ġ} Ġelse Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġpos . y Ġ= Ġvalue ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġprivate Ġfun Ġset Major ( size : ĠSize , Ġvalue : ĠInt ) Ġ{ ĊĠĠĠĠĠĠĠ Ġif Ġ( flex Direction Ġ== ĠFlex Direction . HORIZONTAL ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġsize . width Ġ= Ġvalue ĊĠĠĠĠĠĠĠ Ġ} Ġelse Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġsize . height Ġ= Ġvalue ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġprivate Ġfun Ġget Minor ( pos : ĠPoint ): ĠInt Ġ{ ĊĠĠĠĠĠĠĠ Ġif Ġ( flex Direction Ġ== ĠFlex Direction . HORIZONTAL ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġreturn Ġpos . y ĊĠĠĠĠĠĠĠ Ġ} Ġelse Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġreturn Ġpos . x ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġprivate Ġfun Ġget Minor ( size : ĠSize ): ĠInt Ġ{ ĊĠĠĠĠĠĠĠ Ġif Ġ( flex Direction Ġ== ĠFlex Direction . HORIZONTAL ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġreturn Ġsize . height ĊĠĠĠĠĠĠĠ Ġ} Ġelse Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġreturn Ġsize . width ; ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġprivate Ġfun Ġset Minor ( pos : ĠPoint , Ġvalue : ĠInt ) Ġ{ ĊĠĠĠĠĠĠĠ Ġif Ġ( flex Direction Ġ== ĠFlex Direction . HORIZONTAL ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġpos . y Ġ= Ġvalue ĊĠĠĠĠĠĠĠ Ġ} Ġelse Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġpos . x Ġ= Ġvalue ; ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġprivate Ġfun Ġset Minor ( size : ĠSize , Ġvalue : ĠInt ) Ġ{ ĊĠĠĠĠĠĠĠ Ġif Ġ( flex Direction Ġ== ĠFlex Direction . HORIZONTAL ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġsize . height Ġ= Ġvalue ĊĠĠĠĠĠĠĠ Ġ} Ġelse Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġsize . width Ġ= Ġvalue ; ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġoverride Ġfun Ġget Children (): ĠList < Widget > Ġ{ ĊĠĠĠĠĠĠĠ Ġreturn Ġchildren . keys . toList () ĊĠĠĠ Ġ} Ċ } ĊĊ