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- содержит коллекцию обработчиков исключений клиентского уровня.