Eclipse 4.x弹出菜单可见性基于树查看器选择

时间:2014-04-01 06:03:03

标签: eclipse popup e4

我正在创建一个eclipse 4插件项目。我有一个显示模型元素的树查看器。

问题: 我需要根据我在树查看器上做的选择显示一个弹出菜单。 我厌倦了使用核心表达式,如链接中所述:

http://www.vogella.com/tutorials/EclipseRCP/article.html#menuadvanced_popup

但每当我用弹出菜单附加核心表达时,它就会消失。

如果我没有附加核心表达,则会显示所有元素的弹出菜单。

我还有别的办法让事情做对吗? 或者我应该采用不同的方法吗?

请查看我的Application.e4xmi文件的以下快照

enter image description here

我的核心表达式

的plugin.xml文件定义
      <definition
            id="xxx.abc.project.addchilddefinition">
        <with variable="org.eclipse.ui.selection">
         <iterate
               ifEmpty="false"
               operator="or">
            <instanceof
                  value="xxx.abc.project.model.ObjectName">
            </instanceof>
         </iterate>
       </with>
      </definition>

我已使用以下代码段注册了我的弹出菜单:

menuService.registerContextMenu(treeviewer.getControl(),                                 &#34; xxx.abc.project.popupmenu.addchild&#34);

menuService是EMenuService对象和&#34; xxx.abc.project.popupmenu.addchild&#34;是我的popupmenu id

1 个答案:

答案 0 :(得分:1)

您需要使用with元素来指定应该使用选择:

<definition
    id="xxx.abc.project.addchilddefinition">
  <with
     variable="org.eclipse.ui.selection">
    <iterate
         ifEmpty="false"
         operator="or">
      <instanceof
            value="xxx.abc.project.model.ObjectName">
      </instanceof>
   </iterate>
</with>

当树选择发生变化时,您还必须调用ESelectionService setSelection(Object)方法。

选择变量org.eclipse.ui.selectionIServiceConstants.ACTIVE_SELECTION

中定义