DocumentEvent.EventType.INSERT sammeln

Crai

Mitglied
Hallo,
mein Programm besitzt ein Menü,mit Einträgen, wie Undo/Redo,Fett,Kursiv,...,die sich alle auf ein TextPane beziehen.

In einer Methode wird mehrmals styledDocument.insertString() aufgerufen.
Jetzt ist es dem User möglich, jedes insert mit Undo rückgängig,bzw. mit Redo wiederherstellen zu können.
Nur das is nicht der Sinn des Ganzen.
Es sollen mit einem Undo etwa beliebig viele inserts rückgängig gemacht werden.

Meine Frage is nun, wie "sammle" ich solche Insert-Events und mach sie auch gesammmelt rückgängig?

CU
Crai
 
Moin,
wie wäre es mit einer List, z.B. ArrayList, ggf. statisch, die nach jeder Änderung im TextPane den aktuellen Text hinzugefügt bekommt?
 
Nun prinzipiell würde das so ganz gut funktionieren,allerdings nur, wenn man einen Text ohne Attribute verwaltet. Die Attribute könnte man sich zwar in einer extra Array ablegen, Textaktionen müssen sich dann aber auch auf beide Arrays auswirken und das zu proggen is net sehr performant. Insbeondere sind es dann auch zwei Schritte, den Text in die TextPane einzufügen und dann die Attribute zu übergeben, das wären dann wieder 2 Inserts,also zuviel.

Ich hab mir überlegt, wenn man den gesamten Text des einen Dokuments in ein zweites ablegt und dort die Änderungen vornimmt. Der neue Inhalt dieses Dokuments wird dann wieder ins alte geschrieben. Das ganze wär dann nur ein Insert?!
Oder is die Idee mit dem "Sammeln" von Inserts einfacher?

Vielen Dank aber für deinen Tipp!
CU
Crai
 
Zurück