410013796724260
• Webmoney
R335386147728
Z369087728698
Библиотека компонентовБиблиотека компонентов gui-widgets предназначена для формирования графического интерфейса как desktop'ных Swing-приложений, так и приложений на платформе Jabricks. Библиотека выполнена по технологии OSGi и содержит следующий набор визуальных компонентов :
Примечание : Описание библиотекиСписок классов, интерфейсов и ресурсов библиотеки представлен в таблице по-пакетно :
Активатор модуля, org.jabricks.widgetsАктиватор модуля WidgetsActivator включает «пустые» методы start и stop. Основная функция активатора связана с формированием бандла (bundle) по технологии OSGI. Компоненты числовых значений, org.jabricks.widgets.numberfieldsКомпоненты представления числовых значений в интерфейсе приложения : IntegerField, FloatField, DoubleField. Описания компонентов и примеры их использования представлены на странице Числовые компоненты библиотеки прототипа base-gui. Таблица Grid, org.jabricks.widgets.gridТабличный компонент предназначен для представления ограниченного количества записей в интерфейсе приложения. Компонент таблицы локализован и позволяет без «перезагрузки» формы определить заголовки колонок таблицы согласно текущему значению языка локализации. Классы визуализаторов позволяют настроить представление значений разных типов в ячейках таблицы. API Grid, представленное на странице прототипа библиотеки base-gui, позволяет управлять записями (добавлять, обновлять, удалять) и организовать в таблице редактируемую колонку с компонентом JCheckBox для выделения записей. Использование таблицы в java-приложении рассмотрено на странице описания примера Grid прототипа библиотеки. Создание редактируемой колонки с возможностью выделения записей рассмотрено в примере JCheckBox в таблице. Таблица Gridp с панелью навигации, org.jabricks.widgets.gridpТабличный компонент Gridp с панелью навигации предназначен для постраничного разбиения записей и представления в интерфейсе неограниченного количества записей. Как правило, данный компонент следует использовать для просмотра записей «рабочих» таблиц с большим набором данных. Также, как и для обычной таблицы Grid, данный компонент позволяет заменить используемые по умолчанию визуализаторы записей. Компонент Gridp отображает в таблице набор данных в виде одной страницы. Представленное на странице прототипа библиотеки API Gridp демонстрирует возможности управления записями (добавление, обновление, удаление) и включает методы, вызываемые компонентом для перемещения по страницам. Разработчик должен переопределить данные методы для чтения записей определенной страницы в хранилище (сервере БД). Пример Gridp прототипа библиотеки демонстрирует возможности таблицы панелью навигации и включает исходные коды. Дерево Tree, org.jabricks.widgets.treeКомпонент дерева Tree позволяет представить в интерфейсе приложения иерархическую многоуровневую структуру записей, основой которых является класс TreeRecord. API дерева (ITree) позволяет добавлять, обновлять и удалять записи в дереве. При выделении записи в дереве вызывается callback-функция интерфейса ITreeListener, передающая родителю выбранный объект. Подробное описание визуального компонента Tree представлено на странице примера API Tree прототипа библиотеки base-gui. Использование Tree в java-приложении рассмотрено на странице описания пример Tree. TreeTable, org.jabricks.widgets.treetableJTreeTable предназначен для многоуровнего иерархичного отображения набора записей в табличном виде. Компонент таблицы локализован и позволяет без «перезагрузки» формы определить заголовки колонок таблицы согласно текущему значению языка локализации. API JTableTable позволяет управлять записями (добавлять, обновлять, удалять). Использование таблицы в java-приложении рассмотрено на странице описания примера JTreeTable. Компонент JTreeTable используется в интерфейсном бандле Справочник единиц измерения. Панель кнопок инструментов, org.jabricks.widgets.toolbuttonsПанель с набором вертикально располагаемых кнопок ToolButtons, выполняющих роль панели инструментов, имеет API, которое позволяет адаптировать интерфейс как панели, так и кнопок (размер, шрифт, цвет и т.д), под заданные требования, а также выделить подсветкой одну из активных кнопок в наборе. ToolButtons имеет два конструктора; второй конструктор в качестве параметра получает «слушателя» IButtonsListener. Слушатель представляет родительский класс, единственный метод которого onButtonItemClick (String) вызывается при нажатии на одну из кнопок панели инструментов. В метод onButtonItemClick (String) передается наименование/заголовок нажимаемой кнопки. public ToolButtons (); public ToolButtons (final IButtonsListener listener); В таблице представлены методы ToolButtons, которые можно использовать для формирования интерфейса панели вертикально расположенных кнопок :
Пример использования компонента ToolButtons представлен в примере ExampleToolbuttons : Пример использования ToolButtons
import java.awt.Font;
import java.awt.Color;
import java.awt.Dimension;
import java.awt.BorderLayout;
import javax.swing.JFrame;
import javax.swing.JPanel;
import javax.swing.ImageIcon;
import javax.swing.BorderFactory;
import javax.swing.border.Border;
import org.jabricks.widgets.common.VerticalLayout;
import org.jabricks.widgets.toolbuttons.ToolButtons;
import org.jabricks.widgets.toolbuttons.IButtonsListener;
public class ExampleToolbuttons extends JFrame
implements IButtonsListener
{
private ToolButtons bp = null;
private final String[] UNITS_names = {"btnCash",
"btnBank",
"btnEmoney"};
private final String[] UNITS_text = {"Cash",
"Bank",
"Emoney"};
private final ImageIcon[] UNITS_icons = {
null, // new ImageIcon("D:/db.png"),
null, // new ImageIcon("D:/ln.png"),
null};
//~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
public ExampleToolbuttons()
{
super("Toolbuttons example");
setDefaultCloseOperation(EXIT_ON_CLOSE);
setSize(640, 480);
createGUI();
setVisible(true);
}
//~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
private void createGUI()
{
JPanel pnl = new JPanel();
pnl.setBackground(Color.blue);
bp = new ToolButtons(this);
bp.addTitle("Список счетов");
bp.setTitleHeight(36);
bp.setTitleFont(new Font("Arial", Font.BOLD, 14));
bp.setVerticalLayout (new VerticalLayout(8, 10));
bp.setButtonItems(UNITS_names,
UNITS_text,
UNITS_icons);
getContentPane().add(pnl, BorderLayout.CENTER);
getContentPane().add(bp , BorderLayout.WEST);
}
//~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
@Override
public void onButtonItemClick(String name)
{
bp.selectButtonItem(name);
System.out.println("selectedButtonItem = " +
bp.getSelectedButtonItem());
}
//~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
public static void main(String[] args)
{
new ExampleToolbuttons();
}
}
Интерфейсные константы, org.jabricks.widgets.interfaceИнтерфейс IwidgetsConstants включает набор констант для формирования интерфейса и организации межмодульного взаимодействия бандлов OSGi-приложениий по технологии «публикация/подписка». Модификаторы public final для всех констант в листинг не включены, чтобы не загромождать описание. Комментарии к константам недвусмысленно говорят об их назначении в приложении.
public interface IWidgetsConstants
{
String EMPTY = "" ;
String POINT = "." ;
String COMMA = "," ;
String COLON = ":" ;
String SEMICOLON = ";" ;
String LF = "\n" ;
String SPLIT_point = "\\.";
String SLASH = "/" ;
String SPACE = " " ;
String EQUAL = "=" ;
String LOW_LINE = "_" ;
String ENCODING_UTF8 = "UTF-8";
String GUI_dir = "gui/" ;
String EXT_xml = ".xml" ;
String dbObject_table = "table";
String dbObject_view = "view" ;
// Константы объекта локализаций интерфейса
String LANG_ru = "ru" ;
String COUNTRY_RU = "RU" ;
String LANG_en = "en" ;
String COUNTRY_EN = "US" ;
String LANG_de = "de" ;
String COUNTRY_DE = "DE" ;
// Константы протоколирования сообщений
int LOG_LEVEL_SQL = 5 ;
int LOG_LEVEL_OSGi = 6 ;
// Шаблоны протоколируемых сообщений
String LOG_EVENT_topic = " get event on topic : " ;
String LOG_EVENT_prop = " : propertyName (%s) = %s" ;
String LOG_EVENT_send = " : send '%s'" ;
String LOG_MSG_create = "DB Object '%s' was created" ;
// Размер разделителя панелей (по ширине)
int DIVIDER_SIZE = 6;
// Ресурсные константы
String RESOURCES_props = "properties/props" ;
String EXT_properties = ".properties" ;
String RESOURCE_title = "title" ;
// Настройки приложения
String INI_page_records = "page.records" ;
String INI_date_format = "date.format" ;
String INI_money_format = "money.format" ;
// Директория конфигурации приложения
String DIR_config = "configuration/" ;
String BUNDLE_id = "bundle.id" ;
String BUNDLE_SN = "bundle.symbolicName" ;
String BUNDLE_VERSION = "bundle.version" ;
// Сообщения межмодульного обмена информацией
String EVENT_locale = "jabricks/LocaleEvent" ;
String EVENT_connect = "jabricks/DBConnect" ;
String EVENT_request = "jabricks/Container/Request" ;
String EVENT_response = "jabricks/Container/Response";
String EVENT_mode_req = "jabricks/GuiMode/Request" ;
String EVENT_mode_resp = "jabricks/GuiMode/Response" ;
String EVENT_pnl_req = "jabricks/Panel/Request" ;
String EVENT_pnl_resp = "jabricks/Panel/Response" ;
// Константы сообщений
String PROP_locale = "locale" ;
String PROP_connect = "connect" ;
String PROP_container = "container" ;
// Константа отображения надписей в «нормальном стиле»
String SPAN_normal = "<html> span "
+ "<style=\"font-weight:normal\">";
}
Для межмодульного сообщения используются константы, префикс которых начинается с EVENT. Данные константы определяют тип сообщений в публикациях и подписке. Визуализаторы табличных значений, org.jabricks.widgets.renderersИспользуемые по умолчанию визуализаторы записей таблиц Grid и Gridp реализуют (implements) функции интерфейса TableCellRenderer и расширяют (extends) свойства метки типа JLabel. Это позволяет выравнивать значения в колонках для каждого типа либо по левому/правому краю, либо по центру. Кроме этого, визуализаторы позволяют определить подсветку выделенных строк/ячеек таблиц. Разработчик может подключить собственный визуализатор с индивидуальными настройками, как это представлено в примере Grid. Компонент JDdatePicker для выбора даты из календаря, org.jdatepicker.*Компонент JDatePicker представляет текстовое поле с кнопкой, при нажатии на которую открывается окно с календарем для выбора даты. В основе компонента лежит код, созданный группой разработчиков Juan Heyns, JC Oosthuizen, Yue Huang. Доработанный компонент локализован для русского, английского и немецкого языков, позволяет определить первый день недели [Воскресенье, Понедельник]. Кроме этого, выпадающее окно календаря автоматически привязывается к правому/левому краю текстового поля даты в зависимости от расположения компонента на экране. Подробное описание компонента представлено на странице API JDatePicker прототипа библиотеки base-gui. Использование компонента в java-приложении рассмотрено на странице описания примера JDatePicker. Ресурсы модуля, resourcesРесурсы модуля base-gui.jar в виде файлов изображений (*.png) и файлов свойств (*.properties) располагаются в директории resources/images и resources/properties. Файлы изображений используются в панели навигации табличного компонента Gridp, в компоненте даты JDatePicker, при отображении записей в иерархической структуре дерева Tree. Файлы свойств хранят локализованные надписи 3-х языков («ru» русский, «en» английский, «de» немецкий) для панели навигации таблицы Gridp и компонента даты JDatePicker. API компонента Tree включает методы для использования других/собственных изображений узлов дерева. Версия 1.0.2Библиотека компонентов версии 1.0.2 реализует свойства своих предшественников и дополнительно включает следующие методы, используемые для именования таблиц Grid, Gridp :
public interface org.jabricks.widgets.grid.IGrid
{
. . .
public void setGridName(final String name);
public String getGridName();
. . .
}
public interface org.jabricks.widgets.gridp.IGridp
{
. . .
public void setGridName(final String name);
public String getGridName();
. . .
}
Данные методы облегчают процесс именования табличных компонентов типа Grid, Gridp, необходимого при реализации функции сохранения и восстановления значений. Версия 1.0.3Библиотека компонентов версии 1.0.3 дополнительно включает числовой компонент типа LongField. Подробнее о числовых компонентах библиотеки представлено здесь. Компонент целочисленного значения включает методы определения и чтения значений поля типа long и Long, метод разрешения/запрета использования отрицательного значения, как это представлено в следующем листинге : public long getLong(); public void setLong(long value); public Long getValue(); public void setValue(Long value); public void setNegativeAccepted(boolean negativeaccepted); Версия 1.0.4В библиотеке gui-widgets версии 1.0.4 доработан интерфейс компонента определения даты JDdatePicker. Всплывающее окно календаря, при размещении компонента в "приграничных" частях экрана, не выходит за его пределы. Версия 1.0.5В библиотеку gui-widgets версии 1.0.5 добавлен интерфейсный компонент TreeTable табличного представления иерархического набора данных; иерархия набора представлена в первой колонке таблицы. ЗависимостиМодуль gui-widgets имеет следующие зависимости, определенные в секции Import-Package манифеста (MANIFEST.MF) и загружаемые фреймворком при старте приложения :
В секции Export-Package манифеста (MANIFEST.MF) определены следующие доступные в приложении OSGi пакеты
Подключение модуля к приложениюДля подключения бандла gui-widgets в приложение Jabricks достаточно :
Стартовать бандл gui-widgets не требуется. Для модулей приложения, использующих бандл gui-widgets необходимо его инсталлировать во фреймворк. GAV параметрыGAV параметры модуля gui-widgets имеют следующие значения :
Подробнее о включении модуля в приложение Jabricks представлено здесь. Скачать gui-widgetsРассмотренный на странице модуль с компонентами формирования графического интерфейса gui-widgets-1.0.5.jar имеет размер 139 Кб. | ||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
