Афоризм
Да, я сулил златые горы,
но вот о шубе речь не шла.
Последние статьи

 • Активности Android
Многоэкранные Android приложения
 • Fragment dynamic
Динамическая загрузка фрагментов в Android
 • Fragment lifecycle
Жизненный цикл Fragment'ов в Android
 • Fragment example
Пример Fragment'ов в Android
 • Data Binding
Описание и пример Data Binding
 • Пример MVVM
Пример использования MVVM в Android
 • Компонент TreeTable
Описание компонента TreeTable для Swing
 • Пример TreeTable
Пример использования TreeTable
 • Хранилища Android
Внутренние и внешние хранилища данных
 • Пример SQLite
Пример использования SQLite в Android
 • WebSocket
Описание и пример реализации WebSocket
 • Визуальные компоненты
Улучшен компонент выбора даты из календаря
 • Анимация jQuery
Описание и примеры анимации элементов DOM
 • APK-файл Android
Создание apk-файла для android устройств, .dex файлы
 • платформа JaBricks
Платформа OSGi-приложения JaBricks
Поддержка проекта

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

 • Webmoney
  R335386147728
  Z369087728698

Урок 2. Панель инструментов

Структура приложения JaBricks для второго урока, представленная на следующем сриншоте, включает :

  • набор бандлов в поддиректории конфигурации «configuration/bundles»;
  • изображения иконки приложения и кнопок панели инструментов (поддиректория «configuration/resources/images»);
  • ресурсные файлы, используемые в надписях кнопок (поддиректория «configuration/resources/properties)»;
  • файл со списком инсталлируемых бандлов «configuration/bundles.ini»;
  • файл описания структуры панели инструментов «configuration/toolbar.xml»;
  • файл инициализации jabricks.ini и приложение jabricks.jar;
  • файл старта приложения из командной строки run.bat (для Windows).

По сравнению с предыдущим уроком в конфигурацию приложения добавлены два бандла (templ-jdialog-1.0.0.jar, templ-jpanel-1.0.0.jar), файлы с изображениями, ресурсные файлы и файл описания панели инструментов «configuration/toolbar.xml». Кроме этого, в описание файла со списком инсталлируемых бандлов «configuration/bundles.ini» необходимо включить добавляемые в конфигурацию бандлы.

Для построения панели инструментов используется бандл gui-toolbar-1.0.0.jar. Формат описания панели инструментов позволяет размещать кнопки как с левой стороны, так и с правой стороны панели инструментов. Кроме этого, на кнопки помимо изображений можно нанести надписи. К кнопкам можно «привязать» бандлы, которые приложение будет стартовать при нажатии на кнопки. Можно также обработать нажатие кнопки и внутри фрейма.

В описании структуры панели инструментов можно включить бандлы разных версий, т.е. имеющих одинаковое наименование (SymbolicName), но отличающиеся номером версий. Таким образом, JaBricks позволяет подключать и стартовать бандлы разных версий.

Бандл gui-toolbar-1.0.0.jar должен всегда присутствовать в конфигурации, поскольку в базовом фрейме base-jframe установлена с ним связь. Файл описания панели инструментов «configuration/toolbar.xml» может отсутствовать; в этом случае панель инструментов в главном фрейме приложения будет отсутствовать.

Листинг файла bundles.ini

Листинг файла с описанием инсталлируемых бандлов имеет следующий вид :


bundles=org.apache.felix.eventadmin-1.4.8.jar@start, \
org.apache.felix.log-1.0.1.jar@start, \
util-resources-1.0.0.jar@start, \
util-logger-1.0.0.jar@start, \
gui-widgets-1.0.0.jar, \
base-jframe-1.0.0.jar, \
base-jpanel-1.0.0.jar, \
base-jdialog-1.0.0.jar, \
gui-menu-1.0.0.jar, \
gui-toolbar-1.0.0.jar, \
templ-jdialog-1.0.0.jar, \
templ-jpanel-1.0.0.jar, \
templ-jframe-1.0.0.jar@main
 

Описание формата и назначение артибутов представлено в первом уроке. С описаниями бандлов templ-jdialog-1.0.0.jar и templ-jpanel-1.0.0.jar мы будет знакомиться в разделе программирования.

Листинг toolbar.xml

