我已经在我的插件中创建了一个eclipse菜单,只有在右键单击一个具有特定性质的项目时才会显示出来:
<menuContribution
allPopups="false"
locationURI="popup:org.eclipse.ui.popup.any?after=additions">
<menu
icon="ico/full/obj16/icon-logo-composer.png"
id="com.dubture.composer.lib.ui.menu"
label="Composer">
<visibleWhen
checkEnabled="false">
<iterate>
<adapt
type="org.eclipse.core.resources.IProject">
<and>
<test
property="org.eclipse.core.resources.projectNature"
value="com.dubture.composer.core.composerNature">
</test>
</and>
</adapt>
</iterate>
</visibleWhen>
</menu>
</menuContribution>visibleWhen条件似乎只有在右键单击项目时才起作用。只有当项目具有指定的性质时,才会显示菜单。
但是,当我右键单击其他地方(例如,在项目资源管理器中的某个空白区域或problems视图中)时,尽管存在adapt条件,菜单项仍会显示出来。
有人知道如何将其限制为仅右键单击项目吗?
发布于 2012-10-28 23:51:53
PropertyTester使用test属性
如果您将您的菜单贡献添加到popup:org.eclipse.ui.popup.any?after=additions,我相信它会随处可见,除非另有要求,否则您应该限制为popup:org.eclipse.ui.navigator.ProjectExplorer#PopupMenu
这段代码使用命令,但我认为您可以尝试混合使用您的需求,看看它是否有效
<menuContribution locationURI="popup:org.eclipse.ui.navigator.ProjectExplorer#PopupMenu">
<command
commandId="COMMANDID"
icon="icons/icon.png"
label="LABEL"
style="push">
<visibleWhen
checkEnabled="false">
<iterate
ifEmpty="false"
operator="and">
<instanceof
value="org.eclipse.core.resources.IProject">
</instanceof>
</iterate>
</visibleWhen>
</command>
</menuContribution>https://stackoverflow.com/questions/13098935
复制相似问题