T.M. SoftStudio

feci quod potui, faciant meliora potentes

Купить полную версию книги "Среда разработки Eclipse 4: Руководство разработчика"

  • Графические системы SWT и JFace

    Первые реализации Java-платформы содержали графическую библиотеку Abstract Windowing Toolkit (AWT), предоставляющую такие компоненты графического интерфейса пользователя, как кнопку, флажок, список выбора, диалоговые окна, метку, прокручивающийся список, меню, панель с прокруткой, текстовую область и текстовое поле, а также панели компоновки компонентов.

    Архитектура графической системы AWT была построена таким образом, что AWT-компоненты имеют своих двойников, реализованных для конкретной операционной системы, с которыми они связаны интерфейсами пакета java.awt.peer. Поэтому система AWT называется «тяжеловесной» и отображение ее компонентов зависит от операционной системы, в которой она работает.

    Для преодоления ограниченности набора и выбора внешнего вида и поведения (Look and Feel) AWT-компонентов была создана библиотека Swing.

    Графическая система Swing создана на базе системы AWT и напрямую не связана, как система AWT, с операционной системой, в которой она работает. Поэтому система Swing называется «легковесной» и в системе Swing стало возможным создать набор отображений Look and Feel, которые разработчик может выбирать, не оглядываясь на операционную систему. Кроме того, библиотека Swing реализует архитектуру MVC (Model-View-Controller) и дополняет библиотеку AWT такими компонентами GUI-интерфейса, как панель выбора цвета, индикатор состояния, переключатель, слайдер и спиннер, панель с вкладками, таблицы и деревья, расширенными возможностями компоновки GUI-компонентов, таймером, возможностью отображения HTML-контента.

    Графическая система SWT (Standard Widget Toolkit) была создана в процессе работы над проектом Eclipse и является попыткой взять лучшее из архитектур систем AWT и Swing и предоставить возможность создания быстрых GUI-интерфейсов с отображением Look and Feel, как можно более полно соответствующим операционной системе, в которой они работают.

    Архитектура системы SWT построена таким образом, что SWT-компоненты представляют собой лишь Java-оболочки GUI-компонентов конкретной операционной системы. Для операционной системы, в которой отсутствует реализация какого-либо компонента, система SWT обеспечивает Java-эмуляцию. Так в системе SWT достигается скорость работы и полное соответствие внешнему виду и поведению операционной системе.

    Для создания GUI-интерфейса система SWT предоставляет такие компоненты как кнопки, включая флажки и переключатели, списки, метку, меню, текстовые области, диалоговые окна, индикатор прогресса, панель с прокруткой, слайдер и спиннер, таблицы и деревья, панель с вкладками, панель выбора даты, панели инструментов, встроенный Web-браузер, гиперссылку, а также обеспечивает компоновку SWT-компонентов, встраивание AWT-компонентов, отображение OpenGL-контента, печать, поддержку операций Drag and Drop, 2D-графики, технологии Win32 OLE.

    Система JFace создана на основе системы SWT и реализует архитектуру MVC (Model-View-Controller), предоставляя такие компоненты как таблицы, деревья, списки, текстовую область и диалоговые окна, обеспечивая определение пользовательских команд независимо от их представления в GUI-интерфейсе, управление шрифтами и изображениями, помощь пользователю в выборе соответствующего содержания для полей в GUI-компонентах, выполнение длительных задач.

  • Рассмотрим создание SWT/JFace приложений с помощью инструментов Eclipse-плагина WindowBuilder.

    Плагин WindowBuilder (http://www.eclipse.org/windowbuilder/) обеспечивает шаблоны кода для создания Java-приложений с GUI-интерфейсом на основе платформ Swing, SWT/JFace, RCP и XWT, предоставляя визуальный WYSIWYG графический редактор и большой набор Wizard-мастеров.

    Для установки WindowBuilder-плагина откроем среду Eclipse, в меню Help выберем Install New Software.

    В окне мастера Install в поле Work with: выберем Eclipse-релиз и в разделе General Purpose Tools отметим флажки:

    • Swing Designer,

    • Swing Designer Documentation,

    • SWT Designer,

    • SWT Designer Core,

    • SWT Designer Documentation,

    • SWT Designer SWT_AWT Support,

    • SWT Designer XWT Support,

    • WindowBuilder Core,

    • WindowBuilder Core Documentation,

    • WindowBuilder Core UI,

    • WindowBuilder GroupLayout Support,

    • WindowBuilder Java Core,

    • WindowBuilder XML Core,

  • нажмем кнопку Next и установим плагины.

    После установки WindowBuilder-плагина перезагрузим среду Eclipse и в перспективе Java в меню File выберем команду New | Other | WindowBuilder | SWT Designer | SWT/JFace Java Project и нажмем кнопку Next, введем имя проекта и нажмем кнопку Finish.

    В результате будет создан Java-проект, в путь которого будут добавлены библиотеки, обеспечивающие использование GUI-систем SWT и JFace.

    В окне Project Explorer нажмем правой кнопкой мышки на узле проекта и в контекстном меню выберем команду New | Other | WindowBuilder | SWT Designer (рис. 5.1).

    Рис. 5.1. Список SWT/JFace мастеров плагина WindowBuilder

    Раздел WindowBuilder | SWT Designer | SWT команды New содержит следующие мастера:

    • Application Window – создает основу приложения с GUI-интерфейсом, содержащим главное окно с заголовком и кнопками «свернуть», «развернуть» и «закрыть».

    • Composite – создает класс, расширяющий класс org.eclipse.swt.widgets.Composite, который представляет контейнер для других GUI-компонентов, или класс, org.eclipse.swt.widgets.Group, также представляющий контейнер для других GUI-компонентов, который однако отображает свои границы и для которого возможно задать заголовок.

    • Dialog – создает класс, расширяющий класс org.eclipse.swt.widgets.Dialog, который является базовым классом для SWT-диалоговых окон. Созданный класс представляет диалоговое окно с заголовком и кнопкой закрытия окна.

    • Shell – создает основу приложения с GUI-интерфейсом, содержащим главное окно с заголовком и кнопками «свернуть», «развернуть» и «закрыть», путем создания класса, расширяющего класс org.eclipse.swt.widgets.Shell. По сравнению с мастером Application Window данный мастер выделяет из метода main() код определения свойств Shell-окна.

  • Раздел WindowBuilder | SWT Designer | JFace команды New содержит следующие мастера:

    • ApplicationWindow – создает основу приложения с GUI-интерфейсом, содержащим главное окно с заголовком и кнопками «свернуть», «развернуть» и «закрыть», путем создания класса, расширяющего класс org.eclipse.jface.window.ApplicationWindow, который также позволяет определить для окна меню, панель инструментов и строку статуса. При этом панель инструментов может представлять класс org.eclipse.swt.widgets.ToolBar или класс org.eclipse.swt.widgets.CoolBar. Объект ToolBar представляет в JFace-приложении набор JFace-действий, а объект CoolBar – набор ToolBar-панелей.

    • Dialog – создает класс, расширяющий класс org.eclipse.jface.dialogs.Dialog, который является базовым классом для JFace-диалоговых окон. Созданный класс представляет диалоговое окно с кнопкой закрытия окна и кнопками OK и Cancel.

    • TitleAreaDialog – создает класс, расширяющий класс org.eclipse.jface.dialogs.TitleAreaDialog, который представляет диалоговое окно с кнопкой закрытия окна и кнопками OK и Cancel, а также областью заголовка.

    • Wizard – создает класс, расширяющий класс org.eclipse.jface.wizard.Wizard, который является базовым классом для создания мастеров.

    • WizardPage – создает класс, расширяющий класс org.eclipse.jface.wizard.WizardPage, который является базовым классом для создания страниц мастеров. Созданный класс представляет страницу мастера с заголовком и кнопками Finish и Cancel.

    Раздел WindowBuilder | SWT Designer | Forms команды New содержит следующие мастера:

    • Composite – создает класс, расширяющий класс org.eclipse.swt.widgets.Composite. По сравнению с мастером Composite раздела WindowBuilder | SWT Designer | SWT данный мастер добавляет использование класса org.eclipse.ui.forms.widgets.FormToolkit, который отвечает за адаптацию SWT-компонентов для работы в формах.

    • DetailsPage – создает класс, реализующий интерфейс org.eclipse.ui.forms.IDetailsPage, который обеспечивает создание страниц детализации, открываемых при выборе объекта в основной части формы.

    • FormPage – создает класс, расширяющий класс org.eclipse.ui.forms.editor.FormPage, который является базовым классом для создания страниц многостраничной формы FormEditor.

    • MasterDetailsBlock – создает класс, расширяющий класс org.eclipse.ui.forms.MasterDetailsBlock, который обеспечивает создание блока формы, состоящего из основной части и части детализации, отображающей IDetailsPage-страницы.

    • SectionPart – создает класс, расширяющий класс org.eclipse.ui.forms.SectionPart, который обеспечивает группировку GUI-компонентов для добавления их в форму.

    • ViewPart – создает класс, расширяющий класс org.eclipse.ui.part.ViewPart, который является базовым классом для создания Eclipse-представлений.

  • Раздел WindowBuilder | SWT Designer | Databinding команды New содержит мастер JFace Automating Databinding, обеспечивающий создание Shell-окна, Composite-контейнера и Dialog-окна, включающих в себя текстовые поля, содержимое которых связано со свойствами JavaBeans-компонента.

    Раздел WindowBuilder | SWT Designer | RCP команды New содержит следующие мастера:

    • ActionBarAdvisor – создает класс, расширяющий класс org.eclipse.ui.application.ActionBarAdvisor, который обеспечивает конфигурацию меню и панели инструментов Workbench-окна RCP-приложения.

    • EditorPart – создает класс, расширяющий класс org.eclipse.ui.part.EditorPart, который является базовым классом для создания Eclipse-редакторов Workbench-окна RCP-приложения.

    • MultiPageEditorPart – создает класс, расширяющий класс org.eclipse.ui.part.MultiPageEditorPart, который является базовым классом для создания многостраничных Eclipse-редакторов Workbench-окна RCP-приложения.

    • PageBookViewPage – создает класс, расширяющий класс org.eclipse.ui.part.Page, который является базовым классом для создания страниц многостраничного Eclipse-представления PageBookView.

    • Perspective – создает класс, реализующий интерфейс org.eclipse.ui.IPerspectiveFactory, который обеспечивает группировку представлений и редакторов Workbench-окна RCP-приложения.

    • PreferencePage – создает класс, расширяющий класс org.eclipse.jface.preference.PreferencePage, который является базовым классом для создания окна команды Preferences меню Window.

    • PropertyPage – создает класс, расширяющий класс org.eclipse.ui.dialogs.PropertyPage, который является базовым классом для создания окна команды Properties меню Project.

    • ViewPart – создает класс, расширяющий класс org.eclipse.ui.part.ViewPart, который является базовым классом для создания Eclipse-представлений. По сравнению с мастером ViewPart раздела WindowBuilder | SWT Designer | Forms данный мастер не использует класс org.eclipse.ui.forms.widgets.FormToolkit.

  • Раздел WindowBuilder | SWT Designer | XWT команды New содержит следующие мастера:

    • XWT Application – создает основу XWT-приложения с GUI-интерфейсом, содержащим главное окно с заголовком и кнопками «свернуть», «развернуть», «закрыть» и Double click me!.

    • XWT Composite – создает XWT-класс, расширяющий класс org.eclipse.swt.widgets.Composite, который представляет контейнер для других XWT-компонентов.

    • XWT Forms Application – создает основу XWT-приложения с GUI-интерфейсом, содержащим главное окно формы с заголовком и кнопками «свернуть», «развернуть», «закрыть» и Double click me!.

    • XWT Forms Composite – создает XWT-класс формы, расширяющий класс org.eclipse.swt.widgets.Composite.

    Раздел WindowBuilder | SWT Designer | Eclipse 4 команды New содержит мастер ViewPart, использующий аннотацию org.eclipse.e4.ui.di.Focus, которая маркирует метод класса представления, вызываемый при наведении фокуса.

    Общие настройки WindowBuilder-плагина осуществляются в разделе WindowBuilder команды Preferences меню Window среды Eclipse.


SWT-приложения