2008-09-22 76 views
3

我有一个我正在开发的Eclipse RCP应用程序。它有一些视图特定的菜单,其中一个菜单项是我希望在启用相应功能时显示旁边的勾号的项目。同样,下次选择该项目时,该项目应该成为未选中状态,以反映相应的功能被禁用。切换菜单项的状态

我的问题是:我该如何设置这些菜单项的切换状态?当菜单项被选中时,我有一个IHandler来处理事件,但我不确定如何更新GUI元素本身。

StackOverflow社区是否对我如何解决这个问题有任何想法?

+0

您不需要标记标题,这是标签的用途。 – GEOCHET 2008-09-22 13:13:05

回答

1

该解决方案涉及使命令处理程序实现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(看到单选按钮命令更新选中状态项)

1

也许一切都变了,也许有RCP和Eclip之间的差异se插件,但我只是将我的动作样式设置为toggle,并自动处理切换。你可以在github.com上看到源代码。

 <action 
      class="live_py.EnableAction" 
      id="live-py.enable.action" 
      label="Li&amp;ve Coding" 
      menubarPath="pyGeneralMenu/pyNavigateGroup" 
      state="false" 
      style="toggle"> 

要查看该功能是否处于启用状态,我只是仰望通过ID的动作,然后调用isChecked()

+0

你刚刚为我节省了很多时间和精力 - 谢谢! – sfinnie 2014-04-25 14:30:28