Grant Mc Auley wrote:
I need to ensure that the UpdateManager and all SVG element are not null
and available before an Applet's init() method returns in the code
below.  In other words, I need to delay init() from returning until
gvtRendingCompleted() is called.

Does anybody have any suggestions on how I might accomplish this?  I
have tried many approaches but to no avail.  I am unclear about the
relationship between the GVTTreeBuilder thread and the main thread.  Any
help with this would be much appreciated as I am facing a deadline.

You need to setup a mutex and wait on it, you probably also want to check for failed/interrupted conditions:

Object mutext = new Object;
   canvas.addGVTTreeRendererListener(new GVTTreeRendererAdapter() {
public void gvtRenderingCompleted(GVTTreeRendererEvent e) {
    //  . . .

    synchronized (mutext) {
      mutex.notifyAll();
    }
 }

synchronized (mutext) {
  canvas.setDocument(doc);
  try {
    mutext.wait();
  catch(InterruptedException ie) {
        ie.printStackTrace();
  }
}




//----------------------------------------------------------------

init() {

  File f = new File("file.svg");
  canvas = new JSVGCanvas();
  canvas.addGVTTreeRendererListener(new GVTTreeRendererAdapter() {

public void gvtRenderingCompleted(GVTTreeRendererEvent e) {

      um = canvas.getUpdateManager();
      element = doc.getElementByID("name");
          . . .

}

  });
  canvas.setDocumentState(JSVGCanvas.ALWAYS_DYNAMIC);
  String parser = XMLResourceDescriptor.getXMLParserClassName();
  SAXSVGDocumentFactory factory = new SAXSVGDocumentFactory(parser);
  doc = factory.createDocument(f.toURL().toString());
  canvas.setDocument(doc);

// delay goes here

}

//----------------------------------------------------------------



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