2009-07-29 13 views
17

Me gustaría poder eliminar por completo los elementos del menú al iniciar mi aplicación de complemento eclipse. Lo que quiero hacer es poder agregar estos elementos de menú más adelante dependiendo de la lógica de negocios basada en las acciones del usuario. ¿Hay alguna forma de hacer esto? He analizado el uso de contribuciones, pero siento que no va a ser exactamente lo que quiero.Cambiar elementos de menú mediante programación desde el complemento Eclipse

Si puede hacer lo que necesito que haga, ¿cómo hago para usarlos? Gracias de antemano por cualquier ayuda.

Respuesta

16

Puede obtener el Menú desde el Administrador de menús y luego modificar las contribuciones. Este fragmento muestra cómo acceder al administrador de menú y eliminar un elemento con nombre.

Deberá realizar un seguimiento de los elementos eliminados y los índices de elementos para restaurarlos. El único problema es que el método indexOf no es visible. Agregar este fragmento a un tipo en el mismo paquete que MenuManager y agregarlo a un fragmento es una forma de evitarlo.

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

Me preguntaba si esto también es posible para aplicaciones basadas en IDE. Por ejemplo, para eliminar algunos de los menús de Eclipse como 'Proyecto '. – nbz

2

Hay una serie de formas de controlar la visibilidad del menú o los elementos de la barra de herramientas en una aplicación RCP.

Si tiene control sobre el complemento que contribuye con el elemento (s) en cuestión, entonces la manera más fácil es usualmente usar la expresión visibleWhen asociada con el punto de extensión menus. Si tiene algún estado interno que desee verificar, puede usar el elemento test de la expresión junto con propertyTester.

Una alternativa es utilizar actividades. Estos pueden controlar muchas otras cosas de su aplicación, y es posible que necesite volver a implementar algunos de los cuadros de diálogo integrados. Vea esta entrada del blog "Using activities for user management" para algunos detalles.

Cuestiones relacionadas