gpt4 book ai didi

xml - eclipse 菜单中的“Visiblewhen”。希望菜单仅针对特定文件扩展名出现

转载 作者:数据小太阳 更新时间:2023-10-29 02:23:56 26 4
gpt4 key购买 nike

编辑重述问题和我必须去的地方:

我现在将这个问题简化为一个非常小的例子:我有一个带有菜单的 eclipse 插件。它看起来像这样:

enter image description here

我希望该菜单仅在查看具有特定文件扩展名的文件时出现(在本例中假设为 .txt)。

使用下面 Greg 的回答,我有以下 plugin.xml 文件:

<?xml version="1.0" encoding="UTF-8"?>
<?eclipse version="3.4"?>
<plugin>
<extension
point="org.eclipse.ui.menus">
<menuContribution
locationURI="menu:org.eclipse.ui.main.menu?after=additions">
<menu
id="ARTful.menus.sampleMenu"
label="Hide Me"
mnemonic="M">
<command
commandId="ArtEditor.command.format"
id="ARTful.menus.sampleCommand"
mnemonic="S"
tooltip="Hello!">
</command>

<visibleWhen
checkEnabled="false">
<with variable="selection">
<iterate
ifEmpty="false">
<adapt type="org.eclipse.core.resources.IResource">
<test property="org.eclipse.core.resources.extension" value="txt" />
</adapt>
</iterate>
</with>
</visibleWhen>
</menu>
</menuContribution>
</extension>

</plugin>

使用此设置:

enter image description here

但不幸的是,这隐藏了所有文件扩展名的菜单。我究竟做错了什么?

原始问题如下

我已经尝试了在 visibleWhen for command to appear in context menu 找到的解决方案以及其他几个地方。

我有一个带有菜单的 eclipse 插件。它看起来像这样:

enter image description here

我希望该菜单仅在查看特定文件扩展名的文件时出现(它称为“源”,因此如果在安装插件的情况下查看 say java 文件,会突然出现两个“源”菜单,这就是只是毫无帮助)。

我正在使用“visibleWhen”结构。

我试过测试扩展属性:

enter image description here

(产生这个 plugin.xml 片段)

<menuContribution
locationURI="menu:org.eclipse.ui.main.menu?after=additions">
<menu
id="ARTful.menus.sampleMenu"
label="Source"
mnemonic="M">
<command
commandId="ArtEditor.command.format"
id="ARTful.menus.sampleCommand"
mnemonic="S"
tooltip="Format">
</command>
<command
commandId="ArtEditor.command.latex"
style="push"
tooltip="LaTex Output">
</command>
<command
commandId="ArtEditor.command.format.alpha"
style="push">
</command>
<visibleWhen
checkEnabled="false">
<test
property="org.eclipse.core.resources.extension"
value="art">
</test>
</visibleWhen>


</menu>

</menuContribution>

但菜单是完全隐藏的,即使我想显示。我也试过测试 name 属性......

enter image description here

给出:

  <visibleWhen
checkEnabled="false">
<test
property="org.eclipse.core.resources.name"
value="*.art">
</test>
</visibleWhen>

但还是隐藏了。我错过了什么?

最佳答案

你需要使用类似的东西:

<visibleWhen
checkEnabled="false">
<with variable="activeMenuSelection">
<iterate
ifEmpty="false">
<adapt type="org.eclipse.core.resources.IResource">
<test property="org.eclipse.core.resources.extension" value="art" />
</adapt>
</iterate>
</with>
</visibleWhen>

with 确定您正在使用事件的上下文菜单选择,这不是绝对必要的,因为它是默认设置。对于主菜单,with 值应该是 selection

当前选择的是一个列表,因此您需要使用iterate 逐步执行它。

在包或项目资源管理器等 View 中显示的对象实际上不是文件,而是表示文件的一些用户界面对象。您需要使用 adapt 调用用户界面对象上的适配器管理器来获取您想要的对象。我在这里使用了 IResource,因为 IFile 的适配器不太常见。

如果您为您的文件类型定义了一个内容类型,您可以使用如下内容:

<test property="org.eclipse.core.resources.contentTypeId" value="org.eclipse.jdt.core.javaSource" />

测试。这比依赖文件扩展名要灵活一些。我示例中显示的值适用于 Java 源文件。

要在特定编辑器处于事件状态时使用类似以下内容显示菜单:

<with
variable="activeEditorId">
<equals
value="org.eclipse.ant.ui.internal.editor.AntEditor">
</equals>
</with>

测试 Ant 编辑器。

关于xml - eclipse 菜单中的“Visiblewhen”。希望菜单仅针对特定文件扩展名出现,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/23977822/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com