gpt4 book ai didi

java - 可见命令何时出现在上下文菜单中

转载 作者:行者123 更新时间:2023-12-04 06:47:41 25 4
gpt4 key购买 nike

我正在尝试使用 menuContribution 中的“visibleWhen”表达式在上下文菜单中配置命令的可见性。我想要做的是仅在以下情况下使命令在上下文菜单中可见:

  • 在资源 View (或包 View )中右键单击某些文件类型(资源)
  • 右键单击打开文件类型的相应编辑器。它可以检测我的编辑器是否打开或编辑器打开了某个资源。

  • 我已经完成了第一个使用 'visibleWhen'>'selection(with)'>'iterate'>'org.eclipse.core.resources.IResource(adapt)' 然后检查资源的文件扩展名。下面列出了代码。但是,我不确定如何使相同的命令仅在您右键单击正确的编辑器时才出现,该编辑器打开了具有正确扩展名的文件 - ext1、ext2。

    检查我的编辑器是否处于 Activity 状态解决了第二个问题,但似乎没有帮助,因为如果我单击不是我的类型的文件,它仍会在上下文菜单中显示命令。

    有什么建议吗?
    “Eclipse 插件(第 3 版)”显示了编辑器上下文菜单的一些示例,但它使用操作,我想坚持使用命令。

    谢谢!!
      <menuContribution
    allPopups="false"
    locationURI="popup:org.eclipse.ui.popup.any?before=additions">
    <separator
    name="com.test.ide.separator1"
    visible="true">
    </separator>
    <menu
    icon="icons/sample.gif"
    label="Test Menu">
    <command
    commandId="com.test.commands.testCommand1"
    icon="icons/sample.gif"
    label="testCommand1"
    style="push"
    tooltip="This is a test command">
    <visibleWhen
    checkEnabled="false">
    <with
    variable="selection">
    <iterate
    ifEmpty="false"
    operator="or">
    <adapt
    type="org.eclipse.core.resources.IResource">
    <or>
    <test
    property="org.eclipse.core.resources.extension"
    value="ext1">
    </test>
    <test
    property="org.eclipse.core.resources.extension"
    value="ext2">
    </test>
    </or>
    </adapt>
    </iterate>
    </with>
    </visibleWhen>
    </command>
    </menu>
    </menuContribution>

    最佳答案

    @blissfool,我建议稍微调整一下。您可以将基本测试(这是正确的)放在 org.eclipse.core.expressions.definitions 中堵塞:

    <extension point="org.eclipse.core.expressions.definitions">
    <definition id="org.eclipse.example.testExtension">
    <adapt type="org.eclipse.core.resources.IResource">
    <or>
    <test property="org.eclipse.core.resources.extension"
    value="ext1">
    </test>
    <test property="org.eclipse.core.resources.extension"
    value="ext2">
    </test>
    </or>
    </adapt>
    </definition>
    </extension>

    然后在你可见时移动 activeEditorInput测试到顶部:
    <visibleWhen>
    <or>
    <with variable="selection">
    <iterate ifEmtpy="false">
    <reference definitionId="org.eclipse.example.testExtension"/>
    </iterate>
    </with>
    <with variable="activeEditorInput">
    <reference definitionId="org.eclipse.example.testExtension"/>
    </with>
    </or>
    </visibleWhen>

    关于java - 可见命令何时出现在上下文菜单中,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/5592028/

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