"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.runtimeorg.eclipse.core.resourcesorg.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>