4.5.8. Web Client Specifics
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 toConnection
and other infrastructure objects. Only one instance ofApp
exists for a given HTTP session. You can get a reference to theApp
instance by using theApp.getInstance()
static method. If you want to customize functionality ofApp
in your project, create a class extendingDefaultApp
in the root package of your web module and register it in web-spring.xml as thecuba_App
bean, for example:<bean name="cuba_App" class="com.company.sample.web.MyApp" scope="prototype"/>
-
Connection
is an interface providing functionality of connecting to middleware and holding a user session.DefaultConnection
is a standard implementation of this interface. -
ExceptionHandlers
class contains a collection of client-level exception handlers. -
AppUI
is a platform class inherited fromcom.vaadin.ui.UI
class. There is one instance of this class for each open tab of a web browser. Contains a link to aTopLevelWindow
implementation – either a login window or main window, depending on the connection state. You can get a reference to theAppUI
for 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 extendingAppLoginWindow
or create completely new one by extending AbstractWindow and implementing theTopLevelWindow
marker interface. In Studio, go to the Screens section and click Create login window. If you override theinit()
method, make sure you invokesuper.init(params)
. -
AppMainWindow
– main application window displayed after a user logs in. You can customize the main window by extendingAppMainWindow
or create completely new one by extendingAbstractMainWindow
and defining desired layout in XML descriptor. In Studio, go to the Screens section and click Create main window. If you override theinit()
method, make sure you invokesuper.init(params)
.You can control certain main window parameters without redefinig 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 (
TABBED
orSINGLE
). 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.
-
-
WindowManager
- the central class implementing application screens management logic.openWindow()
,openEditor()
,showMessageDialog()
and other methods of theFrame
interface implemented by screen controllers delegate to the window manager.WindowManager
class is located in the platform’s common gui module and is abstract. The web module has a dedicatedWebWindowManager
class that implements web client specifics. You can get a reference toWindowManager
from anyWindow
implementation (e.g. a screen controller), or via theWindowManagerProvider
bean.
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.