我想添加/刪除圖標到我的應用程序中的某些菜單項。 這很容易,如果我對項目本身點擊,因爲我可以注入一個參考到處理程序: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