Hi,
how about using invokeLater() on the runnable queue ? we see only minor
delay when using invokeLater() instead of invokeAndWait()
Cheers
Sergey Beryozkin
----- Original Message -----
From: "Harm Cuppens" <[EMAIL PROTECTED]>
To: "'Batik Users'" <[EMAIL PROTECTED]>
Sent: Thursday, March 13, 2003 3:20 PM
Subject: RE: InvokeAndWait problem
> Hi,
>
> Thanks for the reply, I see your point, but the problem will still be
there.
> In the void redo
> svgCanvas.getUpdateManager().getUpdateRunnableQueue().invokeAndWait(new
> Runnable() {
> // my code which acts on the DOM
> });
> }
>
> Batik would still be able to call invokeAndWait in one of it's methods.
> Because my undo/redo code works with the DOM, lots of events are triggered
> as a result. These events can be for example in my case: DOMNodeInserted,
> which the Bridge takes care of. In my case an Image element being inserted
> with an XLink, then the URIResolver calls the
> checkLoadExternalResource(...,...) which calls invokeAndWait again!
>
> Harm
>
> -----Original Message-----
> From: Siarhei Biarozkin [mailto:[EMAIL PROTECTED]
> Sent: donderdag 13 maart 2003 16:12
> To: Batik Users; [EMAIL PROTECTED]
> Subject: Re: InvokeAndWait problem
>
>
> Hi,
> I'd recommend not to couple your undo/redo functionality with the Batik,
> after all, it's just one component of your application. Instead, use
> something like this :
>
> Undoable undoable = new Undoable() {
> void do() {
>
svgCanvas.getUpdateManager().getUpdateRunnableQueue().invokeAndWait(new
> Runnable() {
> // do it/redo it
> });
> }
> void redo() {
>
> svgCanvas.getUpdateManager().getUpdateRunnableQueue().invokeAndWait(new
> Runnable() {
> // undo it
> });
> }
> }
>
> YourUndoManager.redo() {
> undoable.redo();
> }
>
> YourUndoManager.do() {
> undoable.do();
> }
>
> There may be many more, perhaps, better approaches, but the key is to
> separate concerns
> Cheers
> Sergey Beryozkin
>
> ----- Original Message -----
> From: "Harm Cuppens" <[EMAIL PROTECTED]>
> To: "Batik Users (E-mail)" <[EMAIL PROTECTED]>
> Sent: Thursday, March 13, 2003 2:58 PM
> Subject: InvokeAndWait problem
>
>
> > Hello all,
> >
> > I'm adding undo/redo support to my application (a little SVGEditor). I
> have
> > a JSVGCanvas where I can draw my lines, rectangles etc. I can also
import
> > images (or reference them) into the SVG document.
> >
> > For every action I perform I added undo/redo support.
> > For the undo/redo action to happen immediately on the canvas, i call the
> > InvokeAndWait method:
> >
> > svgCanvas.getUpdateManager().getUpdateRunnableQueue().invokeAndWait(new
> > Runnable() { undoManager.redo() });
> >
> > But I have the following problem, I insert an <image> with a xlink to a
> file
> > on my disk into the document. I then undo this operation (so the image
is
> > removed again). Now when I try to redo this action, I call the
> InvokeAndWait
> > method (to get immediate results on the canvas) which starts the redo
> code.
> > But it seems that the class org.apache.batik.bridge.URIResolver calls
the
> > method userAgent.checkLoadExternalResource(purl, pDocURL). This brings
me
> > to the code inside the BridgeUserAgentWrapper inner class of
JSVGComponent
> > where the method calls another InvokeAndWait resulting a total halt of
the
> > program. So I'm in a situation where i'm calling invokeAndWait to run
code
> > that could call invokeAndWait again :-(
> > I have tried the invokeLater method, but that gave the same results,
> program
> > just hangs.
> >
> > Is there any way to get arround this (besides not using invokeAndWait)?
I
> > really like to have my undo/redo actions to occur immediately without
> having
> > to worry about that code calling another invokeAndWait.
> >
> > Thanks,
> >
> > Harm
> >
> >
> >
> > ---------------------------------------------------------------------
> > To unsubscribe, e-mail: [EMAIL PROTECTED]
> > For additional commands, e-mail: [EMAIL PROTECTED]
> >
> >
> >
>
>
> ---------------------------------------------------------------------
> To unsubscribe, e-mail: [EMAIL PROTECTED]
> For additional commands, e-mail: [EMAIL PROTECTED]
>
>
> ---------------------------------------------------------------------
> To unsubscribe, e-mail: [EMAIL PROTECTED]
> For additional commands, e-mail: [EMAIL PROTECTED]
>
>
>
---------------------------------------------------------------------
To unsubscribe, e-mail: [EMAIL PROTECTED]
For additional commands, e-mail: [EMAIL PROTECTED]