Extending Swing's UndoManager to provide repeat and multiple undo/redo
Asked Answered
O

2

2

I've been tasked with adding undo/redo/repeat functionality to an application. I'm currently investigating whether I can use Swing's UndoManager.

Apart from the usual undo and redo buttons, I need to provide the ability to undo or redo multiple edits at once (drop down UI like MS Office), and repeat a chosen edit.

I believe I can use UndoManager for multiple undo and redo. It provides methods for multiple undo and redo. To build the UI, I can extend UndoManager to expose the edits it holds.

I'm not sure I can use UndoManager for repeat chosen operation however. My first thoughts were to extend UndoManager and add a repeat(edit) method. This method would clone or copy an edit, redo the copy, and then place the copy on top of the undo stack. An edit would only be repeatable if it implemented Clonable.

Does this seem reasonable? Are there better solutions? Should I be rolling my own instead of UndoManager? Thanks in advance.

Oxidate answered 10/9, 2012 at 12:19 Comment(0)
H
5

Hope this helps http://java-sl.com/tip_merge_undo_edits.html

Heterogenesis answered 10/9, 2012 at 12:29 Comment(4)
Hi, thanks for the link. This shows how to group edits but not how to repeat them. What I require for repeat is; a UI showing the edit history (the undo stack), the user is able to select any one of the edits displayed to repeat. This is different from redo. The repeated edit should be copied(?) and placed on top of the undo stack. Because the edits store state; e.g., an edit can only be redone if it has been undone, I can't simply call redo on the chosen edit. I really need a copy of the edit.Oxidate
I am afraid there is no "automatic repeat" feature. E.g. I remove all content from the document and want to "repeat". What should happen? Or I inserted 1 char in 0 position. When I repeat what should happen? Insert in 0 or in 1? There are so many questions without answers.Heterogenesis
This link is suspicous.Mellen
The link is dead, and it's not in the web archive.Mediaeval
I
0

UndoManager supports an unlimited number of undo/redo operations. See the documentation

It seems reasonable to me to extends UndoManager in order to add the support for repeat, because the last edit is already there.

Ine answered 10/9, 2012 at 17:35 Comment(0)

© 2022 - 2024 — McMap. All rights reserved.