package Ġnet . app tr onic . test . commons _ sample _ app . list Ċ Ċ import Ġnet . app tr onic . core . context . Context Ċ import Ġnet . app tr onic . core . context . Context ual Ċ import Ġnet . app tr onic . core . context . child Context Ċ import Ġnet . app tr onic . core . context . dependency Module Ċ import Ġnet . app tr onic . core . entity . commons . mutable Value Ċ import Ġnet . app tr onic . core . entity . function . map Ċ import Ġnet . app tr onic . core . entity . function . merge Ċ import Ġnet . app tr onic . core . view model . I ViewModel Ċ import Ġnet . app tr onic . core . view model . ViewModel Ċ import Ġnet . app tr onic . core . view model . navigation . list Navigator Ċ Ċ fun ĠContext ual . list Screen ViewModel () Ġ= ĠList Screen ViewModel ( ĊĠĠĠ Ġchild Context Ġ{ ĊĠĠĠĠĠĠĠ Ġdependency Module ( List Module ) ĊĠĠĠ Ġ} Ċ ) Ċ Ċ class ĠList Screen ViewModel Ġinternal Ġconstructor ( context : ĠContext ) Ġ: ĠViewModel ( context ), ĊĠĠĠ ĠList Controller Ġ{ ĊĊĠĠĠ Ġval Ġlist Navigator Ġ= Ġlist Navigator () ĊĠĠĠ Ġprivate Ġval Ġitem Names Ġ= Ġmutable Value ( mutable ListOf < String >()) ĊĠĠĠ Ġval Ġtitle Ġ= Ġmerge ( list Navigator . content , Ġitem Names ) Ġ{ Ġcontent , Ġnames Ġ-> ĊĠĠĠĠĠĠĠ Ġcontent . all . filter Ġ{ ĠviewModel Ġ-> ĊĠĠĠĠĠĠĠĠĠĠĠ ĠviewModel Ġis ĠListItem Base ViewModel Ġ&& Ġnames . contains ( viewModel . getName ()) ĊĠĠĠĠĠĠĠ Ġ}. map Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ( it Ġas ĠListItem Base ViewModel ). getName () ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ}. map Ġ{ ĊĠĠĠĠĠĠĠ Ġit . join ToString ( separator Ġ= Ġ" Ġ") ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġinit Ġ{ ĊĠĠĠĠĠĠĠ Ġcontext . dependency Dispatcher . add Instance ( List Controller Descriptor , Ġthis ) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġoverride Ġfun Ġon Remove Request ( viewModel : ĠI ViewModel ) Ġ{ ĊĠĠĠĠĠĠĠ Ġlist Navigator . update Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġit . remove ( viewModel ) ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġoverride Ġfun Ġon Visible ( name : ĠString ) Ġ{ ĊĠĠĠĠĠĠĠ Ġitem Names . update Value Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġit . add ( name ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġit ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġoverride Ġfun Ġon Not Visible ( name : ĠString ) Ġ{ ĊĠĠĠĠĠĠĠ Ġitem Names . update Value Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġit . remove ( name ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġit ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġfun ĠonClick Add Text To Start () Ġ{ ĊĠĠĠĠĠĠĠ Ġlist Navigator . update Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġnew Item Ġ= Ġinject ( ListItem Text ViewModel Descriptor ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġit . add ( 0 , Ġnew Item ) ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġfun ĠonClick Add Text To Middle () Ġ{ ĊĠĠĠĠĠĠĠ Ġlist Navigator . update Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġnew Item Ġ= Ġinject ( ListItem Text ViewModel Descriptor ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġit . add ( it . size Ġ/ Ġ 2 , Ġnew Item ) ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġfun ĠonClick Add Text ToEnd () Ġ{ ĊĠĠĠĠĠĠĠ Ġlist Navigator . update Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġnew Item Ġ= Ġinject ( ListItem Text ViewModel Descriptor ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġit . add ( it . size , Ġnew Item ) ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġfun ĠonClick Add Image To Start () Ġ{ ĊĠĠĠĠĠĠĠ Ġlist Navigator . update Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġnew Item Ġ= Ġinject ( ListItem Image ViewModel Descriptor ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġit . add ( 0 , Ġnew Item ) ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġfun ĠonClick Add Image To Middle () Ġ{ ĊĠĠĠĠĠĠĠ Ġlist Navigator . update Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġnew Item Ġ= Ġinject ( ListItem Image ViewModel Descriptor ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġit . add ( it . size Ġ/ Ġ 2 , Ġnew Item ) ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġfun ĠonClick Add Image ToEnd () Ġ{ ĊĠĠĠĠĠĠĠ Ġlist Navigator . update Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġnew Item Ġ= Ġinject ( ListItem Image ViewModel Descriptor ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġit . add ( it . size , Ġnew Item ) ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} Ċ Ċ }