Eclipse undo/redo button reagiert nicht auf Änderungen in der OperationHistory

Andi1804

Mitglied
Hallo,
ich versuche einen Editor (Eclipse Plugin) mit undo/redo Funktionalität zu bauen.
Mein Editor implementiert das IUndoContext Interface:
Java:
@Override
public String getLabel() {
	return "MyUndoContext";
}

@Override
public boolean matches(IUndoContext context) {
	return this.getLabel().equals(context.getLabel());
}

Die OperationHistory wird so initialisiert:
Java:
operationHistory = PlatformUI.getWorkbench().getOperationSupport().getOperationHistory();
operationHistory.setLimit(this, 50); //this = editor, also UndoContext

Eine Operation wird wie folgt ausgeführt:
Java:
IUndoableOperation op = new SetContainerFeature(rew.getRuleEntries(), rew.getIndex(), ImportModelHelper.getEClassFeature((EReference)value));
op.addContext(undoContext);
operationHistory.execute(op,null,null);

Dies funktioniert alles ohne Probleme. Wenn ich die Methode
Java:
operationHistory.undo(this, null, null);
aufrufe wird die Operation auch rückgängig gemacht.
Ich kann also eigene undo/redo Buttons bauen.
Die standard undo redo Menüeinträge in Eclipse reagieren aber nicht auf das Ausführen eines Befehls, sie bleiben immer ausgegraut. Ich würde aber diese Einträge gerne verwenden.

Bei google habe ich leider keine Lösung für dieses Problem finden können. Hier im Forum gibt es einen Eintrag über das scheinbar gleiche Problem, jedoch wird es dort nicht gelöst.

Vielen Dank schonmal für eure Antworten.
 
Die undo / redo Buttons sind im Moment einfach im Editor als normale swt Buttons hinzugefügt. Es sind praktisch nur Testbuttons um zu testen ob die undo/redo Funktionalität überhaupt funktioniert (was auch der Fall ist). Ich könnte auch über die plugin.xml neue Actions hinzufügen von dort den undo/redo Aufruf starten, aber die wären ja auch nur zum Testen.

Entschuldigung ich habe mich im ersten Eintrag etwas unklar ausgedrückt. Ich will nicht selbst undo/redo Buttons hinzufügen sondern die Standard Menüeinträge in Eclipse für meine OperationHistory verwenden. Also Edit -> Undo... bzw. Edit -> Redo...
Und eben diese Einträge bleiben immer ausgegraut.
 
Zuletzt bearbeitet:
Du verwendest ja offensichtlich EMF. Lass dir den Standard EMF Editor für dein Modell generieren und schon hast du ein Beispiel wie man EMF Modelle an Undo/Redo der Workbench koppelt.
 

Zurück
Oben