Thank you for your reply.

I have modified my ActionListener:

button.addActionListener(new ActionListener() {
  public void actionPerformed(ActionEvent e) {
    UpdateManager um = canvas.getUpdateManager();
    um.getUpdateRunnableQueue().invokeLater(new Runnable() {
      public void run() {
        resizeCircle();
      }
    });
  }
});

and put canvas.setDocumentState(JSVGCanvas.ALWAYS_DYNAMIC) *before*
canvas.setDocument(doc), as the FAQ says.

Now, I only see the *last update* but not the others in between.

I also implemented updateStarted and updateCompleted methods of
UpdateManagerListener and added it to the canvas.  It seems that all the
update events are being consolidated into a single event even though I
have sleep delays in between the resizings.  In my real application, I
need to be able to see many dynamic updates to the SVG that occur pretty
close together.  Is there anything else I can do to get the desired
behavior?

Any more thoughts would be appreciated.


> -----Original Message-----
> From: Thomas DeWeese [mailto:[EMAIL PROTECTED] 
> Sent: Friday, August 08, 2003 4:33 PM
> To: Batik Users
> Subject: Re: Dynamic JSVGCanvas Updates
> 
> 
> Hi Grant,
> 
> Please see: http://xml.apache.org/batik/faqs.html#faq-21
> 
> 
> Grant Mc Auley wrote:
> > Hello,
> > 
> > My simple test program (relevant code below) loads an SVG 
> file into a
> > JSVGCanvas.  Clicking a button calls a method that 
> iteratively resizes a
> > circle in the SVG document.
> > 
> > What I am observing is this:
> > 1) After clicking the toolbar button, I do not see the circle resize
> > unless I move my mouse into the canvas.
> > 2) Further, unless I continually move my mouse over the 
> canvas I do not
> > see the iterative resizing.  That is, when I continuously move the
> > mouse, I see the circle change size every second.  When I stop, the
> > circle size does not change.  When I move again, I see the 
> updates.  If
> > I move outside of the canvas I see no updates.
> > 
> > How are canvas updates related to mouse position and 
> movement?  Is there
> > something else that I must do to see live or dynamic canvas updates?
> > 
> > 
> > // ------- Code:
> > 
> > JSVGCanvas canvas = new JSVGCanvas();
> > File f = new File(shapes.svg");
> > String parser = XMLResourceDescriptor.getXMLParserClassName();
> > SAXSVGDocumentFactory factory = new SAXSVGDocumentFactory(parser);
> > Document doc = factory.createDocument(f.toURL().toString());
> > canvas.setDocument(doc);
> > canvas.setDocumentState(JSVGCanvas.ALWAYS_DYNAMIC);
> > 
> > ...
> > 
> > button.addActionListener(new ActionListener() {
> > 
> >   public void actionPerformed(ActionEvent e) {
> >     Thread t = new Thread(new Runnable() {
> >       public void run() {
> >         resizeCircle();
> >       }
> >     });
> >     t.start();
> >   }
> > 
> > });
> > 
> > ...
> > 
> > private void resizeCircle() throws DOMException {
> > 
> >   SVGDocument doc = canvas.getSVGDocument();
> >   Element el = doc.getElementById("circleOne");
> >   for (int i = 0; i < 10; i++) {
> > 
> >     if (el.getAttribute("r").equals("20")) { // initial value of r
> > (radius) is 20
> >       el.setAttribute("r", "50");
> >     else
> >       el.setAttribute("r", "20");
> >     try {
> >       Thread.sleep(1000);
> >     }
> >     catch (InterruptedException ex) {
> >     }
> > 
> >   }
> > 
> > }
> > // -------
> > 
> > 
> > 
> ---------------------------------------------------------------------
> > 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]

Reply via email to