【问题标题】:Eclipse show context menu for specific types using visibleWhenEclipse 使用 visibleWhen 显示特定类型的上下文菜单
【发布时间】:2017-02-14 11:37:39
【问题描述】:

所以我正在开发一个 Eclipse 视图,它使用 CheckStateChangedEvent.ContainerCheckedTreeViewer 可视化我的自定义类型 my.application.Termorg.eclipse.swt.widgets.TreeTerm 是扩展org.eclipse.emf.ecore.EObject 的接口。

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

<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>

我尝试了几种方法,例如省略 &lt;iterate&gt; 元素或 checkEnabled。但是,无论我尝试什么,上下文菜单都会在我每次在我的视图中右键单击时显示,而不仅仅是在单击 Term 时显示。

我在这里错过了什么?

【问题讨论】:

  • Stephan,顺便问一下,Shift+F10 能否成功打开您的上下文菜单?

标签: java eclipse eclipse-rcp


【解决方案1】:

要使用activeMenuSelection,您的树必须是您的视图的选择提供程序。你设置这个:

getSite().setSelectionProvider(provider);

其中provider 实现ISelectionProvider。 JFace TreeViewer 已经实现 ISelectionProvider 所以这是通常使用的。如果您只是使用Tree,则必须自己编写。

【讨论】:

  • 我可能在我的问题中遗漏了那个细节(刚刚添加了它),但我已经在使用org.eclipse.ui.dialogs.ContainerCheckedTreeViewer,这是一个TreeViewer
  • 你给setSelectionProvider打过电话吗?您的树内容提供程序返回什么作为树的对象 - instanceof 将测试这些对象?
猜你喜欢
  • 1970-01-01
  • 2014-07-21
  • 2011-08-01
  • 1970-01-01
  • 2021-07-23
  • 1970-01-01
  • 2017-10-22
  • 1970-01-01
  • 2016-04-17
相关资源
最近更新 更多