2015-03-13 76 views
0

我想添加/删除图标到我的应用程序中的某些菜单项。 这很容易,如果我对项目本身点击,因为我可以注入一个参考到处理程序:e4 RCP:以编程方式修改主菜单项

@Execute 
public void execute(MMenuItem menuItem) { 
    //add icon to menuItem 
} 

但我的问题是:我怎么做到这一点从外面如果我只已经得到它的ID?

+0

好了,我可以用'DynamicMenuContribution's做到这一点。但我很好奇,如果我也可以访问现有的“正常”HandledMenuItem。 – user3726374 2015-03-13 13:37:55

回答

0

使用EModelService找到元素:

@Inject 
EModelService modelService; 
@Inject 
MApplication application; 

List<MMenuItem> list = modelService.findElements(app, "menu item id", MMenuItem.class, 
         Collections.emptyList(), EModelService.IN_MAIN_MENU); 
+0

好吧,我想我知道我的问题在哪里:我正在使用Eclipse 4.3。显然这曾经是一个错误:[link](https://bugs.eclipse.org/bugs/show_bug.cgi?id=383403)。你知道如何获得菜单项的其他好方法吗? – user3726374 2015-03-13 16:47:31

+0

如果您正在进行e4开发,我建议您应该使用4.4来进行一般错误修复和改进。 – 2015-03-13 21:08:43

+0

@ greg-449模型服务总是为我的主外壳的菜单或菜单项返回null。我尝试在我的应用程序的生命周期管理器的APP_STARTUP_COMPLETE处理程序中调用它,但无济于事。也不能检索菜单对象本身(id:“menu:org.eclipse.ui.main.menu”)。任何想法为什么? – Nick 2015-08-22 18:23:48