Java Eclipse使用visibleWhen显示特定类型的上下文菜单

Java Eclipse使用visibleWhen显示特定类型的上下文菜单,java,eclipse,eclipse-rcp,Java,Eclipse,Eclipse Rcp,因此,我正在开发一个Eclipse视图,它使用CheckStateChangeDevelopent.ContainerCheckedTreeViewer来可视化我的自定义类型my.application.Term的org.Eclipse.swt.widgets.TreeTerm是扩展org.eclipse.emf.ecore.EObject的接口 我只想在单击术语时显示包含多个命令的上下文菜单 <menuContribution locationURI="popup:my.appl

因此,我正在开发一个Eclipse视图,它使用
CheckStateChangeDevelopent.ContainerCheckedTreeViewer来可视化我的自定义类型
my.application.Term
org.Eclipse.swt.widgets.Tree
Term
是扩展org.eclipse.emf.ecore.EObject
的接口

我只想在单击
术语时显示包含多个命令的上下文菜单

<menuContribution
    locationURI="popup:my.application.View">
    <command
        commandId="my.application.renameterm"
        tooltip="Rename this term">
         <visibleWhen
            checkEnabled="false">
            <with variable="activeMenuSelection">
                <iterate
                    ifEmpty="false">
                    <instanceof value="my.application.Term"/>
                </iterate>
            </with>
        </visibleWhen>
    </command>  
</menuContribution>

我尝试过几种方法,比如省略
元素或
选中启用的
。但是,与我尝试的内容无关,上下文菜单显示每次我在视图中右键单击时,而不仅仅是在单击
术语时


我在这里遗漏了什么?

要使用
activeMenuSelection
您的树必须是视图的选择提供程序。您可以将其设置为:

getSite().setSelectionProvider(provider);

其中
provider
实现
ISelectionProvider
。JFace
TreeViewer
已经实现了
ISelectionProvider
,因此这是通常使用的。如果您只是使用
Tree
,您将不得不编写自己的

我可能在我的问题中漏掉了这个细节(只是添加了它),但我已经在使用
org.eclipse.ui.dialogs.container-checkedtreeviewer
,这是一个
TreeViewer
。你有没有打电话给
setSelectionProvider
?树内容提供程序返回什么作为树的对象-这些对象将由
instanceof
进行测试?Stephan,作为旁白,Shift+F10是否成功打开了上下文菜单?