Листинг файла описания структуры панели инструментов «configuration/toolbar.xml» имеет следующий вид :

Листинг
<?xml version="1.0" encoding="UTF-8"?>
<root name="root" rollover="true" borderpainted="true">
  <toolbar>
     <item
        name="toolbar.jpanel" 
        type="button" 
        image="configuration/resources/images/database.png"
        text="toolbar.jpanel" textposition="bottom"
        width="96" height="64" 
        groupId="org.jabricks.templates"
        artifactId="templ-jpanel"
        version="1.0.0" />
  </toolbar>
  <toolbar>
     <item
        name="toolbar.jdialog"
        type="button"
        image="configuration/resources/images/info.png"
        text="toolbar.jdialog"
        textposition="bottom"
        width="96" height="64" 
        groupId="org.jabricks.templates"
        artifactId="templ-jdialog"
        version="1.0.0" />
     <item
        name="toolbar.exit" 
        type="button"
        image="configuration/resources/images/exit.png"
        text="toolbar.exit"
        textposition="bottom"
        width="96" height="64" />
  </toolbar>
</root>

С форматом описания структуры панели инструментов можно познакомиться здесь. В примере панель инструментов разделена на 2 части тегами <toolbar>. В левой панели размещается одна кнопка, в правой – 2 кнопки. Кнопка определяется тегом <item> с атрибутами. Наименования атрибутов имеют интуитивно-понятные обозначения. Атрибуты rollover и borderpainted относятся к настройкам панели JToolbar. Свойства остальных атрибутов :

  • name – наименование кнопки, используется в локализации текстовой надписи;
  • image – отображаемое на кнопке изображение;
  • text – текст на кнопке;
  • textposition – положение текста на кнопке;
  • width, height – размер кнокпи;
  • groupId, artifactId, version – связанный с кнопкой бандл;
  • guimode – режим представления интерфейсной части бандла, созданного с использованием базового модуля base-universal; может принимать одно из значений "jdialog" и "jpanel".

Скачивание файлов

Поскольку после первого урока структура приложения уже сформирована, то сейчас необходимо скачать только бандлы, ресурсные файлы, файл описания панели инструментов и файл описания инсталлируемых бандлов. Перечисленные файлы собраны и упакованы в один архивный файл lesson2.zip.

Скачайте и «разверните» архив lesson2.zip, перенесите файлы в структуру, представленную на верхнем скриншоте.

Старт приложения

После старта приложения и нажатия на кнопки панели инструментов Вы должны увидеть следующий интерфейс :

Протоколируемые сообщения

Если Вы использовали для старта командную строку (командный файл run.bat), то в консоль будут выведены следующие сообщения об инициализации и старте соответствующих бандлов. Первоначально фреймворк инсталлирует бандлы, описанные в файле configuration/bundles.ini и присутствующие в поддиректории configuration/bundles (состояние INSTALLED). После этого, бандлы с атрибутом @start и @main стартуются фреймворком; бандлы, связанные со стартованными, переводятся фреймворком в состояние RESOLVED. После этого с небольшими временными интервалами нажимаются кнопки панелей инструментов, вызывая старт связанных с ними бандлов. Подсвеченные комментарии поясняют процесс старта и останова фреймворка и бандлов.


java version "1.8.0_161"
Java(TM) SE Runtime Environment (build 1.8.0_161-b12)
Java HotSpot(TM) 64-Bit Server VM (build 25.161-b12, mixed mode)
16:49:29,463  START ~~~~~ Framework CREATED ~~~~~
16:49:29,956  INFO  Framework init
16:49:29,959  INFO  Framework start
12:08:13,959  INFO  Install bundles
16:49:29,986  OSGi  gui-widgets : INSTALLED
16:49:30,800  OSGi  base-jdialog : INSTALLED
16:49:30,197  OSGi  base-jframe : INSTALLED
16:49:30,320  OSGi  base-jpanel : INSTALLED
16:49:30,422  OSGi  gui-menu : INSTALLED
16:49:30,515  OSGi  gui-toolbar : INSTALLED
16:49:30,534  OSGi  org.apache.felix.eventadmin : INSTALLED
16:49:30,663  OSGi  org.apache.felix.log : INSTALLED
16:49:30,846  OSGi  templ-jdialog : INSTALLED
16:49:30,859  OSGi  templ-jframe : INSTALLED
16:49:30,878  OSGi  templ-jpanel : INSTALLED
16:49:30,978  OSGi  util-logger : INSTALLED
16:49:31,570  OSGi  util-resources : INSTALLED

