# set ( Ġ$ symbol _ pound Ġ= Ġ'#' Ġ) Ċ # set ( Ġ$ symbol _ d ollar Ġ= Ġ'$ ' Ġ) Ċ # set ( Ġ$ symbol _ escape Ġ= Ġ'\' Ġ) Ċ @ file : Jvm Name (" Main ") Ċ Ċ package Ġ${ package }. server . vaadin . view Ċ Ċ import Ġcom . vaadin . annotations . Theme Ċ import Ġcom . vaadin . annotations . Widget set Ċ import Ġcom . vaadin . server . V aad in Request Ċ import Ġcom . vaadin . spring . annotation . Spring UI Ċ import Ġcom . vaadin . ui . Label Ċ import Ġcom . vaadin . ui . UI Ċ import Ġcom . vaadin . ui . Vertical Layout Ċ import Ġ${ package }. server . dto . Customer Bean Ċ import Ġ${ package }. server . vaadin . event . Customer Login Event Ċ import Ġ${ package }. server . vaadin . event . Customer Logout Event Ċ import Ġ${ package }. server . vaadin . event bus . EventBus Ċ import Ġ${ package }. server . vaadin . handler . Customer Login Handler Ċ import Ġ${ package }. server . vaadin . handler . Customer Logout Handler Ċ import Ġ${ package }. server . vaadin . view . customer . Customer Screen Ċ import Ġ${ package }. server . vaadin . view . login . Login Screen Ċ import Ġorg . springframework . beans . factory . annotation . Autowired Ċ import Ġjavax . annotation . Post Construct Ċ Ċ /** Ċ Ġ* ĠThe Ġtype Ġ< code > Main </ code >. Ċ Ġ*/ Ċ @ Theme (" my theme ") Ċ @ Widget set ("${ package }.${ artifactId } Widget set ") Ċ @ Spring UI Ċ class ĠMain Ġ: ĠUI (), ĠCustomer Login Handler , ĠCustomer Logout Handler Ġ{ ĊĊĊĠĠĠ Ġ/** ĊĠĠĠĠ Ġ* ĠThe Ġ` EventBus ` Ġevent Bus . ĊĠĠĠĠ Ġ*/ ĊĠĠĠ Ġ@ Autowired ĊĠĠĠ Ġval Ġevent Bus : ĠEvent Bus ? Ġ= Ġnull ĊĊĊĠĠĠ Ġ/** ĊĠĠĠĠ Ġ* ĠThe ĠLogin Screen . ĊĠĠĠĠ Ġ*/ ĊĠĠĠ Ġ@ Autowired ĊĠĠĠ Ġval Ġlogin Screen : ĠLogin Screen ? Ġ= Ġnull ĊĊĠĠĠ Ġ/** ĊĠĠĠĠ Ġ* ĠThe ĠCustomer Screen . ĊĠĠĠĠ Ġ*/ ĊĠĠĠ Ġ@ Autowired ĊĠĠĠ Ġval Ġcustomer Screen : ĠCustomer Screen ? Ġ= Ġnull ĊĊĠĠĠ Ġ/** ĊĠĠĠĠ Ġ* ĠThe Ġ` Vertical Layout ` Ġvertical Layout . ĊĠĠĠĠ Ġ*/ ĊĠĠĠ Ġprivate Ġval Ġvertical Layout Ġ= ĠVertical Layout () ĊĊĠĠĠ Ġ@ Post Construct ĊĠĠĠ Ġfun Ġinit () Ġ{ ĊĠĠĠĠĠĠĠ Ġevent Bus !!. add Observer ( this ) ĊĠĠĠĠĠĠĠ Ġlogin Screen !!. set Bus ( event Bus ) ĊĠĠĠĠĠĠĠ Ġcustomer Screen !!. event Bus Ġ= Ġevent Bus ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġoverride Ġfun Ġinit ( request : ĠV aad in Request ?) Ġ{ ĊĠĠĠĠĠĠĠ Ġget Page (). setTitle ("${ artifactId }"); ĊĠĠĠĠĠĠĠ Ġvertical Layout . set Margin ( true ) ĊĠĠĠĠĠĠĠ Ġval Ġlabel Ġ= ĠLabel (" V aad in ĠSpring ĠKotlin ĠModel ") ĊĠĠĠĠĠĠĠ Ġvertical Layout . addComponent ( label ) ĊĠĠĠĠĠĠĠ Ġset Login Screen () ĊĠĠĠĠĠĠĠ Ġset Content ( verticalLayout ) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġoverride Ġfun Ġhandle Customer Login Event ( event : ĠCustomer Login Event ) Ġ{ ĊĠĠĠĠĠĠĠ Ġset Customer Screen ( event . customer ) Ġ Ġ} ĊĊĊĠĠĠ Ġoverride Ġfun Ġhandle Customer Logout Event ( event : ĠCustomer Logout Event ) Ġ{ ĊĠĠĠĠĠĠĠ Ġset Login Screen () ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġ/** ĊĠĠĠĠ Ġ* ĠSets Ġlogin Ġscreen . ĊĠĠĠĠ Ġ*/ ĊĠĠĠ Ġprivate Ġfun Ġset Login Screen () Ġ{ ĊĠĠĠĠĠĠĠ Ġvertical Layout . remove Component ( customer Screen ) ĊĠĠĠĠĠĠĠ Ġvertical Layout . addComponent ( login Screen ) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġ/** ĊĠĠĠĠ Ġ* ĠSets Ġcustomer Ġscreen . ĊĊĠĠĠĠ Ġ* Ġ@ param Ġcustomer Ġthe Ġcustomer ĊĠĠĠĠ Ġ*/ ĊĠĠĠ Ġprivate Ġfun Ġset Customer Screen ( customer : ĠCustomer Bean ) Ġ{ ĊĠĠĠĠĠĠĠ Ġvertical Layout . remove Component ( login Screen ) ĊĠĠĠĠĠĠĠ Ġvertical Layout . addComponent ( customer Screen ) ĊĠĠĠĠĠĠĠ Ġcustomer Screen !!. set Customer ( customer ) ĊĠĠĠ Ġ} Ċ }