Среда компонентов предоставляет простой API для форм и редакторов (они также называются компонентами), что позволяет комбинировать компоненты и использовать одни компоненты внутри других. API среды компонентов позволяет клиентам помещать компоненты в сторонние графические элементы пользовательского интерфейса SWT и добавлять новые интерфейсы, делает программы более устойчивыми к ошибкам и утечкам памяти (дело в том, что компонент взаимодействует только с локальными интерфейсами). Клиенты могут создавать собственные многоразовые компоненты, использующие тот же API, что панели и редакторы. Среда компонентов также позволяет создавать и уничтожать объекты, используя атомарные операции, и допускает использование компонентами новых интерфейсов.
Приведем пример формы с заданным именем, заголовком,
всплывающей подсказкой. Форма отображает некоторый рисунок. Пример показывает, как можно создать
редактор или форму с помощью среды компонентов. Используется API компонентов. Компонентам можно
передавать аргументы через их конструкторы, нет необходимости реализовывать отдельный интерфейс или производить
компонент от базового класса.
/**
* Форма с заданным именем, всплывающей подсказкой, выводимым изображением и описанием содержимого.
Форма
* используется изображение, предоставляемое модулем.
*
* @since 3.1
*/
public class NameViewNew {
/**
* Конструктор компонента. Не вызывается напрямую.
*/
public NameViewNew(Composite parent, INameable name, IPluginImages
images) {
name.setName("Name View (New)");
name.setContentDescription("content description");
name.setTooltip("This is a tooltip");
name.setImage(images.getImage("icons/sample.gif"));
// Наполним форму чем-либо
Label content = new Label(parent, SWT.NONE);
content.setText("Здесь отображается содержимое формы");
}
}
Обратите внимание, что аргументы, передаваемые конструктору формы, не требуют дополнительных
сведений о контексте. К примеру, нет необходимости сообщать интерфейсу IPluginImages, какому модулю
принадлежит панель. Интерфейсы устойчивы к утечкам памяти. В этом примере изображение, располагаемое на форме, помещается в память и удаляется из нее
реализацией INameable, поэтому не нужно реализовывать этот метод в самой форме.
API для форм и редакторов один и тот же. Другими словами, если мы зарегистрировали класс NameViewNew
с помощью точки расширения org.eclipse.ui.editors, ее можно будет использовать как редактор без каких-либо
дополнительных изменений.