Question

Je souhaite pouvoir supprimer complètement les éléments de menu au démarrage de mon application de plug-in eclipse. Ce que je veux faire, c'est pouvoir ajouter ces éléments de menu ultérieurement en fonction de la logique métier en fonction des actions de l'utilisateur. Y a-t-il un moyen de faire cela? J'ai envisagé d'utiliser des contributions, mais je sens que cela ne sera pas exactement ce que je veux.

S'il peut faire ce dont j'ai besoin, comment puis-je les utiliser? Merci d’avance pour toute aide.

Était-ce utile?

La solution

Vous pouvez obtenir le menu à partir du MenuManager, puis modifier les contributions. Cet extrait montre comment accéder au gestionnaire de menus et supprimer un élément nommé.

Vous devrez garder une trace des éléments supprimés et des index d’éléments pour les restaurer. Le seul problème est que la méthode indexOf n'est pas visible. Ajouter cet extrait à un type du même package que MenuManager et à un fragment est un moyen de contourner cela.

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

Autres conseils

Il existe plusieurs façons de contrôler la visibilité des éléments de menu ou de barre d'outils dans une application RCP.

Si vous avez le contrôle sur le plug-in qui fournit le ou les éléments en question, le moyen le plus simple consiste à utiliser l'expression visibleWhen associée aux menus point d'extension. Si vous souhaitez vérifier un état interne, vous pouvez utiliser l'élément test de l'expression avec un propertyTester .

Une alternative consiste à utiliser des activités. Ceux-ci peuvent contrôler de nombreux autres éléments de votre application, mais vous devrez peut-être réimplémenter certaines des boîtes de dialogue intégrées. Voir cette entrée de blog " Utilisation des activités pour la gestion des utilisateurs " pour certains détails.

Licencié sous: CC-BY-SA avec attribution
Non affilié à StackOverflow
scroll top