插件可以使用 org.eclipse.ui.actionSets 扩展点来为工作台菜单和工具栏添加菜单、菜单项和工具栏项。为了减少同时显示每个插件的菜单添加项所造成的混乱, 可将添加项分成多个操作集,通过用户首选项来使这些操作集可见。
可以通过从工作台菜单中选择透视图 -> 定制... 来查看已经向工作台添加了哪些操作集。这将为您显示一个对话框,该对话框列示了所有可用的操作集。操作集旁边的选择标记意味着菜单和工具栏操作在工作台中是可见的。可以选择操作集的名称来查看右边的可用操作的列表。下图显示了工作台中可用的操作集的列表。(您的工作台的外观可能有些不同,这取决于您已经安装了哪些插件以及哪个透视图是活动的)。
自述文件工具使用操作集来为工作台菜单添加“打开自述文件浏览器”操作。(我们为资源导航器的弹出菜单添加了类似的操作)。 标记如下:
<extension
point = "org.eclipse.ui.actionSets">
<actionSet id="org_eclipse_ui_examples_readmetool_actionSet"
label="ReadMe Actions"
visible="true">
<menu id="org_eclipse_ui_examples_readmetool"
label="Readme &File Editor"
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="&Open Readme
Browser@Ctrl+R"
tooltip="Open Readme Browser"
helpContextId="org.eclipse.ui.examples.readmetool.open_browser_action_context"
icon="icons/basic/ctool16/openbrwsr.gif"
class="org.eclipse.ui.examples.readmetool.WindowActionDelegate"
enablesFor="1">
<selection
class="org.eclipse.core.resources.IFile"
name="*.readme">
</selection>
</action>
</actionSet>
</extension>
哇,现在有很多工作要做!让我们一次执行一个步骤。
首先,声明操作集,并给定标号(label)。标号“ReadMe Actions”用来将操作集显示在以上所示的对话框中。由于我们将 visible 设置为“true”,对于工作台,最初会在操作集列表中选中该操作集,并且这些操作将是可见的。
操作集声明的余下部分与定义操作将在其中出现的菜单以及操作本身有关。
我们定义一个菜单,其标号(label)(“Readme &File Editor”)出现在工作台菜单中。菜单的路径(path)告诉工作台将新菜单放在 window 菜单的 additions 槽中。(有关菜单路径和槽的讨论,参见菜单和工具栏路径。) 我们在新菜单中定义了一些槽,可以在我们的菜单中的特定位置插入操作。
这就足以使菜单出现在工作台德窗口菜单中。
接着,我们定义操作本身。操作定义(id、label、icon 和 class ) 类似于我们在视图、编辑器和弹出菜单中所看到的其他操作。此时我们将主要研究它们的区别:操作将转至何处?我们使用 menubarPath 和 toolbarPath 来指示位置。首先,我们将操作添加到菜单中我们刚定义的槽中。
然后,我们定义新的 toolbarPath 来将操作插入到工作台工具栏中。由于它是新的工具路径,因此工作台将根据其他插件的工具栏添加项来决定它转至何处。
注意,还为此操作提供了启用条件。仅当选择了单个(enablesFor="1") 自述文件(selectionClass ="org.eclipse.core.resources.IFile" name="*.readme")时,才会启用新的菜单项和工具栏项。
这些菜单项和工具栏项的出现和启用仅取决于 plugin.xml 文件中的标记。在用户选择操作和工作台运行操作类之前,将不执行任何插件代码。
如果操作集是作为工具栏中的下拉菜单来显示的, 则操作类必须实现 IWorkbenchWindowActionDelegate 或 IWorkbenchWindowPulldownDelegate。由于没有创建工具栏下拉菜单,我们提供 WindowActionDelegate。此类与 ObjectActionDelegate 相似。当用户选择该操作时,它将启动自述文件小节对话框。我们将在应用程序对话框中看到小节对话框。