1

我创建了一个 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

问候, 亚什

4

1 回答 1

2

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并使用visibilitylike:

<visibility>
  <or>
        <objectState name="name" value="*.xml"/>
        <objectState name="name" value="*.java"/>
  </or>
</visibility>
于 2017-11-30T14:54:08.483 回答