Действия и дополнения

Классы действий позволяют определить пользовательские команды независимо от их реализации в пользовательском интерфейсе. Такой подход обеспечивает возможность гибкого изменения представления действия без изменения исходного кода, который фактически выполняет выбранную команду. Классы дополнения предназначены для управления элементами пользовательского интерфейса, связанными с командами. Дополнительное программирование классов дополнения не требуется. Однако они отображаются в рабочей среде и API JFace.

Действия

Действие (IAction) представляет команду, доступную для выполнения конечному пользователю. Как правило, действия связаны с кнопками, пунктами меню и элементами панелей инструментов.

Хотя действия не входят в состав пользовательского интерфейса явным образом, они обладают свойствами, характерными для пользовательского интерфейса. Например, текстом подсказки, текстом метки и изображением. Таким образом, другие классы могут создавать управляющие элементы для оформления действий.

При активации действия пользовательского интерфейса вызывается связанный метод выполнения, который выполняет всю работу. Как правило, метод выполнения запрашивает объекты, выбранные в рабочей среде и обрабатывает их. Кроме того, в результате выбора действия может открываться мастер или окно диалога.

Интерфейс IAction не следует реализовывать непосредственно. Вместо этого следует создать производный класс класса Action. Стандартные производные классы этого класса содержат общие шаблоны различных действий. Фрагмент исходного кода, приведенный ниже, задает действие "About". Это одно из наиболее простых действий рабочей среды.

   public void run() {
      new AboutDialog(workbenchWindow.getShell()).open();
   }

Ранее уже рассматривались интерфейсы IViewActionDelegate и IEditorActionDelegate. Они применяются для добавления действий панели или редактора в рабочую среду. Делегаты действий рабочей среды инициализировались с помощью ссылок на связанные панели или редакторы. В соответствии с этими сведениями они переходят между окнами и страницами рабочей среды и обращаются к выбранным объектам и прочей информации, необходимой для выполнения действия.

Собственные классы действий необходимо реализовать для определения в модуле команды. Добавление действий в другие панели и редакторы предусматривает реализацию делегатов действий.

Элементы дополнения

Элемент дополнения (IContributionItem) представляет часть пользовательского интерфейса, связанную с действием. Точнее говоря он задает элемент, добавляемый в общий ресурс пользовательского интерфейса, такой как меню или панель инструментов.

Элементы дополнения задают способ заполнения конкретного управляющего элемента SWT подходящим элементом SWT, соответствующим дополнению.

При добавлении действий в пользовательский интерфейс рабочей среды элементы дополнения не требуется создавать явным образом. Они создаются рабочей средой от вашего имени вместе с элементами пользовательского интерфейса, связанными с заданными действиями.

Администраторы дополнений

Администратор дополнений (IContributionManager) управляет набором элементов дополнения, расширяющих пользовательский интерфейс. Элементы дополнения можно добавлять и вставлять с помощью именованных идентификаторов, описывающих их порядок. Кроме того, с помощью идентификаторов можно выполнять поиск элементов и удалять отдельные элементы.

Каждая реализация IContributionManager задает способ заполнения конкретного управляющего элемента SWT соответствующими элементами. В среде JFace предусмотрены администраторы дополнений для меню (IMenuManager), панелей инструментов (IToolBarManager) и строк состояния (IStatusLineManager).

Процесс разработки модулей не предусматривает реализацию этих интерфейсов, однако они упоминаются в некоторых методах API.