【问题标题】:Eclipse plugin: Disable context menu contributon if no xml is selectedEclipse 插件:如果未选择 xml,则禁用上下文菜单贡献
【发布时间】:2012-12-10 14:34:46
【问题描述】:

我们正在开发一个 eclipse 插件,并为 package-explorer 中的上下文菜单做出了一些贡献。使用旧的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>

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

   <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>

(同时比较:Enable/disable menu item in Eclipse plugin

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

有没有可能做到这一点?如果:如何?

【问题讨论】:

    标签: eclipse eclipse-plugin


    【解决方案1】:

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

    【讨论】:

    • 谢谢,链接给了我答案的提示:)。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2015-08-02
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2010-11-27
    • 1970-01-01
    相关资源
    最近更新 更多