DevFaqMultipleProgrammaticEdits
I want to make some programmatic changes to the edited file. How can I do it so one Undo undoes it all?
Create a Runnable that will do all of the code generation/munging you want to do. Pass it to org.openide.text.NbDocument.runAtomic(doc, runnable).
Example:
... import org.openide.text.NbDocument; import org.netbeans.api.editor.EditorRegistry; ... public final class MyAction implements ActionListener { private class RunnableAction implements Runnable { private JTextComponent ed; private Document doc; private RunnableAction( JTextComponent ed, Document doc ) { this.ed = ed; this.doc = doc; } @Override public void run() { ... } } public void actionPerformed( ActionEvent e ) { JTextComponent ed = EditorRegistry.lastFocusedComponent(); StyledDocument doc = ( StyledDocument ) ed.getDocument(); // Perform all of the changes atomically so that they can be undone with one undo. NbDocument.runAtomic( doc, new RunnableAction( ed, doc ) ); } }
Applies to: All Netbeans versions
Platforms: All