Hi,
ich habe mal wieder ein kleines Problem(chen):
Ich versuche ein Kontextmenü an einen TreeViewer zu hängen und es will mir einfach nicht gelingen.
Meine Ausgangssituation ist wie folgt:
* ich habe einen Editor, in dem über ein StackLayout verschiedene Seiten angezeigt werden können (vergleichbar zu einem Viewer, aber hier geht es mehr im Verarbeitungsschritte, für die ich einen separaten Wizard-Dialog als unpassend empfand)
* die Seiten selbst sind mittels ScrolledForms / Detail-Master-Blöcken designt und bestehen mitunter aus verschiedenen selbst erstellten Composites (für bestimmte Aufgaben jeweils)
* die Composites werden mittels des FormToolkits für Forms adaptiert - sind als selbst "normale" SWT-Composites
* ich arbeite gerade an einem dieser Komposites, welches einen TreeViewer enthält
Ich möchte nun an das zuletzt genannte Composite (oder besser den Viewer darin) ein Kontextmenü anfügen.
Ich habe dazu folgende (prototypische) Methode erstellt, die ich auf Basis eines wesentlich älteren Programms zusammengebaut habe:
Ich habe auch versucht ein ganz einfaches Menü direkt an den Tree zu hängen, aber ich hatte dabei keinen Erforlg. Es gibt keine Fehler, Warnings oder sonstiges im Log, es erscheint nur einfach kein Menü.
Ich steh hier auf dem Schlauch und weiß nicht weiter.
Ich habe auch schon Versucht es mittels org.eclipse.ui.menues oder org.eclipse.ui.popupMenues hinzubekommen, das ist mir allerdings auch nicht gelungen (wobei ich denke, das hier die erste, die Command-basierte Variante, mir eh nicht weiterhelfen kann, oder?)
Für eure Vorschläge, Ideen und vielleicht auch Kritiken bin ich schon mal im Vorfeld dankbar!
Daniel
ich habe mal wieder ein kleines Problem(chen):
Ich versuche ein Kontextmenü an einen TreeViewer zu hängen und es will mir einfach nicht gelingen.
Meine Ausgangssituation ist wie folgt:
* ich habe einen Editor, in dem über ein StackLayout verschiedene Seiten angezeigt werden können (vergleichbar zu einem Viewer, aber hier geht es mehr im Verarbeitungsschritte, für die ich einen separaten Wizard-Dialog als unpassend empfand)
* die Seiten selbst sind mittels ScrolledForms / Detail-Master-Blöcken designt und bestehen mitunter aus verschiedenen selbst erstellten Composites (für bestimmte Aufgaben jeweils)
* die Composites werden mittels des FormToolkits für Forms adaptiert - sind als selbst "normale" SWT-Composites
* ich arbeite gerade an einem dieser Komposites, welches einen TreeViewer enthält
Ich möchte nun an das zuletzt genannte Composite (oder besser den Viewer darin) ein Kontextmenü anfügen.
Ich habe dazu folgende (prototypische) Methode erstellt, die ich auf Basis eines wesentlich älteren Programms zusammengebaut habe:
Java:
private void createContextMenu(Viewer viewer) {
MenuManager manager = new MenuManager("#PopupMenu");
manager.setRemoveAllWhenShown(true);
manager.addMenuListener(new IMenuListener() {
@Override
public void menuAboutToShow(IMenuManager manager) {
// ------------------- DEFINITELY ACTIVATE -------------------
addFilterAction.setEnabled(true);
// ------------- DECIDE WETHER TO ACTIVATE IT OR NOT----------
boolean enabled = false;
if (filterTreeViewer.getSelection() != null
&& (IStructuredSelection) filterTreeViewer
.getSelection() instanceof Filter)
enabled = true;
else
enabled = false;
removeFilterAction.setEnabled(enabled);
editFilterAction.setEnabled(enabled);
// ------------- SET UP MENU ACTIONS -------------------------
Filter selectedFilter = (Filter) ((IStructuredSelection) filterTreeViewer
.getSelection()).getFirstElement();
((GuidedConfigRemoveFilterAction) removeFilterAction)
.setFilterToRemove(selectedFilter);
((GuidedConfigRemoveFilterAction) removeFilterAction)
.setParentFilter(getParentfilter(selectedFilter));
((GuidedConfigEditFilterAction) editFilterAction)
.setFilterToEdit(selectedFilter);
// ------------- ADD TO MENU ---------------------------------
manager.add(addFilterAction);
manager.add(removeFilterAction);
manager.add(new Separator(
IWorkbenchActionConstants.MB_ADDITIONS));
manager.add(editFilterAction);
}
});
Menu menu = manager.createContextMenu(viewer.getControl());
// add to parent
viewer.getControl().setMenu(menu);
PlatformUI.getWorkbench().getActiveWorkbenchWindow().getActivePage()
.getActivePart().getSite().registerContextMenu(manager, viewer);
}
Ich habe auch versucht ein ganz einfaches Menü direkt an den Tree zu hängen, aber ich hatte dabei keinen Erforlg. Es gibt keine Fehler, Warnings oder sonstiges im Log, es erscheint nur einfach kein Menü.
Ich steh hier auf dem Schlauch und weiß nicht weiter.
Ich habe auch schon Versucht es mittels org.eclipse.ui.menues oder org.eclipse.ui.popupMenues hinzubekommen, das ist mir allerdings auch nicht gelungen (wobei ich denke, das hier die erste, die Command-basierte Variante, mir eh nicht weiterhelfen kann, oder?)
Für eure Vorschläge, Ideen und vielleicht auch Kritiken bin ich schon mal im Vorfeld dankbar!
Daniel