# Undo/Redo..?



## sirbender (13. Jun 2009)

Hi,

hat jemand ein minimales Beispiel mit dem ich verstehen kann wie Undo/Redo funktioniert? 

Mich intressieren vor allem Fragen wie:

Wie wird verhindert dass wenn ich ein UndoEdit ausfuehre um etwas rueckgaengig zu machen, diese Aktion nicht selbst wieder direkt als UndoableEdit gespeichert wird.

Wie man sinnvoll UndoableEdits kombiniert.


----------



## Wildcard (13. Jun 2009)

Du redest von den konkreten Swing Klassen?



> Wie wird verhindert dass wenn ich ein UndoEdit ausfuehre um etwas rueckgaengig zu machen, diese Aktion nicht selbst wieder direkt als UndoableEdit gespeichert wird.


Das tust du nicht. Du verwendest den gleichen UndoableEdit und rufst dessen undo Methode auf.


> Wie man sinnvoll UndoableEdits kombiniert.


Da liegt ein Composite Muster zugrunde. UndoableEdit.add(UndoableEdit)


----------



## sirbender (13. Jun 2009)

Wildcard hat gesagt.:


> Du redest von den konkreten Swing Klassen?
> 
> 
> Das tust du nicht. Du verwendest den gleichen UndoableEdit und rufst dessen undo Methode auf.
> ...



1. Ok, aber was wenn meine Undo Methode selbst etwas tue was direkt oder indirekt selbst ein UndoableEdit hinzufuegt?

Beispiel: JList -> Element wird entfernt. Triggert Hinzufuegen von RemoveUndoableEdit. Rufe ich undo() auf, wird dieses Element wieder der JList hinzugefuegt und triggert womoeglich das Hinzufuegen eines AddUndoableEdit.

2. Bei mir ist add nicht implementiert. Wie wuerde eine sinnvolle Implementierung aussehen?


----------



## Wildcard (13. Jun 2009)

1. Mit Swing habe ich schon viele Jahre nichts mehr gemacht, aber AFAIR solltest du das nicht tun. Dein Edit ist in diesem Fall ganz einfach das Entfernen und nichts weiter.
2. Mit einer Liste oder einem Stack der Rückwärts und Vorwärts (undo/redo) abgespult wird.


----------

