Ciao a tutti!
Sto scrivendo in Java un simulatore di assembly PD32. Visto che programma è abbastanza contorto ho diviso il programma in "compartimenti stagni": ovvero un oggetto per l'editor, uno per l'assemblaggio, uno per la simulazione etc... cercando di limitare il più possibile l'interazione.
Il problema si pone quando devo gestire gli undo-redo nell'editor. Ho provato ad usare (senza conoscere approfonditamente questi oggetti) una JTextArea gestita con un DefaultStyledDocument a cui è associato un UndoManager che implementa l'interfaccia UndoableEditListener, ma quando incollo un po' di testo e poi chiamo il metodo undo() dell'UndoManager mi lancia l'eccezione ArrayIndexOutOfBoundsException e non annulla niente.
Un'altro caso simpatico è che quando chiudo la finestra (JDialog) del simulatore (che spesso richiede un bel po' di risorse del computer) a volte non funziona il comando undo() (credo che addirittura non funzioni più l'actionEventListener). Questo problema credo sia in qualche modo legato al fatto che il codice non è stato scritto, ma magari è stato letto da un file.
In ogni caso: sapete come si possono gestire in generale gli undo di un editor? Se ho azzeccato gli oggetti giusti cosa posso aver sbagliato?
Ciao e grazie!