我遇到修改EMF自動創建的「新建子菜單」菜單以創建特定類型項目的子菜單的問題。我發現,默認情況下,管道符號用作分隔符,因此名稱爲Hamburger | Megaplusbig
的子對象會導致出現Hamburger
子菜單。 This page似乎暗示在相關商品提供商中重寫getCreateChildText()
是一個不錯的選擇。修改Eclipse EMF編輯器新建子菜單時不改變提供者
我想要的是爲某些類型的模型項目出現在子菜單中,爲了實現這一點,我只需確保MySubmenu |
被預設爲名稱。我的問題是,我在Eclipse中編輯的模型的類在單獨的Jar文件中,我不能(或者實際上不應該)修改它。
而我沒有太多的運氣試圖以另一種方式實現這一點。我的另一個嘗試是延長BasicModelEditActionProvider
並覆蓋其fillContextMenu()
和updateActions()
方法。後者確實通過對BasicActionProvider.extractSubmenuActions()
的另一個調用創建了子菜單,我再次可以覆蓋該子菜單,但是到那時抽象中丟失了關於我的模型對象的信息。該方法適用於IAction
列表,即使我將操作投到StaticSelectionCommandAction
(它總是),command
字段沒有公共getter,並且它只通過command
的字段,我可以在某處看到實際的EMF EObject。
我正在尋找一個不涉及修改Jar文件中的項目提供程序的非常難看的解決方案,除非我真的必須這樣做。