2009-07-29 9 views
17

Je souhaite pouvoir supprimer complètement les éléments de menu au démarrage de mon application plugin eclipse. Ce que je veux faire, c'est pouvoir ajouter ces éléments de menu plus tard en fonction de la logique métier basée sur les actions de l'utilisateur. Y a-t-il un moyen de faire cela? J'ai regardé en utilisant des contributions, mais j'ai l'impression que ce ne sera pas exactement ce que je veux. Si peut faire ce que j'ai besoin de faire, comment puis-je les utiliser? Merci d'avance pour toute aide.Modifier les éléments de menu par programme depuis le plugin Eclipse

Répondre

16

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

Vous devrez garder une trace des éléments supprimés et des indices d'élément pour les restaurer. Le seul problème est que la méthode indexOf n'est pas visible. Ajouter cet extrait à un type dans le même paquet que MenuManager et l'ajouter à 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(); 
    } 
} 
+0

Je me demandais, est-ce possible pour les applications basées sur IDE également? Par exemple, pour supprimer certains menus d'Eclipse comme 'Project '. – nbz

2

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

Si vous contrôlez le plug-in qui fournit le (s) élément (s) en question, la manière la plus simple consiste généralement à utiliser l'expression visibleWhen associée au point d'extension menus. Si vous avez un état interne que vous souhaitez vérifier, 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 beaucoup d'autres choses de votre application, vous penserez peut-être devoir ré-implémenter certaines des boîtes de dialogue intégrées. Voir cette entrée de blog "Using activities for user management" pour plus de détails.

Questions connexes