java - 工具栏图标不会自动更新

标签 java eclipse eclipse-plugin

我正在开发一个 Eclipse 产品。我定义了两种不同的视角:编辑和调试。在调试透视图的工具栏中,我放置了一组按钮来指导调试流程(例如,单步执行、单步执行等)。我使用 eclipse 命令来实现逻辑。在 pluxin.xml 片段下方,我声明了工具栏命令。

     <toolbar
           id=".."
           label="Debug navigation command">
        ....
        <command
              commandId="org.eclipse.debug.ui.commands.Terminate"
              disabledIcon="icons/16x16/stop_disabled.ico"
              icon="icons/16x16/stop.ico"
              label="Terminate"
              style="push"
              tooltip="Terminate">
           <visibleWhen
                 checkEnabled="false">
              <with
                    variable="activeWorkbenchWindow.activePerspective">
                 <equals
                       value="org.xvr.xvrengine.perspective.debug">
                 </equals>
              </with>
           </visibleWhen>
        </command>
     </toolbar>

问题是,虽然与命令 org.eclipse.debug.ui.commands.Terminate 关联的所有其他图标均由 eclipse 更新(仅当在调试 View 中选择进程时才有效),但我定义的命令是没有更新。如果我更改视角然后切换回调试视角,编辑器会更新命令图标。

如何更新命令图标?可以使用默认的eclipse图标吗?如果我将“图标”条目留空,工具栏将填充命令标签。

谢谢

最佳答案

您可以在 2 个位置控制命令的启用状态。

  1. 在 org.eclipse.ui.handlers 中,你可以 将您的处理程序与您的 命令并提供启用时间 核心表达。看 http://wiki.eclipse.org/Command_Core_Expressionshttp://wiki.eclipse.org/Platform_Expression_Framework
  2. 当您的处理程序处于 Activity 状态时,其 启用状态反射(reflect)在 命令。大多数处理程序子类 org.eclipse.core.commands.AbstractHandler。 当您的处理程序更新其状态时 使用 org.eclipse.core.commands.AbstractHandler.setBaseEnabled(boolean) 启用状态将被反射(reflect) 在用户界面中

.

关于java - 工具栏图标不会自动更新,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/6033389/

相关文章:

java - 如何比较两个 eclipse 安装是否缺少功能?

java - 省略了在 Java 子类中使用构造函数

java - 2D 平台游戏中的碰撞错误

java - 如何在 swt list eclipse 中禁用列表元素

java - 从 java 1.7 升级到 1.8 后,使用 Maven 编译错误,但在 Eclipse 中没有

java - SonarLint eclipse : Does it also analyze source code in "src/test"?

eclipse - 收集要安装的项目时出错 : osgi. bundle,org.eclipse.sdk,4.2.0.v201206081400

Eclipse Egit提交失败

java - Google Guice,如何在注入(inject)类之前和之后注入(inject)资源

java - @ServerTimestamp 在 Firebase Firestore 上始终为 null