Команды

org.eclipse.ui.commands

2.1

Точка расширения org.eclipse.ui.commands служит для объявления команд и категорий команд с помощью элементов command и category. Команда - это абстрактное представление некоторого семантического поведения, но она не является его непосредственной реализацией. Это позволяет разным разработчикам создавать различные реализации одной команды для разных частей приложения, разделенных между ними. Например, команда "Вставить" может иметь одну реализацию для редактора и другую - для навигатора по файловой системе. Такие реализация называются обработчиками. Команды можно также просмотреть как декларативные указатели функций или как обработчики сигналов.

<!ELEMENT extension (category* , command* , commandParameterType* , keyBinding* , keyConfiguration* , context* , scope* , activeKeyConfiguration?)>

<!ATTLIST extension

id    CDATA #IMPLIED

name  CDATA #IMPLIED

point CDATA #REQUIRED>


<!ELEMENT command (defaultHandler? , state* , commandParameter*)>

<!ATTLIST command

category       CDATA #IMPLIED

description    CDATA #IMPLIED

id             CDATA #REQUIRED

name           CDATA #REQUIRED

categoryId     CDATA #IMPLIED

defaultHandler CDATA #IMPLIED

returnTypeId   CDATA #IMPLIED

helpContextId  CDATA #IMPLIED>

Этот элемент служит для определения команд. Команда представляет собой запрос от пользователя, который можно обработать с помощью действия. Запрос должен быть семантически уникальным среди других команд. Не следует определять команду, если уже есть команда с теми же функциями. Если указано несколько таких элементов с одинаковыми атрибутами id, то действовать будет только элемент, объявленный последним (в порядке чтения реестра модулей). Для того, чтобы разобраться, каким образом действия связаны с командами, ознакомьтесь с описанием точек расширения org.eclipse.ui.actionSets и org.eclipse.ui.editorActions.



<!ELEMENT category EMPTY>

<!ATTLIST category

description CDATA #IMPLIED

id          CDATA #REQUIRED

name        CDATA #REQUIRED>

Для удобства управления команды в UI команды часто группируются по категориям. Этот элемент служит для определения этих категорий. Одна команда может относиться к нескольким категориям. Если указано несколько таких элементов с одинаковыми атрибутами id, то действовать будет только элемент, объявленный последним (в порядке чтения реестра модулей).



<!ELEMENT commandParameter (values?)>

<!ATTLIST commandParameter

id       CDATA #REQUIRED

name     CDATA #REQUIRED

values   CDATA #IMPLIED

typeId   CDATA #IMPLIED

optional (true | false) "true">

Определяет параметр, принимаемый командой. С помощью параметров можно передать обработчику информацию времени выполнения. Например, команде "Показать панель" можно передать идентификатор панели. Обработчики должны принимать эти параметры, так что это можно считать своеобразным API.

Начиная с 3.1



<!ELEMENT commandParameterType EMPTY>

<!ATTLIST commandParameterType

id        CDATA #REQUIRED

type      CDATA #IMPLIED

converter CDATA #IMPLIED>

Определяет тип объекта commandParameter и может задавать подкласс org.eclipse.core.commands.AbstractParameterValueConverter для преобразования значений параметров строки и объектов.

Начиная с 3.2



<!ELEMENT values (parameter*)>

<!ATTLIST values

class CDATA #REQUIRED>

Более подробная версия атрибута values в commandParameter.

Начиная с 3.1



<!ELEMENT parameter EMPTY>

<!ATTLIST parameter

name  CDATA #REQUIRED

value CDATA #REQUIRED>

Возможное значение параметра.

Начиная с 3.1



<!ELEMENT defaultHandler (parameter)>

<!ATTLIST defaultHandler

class CDATA #REQUIRED>

Обработчик по умолчанию для этой команды. Этот обработчик используется если отсутствуют другие. Он будет конфликтовать с другими определениями обработчиков, которые не указывают условий activeWhen. Если не создается IExecutableExtension, вместо этого можно использовать атрибут defaultHandler.

Начиная с 3.1



<!ELEMENT state (class?)>

<!ATTLIST state

class CDATA #IMPLIED

id    CDATA #REQUIRED>

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

Начиная с 3.2



