org.eclipse.ui.popupMenus

org.eclipse.ui.popupMenus 扩展点允许插件添加到其它视图和编辑器的弹出菜单。

可以利用操作的标识将操作添加至特定弹出菜单(viewerContribution), 或通过将操作与特定对象类型相关联来添加操作(objectContribution)。

自述文件定义两者。让我们首先考察对象添加项。

<extension point = "org.eclipse.ui.popupMenus">
     <objectContribution
         id="org.eclipse.ui.examples.readmetool"
         objectClass="org.eclipse.core.resources.IFile"
    nameFilter="*.readme">
    <action id="org.eclipse.ui.examples.readmetool.action1"
       label="%PopupMenus.action"
       icon="icons/ctool16/openbrwsr.gif"
      menubarPath="additions"
       helpContextId="org.eclipse.ui.examples.readmetool.open_browser_action_context"
       class="org.eclipse.ui.examples.readmetool.PopupMenuActionDelegate"	
       enablesFor="1">
   </action>
 </objectContribution>
 	 ...

对象添加项

为对象类 IFile 添加了操作“显示自述文件操作”。这意味着如果选择了 IFile 对象, 则包含 IFile 对象的任何视图将显示添加项。我们看到,使用名称过滤器(nameFilter="*.readme")来进一步限制了选择标准, 并且是对单个选择(enablesFor="1")进行限制。正如我们以前讨论的那样,在实际选择菜单项之前,此菜单的注册不会运行插件中的任何代码。

当选择了菜单项时,工作台将运行指定的类。由于将弹出菜单声明为 objectContribution, 所提供的类必须实现 IObjectActionDelegate

操作是在 PopupMenuActionDelegate 中实现的。

public void run(IAction action) {
      MessageDialog.openInformation(
         this.part.getSite().getShell(),
         "Readme Example",
         "Popup Menu Action executed");
   }

当我们从资源导航器中选择自述文件时,就可以看到弹出菜单添加项。

查看器添加项

查看器添加项用来使用其标识添加至特定视图或编辑器的弹出菜单。以下是自述文件工具的查看器添加项:

      ...
      <viewerContribution
        id="org.eclipse.ui.examples.readmetool2"
        targetID="org.eclipse.ui.examples.readmetool.outline">
    <action id="org.eclipse.ui.examples.readmetool.action1"
       label="%PopupMenus.action"
       icon="icons/ctool16/openbrwsr.gif"
      menubarPath="additions"
       helpContextId="org.eclipse.ui.examples.readmetool.open_browser_action_context"
       class="org.eclipse.ui.examples.readmetool.ViewActionDelegate">	
   </action>
       </viewerContribution>
   </extension>
注意:名称 viewerContribution 有点让人容易误解,原因是它与 JFace 查看器不相关。更好的名称是 popupMenuContribution

当扩展是 viewerContribution 时, 则提供的类必须实现 IEditorActionDelegateIViewActionDelegate 接口, 这取决于是将操作添加至编辑器的弹出菜单还是添加至视图的弹出菜单。

targetID 指定将改变其弹出菜单的视图。 在此情况下,我们正在将操作添加至作为自述文件工具视图之一的大纲图。 该操作自身与我们看到的其它操作相似。我们指定操作的标识标号图标, 以及添加项在弹出菜单中的路径。该操作将仅显示在自述文件大纲视图的弹出菜单中。

viewerContribution 添加至 popupMenus 扩展点所需的接口与 viewActions editorActions 扩展点所需的接口相同。如果想要为弹出菜单以及视图或编辑器的本地菜单添加相同的操作, 则可以对这两个扩展使用相同的类。

Copyright IBM Corporation and others 2000, 2003.