【问题标题】:How do I toggle the menu button icon and tooltip text for an Eclipse plugin?如何切换 Eclipse 插件的菜单按钮图标和工具提示文本?
【发布时间】:2014-06-29 03:42:51
【问题描述】:

我正在开发一个 Eclipse 插件,它有一个工具栏菜单项,可以启用/禁用一项功能。我知道如何使用 plugin.xml 文件为其设置图标和工具提示文本,但我希望能够根据正在处理的项目的状态更改图标,尤其是工具提示文本。即,如果未启用该功能,我想要一个显示打开该功能的图标以及显示“启用功能”的工具提示文本,但如果启用该功能,我想要一个显示关闭该功能的图标以及工具提示显示“禁用功能”的文字。目前,我能看到的唯一选项是一个通用图标和工具提示文本,上面写着“启用/禁用功能”,但我觉得这很笨拙。

编辑添加:为了回应 indigomonkey 的回答,这是一个基于我最初写的很好的回答,我想澄清一下,工具栏按钮启用的行为是我们真正不鼓励禁用一次的行为它已被启用(并且在启用它时会弹出一个对话框,以验证他们是否要启用它,因为它不应该轻易启动,并且一旦启用它就阻止他们禁用它)。因此,我希望将图标更改为建议“不要点击我”的图标。

【问题讨论】:

    标签: java eclipse plugins eclipse-rcp


    【解决方案1】:

    在 rcp E4 中,解决方案似乎有点不同。自从我第一次偶然发现这个问题以来,我想为未来的开发人员总结/链接解决方案。

    我找到答案的相关问题是Switch Image of a Handler in a e4 rcpRCP 4 Toggle a button in the toolbar

    基本上你需要像这样将参数 MToolItem 添加到你的执行方法中:

    @Execute
    public void execute(final MToolItem item)
    {
       item.setIconURI("platform:/plugin/......");
       //additional changes e.g. to the tooltip are also possible.
    }
    

    如果您还检查了您的工具栏按钮类型

     <elements xsi:type="menu:HandledToolItem" type="Check" ...
    

    该项目将在每次单击时自动在选中/未选中之间切换。您可以通过以下方式获取当前状态 item.isSelected()。作为副作用,工具栏图标将在选定状态下突出显示。如果您不希望这样,您需要自己跟踪状态。

    【讨论】:

      【解决方案2】:

      如果您的命令处理程序实现了IElementUpdater,则无论何时运行命令都会调用updateElement 方法。

      updateElementUIElement 参数有setIconsetTooltip 方法。

      【讨论】:

      • 很好,虽然我还必须添加代码来触发事件,使用我在这里找到的:robertwloch.net/2011/01/…
      • 我有一个class DeployHandler 其中extends AbstractHandlerimplements IElementUpdaterupdateElement 的实现:if (proj == null) element.setTooltip("Work with selected project"); else element.setTooltip("Work with project \"" + proj.getName() + "\""); 但它没有被框架调用,虽然处理程序被正确注册和调用.你能帮我找出原因吗?
      • 显然我还缺少一些代码来触发更新事件。我应该用哪种方法调用ICommandService#refreshElements
      • @DannyLo 不要尝试在 cmets 中添加后续问题 - 问一个新问题。
      • 感谢 @BenHocking - 虽然原始链接不再有效,但在 archive.org 处有该页面的最新版本的副本
      【解决方案3】:

      我建议您选择将工具栏贡献创建为“复选框”类型,而不是标准的“推送”。这意味着按钮将在选中和未选中状态之间切换,允许您将此行为等同于功能的启用和禁用状态。

      如果您使用org.eclipse.ui.commandsorg.eclipse.ui.handlers 以及org.eclipse.ui.menus 扩展点为按钮添加&lt;command&gt; 元素,则需要将其style 属性设置为check。然后,您可以从处理程序内部读取和切换命令的选择。

      有关详细信息,请参阅http://blog.eclipse-tips.com/2009/03/commands-part-6-toggle-radio-menu.html

      【讨论】:

      • 我正在使用toggleState,但我看不出有任何方法可以据此更改工具提示文本或按钮图标的行为。
      • 我明白了。一般来说,Eclipse 生态系统往往不会做那种事情。通过使用切换按钮,您无需更改图标或工具提示。相反,它们应该引用按钮打开时的行为。例如,在任何包含 Debug 透视图的 Eclipse 中查看“Skip All Breakpoints”按钮。它的图标(一个划掉的断点)指的是当它被打开时会发生什么,它的工具提示也是如此。相反,如果将图标更改为未划掉的断点,并且工具提示更改为“不要跳过所有断点”,则行为会令人困惑。
      • 你的解释很好,靛蓝猴子。我已经相应地更新了我的问题。
      猜你喜欢
      • 2013-01-07
      • 1970-01-01
      • 2016-10-08
      • 2021-08-28
      • 2018-10-25
      • 1970-01-01
      • 1970-01-01
      • 2014-06-10
      • 1970-01-01
      相关资源
      最近更新 更多