Ich muss ein Kontextmenü für einen TreeViewer in einem Eclipse-Plugin-Projekt erstellen. Das Menü soll aber keine konstanten Einträge enthalten, sondern je nach Typ des ausgewählten Knotens variieren. Zum Beispiel hat mein TreeViewer die folgende Hierarchie:
Node A
|
--Node B
|
--Node C
Für Knoten A möchte ich ein Menü mit einer Aktion anzeigen, aber für die Knoten B und C möchte ich nichts anzeigen (kein Menü). Es ist mir gelungen, das Menü für Knoten A zu erstellen, aber dann kann ich es nicht mehr loswerden, wenn ein anderer Knotentyp ausgewählt wird. Mein Code sieht so aus:
treeViewer.addSelectionChangedListener(
new ISelectionChangedListener(){
public void selectionChanged(SelectionChangedEvent event) {
if(event.getSelection() instanceof IStructuredSelection) {
IStructuredSelection selection = (IStructuredSelection)event.getSelection();
Object o = selection.getFirstElement();
MenuManager menuMgr = new MenuManager();
if (o instanceof NodeA){
Menu menu = menuMgr.createContextMenu(treeViewer.getControl());
treeViewer.getControl().setMenu(menu);
getSite().registerContextMenu(menuMgr, treeViewer);
menuMgr.add(new SomeAction());
}else {
//what ?
}
}
}
}
);
Auf dem anderen Zweig habe ich versucht, Folgendes aufzurufen dispose()
, removeAll()
auf dem MenuManager...nichts funktioniert!
Für jede Hilfe sind wir dankbar, danke.