弹出菜单中的可见性

Visibility in popup menus

我已经创建了一个eclipse 插件项目。我希望这个插件可以作为弹出窗口使用。因此,我用 "org.eclipse.ui.popupMenus" 创建了一个扩展点(我知道它现在已被弃用,我们的是一个旧项目。)

我希望此弹出选项仅出现在具有特定扩展名的文件级别(比如 xml)。目前,它出现在右键单击的任何位置。

我浏览了 Internet 并了解到我可以添加一个 "visibility" 标签来设置此弹出窗口应该可见的规则。但是,我不知道它的语法。

有人可以帮帮我吗?如何设置弹出菜单的可见性,使其仅在我右键单击扩展名为 xml?

的文件名时可见
    <?xml version="1.0" encoding="UTF-8"?>
    <?eclipse version="3.2"?>
    <plugin>
       <extension point="org.eclipse.ui.popupMenus">
          <objectContribution
                adaptable="true"
                objectClass="org.eclipse.core.resources.IFile"
                nameFilter="*.*"
                id="org.eclipse.lyo.tools.codegenerator.ui.popupMenus.contribution.IFile">
             <menu id="org.eclipse.acceleo.module.menu" label="Acceleo Model Code Generator" path="additionsAcceleo">
                   <groupMarker name="acceleo"/> 
             </menu>
             <action
                   class="org.eclipse.lyo.tools.codegenerator.ui.popupMenus.AcceleoGenerateCodegeneratorAction"
                   enablesFor="+"
                   id="org.eclipse.lyo.tools.codegenerator.ui.popupMenus.AcceleoGenerateCodegeneratorAction"
                   icon="icons/default.gif"
                   label="Generate Java Code from Model"
                   menubarPath="org.eclipse.acceleo.module.menu/acceleo"/>
                   <visibility>
                              //what should come here?

                   </visibility>
          </objectContribution>
       </extension>
    </plugin>

(http://help.eclipse.org/kepler/index.jsp?topic=%2Forg.eclipse.platform.doc.isv%2Freference%2Fextension-points%2Forg_eclipse_ui_popupMenus.html)

此致, 亚什

visibility 只能是 objectContribution not 操作的子项。

在任何情况下您都可以使用namefilter 属性来限制文件名匹配。您只会使用 visiblity 进行更复杂的检查。

例如,这是 JDT 项目之一:

 <objectContribution
        adaptable="true"
        objectClass="org.eclipse.core.resources.IFile"
        nameFilter="*.xml"
        id="org.eclipse.jdt.internal.ui.javadocexport.JavadocWizard">
     <visibility>
        <objectState name="contentTypeId" value="org.eclipse.ant.core.antBuildFile"/>
     </visibility>

在这个

adaptable="true"
objectClass="org.eclipse.core.resources.IFile"

限制对工作区文件的操作

nameFilter="*.xml"

将操作限制为以 .xml

结尾的文件
     <visibility>
        <objectState name="contentTypeId" value="org.eclipse.ant.core.antBuildFile"/>
     </visibility>

进一步将操作限制为 'content type' 为 'Ant build file'

的文件

要匹配多个名称模式,请删除 nameFilter 并使用 visibility,例如:

<visibility>
  <or>
        <objectState name="name" value="*.xml"/>
        <objectState name="name" value="*.java"/>
  </or>
</visibility>