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

时间:2017-03-13 11:17:26

标签: eclipse eclipse-plugin eclipse-rcp

我想要的是将一个菜单项添加到Package Explorer和Eclipse的Project Explorer中,只有在我右键单击项目元素时才能看到它。

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

我想要的是仅在从项目/包浏览器右键单击项目元素时才出现的命令。

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

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

这可以通过添加属性来实现吗?我很困惑如何使用它。我是否需要为Package and Project Explorers添加一个点击监听器?

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

2 个答案:

答案 0 :(得分:1)

您使用visibleWhen扩展点中command的{​​{1}}元素来控制可见性。

对于项目,您需要检查当前选择是否适应org.eclipse.ui.menus界面:

IProject

迭代当前选择中的对象。

所选对象将是属于当前视图的一些用户界面对象,通常这些对象不直接实现<visibleWhen checkEnabled="false"> <iterate> <adapt type="org.eclipse.core.resources.IProject"> </adapt> </iterate> </visibleWhen> 界面。相反,可以使用Eclipse适配器管理器将对象“调整”到接口(请参阅IProjectIAdapterManagerIAdapterFactory接口)。 IAdaptable元素正在测试是否可以调整选择对象。

答案 1 :(得分:0)

checkEnabled指示在使弹出菜单可见之前是否检查处理程序的enableWhen约束。 如果checkEnabled为true,则当条件满足时,eclipse会检查相应的Handler的启用,如果满足条件,则弹出菜单可见,否则不可见。 如果checkEnabled为false,则弹出菜单菜单将可见,而无需检查处理程序的enableWhen条件。但是visibleWhen可以具有自己的表达式来启用或禁用菜单。