1

我们正在开发一个 eclipse-plugin 并对 package-explorer 中的上下文菜单做出一些贡献。使用 old org.eclipse.ui.popupMenus,我们可以在贡献中指定一个名称过滤器,因此仅当所选文件具有特定名称时才会显示菜单条目:

<extension
         point="org.eclipse.ui.popupMenus">
    <objectContribution
            adaptable="false"
            id="..."
            nameFilter="file.xml"
            objectClass="org.eclipse.core.resources.IFile">
        ...
    </objectContribution>
</extension>

现在,我们想使用的方式来创建上下文菜单,如果它没有文件,也可以禁用该条目:

   <extension
         point="org.eclipse.ui.menus">
      <menuContribution
            allPopups="false"
            locationURI="popup:org.eclipse.jdt.ui.PackageExplorer">
         <command
               commandId="..."
               label="..."
               style="push">
         </command>
      </menuContribution>
   </extension>
   <extension
         point="org.eclipse.ui.commands">
      <command
            id="..."
            name="...">
      </command>
   </extension>
   <extension
         point="org.eclipse.ui.handlers">
      <handler
            class="..."
            commandId="...">
         <activeWhen>
            <with
                  variable="selection">
               <iterate
                     ifEmpty="false"
                     operator="and">
                  <adapt
                        type="org.eclipse.core.resources.IFile">
                  </adapt>
               </iterate>
            </with>
         </activeWhen>
      </handler>
   </extension>

(同时比较:在 Eclipse 插件中启用/禁用菜单项

但是,我们不仅希望在没有选择文件时禁用该条目,而且在文件不是 xml 文件时禁用该条目。我们试图破解<activeWhen>-tag 中的某些内容,但我们找不到让它也监视文件名的解决方案。

有可能这样做吗?如果:如何?

4

1 回答 1

1

有一个关于 Menu Contributions/IFile objectContribution 的 Eclipse wiki 页面可能会有所帮助。我自己没有测试过,但是在使用命令框架时,nameFilter基于操作的扩展的属性似乎可以替换为调用带有 id 的预定义属性测试器。org.eclipse.core.resources.name

于 2012-12-10T15:56:33.560 回答