命令

org.eclipse.ui.commands

2.1

org.eclipse.ui.commands 扩展点用来通过使用 commandcategory 元素声明命令和命令类别。命令是一些语义行为的抽象表示,而不是实际实现。这允许不同的开发者对他们各自的部分添加特定行为。例如,可能有一个“paste”命令,在编辑器中是一种实现,而在资源管理器窗口小部件中则是另一种实现。这些实现称为处理程序。也可以将命令看作声明性的函数指针或信号处理程序。

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

定义一个命令可理解的参数。参数是一种在执行时对处理程序提供更多信息的方式。例如,“show view”命令可能会采用一个视图作为参数。处理程序应可以理解这些参数,因此它们应视为跟 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>

commandParametervalues 属性的更详细版本。

起始版本: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>

状态信息在所有处理程序之间共享,并且可以在会话之间保留。这通常是类似于复选框状态或处理程序标签之类的内容。状态仅仅是为了管理状态而装入的类。请参阅 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 属性的多个这样的元素,则仅最后声明的那个元素(以读取插件注册表的顺序)才被认为是有效的。@deprecated 请改为使用“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>

此元素允许用户将键序列指定给命令。请在“org.eclipse.ui.bindings”扩展点中改为使用 key 元素。



org.eclipse.ui 插件中的 plugin.xml 文件广泛使用了 org.eclipse.ui.commands 扩展点。

通过使用 org.eclipse.ui.handlers.IHandlerService,可以向命令注册处理程序。通过调用 getService(IHandlerService.class),可以从各种工作台组件(例如工作台、工作台窗口和部件站点等)检索此处理程序。

通常,最好在 plugin.xml 中以静态方式声明所有命令。这是为了使用户能够将键绑定连接到命令。但是,可以在运行时声明命令。要完成此任务,请从工作台组件检索 org.eclipse.ui.commands.ICommandService,调用 getCommand(yourCommandID),然后调用 Command.define(...)

处理程序状态的几个缺省实现对于此扩展点的用户来说可能非常有用: