4.5.9. Специфика Desktop Client
Реализация универсального пользовательского интерфейса в блоке Desktop Client основана на Java Swing. Рассмотрим основные классы, входящие в состав инфраструктуры десктоп клиента.
 
 
  -  App- центральный класс инфраструктуры десктоп приложения. Содержит ссылки наConnectionи главныйTopLevelFrame, а также методы инициализации и получения параметров приложения (см. ниже).В конкретном приложении необходимо создать собственный класс-наследник Appи переопределить в нем следующие методы:-  getDefaultAppPropertiesConfig- должен возвращать строку, в которой через пробел перечислены файлы свойств приложения, например:@Override protected String getDefaultAppPropertiesConfig() { return "/cuba-desktop-app.properties /desktop-app.properties"; }
-  getDefaultHomeDir- должен вовращать путь к каталогу, в котором приложение будет хранить временные и рабочие файлы, например:@Override protected String getDefaultHomeDir() { return System.getProperty("user.home") + "/.mycompany/sales"; }
-  getDefaultLogConfig- должен возвращать имя файла настройки Logback, если таковой определен в проекте. Например:@Override protected String getDefaultLogConfig() { return "sales-logback.xml"; }Кроме того, в собственном классе-наследнике Appнеобходимо определить методmain()следующим образом:public static void main(final String[] args) { SwingUtilities.invokeLater(new Runnable() { public void run() { app = new App(); app.init(args); app.show(); app.showLoginDialog(); } }); }
 
-  
-  Connection- класс, обеспечивающий функциональность подключения к среднему слою и хранящий пользовательскую сессию UserSession.
-  LoginDialog- диалог логина пользователя. В конкретном приложении можно создать наследникаLoginDialogи переопределить методcreateLoginDialog()классаAppдля его использования.
-  TopLevelFrame- наследникJFrame, являющийся окном самого верхнего уровня. В приложении существует как минимум один экземпляр данного класса, создаваемый при старте приложения и содержащий главное меню. Этот экземпляр возвращается методомgetMainFrame()классаApp.При отделении пользователем вкладок главного окна или компонента TabSheet (см. атрибут detachable) создаются дополнительные экземплярыTopLevelFrame, не содержащие главного меню.
-  WindowManager- центральный класс, реализующий логику работы экранов системы. Ему делегируются вызовыopenWindow(),openEditor(),showMessageDialog()и другие методы интерфейсаFrame, реализуемого контроллерами экранов. КлассWindowManagerрасположен в общем модуле gui платформы и является абстрактным. В модуле desktop имеется конкретный классDesktopWindowManager, реализующий специфику десктоп клиента.Как правило, WindowManagerне используется в прикладном коде напрямую.
-  ExceptionHandlers- содержит коллекцию обработчиков исключений клиентского уровня.