Eclipse 插件 - 使菜单项仅在选择特定元素时可见

Eclipse Plugin - Make a menu Item visible only when a particular element is selected

我想要的是在Eclipse的Package Explorer和Project Explorer中添加一个菜单项,只有当我右键单击一个项目Element时才可见。

到目前为止我所做的是 - 向 Package 和 Project Explorer 添加了一个菜单项,但是从任何地方右键单击都可以看到它们。

我想要的是仅当从 project/package 资源管理器中右键单击项目元素时才显示的命令。

如果有人右键单击任何项​​目中的包或任何文件夹,我不希望菜单项可见。

Right Click on Project -> Menu Item Visible
Right Click on any other resource in the project -> Menu Item not present

这可以通过添加属性实现吗?我对如何使用它感到困惑。我是否需要为 Package 和 Project Explorer 添加点击侦听器?

我正在为 Eclipse Indigo 编写这个插件。

您在 org.eclipse.ui.menus 扩展点中使用 commandvisibleWhen 元素来控制可见性。

对于项目,您需要检查当前选择是否适配IProject界面:

<visibleWhen
       checkEnabled="false">
   <iterate>
      <adapt
          type="org.eclipse.core.resources.IProject">
      </adapt>
   </iterate>
</visibleWhen>

循环遍历当前选择中的对象。

被选中的对象将是一些属于当前视图的用户界面对象,通常这些对象不直接实现IProject接口。相反,可以使用 Eclipse 适配器管理器将对象 'adapt' 连接到接口(请参阅 IAdapterManagerIAdapterFactoryIAdaptable 接口)。 adapt 元素正在测试是否可以调整选择对象。

checkEnabled 指示在使弹出菜单可见之前是否检查处理程序的enableWhen 约束。 如果 checkEnabled 为真,则 eclipse 会检查相应的 Handler 是否已启用,如果满足条件,则弹出菜单可见,否则不可见。 如果 checkEnabled 为 false,则弹出菜单菜单将在不检查处理程序的 enableWhen 的情况下可见 criteria.However visibleWhen 可以有自己的表达式来启用或禁用菜单。