Warning: file_get_contents(/data/phpspider/zhask/data//catemap/6/eclipse/8.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Eclipse 如何在PackageExplorer中仅为目录创建弹出菜单项_Eclipse_Eclipse Plugin - Fatal编程技术网

Eclipse 如何在PackageExplorer中仅为目录创建弹出菜单项

Eclipse 如何在PackageExplorer中仅为目录创建弹出菜单项,eclipse,eclipse-plugin,Eclipse,Eclipse Plugin,我正在写Eclispe(开普勒)插件。这个插件的主要目标是在PackageExplorer弹出菜单中添加“在浏览器中打开”项。此项对于目录、包等应可见,但对于文件不可见。我试过这个: <menuContribution locationURI="popup:org.eclipse.jdt.ui.PackageExplorer"> <command commandId="pl.com.tt.wide.lms.core.commands.samp

我正在写Eclispe(开普勒)插件。这个插件的主要目标是在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>

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

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


也许可以看看这个已经存在的插件:

包资源管理器不仅使用类型
org.eclipse.core.resources
,而且还使用类型
org.ecliplse.jdt.core

查看
IPackageFragment
IPackageFragmentRoot
IJavaProject
。在
语句中使用它们可能会产生您想要的结果

这就是我的工作原理:

<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>

嘿,我现在也有同样的问题。我尝试使用
adapt type=“org.eclipse.core.resources.IContainer
IFolder
,但没有成功。到目前为止,我的搜索还没有找到任何解决方案。您找到解决方案了吗?