可见菜单贡献错误显示

时间:2012-10-27 09:38:47

标签: eclipse eclipse-plugin

我在我的插件中创建了一个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条件,菜单条目仍会显示。

任何人都知道如何限制它只是右键点击项目?

1 个答案:

答案 0 :(得分:0)

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>