我正在开发一个Eclipse插件,它有一个工具栏菜单项,可以启用/禁用某项功能。我知道如何使用plugin.xml文件为它设置图标和工具提示文本,但我希望能够根据正在处理的项目的状态更改图标,尤其是工具提示文本。即,如果未启用此功能,我想要一个图标,显示打开该功能以及显示"启用功能"的工具提示文本,但如果启用该功能,我想要一个显示转动功能的图标功能关闭以及说明"禁用功能"的工具提示文本。现在,我能看到的唯一选项是通用图标和工具提示文本,其中显示"启用/禁用功能",但这对我来说很笨拙。
编辑添加:为了回应indigomonkey的答案,这是一个基于我最初写的好的答案,我想澄清一下,工具栏按钮启用的行为是我们真正的行为阻止一旦启用就禁用(并且当启用它时验证他们想要启用它时会弹出一个对话框,因为它不应该轻易启动,也不要阻止它们在启用后禁用它)。因此,我希望图标更改为建议“不要点击我”#34;
答案 0 :(得分:7)
如果您的命令Handler实现IElementUpdater
,则只要运行该命令,就会调用updateElement
方法。
UIElement
的{{1}}参数包含updateElement
和setIcon
方法。
答案 1 :(得分:3)
我建议你选择创建工具栏贡献作为一个复选框'类型,而不是标准的“推动”。这意味着按钮将在选定状态和未选定状态之间切换,允许您将此行为等同于功能的启用和禁用状态。
如果您正在使用org.eclipse.ui.commands
和org.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 rcp 和 RCP 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()
。作为副作用,工具栏图标将在选定状态下突出显示。如果您不希望那样,则需要自己跟踪状态。