切换菜单项的状态

时间:2008-09-22 13:10:22

标签: java eclipse

我正在使用Eclipse RCP应用程序。它有一些特定于视图的菜单,其中一个菜单项是我希望在启用相应功能时显示旁边的勾选项。同样,下次选择项目时,该项目应取消选中,以反映相应的功能已被禁用。

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

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

2 个答案:

答案 0 :(得分:1)

解决方案涉及让命令处理程序实现IElementUpdater接口。然后可以更新UI元素:

public void updateElement(UIElement element, Map parameters) 
{
    element.setChecked(isSelected);     
}

updateElement作为UI刷新的一部分被调用,可以从处理程序的execute命令中调用,如下所示:

     ICommandService service = (ICommandService) HandlerUtil
       .getActiveWorkbenchWindowChecked(event).getService(
           ICommandService.class);
   service.refreshElements(event.getCommand().getId(), null);

更多信息here(参见单选按钮命令更新已检查状态条目)

答案 1 :(得分:1)

也许事情已经发生了变化,也许RCP和Eclipse插件之间存在差异,但我只是将我的操作样式设置为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()