我想添加/删除图标到我的应用程序中的某些菜单项。 这很容易,如果我对项目本身点击,因为我可以注入一个参考到处理程序:e4 RCP:以编程方式修改主菜单项
@Execute
public void execute(MMenuItem menuItem) {
//add icon to menuItem
}
但我的问题是:我怎么做到这一点从外面如果我只已经得到它的ID?
我想添加/删除图标到我的应用程序中的某些菜单项。 这很容易,如果我对项目本身点击,因为我可以注入一个参考到处理程序:e4 RCP:以编程方式修改主菜单项
@Execute
public void execute(MMenuItem menuItem) {
//add icon to menuItem
}
但我的问题是:我怎么做到这一点从外面如果我只已经得到它的ID?
使用EModelService
找到元素:
@Inject
EModelService modelService;
@Inject
MApplication application;
List<MMenuItem> list = modelService.findElements(app, "menu item id", MMenuItem.class,
Collections.emptyList(), EModelService.IN_MAIN_MENU);
好吧,我想我知道我的问题在哪里:我正在使用Eclipse 4.3。显然这曾经是一个错误:[link](https://bugs.eclipse.org/bugs/show_bug.cgi?id=383403)。你知道如何获得菜单项的其他好方法吗? – user3726374 2015-03-13 16:47:31
如果您正在进行e4开发,我建议您应该使用4.4来进行一般错误修复和改进。 – 2015-03-13 21:08:43
@ greg-449模型服务总是为我的主外壳的菜单或菜单项返回null。我尝试在我的应用程序的生命周期管理器的APP_STARTUP_COMPLETE处理程序中调用它,但无济于事。也不能检索菜单对象本身(id:“menu:org.eclipse.ui.main.menu”)。任何想法为什么? – Nick 2015-08-22 18:23:48
好了,我可以用'DynamicMenuContribution's做到这一点。但我很好奇,如果我也可以访问现有的“正常”HandledMenuItem。 – user3726374 2015-03-13 13:37:55