Menu można uzyskać z MenuManager, a następnie zmodyfikować składki. Ten fragment pokazuje, jak uzyskać dostęp do menadżera menu i usunąć nazwany przedmiot.
Będziesz musiał śledzić usunięte pozycje i indeksy pozycji, aby je przywrócić. Jedynym problemem jest to, że metoda indexOf nie jest widoczna. Dodanie tego fragmentu do typu w tym samym pakiecie co MenuManager i dodanie go do fragmentu jest jednokierunkowe.
IWorkbenchWindow window = Workbench.getInstance().getActiveWorkbenchWindow()
if(window instanceof WorkbenchWindow) {
MenuManager menuManager = ((WorkbenchWindow)window).getMenuManager();
//TODO you may need to remove items from the coolbar as well
ICoolBarManager coolBarManager = null;
if(((WorkbenchWindow) window).getCoolBarVisible()) {
coolBarManager = ((WorkbenchWindow)window).getCoolBarManager2();
}
Menu menu = menuManager.getMenu();
//you'll need to find the id for the item
String itemId = "menuId";
IContributionItem item = menuManager.find(itemId);
// remember position, TODO this is protected
int controlIdx = menu.indexOf(mySaveAction.getId());
if (item != null) {
// clean old one
menuManager.remove(item);
// refresh menu gui
menuManager.update();
}
}
Zastanawiam się, czy jest to możliwe również w przypadku aplikacji opartych na IDE? Na przykład, aby usunąć niektóre z menu Eclipse, takich jak 'Projekt '. – nbz