如何在Package Explorer中仅为目录创建弹出菜单项

时间:2013-10-14 11:29:38

标签: eclipse eclipse-plugin

我正在编写Eclispe(Kepler)插件。这个插件的主要目标是在PackageExplorer弹出菜单中添加“在资源管理器中打开”项。对于目录,包等,此项应该是可见的,但对于文件则不可见。我试过这个:

<menuContribution
    locationURI="popup:org.eclipse.jdt.ui.PackageExplorer">
    <command
          commandId="pl.com.tt.wide.lms.core.commands.sampleCommand"
          id="pl.com.tt.wide.lms.core.menus.sampleCommand"
          mnemonic="S">
        <visibleWhen>
               <with variable="activeMenuSelection">
                <iterate
                     ifEmpty="false">
                    <adapt type="org.eclipse.core.resources.IResource">
                        <test property="org.eclipse.core.resources.type" value="org.eclipse.core.resources.FOLDER"/>
                    </adapt>
                </iterate>
               </with>
        </visibleWhen>
    </command>
</menuContribution>

这不起作用。你对如何做到这一点有什么建议吗? 谢谢你的帮助。

2 个答案:

答案 0 :(得分:0)

我认为,首先我的想法不是隐藏菜单的元素,而是禁用它们。这为用户提供了至少一个提示,即可以使用命令,但不仅仅是现在。所以我使用“enableWhen”而不是“visibleWhen”。  否则,您会根据选择奇怪地更改菜单和项目顺序,这可能会增加混淆。特别是在Eclipse中,你被困惑所包围。 : - )

也许看看这个已经存在的插件:http://marketplace.eclipse.org/content/easyshell#.Ul6fNfnIZsg

答案 1 :(得分:0)

Package Explorer不仅使用org.eclipse.core.resources的类型,还使用org.ecliplse.jdt.core的类型。

查看IPackageFragmentIPackageFragmentRootIJavaProject。在or语句中使用这些可能会产生你想要的东西。

这对我有用:

<visibleWhen>
   <with variable="activeMenuSelection">
      <iterate ifEmpty="false">
         <or>
            <adapt type="org.eclipse.jdt.core.IJavaProject">
            </adapt>
            <adapt type="org.eclipse.jdt.core.IPackageFragmentRoot">
            </adapt>
            <adapt type="org.eclipse.jdt.core.IPackageFragment">
            </adapt>
         </or>
      </iterate>
   </with>
</visibleWhen>