package Ġmv u . sample Ċ Ċ import Ġcom . vaadin . data . Binder Ċ import Ġcom . vaadin . server . Size able Ċ import Ġcom . vaadin . ui . Component Ċ import Ġcom . vaadin . ui . Horizontal Layout Ċ import Ġmv u . support . Action Ċ import Ġmv u . support . Dispatcher Ċ import Ġmv u . support . Update Kt Ċ import Ġmv u . support . View Kt Ċ import Ġmv u . support . bind Model AndView Kt Ċ import Ġmv u . support . extra . Bound TextField Ċ import Ġmv u . support . extra . Dispatch Button Ċ Ċ internal Ġobject ĠPlus X Ġ{ ĊĊĊĠĠĠ Ġprivate Ġdata Ġclass ĠModel Ġ( val Ġincrement : ĠInt ) ĊĊĊĠĠĠ Ġprivate Ġval Ġinitial Model Ġ: ĠModel Ġ= ĠModel ( 1 0 ) ĊĊĊĠĠĠ Ġfun Ġview ( main Updater : ĠDispatcher ): ĠComponent Ġ{ ĊĠĠĠĠĠĠĠ Ġreturn Ġbind Model AndView Kt ( main Updater , Ġinitial Model , Ġview , Ġupdate ) ĊĠĠĠ Ġ} ĊĊĊĠĠĠ Ġprivate Ġval Ġview : ĠView Kt < Model > Ġ= Ġ{ Ġbinder : ĠB inder < Model >, Ġdispatcher : ĠDispatcher Ġ-> ĊĠĠĠĠĠĠĠ Ġval Ġlayout Ġ= ĠHorizontal Layout () ĊĊĠĠĠĠĠĠĠ Ġval Ġincrement Ġ= ĠBound TextField . builder ( binder ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ. with Value Provider Ġ{ Ġmodel Ġ-> ĠInteger . toString ( model . increment ) Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ. with Value Consumer Ġ{ Ġs Ġ-> ĠPlus X . Set Increment ( Integer . valueOf ( s Ġas ĠString )) Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ. with Dispatcher ( dispatcher ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ. for Field Ġ{ Ġtext Field Ġ-> Ġtext Field . add Style Name (" Some Style ") Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ. for Field Ġ{ Ġtext Field Ġ-> Ġtext Field . setWidth ( 5 0 . 0 F , ĠSize able . Unit . PIXEL S ) Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ. build () ĊĠĠĠĠĠĠĠ Ġlayout . addComponent ( increment ) ĊĊĠĠĠĠĠĠĠ Ġval Ġplus Ġ= ĠDispatch Button . builder ( dispatcher ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ. with Caption ("+ ") ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ. with Action Ġ{ ĠMain . Plus X Action ( binder . bean . increment ) Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ. for Button Ġ{ Ġbutton Ġ-> Ġbutton . add Style Name (" btn - mono ") Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ. for Button Ġ{ Ġbutton Ġ-> Ġbutton . setWidth ( 5 0 f , ĠSize able . Unit . PIXEL S ) Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ. build () ĊĠĠĠĠĠĠĠ Ġlayout . addComponent ( plus ) ĊĊĠĠĠĠĠĠĠ Ġlayout ĊĠĠĠ Ġ} ĊĊĊĠĠĠ Ġprivate Ġdata Ġclass ĠSet Increment Ġ( val Ġincrement : ĠInt ) Ġ: ĠAction ĊĊĊĠĠĠ Ġprivate Ġval Ġupdate : ĠUpdate Kt < Model > Ġ= Ġ{ action : ĠAction , Ġold Model : ĠModel Ġ-> ĊĠĠĠĠĠĠĠ Ġif Ġ( action Ġis ĠSet Increment ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġold Model . copy ( increment Ġ= Ġaction . increment ) ĊĠĠĠĠĠĠĠ Ġ} Ġelse Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġold Model ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} ĊĊ Ċ } Ċ