0

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

任何人都知道如何将其限制为仅右键单击项目?

4

1 回答 1

0

test属性由PropertyTester使用

如果您将 menucontribution 添加到 ,我相信它可以显示在任何地方,除非另有要求,否则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>
于 2012-10-28T15:51:52.810 回答