如何切换Eclipse插件的菜单按钮图标和工具提示文本?

时间:2014-05-11 20:56:44

标签: java eclipse plugins eclipse-rcp

我正在开发一个Eclipse插件,它有一个工具栏菜单项,可以启用/禁用某项功能。我知道如何使用plugin.xml文件为它设置图标和工具提示文本,但我希望能够根据正在处理的项目的状态更改图标,尤其是工具提示文本。即,如果未启用此功能,我想要一个图标,显示打开该功能以及显示"启用功能"的工具提示文本,但如果启用该功能,我想要一个显示转动功能的图标功能关闭以及说明"禁用功能"的工具提示文本。现在,我能看到的唯一选项是通用图标和工具提示文本,其中显示"启用/禁用功能",但这对我来说很笨拙。

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

3 个答案:

答案 0 :(得分:7)

如果您的命令Handler实现IElementUpdater,则只要运行该命令,就会调用updateElement方法。

UIElement的{​​{1}}参数包含updateElementsetIcon方法。

答案 1 :(得分:3)

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

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

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

答案 2 :(得分:0)

在 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()。作为副作用,工具栏图标将在选定状态下突出显示。如果您不希望那样,则需要自己跟踪状态。