Alex
Administrator
Beiträge: 14
|
Erstellt: 26.04.06, 23:09 Betreff: Re: "History-Funktion" - javax.swing.undo |
|
|
Ich habe mir mal ein paar Gedanken zur Datenstruktur der Edits gemacht. Dazu habe ich mir aufgeschrieben, welche Informationen für Undo und Redo benötigt werden. Jeweils für die Fälle: Objekt wird verschoben (benötigt 2x Positionen, 2x Objekteigenschaften (!)) DO: #setze neue Position des verschobenen Objekts # entferne ggf. altes Objekt von neuer Postion UNDO: # setze Objekt auf alte Position zurück # stelle ggf. vorher gelöschtes Objekt wieder her (erzeuge neue Instanz mit den selben Eigenschaften) Objekt wird gelöscht (benötigt 1x Postion, 1x Objekteigenschaften) DO: #entferne das Objekt UNDO: #stelle das Objekt an seiner alten Position wieder her (erzeuge neue Instanz mit den selben Eigenschaften) neues Objekt aus Palette einfügen (benötigt 1x Pos., 2x Obj) DO: # Erstelle neue Instanz, setze auf neue Position # entferne ggf. altes Objekt von neuer Postion UNDO: # lösche Objektinstanz # stelle ggf. vorher gelöschtes Objekt wieder her
Fazit: Man benötigt im schlimmsten Fall 2 Positionsdaten (Punktkoordinaten) und 2 Objektdaten. Das 'Historyobjekt', nennen wir es mal UndoableEdit könnte wie folgt initialisiert werden:
UndoableEdit(Point formerPosition, MovObject formerObject, Point newPosition, MovObject newObject) Nicht benötigte Felder einfach mit null ausfüllen. Daran erkennt das Programm dann auch, welchen Fall es behandeln muss.
|
|