DevFaqMultipleProgrammaticEdits

(Difference between revisions)
m (I want to make some programmatic changes to the edited file. How can I do it so one Undo undoes it all?)
(I want to make some programmatic changes to the edited file. How can I do it so one Undo undoes it all?)
Line 4: Line 4:
Create a <tt>Runnable</tt> that will do all of the code generation/munging you want to do.  Pass it to <tt>org.openide.text.NbDocument.runAtomic(doc, runnable)</tt>.
Create a <tt>Runnable</tt> that will do all of the code generation/munging you want to do.  Pass it to <tt>org.openide.text.NbDocument.runAtomic(doc, runnable)</tt>.
 +
Example:
 +
<pre>...
 +
import org.openide.text.NbDocument;
 +
import org.netbeans.api.editor.EditorRegistry;
 +
...
 +
 +
public final class MyAction
 +
    implements ActionListener
 +
{
 +
    private class RunnableAction
 +
        implements Runnable
 +
    {
 +
        @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 ) );
 +
    }
 +
}
 +
</pre>
-----
-----

Revision as of 22:11, 6 March 2012

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
    {
        @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

Not logged in. Log in, Register

By use of this website, you agree to the NetBeans Policies and Terms of Use. © 2012, Oracle Corporation and/or its affiliates. Sponsored by Oracle logo