【发布时间】:2012-12-10 14:34:46
【问题描述】:
我们正在开发一个 eclipse 插件,并为 package-explorer 中的上下文菜单做出了一些贡献。使用旧的org.eclipse.ui.popupMenus,我们可以在贡献中指定一个名称过滤器,因此仅当所选文件具有特定名称时才会显示菜单条目:
<extension
point="org.eclipse.ui.popupMenus">
<objectContribution
adaptable="false"
id="..."
nameFilter="file.xml"
objectClass="org.eclipse.core.resources.IFile">
...
</objectContribution>
</extension>
现在,我们想使用 new 方式来创建该上下文菜单,并且如果它没有文件,也可以禁用该条目:
<extension
point="org.eclipse.ui.menus">
<menuContribution
allPopups="false"
locationURI="popup:org.eclipse.jdt.ui.PackageExplorer">
<command
commandId="..."
label="..."
style="push">
</command>
</menuContribution>
</extension>
<extension
point="org.eclipse.ui.commands">
<command
id="..."
name="...">
</command>
</extension>
<extension
point="org.eclipse.ui.handlers">
<handler
class="..."
commandId="...">
<activeWhen>
<with
variable="selection">
<iterate
ifEmpty="false"
operator="and">
<adapt
type="org.eclipse.core.resources.IFile">
</adapt>
</iterate>
</with>
</activeWhen>
</handler>
</extension>
(同时比较:Enable/disable menu item in Eclipse plugin)
但是,我们不仅要在没有选择文件时禁用该条目,而且在文件不是 xml 文件时禁用。我们试图破解 <activeWhen>-tag 中的某些内容,但我们找不到让它也监视文件名的解决方案。
有没有可能做到这一点?如果:如何?
【问题讨论】: