package Ġorg . apache . isis . client . k ro viz . ui . kv Ċ Ċ import Ġorg . apache . isis . client . k ro viz . core . ag gregator . Action Dispatcher Ċ import Ġorg . apache . isis . client . k ro viz . to . Link Ċ import Ġorg . apache . isis . client . k ro viz . to . Member Ċ import Ġorg . apache . isis . client . k ro viz . to . T Object Ċ import Ġorg . apache . isis . client . k ro viz . to . mb . Menu Ċ import Ġorg . apache . isis . client . k ro viz . ui . Icon Manager Ċ import Ġorg . apache . isis . client . k ro viz . utils . Utils Ċ import Ġpl . tre k soft . k vision . core . Component Ċ import Ġpl . tre k soft . k vision . dropdown . Direction Ċ import Ġpl . tre k soft . k vision . dropdown . DropDown Ċ import Ġpl . tre k soft . k vision . dropdown . dd Link Ċ import Ġpl . tre k soft . k vision . dropdown . separator Ċ import Ġpl . tre k soft . k vision . html . ButtonStyle Ċ Ċ object ĠMenu Factory Ġ{ ĊĊĠĠĠ Ġfun Ġbuild For ( t Object : ĠTObject , ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġwith Text : ĠBoolean Ġ= Ġtrue , ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġstyle : ĠButton Style Ġ= ĠButton Style . LIGHT ): ĠDrop Down Ġ{ ĊĠĠĠĠĠĠĠ Ġval Ġtype Ġ= Ġt Object . domain Type ĊĠĠĠĠĠĠĠ Ġval Ġdd Ġ= ĠDrop Down ( ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġtype , ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġstyle Ġ= Ġstyle , ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġdirection Ġ= ĠDirection . DROP DOWN ĊĠĠĠĠĠĠĠ Ġ) ĊĠĠĠĠĠĠĠ Ġif Ġ( with Text ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġdd . text Ġ= Ġ" Actions Ġfor Ġ$ type " ĊĠĠĠĠĠĠĠ Ġ} Ġelse Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġdd . text Ġ= Ġ"" ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġdd . icon Ġ= ĠIcon Manager . find (" Actions ") ĊĠĠĠĠĠĠĠ Ġval Ġactions Ġ= Ġt Object . get Actions () ĊĠĠĠĠĠĠĠ Ġactions . forEach Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġtitle Ġ= Ġit . id ĊĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġlink Ġ= Ġit . get Invoke Link () !! ĊĠĠĠĠĠĠĠĠĠĠĠ Ġaction ( dd , Ġtitle , Ġlink ) ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġreturn Ġdd ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġfun Ġbuild For ( menu : ĠMenu ): ĠDrop Down Ġ{ ĊĠĠĠĠĠĠĠ Ġval Ġtitle Ġ= Ġmenu . named ĊĠĠĠĠĠĠĠ Ġval Ġdd Ġ= ĠDrop Down ( text Ġ= Ġtitle , Ġstyle Ġ= ĠButton Style . LIGHT , Ġfor Navbar Ġ= Ġfalse ) ĊĠĠĠĠĠĠĠ Ġdd . icon Ġ= ĠIcon Manager . find ( title ) ĊĠĠĠĠĠĠĠ Ġmenu . section . forEach Indexed Ġ{ Ġindex , Ġsection Ġ-> ĊĠĠĠĠĠĠĠĠĠĠĠ Ġsection . service Action . forEach Ġ{ Ġsa Ġ-> ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġaction ( dd , Ġsa . id !! , Ġsa . link !! ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠ Ġif Ġ( index Ġ< Ġmenu . section . size Ġ- Ġ 1 ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġdd . separator () ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġreturn Ġdd ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġprivate Ġfun Ġaction ( dd : ĠDrop Down , Ġlabel : ĠString , Ġlink : ĠLink ) Ġ{ ĊĠĠĠĠĠĠĠ Ġval Ġicon Ġ= ĠIcon Manager . find ( label ) ĊĠĠĠĠĠĠĠ Ġval Ġclasses Ġ= ĠIcon Manager . find Style For ( label ) ĊĠĠĠĠĠĠĠ Ġval Ġtitle Ġ= ĠUtils . de Camel ( label ) ĊĠĠĠĠĠĠĠ Ġdd . dd Link ( title , Ġicon Ġ= Ġicon , Ġclasses Ġ= Ġclasses ). onClick Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ ĠAction Dispatcher (). invoke ( link ) ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġ// Ġinitially Ġadded Ġitems Ġwill Ġbe Ġenabled ĊĠĠĠ Ġfun Ġam end With Save Undo ( dd : ĠDrop Down , Ġt Object : ĠTObject ) Ġ{ ĊĠĠĠĠĠĠĠ Ġdd . separator () ĊĊĠĠĠĠĠĠĠ Ġval Ġsave Link Ġ= Ġt Object . links . first () ĊĠĠĠĠĠĠĠ Ġaction ( dd , Ġ" save ", Ġsave Link ) ĊĊĠĠĠĠĠĠĠ Ġval Ġundo Link Ġ= ĠLink ( href Ġ= Ġ"") ĊĠĠĠĠĠĠĠ Ġaction ( dd , Ġ" undo ", Ġundo Link ) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġ// Ġdisabled Ġwhen Ġt Object . is Clean ĊĠĠĠ Ġ// ĠIMP RO VE Ġuse Ġtr (" Dropdown s Ġ( disabled )") Ġto ĠDD . DISABLED . option , ĊĠĠĠ Ġfun Ġdisable Save Undo ( dd : ĠDrop Down ) Ġ{ ĊĠĠĠĠĠĠĠ Ġval Ġmenu Items Ġ= Ġdd . getChildren () ĊĊĠĠĠĠĠĠĠ Ġval Ġsave Item Ġ= Ġmenu Items [ menu Items . size Ġ- Ġ 2 ] ĊĠĠĠĠĠĠĠ Ġswitch Css Class ( save Item , ĠIcon Manager . OK , ĠIcon Manager . DISABLED ) ĊĊĠĠĠĠĠĠĠ Ġval Ġundo Item Ġ= Ġmenu Items [ menu Items . size Ġ- Ġ 1 ] ĊĠĠĠĠĠĠĠ Ġswitch Css Class ( undo Item , ĠIcon Manager . OK , ĠIcon Manager . WARN ) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġfun Ġenable Save Undo ( dd : ĠDrop Down ) Ġ{ ĊĠĠĠĠĠĠĠ Ġval Ġmenu Items Ġ= Ġdd . getChildren () ĊĊĠĠĠĠĠĠĠ Ġval Ġsave Item Ġ= Ġmenu Items [ menu Items . size Ġ- Ġ 2 ] ĊĠĠĠĠĠĠĠ Ġswitch Css Class ( save Item , ĠIcon Manager . DISABLED , ĠIcon Manager . OK ) ĊĊĠĠĠĠĠĠĠ Ġval Ġundo Item Ġ= Ġmenu Items [ menu Items . size Ġ- Ġ 1 ] ĊĠĠĠĠĠĠĠ Ġswitch Css Class ( undo Item , ĠIcon Manager . DISABLED , ĠIcon Manager . WARN ) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġprivate Ġfun Ġswitch Css Class ( menuItem : ĠComponent , Ġfrom : ĠString , Ġto : ĠString ) Ġ{ ĊĠĠĠĠĠĠĠ Ġmenu Item . remove Css Class ( from ) ĊĠĠĠĠĠĠĠ Ġmenu Item . add Css Class ( to ) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġfun ĠMember . get Invoke Link (): ĠLink ? Ġ{ ĊĠĠĠĠĠĠĠ Ġreturn Ġlinks . first OrNull Ġ{ Ġit . rel . indexOf ( id ) Ġ> Ġ 0 Ġ} ĊĠĠĠ Ġ} Ċ Ċ } Ċ