Domanda

Vorrei poter rimuovere completamente le voci di menu all'avvio della mia applicazione plug-in eclipse. Quello che voglio fare è poter aggiungere queste voci di menu in un secondo momento in base alla logica aziendale in base alle azioni dell'utente. C'è un modo per fare questo? Ho esaminato l'utilizzo dei contributi, ma sento che non sarà esattamente quello che voglio.

Se può fare ciò di cui ho bisogno, come posso fare per usarli? Grazie in anticipo per qualsiasi assistenza.

È stato utile?

Soluzione

È possibile ottenere il menu dal MenuManager e quindi modificare i contributi. Questo frammento mostra come accedere al gestore menu e rimuovere un elemento con nome.

Dovrai tenere traccia degli oggetti rimossi e degli indici degli oggetti per ripristinarli. L'unico problema è che il metodo indexOf non è visibile. L'aggiunta di questo snippet a un tipo nello stesso pacchetto di MenuManager e l'aggiunta a un frammento è un modo per ovviare a questo.

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

Altri suggerimenti

Esistono diversi modi per controllare la visibilità delle voci di menu o della barra degli strumenti in un'applicazione RCP.

Se hai il controllo del plug-in che contribuisce agli elementi in questione, il modo più semplice è di solito usare l'espressione visibleWhen associata ai menu punto di estensione. Se si dispone di uno stato interno che si desidera verificare, è possibile utilizzare l'elemento test dell'espressione insieme a propertyTester .

Un'alternativa è usare le attività. Questi possono controllare molte altre cose dell'applicazione, anche se potrebbe essere necessario implementare nuovamente alcune finestre di dialogo integrate. Vedi questo post di blog " Utilizzo delle attività per la gestione degli utenti " per alcuni dettagli.

Autorizzato sotto: CC-BY-SA insieme a attribuzione
Non affiliato a StackOverflow
scroll top