2010-11-24 11 views

Répondre

4

Voici ce que je trouve, dans un projet open source, et il fonctionne pour moi:

<extension 
     point="org.eclipse.ui.menus"> 
    <menuContribution 
     locationURI="menu:org.eclipse.ui.main.menu?after=additions"> 
     <menu 
      id="menu1" 
      label="Menu 1"> 
     <visibleWhen checkEnabled="false"> 
      <with variable="activeWorkbenchWindow.activePerspective"> 
       <equals value="myperspective"/> 
      </with> 
     </visibleWhen> 
     <dynamic class="MenuPopulationClass" 
       id="MenuPopulation"/> 
     </menu> 
    </menuContribution> 
</extension> 
+0

Est-il possible d'utiliser cette approche si je veux qu'un menu soit visible lorsqu'une vue ou une page spécifique est active? par exemple, afficher uniquement lorsque la vue Structure est active pour le moment. – Icarin

+0

Peu importe, vous pouvez utiliser: variable = "visiblePartId" et la valeur de l'ID de vue de plan. – Icarin

0

Ceci est un aperçu de ce que vous devez faire.

Pour limiter la visibilité du menu de niveau supérieur, créez un ActionSet vide à l'aide de la boîte de dialogue Sélection du point d'extension.

Ensuite, ajoutez une expression visibleWhen à l'élément de menu de niveau supérieur défini dans plugin.xml. Faites un clic droit sur l'élément de menu et sélectionnez Nouveau -> visibleWhen. Faites un clic droit sur l'élément visibleWhen et sélectionnez Nouveau -> avec

variable Set - « activeContexts »

Faites un clic droit sur l'élément avec et sélectionnez Nouveau -> itérer. Sélectionnez le nouvel élément iterate et modifiez ses propriétés de sorte que tout élément correspondant entraîne l'évaluation de l'expression true.

Cliquez avec le bouton droit sur l'élément iterate et sélectionnez Nouveau -> égal à, puis modifiez la propriété de valeur.

valeur = votre nouvelle ActionSet

Enfin, ajouter l'élément de menu de niveau supérieur à votre ActionSet.

+0

Je n'utilise ActionSet mais les contributions de menu en utilisant le point d'extension "menus". J'ai trouvé un moyen, cf ma réponse. Merci quand même. –

1

Je suggère d'utiliser le cadre de commande.

this tutorial peut vous aider à

Pour limiter la visibilité de vos commandes, vous devriez vérifier par. 5