切换菜单项的状态
问题描述:
我有一个我正在开发的Eclipse RCP应用程序。它有一些视图特定的菜单,其中一个菜单项是我希望在启用相应功能时显示旁边的勾号的项目。同样,下次选择该项目时,该项目应该成为未选中状态,以反映相应的功能被禁用。切换菜单项的状态
我的问题是:我该如何设置这些菜单项的切换状态?当菜单项被选中时,我有一个IHandler来处理事件,但我不确定如何更新GUI元素本身。
StackOverflow社区是否对我如何解决这个问题有任何想法?
答
该解决方案涉及使命令处理程序实现IElementUpdater接口。然后,UI元素可以被更新为这样:
public void updateElement(UIElement element, Map parameters)
{
element.setChecked(isSelected);
}
updateElement被称为一个UI更新的一部分,可以从处理程序的执行命令来调用像这样:
ICommandService service = (ICommandService) HandlerUtil
.getActiveWorkbenchWindowChecked(event).getService(
ICommandService.class);
service.refreshElements(event.getCommand().getId(), null);
地段更多信息here(看到单选按钮命令和更新选中状态项)
答
也许一切都变了,也许有RCP和Eclip之间的差异se插件,但我只是将我的动作样式设置为toggle
,并自动处理切换。你可以在github.com上看到源代码。
<action
class="live_py.EnableAction"
id="live-py.enable.action"
label="Li&ve Coding"
menubarPath="pyGeneralMenu/pyNavigateGroup"
state="false"
style="toggle">
要查看该功能是否处于启用状态,我只是仰望通过ID的动作,然后调用isChecked()
。
+0
你刚刚为我节省了很多时间和精力 - 谢谢! – sfinnie 2014-04-25 14:30:28
您不需要标记标题,这是标签的用途。 – GEOCHET 2008-09-22 13:13:05