Команды

org.eclipse.ui.commands

2.1

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

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

<!ATTLIST extension

id    CDATA #IMPLIED

name  CDATA #IMPLIED

point CDATA #REQUIRED>


<!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.



<!ELEMENT category EMPTY>

<!ATTLIST category

description CDATA #IMPLIED

id          CDATA #REQUIRED

name        CDATA #REQUIRED>

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



<!ELEMENT command (commandParameter | defaultHandler?)>

<!ATTLIST command

category       CDATA #IMPLIED

description    CDATA #IMPLIED

id             CDATA #REQUIRED

name           CDATA #REQUIRED

categoryId     CDATA #IMPLIED

defaultHandler CDATA #IMPLIED>

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



<!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".



<!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".



<!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.



<!ELEMENT scope EMPTY>

<!ATTLIST scope

description CDATA #IMPLIED

id          CDATA #REQUIRED

name        CDATA #REQUIRED

parent      CDATA #IMPLIED>

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



<!ELEMENT commandParameter (values)>

<!ATTLIST commandParameter

id       CDATA #REQUIRED

name     CDATA #REQUIRED

values   CDATA #IMPLIED

optional (true | false) "true">

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



<!ELEMENT values (parameter)>

<!ATTLIST values

class CDATA #REQUIRED>

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



<!ELEMENT parameter EMPTY>

<!ATTLIST parameter

name  CDATA #REQUIRED

value CDATA #REQUIRED>

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



<!ELEMENT defaultHandler (parameter)>

<!ATTLIST defaultHandler

class CDATA #REQUIRED>

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



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

Только API этой точки расширения является общим API для объявления команд, категорий, привязок клавиш, конфигураций клавиш или контекстов. Общий API для запроса и установки контекстов, а также для регистрации действий для обработки заданных команд находится в org.eclipse.ui.IKeyBindingService.