package Ġkr . ac . sn u . hc il . om n itr ack . ui . components . common . choice Ċ Ċ import Ġandroid . content . Context Ċ import Ġandroid . graphics . Color Ċ import Ġandroid . graphics . drawable . Gradient Drawable Ċ import Ġandroid . graphics . drawable . Layer Drawable Ċ import Ġandroid . util . Attribute Set Ċ import Ġandroid . view . ViewGroup Ċ import Ġandroid . widget . TextView Ċ import Ġcom . google . android . flex box . Flex Direction Ċ import Ġcom . google . android . flex box . Flex Wrap Ċ import Ġcom . google . android . flex box . Flex box Layout Ċ import Ġkr . ac . sn u . hc il . android . common . view . Interface Helper Ċ import Ġkr . ac . sn u . hc il . om n itr ack . R Ċ import Ġjava . util .* Ċ import Ġkotlin . properties . Deleg ates Ċ Ċ /** Ċ Ġ* ĠCreated Ġby ĠYo ung - Ho ĠKim Ġon Ġ 2 0 1 6 - 0 8 - 1 7 . Ċ Ġ*/ Ċ open Ġclass ĠWord ListView Ġ: ĠFlex box Layout Ġ{ ĊĊĠĠĠ Ġcompanion Ġobject Ġ{ ĊĠĠĠĠĠĠĠ Ġprivate Ġvar Ġ_ color Palette : ĠInt Array ? Ġ= Ġnull ĊĊĠĠĠĠĠĠĠ Ġfun Ġget Color Palette ( context : ĠContext ): ĠInt Array Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġif Ġ(_ color Palette Ġ== Ġnull ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ_ color Palette Ġ= Ġcontext . resources . getString Array ( R . array . choice Color Palette Array ). map Ġ{ ĠColor . parse Color ( it ) Ġ}. to IntArray () ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠĠĠĠĠ Ġreturn Ġ_ color Palette !! ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġvar Ġwords : ĠArray < String > Ġby ĠDeleg ates . observable ( array Of ()) Ġ{ ĊĠĠĠĠĠĠĠ Ġprop , Ġold , Ġnew Ġ-> ĊĠĠĠĠĠĠĠ Ġrefresh () ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġvar Ġuse Colors Ġ= Ġfalse ĊĊĠĠĠ Ġval Ġcolor Index List Ġ= ĠArrayList < Int >() ĊĊĠĠĠ Ġvar Ġtext Appearance Id : ĠInt Ġ= ĠR . style . tag TextAppearance ĊĠĠĠĠĠĠĠ Ġset ( value ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġif Ġ( field Ġ!= Ġvalue ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġfield Ġ= Ġvalue ĊĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġfor Ġ( i Ġin Ġ 0 Ġuntil Ġchild Count ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġc Ġ= Ġget Child At ( i ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġif Ġ( c Ġis ĠTextView ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠInterface Helper . setText Appearance ( c , Ġtext Appearance Id ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠ Ġconstructor ( context : ĠContext ) Ġ: Ġsuper ( context ) ĊĠĠĠ Ġconstructor ( context : ĠContext , Ġattribute Set : ĠAttributeSet ) Ġ: Ġsuper ( context , Ġattribute Set ) ĊĠĠĠ Ġconstructor ( context : ĠContext , Ġattribute Set : ĠAttributeSet , Ġdef Style : ĠInt ) Ġ: Ġsuper ( context , Ġattribute Set , Ġdef Style ) ĊĊĠĠĠ Ġinit Ġ{ ĊĠĠĠĠĠĠĠ ĠflexDirection Ġ= ĠFlex Direction . ROW ĊĠĠĠĠĠĠĠ Ġflex Wrap Ġ= ĠFlex Wrap . WRAP ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġfun Ġrefresh () Ġ{ ĊĠĠĠĠĠĠĠ Ġval Ġnum Child View ToAdd Ġ= Ġwords . size Ġ- Ġchild Count ĊĠĠĠĠĠĠĠ Ġif Ġ( num Child View ToAdd Ġ< Ġ 0 ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġremove Views ( child Count Ġ+ Ġnum Child View ToAdd , Ġ- num Child View ToAdd ) ĊĠĠĠĠĠĠĠ Ġ} Ġelse Ġif Ġ( num Child View ToAdd Ġ> Ġ 0 ) Ġ{ ĊĊĠĠĠĠĠĠĠĠĠĠĠ Ġfor Ġ( i Ġin Ġ 0 Ġuntil Ġnum Child View ToAdd ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġadd View ( make Child View ( i )) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠ Ġfor Ġ( i Ġin Ġ 0 Ġuntil Ġwords . size ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġview Ġ= Ġ( getChild At ( i ) Ġas ĠTextView ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġview . text Ġ= Ġwords [ i ] ĊĊĠĠĠĠĠĠĠĠĠĠĠ Ġif Ġ( use Colors ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġshape Ġ= Ġ( view . background Ġas ĠLayer Drawable ). find Drawable By Layer Id ( R . id . layer _ color _ shape ) Ġas ĠGradient Drawable ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġshape . setColor ( getColor Palette ( context )[ color Index List [ i ]]) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġprotected Ġopen Ġfun Ġmake Child View ( position : ĠInt ): ĠTextView Ġ{ ĊĠĠĠĠĠĠĠ Ġval Ġview Ġ= ĠTextView ( context ) ĊĊĠĠĠĠĠĠĠ ĠInterface Helper . setText Appearance ( view , Ġtext Appearance Id ) ĊĊĠĠĠĠĠĠĠ Ġview . setBackground Resource ( R . drawable . word _ list _ element _ frame ) ĊĊĠĠĠĠĠĠĠ Ġval Ġlp Ġ= ĠLayout Params ( LayoutParams . WRAP _ CONTENT , ĠViewGroup . LayoutParams . WRAP _ CONTENT ) ĊĠĠĠĠĠĠĠ Ġlp . left Margin Ġ= Ġ 2 0 ĊĠĠĠĠĠĠĠ Ġview . layout Params Ġ= Ġlp ĊĊĠĠĠĠĠĠĠ Ġreturn Ġview ĊĠĠĠ Ġ} Ċ }