<!ELEMENT class (parameter*)>

<!ATTLIST class

class CDATA #REQUIRED>

Класс, который может быть загружен для хранения состояния этой команды. Этот элемент применяется, если необходимо передать org.eclipse.core.runtime.IExecutableExtension несколько параметров.

Начиная с 3.2



Элемент keyConfiguration устарел

<!ELEMENT keyConfiguration EMPTY>

<!ATTLIST keyConfiguration

description CDATA #IMPLIED

id          CDATA #REQUIRED

name        CDATA #REQUIRED

parent      CDATA #IMPLIED

parentId    CDATA #IMPLIED>

Этот элемент служит для определения конфигураций клавиш. Если указано несколько таких элементов с одинаковыми атрибутами id, то действовать будет только элемент, объявленный последним (в порядке чтения реестра модулей). Пользуйтесь точкой расширения "org.eclipse.ui.bindings".



Элемент context устарел

<!ELEMENT context EMPTY>

<!ATTLIST context

description CDATA #IMPLIED

id          CDATA #REQUIRED

name        CDATA #REQUIRED

parent      CDATA #IMPLIED

parentId    CDATA #IMPLIED>

Этот элемент служит для определения контекста. Если указано несколько таких элементов с одинаковыми атрибутами id, то действовать будет только элемент, объявленный последним (в порядке чтения реестра модулей). Пользуйтесь точкой расширения org.eclipse.ui.contexts.



Элемент scope устарел

<!ELEMENT scope EMPTY>

<!ATTLIST scope

description CDATA #IMPLIED

id          CDATA #REQUIRED

name        CDATA #REQUIRED

parent      CDATA #IMPLIED>

Этот элемент служит для определения областей. Если указано несколько таких элементов с одинаковыми атрибутами id, то действовать будет только элемент, объявленный последним (в порядке чтения реестра модулей). Устарел. Пользуйтесь точкой расширения "org.eclipse.ui.contexts".



Элемент activeKeyConfiguration устарел

<!ELEMENT activeKeyConfiguration EMPTY>

<!ATTLIST activeKeyConfiguration

value              CDATA #IMPLIED

keyConfigurationId CDATA #IMPLIED>

Этот элемент служит для определения начальной конфигурации клавиш для Eclipse. Если указано несколько таких элементов, то действовать будет только объявленный последним (в порядке чтения реестра модулей).

Этот элемент заменен параметром в настройках программы. Для того, чтобы изменить конфигурацию клавиш из приложения, укажите следующее в plugin_customization.ini файле: org.eclipse.ui/KEY_CONFIGURATION_ID=your.default.key.configuration.id.



Элемент keyBinding устарел

<!ELEMENT keyBinding EMPTY>

<!ATTLIST keyBinding

configuration      CDATA #IMPLIED

command            CDATA #IMPLIED

locale             CDATA #IMPLIED

platform           CDATA #IMPLIED

contextId          CDATA #IMPLIED

string             CDATA #IMPLIED

scope              CDATA #IMPLIED

keyConfigurationId CDATA #IMPLIED

commandId          CDATA #IMPLIED

keySequence        CDATA #IMPLIED>

Этот элемент позволяет присваивать командам последовательности клавиш. Устарел. Пользуйтесь элементом key в точке расширения "org.eclipse.ui.bindings".



Точка расширения org.eclipse.ui.commands широко используется в файле plugin.xml в модуле org.eclipse.ui.

Команды могут зарегистрировать обработчиков с помощью org.eclipse.ui.handlers.IHandlerService. Эту службу можно загрузить из различных компонентов рабочей среды (в частности, рабочей среды, окна рабочей среды, сайта компонента и так далее), вызвав getService(IHandlerService.class).

В общем, предпочтительно объявлять все команды статически (в plugin.xml). Таким образом пользователи смогут добавлять к командам привязки клавиш. Однако можно объявлять команды и динамически. Для этого из компонента рабочей среды загрузите org.eclipse.ui.commands.ICommandService, вызовите getCommand(yourCommandID), а затем вызовите Command.define(...).

Для состояний обработчиков существует несколько реализаций по умолчанию, которые могут оказаться полезными для пользователей этой точки расширения: