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