Hallo,
ich versuche einen Editor (Eclipse Plugin) mit undo/redo Funktionalität zu bauen.
Mein Editor implementiert das IUndoContext Interface:
Die OperationHistory wird so initialisiert:
Eine Operation wird wie folgt ausgeführt:
Dies funktioniert alles ohne Probleme. Wenn ich die Methode
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.
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);
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.