2

我正在编写 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>

这是行不通的。你有什么建议如何做到这一点?谢谢你的帮助。

4

2 回答 2

0

包资源管理器不仅使用类型,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>
于 2013-11-25T02:09:07.103 回答
0

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

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

于 2013-10-16T14:40:46.590 回答