我正在编写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>
这不起作用。你对如何做到这一点有什么建议吗? 谢谢你的帮助。
答案 0 :(得分:0)
我认为,首先我的想法不是隐藏菜单的元素,而是禁用它们。这为用户提供了至少一个提示,即可以使用命令,但不仅仅是现在。所以我使用“enableWhen”而不是“visibleWhen”。 否则,您会根据选择奇怪地更改菜单和项目顺序,这可能会增加混淆。特别是在Eclipse中,你被困惑所包围。 : - )
也许看看这个已经存在的插件:http://marketplace.eclipse.org/content/easyshell#.Ul6fNfnIZsg
答案 1 :(得分:0)
Package Explorer不仅使用org.eclipse.core.resources
的类型,还使用org.ecliplse.jdt.core
的类型。
查看IPackageFragment
,IPackageFragmentRoot
和IJavaProject
。在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>