// старт бандлов и фреймворка
16:49:31,149  OSGi  util-logger : STARTED
16:49:31,168  OSGi  base-jframe : RESOLVED
16:49:31,168  OSGi  templ-jframe : RESOLVED
16:49:31,168  OSGi  gui-widgets : RESOLVED
16:49:31,168  OSGi  gui-menu : RESOLVED
16:49:31,168  OSGi  gui-toolbar : RESOLVED

// регистрация фреймворком сервисов
16:49:31,178  OSGi  ServiceEvent REGISTERED : \
                        'jabricks/LocaleEvent'
16:49:31,179  OSGi  ServiceEvent REGISTERED : \
                        'jabricks/Container/Request'
16:49:31,737  OSGi  templ-jframe : STARTED

// старт бандла templ-jpanel
16:49:43,161  OSGi  base-jpanel : RESOLVED
16:49:43,162  OSGi  templ-jpanel : RESOLVED

// старт бандлом сервисов (подписка на сообщения)
16:49:43,167  OSGi  ServiceEvent REGISTERED : \
                        'jabricks/LocaleEvent'
16:49:43,169  OSGi  ServiceEvent REGISTERED : \
                        'jabricks/Container/GUISaver'
16:49:43,171  OSGi  ServiceEvent REGISTERED : \
                        'jabricks/Container/Response'
// отправка сообщения с запросом контейнерв фрейма
16:49:43,175  OSGi  templ-jpanel : \
                        send 'jabricks/Container/Request'
// фреймворк получает запрос на контейнер
16:49:43,176  OSGi  templ-jframe get event on topic : \
                        jabricks/Container/Request
16:49:43,177  INFO  ... from bundle templ-jpanel;1.0.0
// фреймворк отвечает на запрос отправкой бандлу контейнера
16:49:43,179  OSGi  templ-jframe;1.0.0 : \
                        send 'jabricks/Container/Response'
16:49:43,195  OSGi  templ-jpanel get event on topic : \
                        jabricks/Container/Response
16:49:43,195  OSGi  templ-jpanel : STARTED

// старт бандла org.jabricks.templates.templ-jdialog
16:50:00,678  OSGi  base-jdialog : RESOLVED
16:50:00,679  OSGi  templ-jdialog : RESOLVED
16:50:01,370  OSGi  ServiceEvent REGISTERED : \
                        'jabricks/LocaleEvent'
16:50:01,370  OSGi  templ-jdialog : STARTED

// останов бандла org.jabricks.templates.templ-jdialog
16:50:12,458  OSGi  ServiceEvent UNREGISTERING : \
                        'jabricks/LocaleEvent'
16:50:12,459  OSGi  templ-jdialog : STOPPED

// останов приложения (фреймворка)
16:50:18,682  OSGi  ServiceEvent UNREGISTERING : \
                        'jabricks/LocaleEvent'
16:50:18,682  OSGi  ServiceEvent UNREGISTERING : \
                        'jabricks/Container/Request'
 

Примечание : в представленных выше сообщениях отображены только наименования (artifactId) бандла. Реально Вы увидите символическое наименование (SymbolicName) бандла, включающее groupId и artifactId. Символ переноса '\' делит строку на две части.

Описание бандлов для ознакомления

В данном уроке Вам желательно познакомиться с описаниями следующих бандлов, используемых в приложении :

  • gui-toolbar – модуль формирования панели инструментов;
  • util-logger – модуль логирования сообщений;
  • base-jdialog – базовый модуль формирования JDialog;
  • templ-jdialog – шаблон окна JDialog.

Связанные страницы

Список уроков
Предыдующий, 1-й урок
Следующий, 3-й урок

Скачать файлы

После скачивания конфигурации к Уроку 2 (383 Кб) создайте структуру, представленyю на верхнем скриншоте. Главный модуль jabricks.jar и файл инициализации jabricks.ini можно скачать в Уроке 1.

  Рейтинг@Mail.ru