我想编写一个Eclipse插件,它使用选定的Project执行Action。我使用插件模板和子菜单。我的plugin.xml看起来像这样:
<extension
point="org.eclipse.ui.popupMenus">
<objectContribution
objectClass="org.eclipse.core.internal.resources.Project"
id="testplugin2.contribution1">
<menu
label="Propertie Manager"
path="additions"
id="testplugin2.menu1">
<separator
name="group1">
</separator>
</menu>
<action
label="list all *.properties"
class="testplugin2.popup.actions.ListPropertiesAction"
menubarPath="testplugin2.menu1/group1"
enablesFor="1"
id="testplugin2.projectAction">
</action>
</objectContribution>
</extension>
这适用于除javaProjects之外的所有内容。事实证明,javaProjects不是Projects。我希望在选择javaProjects或普通项目时显示此Action,而不是在选择其他内容时显示。
如果选择了javaProject或Project,如何使子菜单准确显示?
答案 0 :(得分:1)
我没有测试它,但也许这有效:
<objectcontribution ...>
<visibility>
<objectClass
name="org.eclipse.jdt.core.IJavaProject" />
</visibility>
</objectContribution>
您也可以尝试“启用”而不是“可见性”。
答案 1 :(得分:0)
您不应该引用对象类中的内部类。您应该使用公共界面
objectClass="org.eclipse.core.internal.resources.Project"
尝试
objectClass="org.eclipse.core.IProject"
我没有试过这个,但IJavaProject
应该适应IProject
,所以这对两者都有效。
答案 2 :(得分:0)
确保对象贡献的自适应属性设置为 true (默认为 false ):
adaptable="true"
@iain建议定位界面也是很好的做法。
刚试过你的例子,菜单在Java项目中按预期显示。
始终牢记对 org.eclipse.core.resources.IResource 的可附加性,以确保您的菜单,操作始终如一地显示和启用(无论是正在呈现的资源管理器或实际对象类) 。
最后,请注意不推荐使用 org.eclipse.ui.popupMenus 扩展点。
虽然根据我使用它的经验比推荐的 org.eclipse.ui.commands 更快更容易,但是当删除它时,您可能最终难以迁移所有菜单(即, if 在某些时候将其删除。)
干杯,