我正在创建一个eclipse 4插件项目。我有一个显示模型元素的树查看器。
问题: 我需要根据我在树查看器上做的选择显示一个弹出菜单。 我厌倦了使用核心表达式,如链接中所述:
http://www.vogella.com/tutorials/EclipseRCP/article.html#menuadvanced_popup
但每当我用弹出菜单附加核心表达时,它就会消失。
如果我没有附加核心表达,则会显示所有元素的弹出菜单。
我还有别的办法让事情做对吗? 或者我应该采用不同的方法吗?
请查看我的Application.e4xmi文件的以下快照
我的核心表达式
的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
答案 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.selection
在IServiceConstants.ACTIVE_SELECTION