弹出菜单中的可见性

时间:2017-11-30 14:24:15

标签: plugins eclipse-plugin eclipse-rcp popupmenu eclipse-sirius

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

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

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

有人可以帮帮我吗?如何设置弹出菜单的可见性,以便只有当我右键单击带有扩展名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

此致 佳日

1 个答案:

答案 0 :(得分:1)

visibility只能是objectContribution 行动的孩子。

在任何情况下,您都可以使用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>

进一步将操作限制为“内容类型”为“Ant构建文件”

的文件

要匹配多个名称模式,请移除nameFilter并使用visibility之类的内容:

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