3.5.16. Инфраструктура Web Client
Реализация универсального пользовательского интерфейса в блоке Web Client основана на фреймворке Vaadin. Рассмотрим основные классы, входящие в состав инфраструктуры веб-клиента.
-
App
- центральный класс инфраструктуры приложения. Позволяет получить ссылки наConnection
и другие объекты инфраструктуры. ЭкземплярApp
существует в единственном экземпляре для данной HTTP-сессии пользователя. Ссылку наApp
можно получить вызовом статического методаApp.getInstance()
. Если необходимо кастомизировать функциональностьApp
в проекте, создайте класс, расширяющийDefaultApp
в корневом пакете модуля web и зарегистрируйте его в web-spring.xml в качестве бинаcuba_App
, например:<bean name="cuba_App" class="com.company.sample.web.MyApp" scope="vaadin"/>
-
Connection
- интерфейс, обеспечивающий функциональность подключения к среднему слою и хранящий пользовательскую сессию UserSession. Стандартной реализацией этого интерфейса является классConnectionImpl
. -
ExceptionHandlers
- содержит коллекцию обработчиков исключений клиентского уровня. -
AppUI
- класс платформы, унаследованный от классаcom.vaadin.ui.UI
. Экземпляр данного класса соответствует одной открытой вкладке веб браузера. Содержит ссылку на реализацию интерфейсаTopLevelWindow
- это может быть либо окно логина, либо главное окно приложения, в зависимости от состояния подключения. Ссылку наAppUI
можно получить вызовом статического методаAppUI.getCurrent()
. -
AppLoginWindow
- окно, отображаемое до логина пользователя. В конкретном приложении окно можно кастомизировать или создать новое с нуля, унаследовав класс от AbstractWindow. В Studio это можно сделать, нажав New > Screen в секции Generic UI > Screens дерева проекта и выбрав шаблон Login window на вкладке Legacy Screen Templates. Если вы переопределяете методinit()
, обязательно вызовитеsuper.init(params)
. -
AppMainWindow
- главное окно приложения, отображаемое после логина пользователя. В конкретном приложении окно можно кастомизировать или создать новое с нуля, унаследовав класс отAbstractMainWindow
и определив нужную компоновку в XML-дескрипторе. В Studio это можно сделать, нажав New > Screen в секции Generic UI > Screens дерева проекта и выбрав шаблон Main window на вкладке Legacy Screen Templates. Если вы переопределяете методinit()
, обязательно вызовитеsuper.init(params)
.Без переопределения главного окна можно управлять некоторыми параметрами с помощью следующих свойств приложения:
-
cuba.web.foldersPaneEnabled - включает формирование панели папок.
-
cuba.web.appWindowMode - задает начальный режим главного окна: с вкладками или одноэкранный (
TABBED
илиSINGLE
). Пользователь впоследствии может задать желаемый режим через экран Help → Settings. -
cuba.web.maxTabCount - в режиме представления главного окна с вкладками задает максимальное количество вкладок, которое может открыть пользователь. По умолчанию 7.
-
Для того, чтобы обрабатывать нажатия на кнопку Back браузера, реализуйте интерфейс CubaHistoryControl.HistoryBackHandler
в ваших TopLevelWindow
(окно логина и главное окно). Метод onHistoryBackPerformed()
этого интерфейса вызывается вместо стандартного поведения браузера, если свойство приложения cuba.web.allowHandleBrowserHistoryBack установлено в true.