Pregunta

Me gustaría poder eliminar completamente los elementos del menú al iniciar la aplicación del complemento Eclipse. Lo que quiero hacer es poder agregar estos elementos de menú más tarde, según la lógica empresarial basada en las acciones del usuario. ¿Hay alguna forma de hacer esto? He observado el uso de contribuciones, pero creo que no va a ser exactamente lo que quiero.

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

¿Fue útil?

Solución

Puede obtener el Menú desde el MenuManager 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 hacerlo.

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

Otros consejos

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

Si tiene el control sobre el complemento que aporta los elementos en cuestión, la forma más sencilla es usar la expresión visibleWhen asociada con los menús punto de extensión. Si tiene algún estado interno que quiera verificar, puede usar el elemento test de la expresión junto con un propertyTester .

Una alternativa es usar actividades. Estos pueden controlar muchas otras cosas de su aplicación, aunque podría necesitar volver a implementar algunos de los diálogos incorporados. Consulte esta entrada de blog " Uso de actividades para la gestión de usuarios " para algunos detalles.

Licenciado bajo: CC-BY-SA con atribución
No afiliado a StackOverflow
scroll top