在Eclipse插件中启用/禁用菜单项

6
我已经创建了一个包含一个菜单项的弹出式菜单,我希望只有在我右键单击某个特定类别的树状项目时才启用它,否则禁用它。
我该如何实现这一点?
2个回答

8
你可以添加一个处理程序,使用activeWhen并将其与该菜单的命令ID关联。
以下是一个处理程序示例,只有在当前选择不为空且所选内容可适配为Widget对象时,才使命令处于活动状态:
<extension point="org.eclipse.ui.handlers">
  <handler class="com.myproject.handlers.ExportWidgetHandler"
           commandId="com.myproject.commands.exportWidget">
     <activeWhen>
        <with variable="selection">
           <iterate ifEmpty="false" operator="and">
              <adapt type="com.myproject.objects.Widget"/>
           </iterate>
        </with>
     </activeWhen>
  </handler>
</extension>

这里的widget是什么意思?它是我想在选择其对象时激活菜单的类吗? - becks
1
没错。您可以拥有一个充满小部件的TableViewer;当其中一个被选中时,您的菜单将处于活动状态。您还可以拥有一个充满WidgetAndDongle对象的TableViewer,并且为您的插件注册了一个WidgetAndDongleToWidgetAdapter类,该类通过提取并返回仅Widget部分来适配WidgetAndDongle对象。在这种情况下,菜单也将处于活动状态,因为所选项目(WidgetAndDongle)可以适配为Widget - stracka

0

我们可以通过重载 Handler 类的 isEnabled 方法来启用或禁用菜单项。以下是示例代码:

@Override
public boolean isEnabled() {
    return false;
}

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接