2010-06-09 6 views
2

Hiho,Menu contextuel Java swt treeview

Actuellement, j'ai un menu contextuel qui s'affiche lorsque je clique sur un élément de vue arborescente. Mais je veux montrer différents popups pour différentes entrées d'arborescence. Je ne suis pas une idée comment faire ...

Voici mon code pour créer le menu:

MenuManager menuMgr = new MenuManager("#PopupMenu"); 
menuMgr.setRemoveAllWhenShown(true); 
menuMgr.addMenuListener(new IMenuListener() { 
    @Override 
    public void menuAboutToShow(IMenuManager manager) { 
     Action action = new Action() { 
     public void run() { 
       // So something 
     } 
    }; 
    action.setText("Set as working file"); 
    manager.add(action); 
} 

}); 

Menu menu = menuMgr.createContextMenu(getTree()); 
getTree().setMenu(menu); 

Répondre

0

Deux idées. Pour les deux, vous devez écouter les sélections sur TreeView, car c'est le seul moyen de déterminer quel Menu (ou contenu spécial) vous voulez montrer.

Ensuite, vous pouvez soit définir le bon menu sur l'arbre juste après que vous savez lequel utiliser ou contribuer les éléments nécessaires au menu existant (c'est comme cela que cela est fait dans le cadre eclipse).

+0

Le dernier sonne bien pour moi, je vais essayer. – InsertNickHere

1

Vous devez propably utiliser un MouseListener sur l'arbre:

final Tree tree = new Tree(parent, ...); 
tree.addMouseListener(new MouseAdapter() { 
    @override 
    public void mouseDown(MouseEvent me) { 
     if(tree.getSelection() instanceof MySpecificTreeNode) { 
      // create menu... 
     } 
    } 
}); 
+0

Je suppose que votre réponse fonctionnerait aussi, mais je préfère l'autre. Je ne peux pas vous en vouloir, désolé. – InsertNickHere

+0

Si le code fait partie d'une application RCP, il faut enregistrer TreeView en tant que SelectionProvider et écouter plus globalement –