检查处理程序内的菜单项的状态

时间:2013-01-28 13:33:18

标签: eclipse eclipse-plugin eclipse-rcp rcp

如何以编程方式检查是否检查/取消选中作为菜单项的命令(如果是CHECK BOX类型),选择或取消选择(如果是RADIO按钮类型)处理程序内部“执行” 方法。 请参见此处的快照https://docs.google.com/file/d/0B3pxBGD-v-ycWVFaeElnSGdyTE0/edit

2 个答案:

答案 0 :(得分:1)

查看此博客:http://eclipsesource.com/blogs/2009/01/15/toggling-a-command-contribution/

因此,首先要确保您的命令具有合适的样式:

<extension point="org.eclipse.ui.menus">
  <menuContribution locationURI="...">
    <command commandId="org.eclipse.example.command.toggle"
              style="toggle" />
  </menuContribution>
</extension>

然后,你可以检查这样的状态:

ICommandService service =(ICommandService) PlatformUI.getWorkbench().getService(ICommandService.class);
Command command = service.getCommand("org.eclipse.example.command.toggle");
State state = command.getState("org.eclipse.example.command.toggleState");
System.out.println(state.getValue());
//state.setValue(!(Boolean) state.getValue());

另外,考虑一下org.eclipse.ui.handlers.HandlerUtil,它可能会有所帮助。

希望这有帮助。

答案 1 :(得分:1)

我得到了解决方案, 在处理程序执行方法方法

中添加了此代码
public Object execute(ExecutionEvent event) throws ExecutionException {

    Event selEvent = (Event) event.getTrigger();
    MenuItem item = (MenuItem) selEvent.widget;

    System.Out.Println(item.getSelection());        
    return null;

}