"adapt" in visibleWhen for menuContribution always returns false
"adapt" in visibleWhen for menuContribution always returns false
我正在尝试遵循 Lars Vogel's tutorial on natures,但卡在定义菜单 visibleWhen
的位置。当我将以下内容添加到 menuContribution
中的 command
定义时:
<visibleWhen
checkEnabled="false">
<adapt
type="org.eclipse.core.resources.IProject">
</adapt>
</visibleWhen>
在 Project Explorer 中右键单击项目时,我的菜单项从未出现。
我仔细检查了我是否拥有所有必要的东西,如 org.eclipse.core.runtime
、org.eclipse.core.resources
和 org.eclipse.ui
作为依赖项。
我错过了什么?
您需要使用 <iterate>
,因为您正在测试的是一个可能包含多个项目的选择:
例如,这是 PDE API 分析工具命令定义之一:
<command
commandId="org.eclipse.pde.api.tools.ui.convert.javadocs"
style="push">
<visibleWhen
checkEnabled="false">
<iterate>
<adapt
type="org.eclipse.core.resources.IProject">
<test
property="org.eclipse.core.resources.projectNature"
value="org.eclipse.pde.api.tools.apiAnalysisNature">
</test>
</adapt>
</iterate>
</visibleWhen>
</command>
我正在尝试遵循 Lars Vogel's tutorial on natures,但卡在定义菜单 visibleWhen
的位置。当我将以下内容添加到 menuContribution
中的 command
定义时:
<visibleWhen
checkEnabled="false">
<adapt
type="org.eclipse.core.resources.IProject">
</adapt>
</visibleWhen>
在 Project Explorer 中右键单击项目时,我的菜单项从未出现。
我仔细检查了我是否拥有所有必要的东西,如 org.eclipse.core.runtime
、org.eclipse.core.resources
和 org.eclipse.ui
作为依赖项。
我错过了什么?
您需要使用 <iterate>
,因为您正在测试的是一个可能包含多个项目的选择:
例如,这是 PDE API 分析工具命令定义之一:
<command
commandId="org.eclipse.pde.api.tools.ui.convert.javadocs"
style="push">
<visibleWhen
checkEnabled="false">
<iterate>
<adapt
type="org.eclipse.core.resources.IProject">
<test
property="org.eclipse.core.resources.projectNature"
value="org.eclipse.pde.api.tools.apiAnalysisNature">
</test>
</adapt>
</iterate>
</visibleWhen>
</command>