2015-03-13 73 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