我们正在开发一个eclipse-plugin,并为package-explorer中的context-menu做出了一些贡献。使用旧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>
- 标记中的内容,但我们找不到让它看文件名的解决方案。
有可能这样做吗?如果:怎么样?
答案 0 :(得分:1)
有一个Eclipse wiki page about Menu Contributions/IFile objectContribution可能有所帮助。我自己没有测试过,但是在使用命令框架时,基于动作的扩展的nameFilter
属性似乎可以替换为对id为org.eclipse.core.resources.name
的预定义属性测试器的替换。