3.5.16. Web Client Infrastructure
Implementation of the generic user interface of the Web Client block is based on the Vaadin framework. The main classes available in the web client infrastructure are described below.
-  App- the central class of the application infrastructure. Contains links toConnectionand other infrastructure objects. Only one instance ofAppexists for a given HTTP session. You can get a reference to theAppinstance by using theApp.getInstance()static method. If you want to customize functionality ofAppin your project, create a class extendingDefaultAppin the root package of your web module and register it in web-spring.xml as thecuba_Appbean, for example:<bean name="cuba_App" class="com.company.sample.web.MyApp" scope="vaadin"/>
-  Connectionis an interface providing functionality of connecting to middleware and holding a user session.ConnectionImplis a standard implementation of this interface.
-  ExceptionHandlersclass contains a collection of client-level exception handlers.
-  AppUIis a platform class inherited fromcom.vaadin.ui.UIclass. There is one instance of this class for each open tab of a web browser. Contains a link to aTopLevelWindowimplementation – either a login window or main window, depending on the connection state. You can get a reference to theAppUIfor the current browser tab by using theAppUI.getCurrent()static method.
-  AppLoginWindow– the window displayed before a user logs in. You can customize the login window by extendingAppLoginWindowor create completely new one by extending AbstractWindow class. In Studio, select the Generic UI > Screens section of the CUBA project tree and click New > Screen. Then select the Login window template on the Legacy Screen Templates tab. If you override theinit()method in your class, make sure you invokesuper.init(params).
-  AppMainWindow– main application window displayed after a user logs in. You can customize the main window by extendingAppMainWindowor create completely new one by extendingAbstractMainWindowand defining desired layout in XML descriptor. In Studio, select the Generic UI > Screens section of the CUBA project tree and click New > Screen. Then select the Main window template on the Legacy Screen Templates tab. If you override theinit()method in your class, make sure you invokesuper.init(params).You can control certain main window parameters without redefining the default implementation using the following application properties: -  cuba.web.foldersPaneEnabled - enables creation of folders pane. 
-  cuba.web.appWindowMode – sets default mode for the main window: tabbed or single screen ( TABBEDorSINGLE). Users can change the mode later using Help > Settings screen.
-  cuba.web.maxTabCount – when the main window is in the tabbed mode, this property sets the maximum number of tabs that a user can open. The default value is 7. 
 
-  
If you want to handle the browser Back button, implement the CubaHistoryControl.HistoryBackHandler interface in your TopLevelWindow (login and/or main windows). Its onHistoryBackPerformed() method is invoked instead of standard browser behavior if the cuba.web.allowHandleBrowserHistoryBack application property is set to true.