Change Menu Items Programmatically From Eclipse Plugin

后端 未结 2 1921
南旧
南旧 2020-12-08 05:07

I would like to be able to completely remove menu items upon startup of my eclipse plugin application. What I want to do is be able to add these menu items later depending o

2条回答
  •  广开言路
    2020-12-08 05:46

    You can obtain the Menu from the MenuManager and then modify the contributions. This snippet shows how to access the menu manager and remove a named item.

    You'll need to keep track of the removed items and item indices to restore them. The only trouble is that the indexOf method is not visible. Adding this snippet to a type in the same package as MenuManager and adding it to a fragment is one way round that.

    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();
        }
    }
    

提交回复
热议问题