4.5.8. Специфика Web Client

Реализация универсального пользовательского интерфейса в блоке Web Client основана на фреймворке Vaadin. Рассмотрим основные классы, входящие в состав инфраструктуры веб клиента.

Рисунок 4.25. Классы инфраструктуры Web Client

Классы инфраструктуры Web Client


  • App - центральный класс инфраструктуры приложения. Позволяет получить ссылки на Connection, AppWindow и другие объекты инфраструктуры. Экземпляр App существует в единственном экземпляре для данной HTTP-сессии пользователя.

    В конкретном приложении, как правило, создается собственный класс App, унаследованный от DefaultApp и, соответственно, от базового абстрактного App платформы. Это позволяет переопределить методы createAppWindow() и createLoginWindow() для создания собственных реализаций главного окна и окна логина.

    Класс App приложения должен быть зарегистрирован в параметре application сервлета app_servlet в файле web.xml модуля web.

  • Connection - интерфейс, обеспечивающий функциональность подключения к среднему слою и хранящий пользовательскую сессию UserSession. Стандартной реализацией этого интерфейса является класс DefaultConnection.

  • AppUI - класс платформы, унаследованный от класса com.vaadin.ui.UI. Экземпляр данного класса соответствует одной открытой вкладке веб браузера. Содержит ссылку на объект UIView - это может быть либо LoginWindow, либо AppWindow.

    Класс AppUI приложения должен быть зарегистрирован в параметре UI сервлета app_servlet в файле web/WEB-INF/web.xml модуля web. Как правило используется стандартный класс платформы.

  • LoginWindow - окно, отображаемое до логина пользователя. В конкретном приложении можно создать наследника LoginWindow и переопределить метод createLoginWindow() класса App для его использования.

  • AppWindow - главное окно приложения, отображаемое после логина пользователя. В конкретном приложении можно создать наследника AppWindow и переопределить метод createAppWindow() класса App для его использования.

    Метод onHistoryBackPerformed() позволяет обработать нажатия на кнопку Back браузера. Этот метод вызывается вместо стандартного поведения браузера если свойство приложения cuba.web.allowHandleBrowserHistoryBack установлено в true.

    Без создания собственного наследника AppWindow можно управлять некоторыми параметрами главного окна с помощью следующих свойств приложения:

    • cuba.web.useLightHeader - включает формирование компактной вехней части окна - лого, строка меню, имя пользователя и кнопка логаута в одну строку. В выключенном состоянии методом AppWindow.createTitleLayout() формируется дополнительная область сверху.

    • cuba.web.foldersPaneEnabled - включает формирование панели папок методом AppWindow.createFoldersPane().

    • cuba.web.appWindowMode - задает начальный режим главного окна: с вкладками или одноэкранный (TABBED или SINGLE). Пользователь впоследствии может задать желаемый режим через экран Help > Settings.

    • cuba.web.maxTabCount - в режиме представления главного окна с вкладками задает максимальное количество вкладок, которое может открыть пользователь. По умолчанию 7.

  • WindowManager - центральный класс, реализующий логику работы экранов системы. Ему делегируются вызовы openWindow(), openEditor(), showMessageDialog() и другие методы интерфейса IFrame, реализуемого контроллерами экранов. Класс WindowManager расположен в общем модуле gui платформы и является абстрактным. В модуле web имеется конкретный класс WebWindowManager, реализующий специфику веб клиента.

    Как правило, WindowManager не используется в прикладном коде напрямую.

  • ExceptionHandlers - содержит коллекцию обработчиков исключений клиентского уровня.