我有一个由此扩展点定义的菜单:org.eclipse.ui.menus
。
它的位置URI是popup:org.eclipse.ui.popup.any
,这意味着它也可以从不同的资源管理器视图和编辑器视图中显示(右键单击代码上的某个位置)。
我希望此菜单仅显示某些扩展程序。我使用了来自here的greg的答案,它对于资源管理器的观点非常有用。 如何为编辑器视图执行相同的过滤器 ?
我希望以某种方式更改它,如果有人右键单击文件的编辑器视图(以及浏览器视图),只有当它是“* .myextension”文件时才会显示。
感谢。
尝试合并过滤器 - 按照greg的回答,这是我的代码无法正常工作。
<visibleWhen
checkEnabled="false">
<iterate
ifEmpty="false"
operator="or">
<or>
<test
property="org.eclipse.core.resources.name"
value="*.myextension">
</test>
</or>
<or>
<with variable="activeEditorInput">
<adapt type="org.eclipse.core.resources.IResource">
<test
property="org.eclipse.core.resources.name"
value="*.myextension">
</test>
</adapt>
</with>
</or>
</iterate>
</visibleWhen>
答案 0 :(得分:1)
对于编辑器,您可以使用以下内容测试“活动编辑器输入”:
<visibleWhen
checkEnabled="false">
<with variable="activeEditorInput">
<adapt type="org.eclipse.core.resources.IResource">
<test
property="org.eclipse.core.resources.name"
value="*.myextension">
</test>
</adapt>
</with>
</visibleWhen>
这是主动编辑器输入,获取正在编辑的IResource
并进行测试。
组合可能会给:
<visibleWhen
checkEnabled="false">
<or>
<with variable="activeEditorInput">
<adapt type="org.eclipse.core.resources.IResource">
<test
property="org.eclipse.core.resources.name"
value="*.myextension">
</test>
</adapt>
</with>
<iterate
ifEmpty="false"
operator="or">
<test
property="org.eclipse.core.resources.name"
value="*.myextension">
</test>
</iterate>
</or>
</visibleWhen>