Базовый модуль JDialog
Базовый модуль base-jdialog, выполненный по технологии
OSGi, существенно облегчает и ускоряет формирование графического интерфейса всплывающего окна
типа JDialog библиотеки Swing. Модуль base-jdialog следует использовать в качестве
родительского для создания интерфейсного бандла приложения JaBricks. Основные функциональные свойства модуля обеспечивают :
- формирования структуры бандла;
- чтение ресурсных файлов бандла;
- сохранение и восстановление регулируемых настроек интерфейса;
- логирование сообщений;
- подписку на сообщения подключения к серверу БД;
- подписку на сообщения локализации интерфейса.
Структура модуля, представленная на скриншоте, включает следующие классы :
Классы модуля
Наименование | Назначение |
ComponentParams |
Класс описания изменяемых параметров объекта (размер, положение) |
ConnectSubscriber |
Класс подписки на сообщения подключения к серверу БД |
JBDialog |
Класс формирования интерфейсного окна типа JDialog |
JBDialogActivator |
Активатор базового модуля |
LocaleSubscriber |
Класс подписки на сообщения изменения объекта локализации |
JBDialogActivator
Класс JBDialogActivator наследует (extends) свойства активатора BundleActivator и включает следующие
методы :
Метод | Описание |
void start(BundleContext context) throws Exception |
Метод вызывается OSGi-фреймворком при старте бандла. В методе выполняется подключение к сервису
протоколирования. |
void stop(BundleContext context) throws Exception |
Метод вызывается OSGi-фреймворком при останове бандла. В методе останавливаются все стартованные
сервисы. |
void createLocaleSubscriber |
Метод выполняет «подписку» на сообщения смены объекта локализации приложения «jabricks/LocaleEvent».
При поступлении данного сообщения вызывается метод changeLocale. |
void createConnectSubscriber |
Метод выполняет «подписку» на сообщения подключения к серверу БД или отключения от сервера БД
«jabricks/DBConnect». При поступлении данного сообщения вызывается метод changeConnect. |
void changeLocale (Locale locale) |
Метод вызывается при поступлении сообщения «jabricks/LocaleEvent». В качестве параметра метод получает
текущий (новый) объект локализации. |
void changeConnect() |
Метод вызывается при поступлении сообщения «jabricks/DBConnect». |
void logMessage (final int level, final String message) |
Метод отправки сообщения в сервис протоколирования. |
void saveComponentParams() |
«Пустой» метод сохранения настроек интерфейса. |
Примечание :
1. Механизм «подписки» реализуется в классе активатора. То есть, все «публикуемые» сообщения, на которые «подписался»
бандл, поступают в активатор бандла.
2. Метод сохранения настроек интерфейса saveComponentParams вызывается в методе stop при останове бандла. Если
необходимо сохранять настройки интерфейсной формы бандла метод необходимо переопределить (см. пример
templ-jdialog).
Класс JBDialog
Класс JBDialog включает поля и методы для создания интерфейса окна типа JDialog.
Конструктор класса
Класс JBDialog имеет 1 конструктор, которому в качестве параметров передается контекст бандла :
public JBDialog (final BundleContext context);
Поля класса JBDialog
В листинге представлены доступные поля класса. Общие модификаторы полей вынесены в отдельную строку комментария;
закоментированные модификаторы относятся ко всем нижеследующим полям до следующего комментария.
|
Листинг |
// protected
BundleContext context = null;
Locale locale = null;
JPanel desk = null;
JSplitPane splitDesk = null;
JPanel pnlButtons = null;
List<ComponentParams> cparams;
Dimension form_dim = null;
int HGAP = 5;
int BUTTON_width = 90;
int BUTTON_height = 24;
// protected static final
String BUTTON_OK = "OK";
String OptionPane_yes_btn = "OptionPane.yesButtonText" ;
String OptionPane_no_btn = "OptionPane.noButtonText" ;
String OptionPane_cancel_btn = "OptionPane.cancelButtonText";
String OptionPane_ok_btn = "OptionPane.okButtonText" ;
context
контекст бандла.
locale
объект текущей локализации интерфейса приложения, определяемый либо конструктором класса, либо устанавливаемый методом
changeLocale (Locale).
pnlDesk
панель размещения визуальных компонентов интерфейса, занимаемая основную часть формы.
splitDesk
разделяемая на две горизонтальные части панель типа JSplitPane для размещения визуальных
компонентов интерфейса; занимает основную часть формы.
pnlButtons
панель кнопок управления, размещаемая в нижней части формы.
cparams
список объектов описания изменяемых настроек объектов интерфейса, формируемый при чтении параметров интерфейса.
form_dim
объект описания размера формы, получаемый при чтении параметров интерфейса.
HGAP
параметр, определяющий интервал между кнопками управления.
BUTTON_width
параметр, определяющий размер кнопки управления по ширине.
BUTTON_height
параметр, определяющий размер кнопки управления по высоте.
BUTTON_OK
текстовая константа, используемая в качестве заголовок кнопки «ОК».
OptionPane_yes_btn
текстовая константа, используемая для локализации надписи кнопки Yes в диалоговом окне OptionPane.
OptionPane_no_btn
текстовая константа, используемая для локализации надписи кнопки No в диалоговом окне OptionPane.
OptionPane_cancel_btn
текстовая константа, используемая для локализации надписи кнопки Cancel в диалоговом окне OptionPane.
OptionPane_ok_btn
текстовая константа, используемая для локализации надписи кнопки Ok в диалоговом окне OptionPane.
Методы класса JBDialog
В следующей таблице приведены protected-методы класса JBDialog :
Метод | Описание |
void createDesk() |
Метод создания неразделяемой панели pnlDesk типа JPanel. Листинг метода представлен ниже. |
void createSplitDesk(final int divider_loc) |
Метод создания разделяемой по горизонтали на 2 части панели splitDesk типа JSplitPane; параметр
divider_loc определяет размер левой панели (положения сепаратора). Листинг метода представлен ниже. |
ImageIcon getImage(final String path) |
Метод чтения ресурсного файла изображения. Параметр path определяет путь к ресурсному файлу изображения,
например, "images/bull.png" |
Properties loadProperties(final String resources,
final Locale locale) |
Метод чтения ресурсных свойств бандла :
– resources определяет полный путь к ресурсному файлу бандла, используемого по умолчанию,
т.е. не включающего язык локализации и расширение; например, "properties/settings"
– locale определяет текущий объект локализации. |
JPanel createButtonsPanel() |
Метод создания панели кнопок управления pnlButtons с последовательным расположением компонентов и
выравниванием по правому краю. |
void formCentering(final int width, final int height) |
Метод центрирования формы; в качестве параметров передаются размеры формы. |
String createGAV (final String symbolicName,
final String version) |
Метод создания текстовой строки, включающей GAV-параметры бандла. Используется при регистрации объекта базы
данных, описанной выше. |
void changeLocale(Locale locale) |
Метод определения локализованных надписей формы. Данный метод необходимо переопределить и включить код
обновления соответствующих надписей (меток) и текста сообщений при динамической смене в режиме run-time
языка локализации. Метод вызывается из активатора бандла (см. описание активатора). |
boolean dialogConfirm(Component parent,
final String title,
final String text,
final String yes,
final String no) |
Функция открытия диалогового окна подтверждения JOptionPane. В качестве параметров функция получает
заголовок окна, текстовое сообщение и локализованные заголовки кнопок Yes и No. Результат подтверждения
возращается в виде логического значения [true | false]. |
void dialogMessage(Component parent,
final int icon,
final String title,
final String text) |
Метод открытия диалогового окна JOptionPane. В качестве параметров метод получает изображения иконки,
заголовок окна и текстовое сообщение. |
Методы управления регулируемыми настройками параметров интерфейса
(размеры, положения) |
void saveComponentParams() |
Метод сохранения настроек интерфейса. |
void readComponentParams() |
Метод чтения параметров настроек интерфейса. |
ComponentParams extractComponentParams(
final String className,
final String name) |
Метод чтения описания настроек объекта, имеющего определенные параметрами тип (класс) className и наименование name |
Получение текущего объекта локализации
В методе чтения ресурсных свойств бандла используется объект локализации. Ниже представлен пример получения текущего
объекта локализации с использованием утилиты ресурсов util-resources :
IResources resources = new ResourcesImpl();
Locale locale = resources.getLocale();
Литинг метода createDesk
Метод createDesk создает панель типа JPanel и определяет рабочую область, устанавливая Border с отступами в 12
пикселей.
/**
* Метод создания панели pnlDesk
*/
protected void createDesk()
{
// Панель для размещение компонентов
pnlDesk = new JPanel();
/*
* Определение отступов
*/
pnlDesk.setBorder (BorderFactory
.createEmptyBorder(2, 2, 2, 2));
}
Литинг метода createSplitDesk
Метод createSplitDesk создает splitDesk, определяет размер (DIVIDER_SIZE) и положение (divider_loc)
сепаратора. Значение DIVIDER_SIZE определено в интерфейсных константах IWidgetsConstants модуля
gui-widgets.
/**
* Метод создания панели JSplitPane
*/
protected void createSplitDesk(final int divider_loc)
{
splitDesk = new JSplitPane(
JSplitPane.HORIZONTAL_SPLIT,true);
// splitDesk.setOneTouchExpandable(true);
splitDesk.setEnabled(false);
// Размер разделяемого сепаратора
splitDesk.setDividerSize(DIVIDER_SIZE);
// Положение разделяемой панели
splitDesk.setDividerLocation(divider_loc);
}
Класс подписки LocaleSubscriber
Класс LocaleSubscriber предназначен для обработки сообщения локализации интерфейса приложения. Экземпляр этого
класса включается в механизм «подписки» на сообщения «jabricks/LocaleEvent». При поступлении данного типа сообщения
вызывается метод активатора changeLocale(Locale) с параметром нового объекта локализации.
Класс подписки ConnectSubscriber
Класс ConnectSubscriber предназначен для обработки сообщения соединения с сервером БД. Экземпляр этого класса
включается в механизм «подписки» на сообщения «jabricks/DBConnect». При поступлении данного типа сообщения
вызывается метод активатора changeConnect().
Класс ComponentParams
ComponentParams используется для описания изменяемых параметров (размер, положение) объектов типа JSplitPane, JTable.
В листинге класса методы get/set не представлены.
public class ComponentParams
{
private String clazz ;
private String name ;
private int location;
private String columns ;
public ComponentParams() {}
public ComponentParams(String clazz, String name)
{
this.clazz = clazz;
this.name = name;
}
// Методы get/set
...
}
Пример создания интерфейсного модуля
Как было отмечено выше, базовый модуль base-jdialog следует использовать в качестве родительского для
создания интерфейсного модуля приложения JaBricks. Пример создания интерфейсного модуля представлен
здесь.
Зависимости
Базовый модуль base-jdialog функционирует вместе со следующими бандлами приложения JaBricks :
gui-widgets |
используются константы и компоненты при формировании интерфейса формы |
util-resources |
используется для получения внешних ресурсов |
gui-toolbar |
используется для формирования панели инструментов |
Подключение модуля к приложению
Для подключения модуля base-jdialog в приложение JaBricks необходимо :
- разместить модуль в поддиректории «configuration/bundles/»
- внести в файл инициализации бандлов «configuration/bundles.ini» запись : base-jdialog-1.0.0.jar
GAV параметры модуля base-jdialog имеют следующие значения :
• groupId | : org.jabricks.jdialog |
• artifactId | : base-jdialog |
• version | : 1.0.0 |
Подробнее о включении модуля в приложение JaBricks представлено
здесь.
Скачать base-jdialog
Рассмотренный на странице базовый модуль создания диалогового окна base-jdialog упакован в архивный файл
base-jdialog-1.0.0.zip (15.7 Кб).
|