我正在使用Eclipse RCP应用程序。它有一些特定于视图的菜单,其中一个菜单项是我希望在启用相应功能时显示旁边的勾选项。同样,下次选择项目时,该项目应取消选中,以反映相应的功能已被禁用。
我的问题是:如何设置这些菜单项的切换状态?我有一个IHandler来处理选择菜单项时的事件,但我不确定如何更新GUI元素本身。
StackOverflow社区是否对如何解决这个问题有任何想法?
答案 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&ve Coding"
menubarPath="pyGeneralMenu/pyNavigateGroup"
state="false"
style="toggle">
要查看该功能当前是否已启用,我只需按其ID查找操作,然后拨打isChecked()
。