操作集

标识符:org.eclipse.ui.actionSets

描述:此扩展点用来将菜单、菜单项和工具栏按钮添加到工作台窗口中的公共区域。将这些添加项统称为操作集并按用户首选项依次出现在工作台窗口中。

配置标记:

   <!ELEMENT actionSet (menu)* (action)* (description?)>
   <!ATTLIST actionSet
      id        CDATA #REQUIRED
      label     CDATA #REQUIRED
      visible   (true | false) #IMPLIED
    >
    <!ELEMENT description (#PCDATA)>

   <!ELEMENT menu (separator)+ (groupMarker)*>
   <!ATTLIST menu
      id         CDATA #REQUIRED
      label      CDATA #REQUIRED
      path       CDATA #IMPLIED
   >    <!ELEMENT separator EMPTY>
   <!ATTLIST separator
      name       CDATA #REQUIRED
   >
  • name — 可在以后作为操作路径中的最后一个标记引用的分隔符的名称。因此,分隔符充当可将操作和子菜单添加到其中的命名组。
  •    <!ELEMENT groupMarker EMPTY>
       <!ATTLIST groupMarker
          name       CDATA #REQUIRED
       >
  • name — 以后在操作路径中可以作为最后一个标记来引用的组标记的名称。
  •    <!ELEMENT action (selection)* (enablement)?>
       <!ATTLIST action
          id                NMTOKEN #REQUIRED
          label             CDATA #REQUIRED
          accelerator       CDATA #IMPLIED
          definitionId      CDATA #IMPLIED
          menubarPath       CDATA #IMPLIED
          toolbarPath       CDATA #IMPLIED
          icon              CDATA #IMPLIED
          disabledIcon      CDATA #OPTIONAL
          hoverIcon         CDATA #OPTIONAL
          tooltip           CDATA #IMPLIED
          helpContextId     CDATA #IMPLIED
          state             (true | false) #IMPLIED
          pulldown          (true | false) #IMPLIED
          class             CDATA #OPTIONAL
          retarget          (true | false) #OPTIONAL
          allowLabelUpdate  (true | false) #OPTIONAL
          enablesFor        CDATA #IMPLIED
       >    <!ELEMENT selection EMPTY>
       <!ATTLIST selection
          class             CDATA #REQUIRED
          name              CDATA #IMPLIED
       >    <!ELEMENT enablement (and | or | not | objectClass | objectState | systemProperty | pluginState)*>
       <!ATTLIST enablement EMPTY>
    在 Eclipse 的版本 2.0 中,启用元素可用来定义操作的启用。有关使用启用元素的更多信息,参考 actionExpressions.html
    示例:

    下面是操作集的一个示例(注意子元素以及使用属性的方式):

        <extension point = "org.eclipse.ui.actionSets">
            <actionSet id="com.xyz.actionSet"
                label="My Actions"
                visible="true">
                <menu id="com.xyz.xyzMenu"
                    label="XYZ Menu"
                    path="additions">
                    <separator name="group1"/>
                </menu>
                <action id="com.xyz.runXYZ"
                    label="&amp;Run XYZ Tool"
                    menubarPath="com.xyz.xyzMenu/group1"
                    toolbarPath="Normal/XYZ"
                    icon="icons/runXYZ.gif"
                    tooltip="Run XYZ Tool"
                    helpContextId="com.xyz.run_action_context"
                    class="com.xyz.actions.RunXYZ"
                    enablesFor="1">
                    <selection class="org.eclipse.core.resources.IFile" name="*.java"/>
                </action>
                <action id="com.xyz.runABC"
                    label="&amp;Run ABC Tool"
                    menubarPath="com.xyz.xyzMenu/group1"
                    toolbarPath="Normal/XYZ"
                    icon="icons/runABC.gif"
                    tooltip="Run ABC Tool"
                    helpContextId="com.xyz.run_abc_action_context"
                    retarget="true"
                    allowLabelUpdate="true">
                </action>
            </actionSet>
        </extension>

    在上面的示例中,指定的操作(名为“My Actions”)在每一个透视图内最初是可视的。它将仅支持单个选择(enablesFor 属性)。另外,选择中的对象还必须实现指定的接口(IFile)且必须是 Java 文件。

    API 实现:class 属性的值必须是实现 org.eclipse.ui.IWorkbenchWindowActionDelegateorg.eclipse.ui.IWorkbenchWindowPulldownDelegate 的类的全限定名。后者应在 pulldown 为 true 的情况下实现。尽可能迟地装入此类以避免在真正需要整个插件之前就装入该插件。

    操作扩展的启用标准最初是由 enablesFor,selection启用定义的。然而,一旦将操作委托实例化,它就可以直接在它的 selectionChanged 方法中控制操作启用状态。

    注意,工作台不会为插件生成菜单:菜单路径必须引用已经存在的菜单,了解这一点是很重要的。

    操作和菜单标号可包含使用以下规则编码助记符和加速键的特殊字符:

    1. 在转换的文本中,是在所选字符前面加与号(“&”)字符来指定助记符的。由于 XML 字符串中不允许有与号,所以使用 &amp; 字符实体。
    2. 可选加速键是在名称字符串末尾指定的,其方法是使用 @ 后跟一系列修饰符,最后跟一个加速键字符(例如:&amp;Save@Ctrl+S)。可将“+”号用作定界符来将修饰符链接起来(如 @Ctrl+Shift+S)。
    如果通过单个扩展将两个或多个操作添加到了菜单或工具栏中,则这些操作出现的次序将与 plugin.xml 文件中列示它们的次序相反。此行为很明显不是直观的。然而,在冻结“Eclipse 平台 API”之后可以发现它。现在更改该行为将破坏依赖于现有行为的每个插件。

    提供的实现:插件可使用此扩展点来添加新的顶级菜单(例如:调试)。插件还可定义允许其它插件将其操作添加到组中的命名组。

    顶级菜单是通过使用 path 属性的下列值来创建的:

    省略 path 属性会导致将新菜单添加到 additions 菜单栏组中。

    工作台窗口中的缺省组是在 IWorkbenchActionConstants 接口中定义的。这些常量可在用于动态添加的代码中使用。还可将这些值复制到 XML 文件中以与现有的工作台菜单和工具栏进行精细的集成。

    工作台窗口中的各种菜单和工具栏项是从算法上定义的。在这些情况下,必须使用独立的机制来扩展窗口。例如,添加新的工作台视图将导致新的菜单项出现在“窗口”菜单中。还会自动将“导入”、“导出”和“新向导”扩展添加到窗口中。
     

    Copyright IBM Corporation and others 2000, 2002.