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