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.
categoryId
.Уникальный идентификатор категории, к которой относится данная команда. Если команда не относится ни к одной категории, она все равно отобразится в UI, наряду с другими категоризированными командами.
Начиная с 3.0
Обработчик по умолчанию для этой команды (см. документацию по точке расширения
org.eclipse.ui.bindings). Этот обработчик используется если отсутствуют другие. Он будет конфликтовать с другими определениями обработчиков, которые не указывают условий activeWhen
. В случае, если создается IExecutableExtension
, вместо этого можно использовать элемент defaultHandler
.
Начиная с 3.1
Идентификатор commandParameterType
, который указывает тип значения, возвращаемого данной командой.
Указание returnTypeId
позволяет клиентам, выполняющим данную команду, связать возвращаемое значение
с типом Java и преобразовать значение в форму строки, которая может быть сохранена и/или передана другой команде,
принимающей параметры такого же типа.
Начиная с 3.2
Идентификатор контекста справки, который относится к данной команде в общем. Обработчики могут переопределять этот идентификатор для предоставления более конкретной справки.
Начиная с 3.2
<!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
org.eclipse.core.commands.IParameterValues
. Если он опущен, то нужно указать более подробный элемент values
. Для подробностей, обратитесь к org.eclipse.core.runtime.IExecutableExtension
. <!ELEMENT commandParameterType EMPTY>
<!ATTLIST commandParameterType
id CDATA #REQUIRED
type CDATA #IMPLIED
converter CDATA #IMPLIED>
Определяет тип объекта commandParameter и может задавать подкласс org.eclipse.core.commands.AbstractParameterValueConverter
для преобразования значений параметров строки и объектов.
Начиная с 3.2
java.lang.Object
.org.eclipse.core.commands.AbstractParameterValueConverter
. Преобразователь должен создавать
и использовать объекты типа, указанного в атрибуте type
. Если этот класс не указан, эта возможность преобразования
значений строк и объектов для этого типа параметра будет недоступна (getValueConverter()
класса ParameterType
будет возвращать null
).<!ELEMENT values (parameter*)>
<!ATTLIST values
class CDATA #REQUIRED>
Более подробная версия атрибута values
в commandParameter
.
Начиная с 3.1
org.eclipse.core.commands.IParameterValues
. Если он опущен, то нужно указать более подробный элемент values
. Для подробностей, обратитесь к org.eclipse.core.runtime.IExecutableExtension
. <!ELEMENT parameter EMPTY>
<!ATTLIST parameter
name CDATA #REQUIRED
value CDATA #REQUIRED>
Возможное значение параметра.
Начиная с 3.1
IExecutableExtension
. IExecutableExtension
. <!ELEMENT defaultHandler (parameter)>
<!ATTLIST defaultHandler
class CDATA #REQUIRED>
Обработчик по умолчанию для этой команды. Этот обработчик используется если отсутствуют другие. Он будет конфликтовать с другими определениями обработчиков, которые не указывают условий activeWhen
. Если не создается IExecutableExtension
, вместо этого можно использовать атрибут defaultHandler
.
Начиная с 3.1
org.eclipse.core.commands.IHandler
. <!ATTLIST state
class CDATA #IMPLIED
id CDATA #REQUIRED>
Информация о состоянии, общая для всех обработчиков и потенциально постоянная для всех сеансов. Обычно это состояние переключателя или метка обработчика. state является просто классом, который загружается для отслеживания состояния. Дополнительные сведения приведены в информации по API.
Начиная с 3.2
org.eclipse.core.commands.State
.
Просмотрите информацию по API.
Уникальный идентификатор данного состояния. Применяется для сохранения состояния между сеансами (если состояние является экземпляром
org.eclipse.jface.commands.PersistentState
). Определенные стандартные идентификаторы (см.org.eclipse.jface.menus.IMenuStateIds
) распознаются при выводе команды в меню или панелях инструментов.
Идентификатор должен быть уникальным только в команде, определяющей состояние.
<!ATTLIST class
class CDATA #REQUIRED>
Класс, который может быть загружен для хранения состояния этой команды. Этот элемент применяется, если необходимо передать
org.eclipse.core.runtime.IExecutableExtension
несколько параметров.
Начиная с 3.2
org.eclipse.core.commands.State
.
Просмотрите информацию по API.<!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 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
.
id
) элемента keyConfiguration, который необходимо активизировать первым. id
) элемента keyConfiguration, который необходимо активизировать первым. <!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".
java.util.Locale
.platform
- это набор значений, возвращаемых org.eclipse.swt.SWT.getPlatform()
.schemeId
элемента key
в новой точке расширения "org.eclipse.ui.bindings". Последовательность клавиш, присвоенная команде. Последовательность клавиш состоят из одной или нескольких комбинаций клавиш клавиатуры, в которых клавиши могут нажиматься отдельно или в сочетании с одним или несколькими модификаторами: Ctrl, Alt, Shift и Command. Комбинации клавиш разделяются пробелами, а модификаторы - символами '+'.
Клавиши-модификаторы можно задавать в платформо-независимом формате. Например, в MacOS X, "Command" чаще всего используется в значении "Ctrl" на "персоналках". Поэтому "M1" преобразовывается в "Ctrl" или "Command", в зависимости от платформы. Аналогично, "M2" - это "Shift"; "M3" - это "Alt"; а "M4" - это "Ctrl" в MacOS X. В случае, если будут добавлены новые платформы, эти псевдонимы будут работать и на них.
Формат строки описывается подробно в org.eclipse.ui.internal.keys
. Строка обрабатывается без учета регистра -- хотя мы рекомендуем использовать заглавные буквы. Если клавиша представляет букву, просто укажите ее. В противном случае можно использовать константы: ARROW_DOWN, ARROW_LEFT, ARROW_RIGHT, ARROW_UP, BREAK, CAPS_LOCK, END, F1, F2, F3, F4, F5, F6, F7, F8, F9, F10, F11, F12, F13, F14, F15, HOME, INSERT, NUM_LOCK, NUMPAD_0, NUMPAD_1, NUMPAD_2, NUMPAD_3, NUMPAD_4, NUMPAD_5, NUMPAD_6, NUMPAD_7, NUMPAD_8, NUMPAD_9, NUMPAD_ADD, NUMPAD_DECIMAL, NUMPAD_DIVIDE, NUMPAD_ENTER, NUMPAD_EQUAL, NUMPAD_MULTIPLY, NUMPAD_SUBTRACT, PAGE_UP, PAGE_DOWN, PAUSE, PRINT_SCREEN и SCROLL_LOCK. Для непечатаемых символов доступны такие константы: BS, CR, DEL, ESC, FF, LF, NUL, SPACE, TAB и VT. Клавиша ввода на основной части клавиатуры - CR.
Точка расширения 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(...)
.
Для состояний обработчиков существует несколько реализаций по умолчанию, которые могут оказаться полезными для пользователей этой точки расширения:
Copyright (c) 2000, 2005 IBM Corporation и другие.
Все права защищены.
Эта программа и сопутствующие материалы распространяются на условиях Eclipse Public License v1.0, поставляемой вместе с продуктом и доступной на Web-сайте
http://www.eclipse.org/legal/epl-v10.html