带有子菜单的Eclipse-Plugin。 如何处理JavaProjects和Projects?

我想编写一个Eclipse插件,它使用选定的Project执行Action。 我使用插件模板和子菜单。 我的plugin.xml看起来像这样:

          

这适用于除javaProjects之外的所有内容。 事实certificate,javaProjects不是Projects。 我希望在选择javaProjects或普通项目时显示此Action,而不是在选择其他项目时显示。

如果选择了javaProject或Project,如何才能使子菜单准确显示?

我没有测试它,但也许这有效:

      

您也可以尝试“启用”而不是“可见性”。

弹出菜单上的eclipse帮助页面

您不应该引用对象类中的内部类。 您应该使用公共接口

 objectClass="org.eclipse.core.internal.resources.Project" 

尝试

 objectClass="org.eclipse.core.IProject" 

我没有尝试过这个,但IJavaProject应该适应IProject ,所以这应该适用于两者。

确保对象贡献的adaptable属性设置为true (默认为false ):

 adaptable="true" 

@iain建议以接口为目标也是不错的做法。

刚试过你的例子,菜单在Java项目中按预期显示。

始终牢记org.eclipse.core.resources.IResource的可附加性,以确保您的菜单,操作始终如一地显示和启用(无论是正在呈现的资源管理器还是实际的对象类)。

最后,请注意不推荐使用org.eclipse.ui.popupMenus扩展点。

虽然根据我使用它的经验比推荐的org.eclipse.ui.commands更快更容易,但是当删除它时(也就是说, 如果它在某些时候被删除),你最终可能很难迁移所有菜单。

干杯,