org.eclipse.ui.actionSets

插件可以使用 org.eclipse.ui.actionSets 扩展点来向工作台菜单和工具栏添加菜单、菜单项和工具栏项。为了减少同时显示每个插件的菜单添加项而导致的混乱,可将添加项分成多个操作集,通过用户首选项来使这些操作集可视。

可以通过从工作台菜单中选择窗口 -> 定制透视图... 来查看已经向工作台添加了哪些操作集。此选项将显示一个对话框以列示命令组形式的操作集。命令组的选取标记表示该菜单和工具栏操作在工作台中可视。可以选择命令组的名称来查看右边的可用菜单和工具栏操作的列表。下图显示了工作台中可用的命令组的列表。(您的工作台的外观可能有些不同,这取决于您已经安装了哪些插件以及哪个透视图是活动的)。

带有操作集列表的“定制透视图”对话框

自述文件工具使用操作集来向工作台菜单添加几个不同的“打开自述文件浏览器”操作。(我们向资源导航器的弹出菜单添加了类似的操作)。标记如下:

<extension point = "org.eclipse.ui.actionSets">
   <actionSet id="org_eclipse_ui_examples_readmetool_actionSet"
   label="%ActionSet.name"
   visible="true">
   <menu id="org_eclipse_ui_examples_readmetool"
   label="%ActionSet.menu"
   path="window/additions">
            <separator name="slot1"/>
            <separator name="slot2"/>
            <separator name="slot3"/>
   </menu>
   <action id="org_eclipse_ui_examples_readmetool_readmeAction"
   menubarPath="window/org_eclipse_ui_examples_readmetool/slot1"
   toolbarPath="readme"
   label="%ReadmeAction.label"
   tooltip="%ReadmeAction.tooltip"
			   helpContextId="org.eclipse.ui.examples.readmetool.open_browser_action_context"
			   icon="icons/ctool16/openbrwsr.png"
			   class="org.eclipse.ui.examples.readmetool.WindowActionDelegate"
			   enablesFor="1">
			   <selection class="org.eclipse.core.resources.IFile"
					name="*.readme">
			   </selection>
		   </action>
		   ...
	   </actionSet>
   </extension>

哇,现在有很多工作要做!让我们一步一步地来,现在只查看第一个操作。

首先,声明操作集,并指定标签。标签“ReadMe Actions”(在插件的属性文件中为 %ActionSet.name 键定义的)用来显示上面显示的对话框中的操作集。由于我们将 visible 设置为“true”,对于工作台,一开始会在操作集列表中选择该操作集,并且这些操作将是可视的。

操作集声明的余下部分与定义将在其中出现操作的菜单以及操作本身有关。

我们定义一个菜单,其标签出现在工作台菜单中。菜单的路径告诉工作台将新菜单放在窗口菜单的添加项槽中。(有关菜单路径和槽的讨论,请参阅菜单和工具栏路径。)还会在新菜单中定义一些槽,以便可以在菜单中的特定位置插入操作。

此标记就足以使菜单出现在工作台窗口菜单中。

具有“自述文件编辑器”条目的工作台“窗口”菜单

接着,我们定义操作本身。

操作定义(标识标签图标 )类似于我们在视图、编辑器和弹出菜单中所看到的其它操作。此时我们将主要研究它们的区别:操作将转至何处?我们使用 menubarPathtoolbarPath 指示它的位置。首先,我们定义 menubarPath 以将操作添加至刚定义的菜单中的某个槽("window/org_eclipse_ui_examples_readmetool/slot1")。

具有菜单项的“自述文件编辑器”菜单

然后,我们定义新的 toolbarPath 以将操作插入到工作台工具栏中。因为我们已经定义了新的工具路径("readme"),因此工作台将根据其它插件的工具栏添加项来决定它转至何处。

具有自述文件操作的工作台工具栏

用户选择该操作时将会发生什么情况?在属性中指定的类将实现该操作。如果该操作将在工具栏中显示为下拉工具项,操作必须实现 IWorkbenchWindowActionDelegate IWorkbenchWindowPulldownDelegate。因为我们未创建下拉工具项,所以我们提供了 WindowActionDelegate。此类与 ObjectActionDelegate 相似。它在用户选择该操作时启动自述文件部分对话框。(我们将在应用程序对话框中讨论部分对话框。)

该操作还将为其菜单项和工具栏项提供启用条件。仅当选择单个(enablesFor="1")自述文件 (selectionClass ="org.eclipse.core.resources.IFile" name="*.readme")时,才会启用菜单和工具栏项。此操作的菜单和工具栏项的出现和启用取决于 plugin.xml 文件中的标记。在用户选择该操作和工作台运行操作之前,将不执行任何插件代码。

稍后我们将在可重定目标的操作的上下文中了解其它两个操作。