package Ġio . gitlab . art urb os ch . tin bo . api . config Ċ Ċ import Ġorg . springframework . stereotype . Component Ċ Ċ /** Ċ Ġ* Ġ@ author ĠArt ur ĠB os ch Ċ Ġ*/ Ċ interface ĠT in bo Mode Ġ{ Ċ ĉ val Ġid : ĠString Ċ ĉ val Ġhelp Ids : ĠArray < String > Ċĉ ĉ get () Ġ= ĠarrayOf ( id ) Ċ ĉ val Ġedit Allowed : ĠBoolean Ġget () Ġ= Ġfalse Ċ ĉ val Ġis Sum mar izable : ĠBoolean Ġget () Ġ= Ġfalse ĊĊ ĉ comp anion Ġobject Ġ{ Ċĉ ĉ val ĠSTART Ġ= Ġobject Ġ: ĠT in bo Mode Ġ{ Ċĉĉ ĉ override Ġval Ġid : ĠString Ġ= Ġ" tin bo " Ċĉĉ ĉ override Ġval Ġhelp Ids : ĠArray < String > Ġ= ĠarrayOf ( id , Ġ" start ", Ġ" help ", Ġ" plugins ") Ċĉĉ ĉ override Ġval Ġedit Allowed : ĠBoolean Ġ= Ġfalse Ċĉ ĉ } Ċ ĉ } Ċ } Ċ Ċ interface ĠMode Listener Ġ{ Ċ ĉ fun Ġchange ( mode : ĠT in bo Mode ) Ċ } Ċ Ċ @ Component Ċ object ĠMode Manager Ġ{ ĊĊ ĉ private Ġval Ġlisteners : ĠMutable List < Mode Listener > Ġ= Ġmutable ListOf () ĊĊ ĉ var Ġcurrent : ĠT in bo Mode Ġ= ĠT in bo Mode . START Ċĉ ĉ set ( value ) Ġ{ Ċĉĉ ĉ listeners . forEach Ġ{ Ġit . change ( value ) Ġ} Ċĉĉ ĉ field Ġ= Ġvalue Ċĉ ĉ } Ċ ĉ var Ġis Back Command Blocked Ġ= Ġfalse Ċĉ ĉ set ( value ) Ġ= Ġsynchronized ( this ) Ġ{ Ġfield Ġ= Ġvalue Ġ} ĊĊ ĉ fun Ġis Edit Allowed () Ġ= Ġcurrent . edit Allowed Ċ ĉ fun Ġis Current Mode ( mode : ĠT in bo Mode ) Ġ= Ġmode Ġ== Ġcurrent Ċ ĉ fun Ġregister ( listener : ĠMode Listener ) Ġ= Ġlisteners . add ( listener ) Ċ ĉ fun Ġis Sum Allowed (): ĠBoolean Ġ= Ġcurrent . is Sum mar izable Ċ } Ċ