如何从 eclipse e4 中的处理程序执行方法获取图标

How to get the icon from a handler execute method in eclipse e4

使用菜单贡献的处理程序,我可以在执行方法中获取 ParameterizedCommand,如下所示。

@Execute
public void execute(final Event event, final ParameterizedCommand command)

如何获取所选菜单项的iconURI?

我试过了,但收到 "Discouraged Access" 警告

final MenuItem menuItem = (MenuItem) event.widget;
    Object obj = (Object) menuItem.getData("modelElement");
    HandledMenuItemImpl item = (HandledMenuItemImpl) obj;
    String iconUrl = item.getIconURI();

只需将 MMenuItem 注入处理程序:

@Execute
public void execute(MMenuItem menuItem, ..... other parameters)
{
   String iconUrl = menuItem.getIconURI();
   ...
}

如果处理程序也从非菜单事件调用,则使菜单项可选

@Execute
public void execute(@Optional MMenuItem menuItem, ..... other parameters)
{
   if (menuItem != null) {
      String iconUrl = menuItem.getIconURI();
      ...
   }
}