Афоризм
— Почему Вы не сделаете пластическую операцию?
— А толку! Фасад обновишь, а канализация все равно старая!
Фаина Раневская
Последние статьи

 • APK-файл Android
Создание apk-файла для android устройств, .dex файлы
 • Android и OSGi
Старт OSGi-фреймворка Felix в android устройстве
 • Загрузка драйвера
Динамическая загрузка JDBC-драйвера
 • платформа JaBricks
Платформа OSGi-приложения JaBricks
 • уроки JaBricks
Учебные примеры изучения платформы Jabricks
 • бандл 'О программе'
Модуль представления инфо о программе
 • бандл form-currencies
Модуль управления справочником валют
 • бандл form-exchange
Модуль управления справочником курсов валют
 • бандл db-connection
Модуль подключения к серверу БД
 • бандлы JaBricks
Бандлы приложения JaBricks
Поддержка проекта

Если Вам сайт понравился и помог, то будем признательны за Ваш «посильный» вклад в его поддержку и развитие
 • Yandex.Деньги
  410013796724260

 • Webmoney
  R335386147728
  Z369087728698

Базовый модуль 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 Кб).

  Рейтинг@Mail.ru