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]