我在我的插件中创建了一个eclipse menucontribution,只有在右键单击具有特定性质的项目时才会显示:
<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条件似乎才有效。仅当项目具有指定的性质时才会显示菜单。
但是,当我右键单击其他位置时(例如,在项目资源管理器中的某个空白区域或问题视图内),尽管有adapt
条件,菜单条目仍会显示。
任何人都知道如何限制它只是右键点击项目?
答案 0 :(得分:0)
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>