You are viewing a plain text version of this content. The canonical link for it is here.
Posted to batik-dev@xmlgraphics.apache.org by hi...@apache.org on 2002/03/08 09:45:28 UTC
cvs commit: xml-batik/xdocs javaScripting.xml scriptFeatures.xml site-book.xml
hillion 02/03/08 00:45:28
Modified: sources/org/apache/batik/dom AbstractElement.java
sources/org/apache/batik/swing/gvt GVTTreeRenderer.java
sources/org/apache/batik/swing/svg GVTTreeBuilder.java
SVGDocumentLoader.java SVGLoadEventDispatcher.java
xdocs scriptFeatures.xml site-book.xml
Added: xdocs javaScripting.xml
Log:
- Added more doc about scripting,
- the xxxStarted events are now called synchroneously,
- fixed a DOM bug: DOMAttrModified was fired twice when an Attr was changed.
Revision Changes Path
1.13 +1 -7 xml-batik/sources/org/apache/batik/dom/AbstractElement.java
Index: AbstractElement.java
===================================================================
RCS file: /home/cvs/xml-batik/sources/org/apache/batik/dom/AbstractElement.java,v
retrieving revision 1.12
retrieving revision 1.13
diff -u -r1.12 -r1.13
--- AbstractElement.java 19 Nov 2001 13:39:55 -0000 1.12
+++ AbstractElement.java 8 Mar 2002 08:45:27 -0000 1.13
@@ -29,7 +29,7 @@
* This class implements the {@link org.w3c.dom.Element} interface.
*
* @author <a href="mailto:stephane@hillion.org">Stephane Hillion</a>
- * @version $Id: AbstractElement.java,v 1.12 2001/11/19 13:39:55 hillion Exp $
+ * @version $Id: AbstractElement.java,v 1.13 2002/03/08 08:45:27 hillion Exp $
*/
public abstract class AbstractElement
extends AbstractParentChildNode
@@ -235,13 +235,7 @@
attr.setValue(value);
attributes.setNamedItemNS(attr);
} else {
- String s = attr.getValue();
attr.setValue(value);
- fireDOMAttrModifiedEvent(qualifiedName,
- attr,
- s,
- value,
- MutationEvent.MODIFICATION);
}
}
1.6 +42 -24 xml-batik/sources/org/apache/batik/swing/gvt/GVTTreeRenderer.java
Index: GVTTreeRenderer.java
===================================================================
RCS file: /home/cvs/xml-batik/sources/org/apache/batik/swing/gvt/GVTTreeRenderer.java,v
retrieving revision 1.5
retrieving revision 1.6
diff -u -r1.5 -r1.6
--- GVTTreeRenderer.java 21 Aug 2001 15:03:24 -0000 1.5
+++ GVTTreeRenderer.java 8 Mar 2002 08:45:27 -0000 1.6
@@ -15,6 +15,8 @@
import java.awt.image.BufferedImage;
+import java.lang.reflect.InvocationTargetException;
+
import java.util.Collections;
import java.util.LinkedList;
import java.util.List;
@@ -27,7 +29,7 @@
* a GVT tree.
*
* @author <a href="mailto:stephane@hillion.org">Stephane Hillion</a>
- * @version $Id: GVTTreeRenderer.java,v 1.5 2001/08/21 15:03:24 tkormann Exp $
+ * @version $Id: GVTTreeRenderer.java,v 1.6 2002/03/08 08:45:27 hillion Exp $
*/
public class GVTTreeRenderer extends Thread {
@@ -160,24 +162,29 @@
/**
* Fires a GVTTreeRendererEvent in the preparing phase.
*/
- protected void firePrepareEvent() {
+ protected void firePrepareEvent() throws InterruptedException {
final Object[] dll = listeners.toArray();
if (dll.length > 0) {
- final GVTTreeRendererEvent ev = new GVTTreeRendererEvent(this, null);
+ final GVTTreeRendererEvent ev =
+ new GVTTreeRendererEvent(this, null);
if (EventQueue.isDispatchThread()) {
for (int i = 0; i < dll.length; i++) {
((GVTTreeRendererListener)dll[i]).gvtRenderingPrepare(ev);
}
} else {
- EventQueue.invokeLater(new Runnable() {
- public void run() {
- for (int i = 0; i < dll.length; i++) {
- ((GVTTreeRendererListener)dll[i]).gvtRenderingPrepare(ev);
- }
- }
- });
+ try {
+ EventQueue.invokeAndWait(new Runnable() {
+ public void run() {
+ for (int i = 0; i < dll.length; i++) {
+ ((GVTTreeRendererListener)dll[i]).
+ gvtRenderingPrepare(ev);
+ }
+ }
+ });
+ } catch (InvocationTargetException e) {
+ }
}
}
}
@@ -185,7 +192,8 @@
/**
* Fires a GVTTreeRendererEvent in the starting phase.
*/
- protected void fireStartedEvent(BufferedImage bi) {
+ protected void fireStartedEvent(BufferedImage bi)
+ throws InterruptedException {
final Object[] dll = listeners.toArray();
if (dll.length > 0) {
@@ -196,13 +204,17 @@
((GVTTreeRendererListener)dll[i]).gvtRenderingStarted(ev);
}
} else {
- EventQueue.invokeLater(new Runnable() {
- public void run() {
- for (int i = 0; i < dll.length; i++) {
- ((GVTTreeRendererListener)dll[i]).gvtRenderingStarted(ev);
- }
- }
- });
+ try {
+ EventQueue.invokeAndWait(new Runnable() {
+ public void run() {
+ for (int i = 0; i < dll.length; i++) {
+ ((GVTTreeRendererListener)dll[i]).
+ gvtRenderingStarted(ev);
+ }
+ }
+ });
+ } catch (InvocationTargetException e) {
+ }
}
}
}
@@ -218,13 +230,15 @@
if (EventQueue.isDispatchThread()) {
for (int i = 0; i < dll.length; i++) {
- ((GVTTreeRendererListener)dll[i]).gvtRenderingCancelled(ev);
+ ((GVTTreeRendererListener)dll[i]).
+ gvtRenderingCancelled(ev);
}
} else {
EventQueue.invokeLater(new Runnable() {
public void run() {
for (int i = 0; i < dll.length; i++) {
- ((GVTTreeRendererListener)dll[i]).gvtRenderingCancelled(ev);
+ ((GVTTreeRendererListener)dll[i]).
+ gvtRenderingCancelled(ev);
}
}
});
@@ -243,13 +257,15 @@
if (EventQueue.isDispatchThread()) {
for (int i = 0; i < dll.length; i++) {
- ((GVTTreeRendererListener)dll[i]).gvtRenderingCompleted(ev);
+ ((GVTTreeRendererListener)dll[i]).
+ gvtRenderingCompleted(ev);
}
} else {
EventQueue.invokeLater(new Runnable() {
public void run() {
for (int i = 0; i < dll.length; i++) {
- ((GVTTreeRendererListener)dll[i]).gvtRenderingCompleted(ev);
+ ((GVTTreeRendererListener)dll[i]).
+ gvtRenderingCompleted(ev);
}
}
});
@@ -264,7 +280,8 @@
final Object[] dll = listeners.toArray();
if (dll.length > 0) {
- final GVTTreeRendererEvent ev = new GVTTreeRendererEvent(this, null);
+ final GVTTreeRendererEvent ev =
+ new GVTTreeRendererEvent(this, null);
if (EventQueue.isDispatchThread()) {
for (int i = 0; i < dll.length; i++) {
@@ -274,7 +291,8 @@
EventQueue.invokeLater(new Runnable() {
public void run() {
for (int i = 0; i < dll.length; i++) {
- ((GVTTreeRendererListener)dll[i]).gvtRenderingFailed(ev);
+ ((GVTTreeRendererListener)dll[i]).
+ gvtRenderingFailed(ev);
}
}
});
1.7 +16 -11 xml-batik/sources/org/apache/batik/swing/svg/GVTTreeBuilder.java
Index: GVTTreeBuilder.java
===================================================================
RCS file: /home/cvs/xml-batik/sources/org/apache/batik/swing/svg/GVTTreeBuilder.java,v
retrieving revision 1.6
retrieving revision 1.7
diff -u -r1.6 -r1.7
--- GVTTreeBuilder.java 18 Feb 2002 09:11:59 -0000 1.6
+++ GVTTreeBuilder.java 8 Mar 2002 08:45:28 -0000 1.7
@@ -10,6 +10,8 @@
import java.awt.EventQueue;
+import java.lang.reflect.InvocationTargetException;
+
import java.util.Collections;
import java.util.LinkedList;
import java.util.List;
@@ -29,7 +31,7 @@
* a GVT tree.
*
* @author <a href="mailto:stephane@hillion.org">Stephane Hillion</a>
- * @version $Id: GVTTreeBuilder.java,v 1.6 2002/02/18 09:11:59 hillion Exp $
+ * @version $Id: GVTTreeBuilder.java,v 1.7 2002/03/08 08:45:28 hillion Exp $
*/
public class GVTTreeBuilder extends Thread {
@@ -115,7 +117,7 @@
/**
* Fires a GVTTreeBuilderEvent.
*/
- protected void fireStartedEvent() {
+ protected void fireStartedEvent() throws InterruptedException {
final Object[] dll = listeners.toArray();
if (dll.length > 0) {
@@ -127,15 +129,18 @@
dl.gvtBuildStarted(ev);
}
} else {
- EventQueue.invokeLater(new Runnable() {
- public void run() {
- for (int i = 0; i < dll.length; i++) {
- GVTTreeBuilderListener dl =
- (GVTTreeBuilderListener)dll[i];
- dl.gvtBuildStarted(ev);
- }
- }
- });
+ try {
+ EventQueue.invokeAndWait(new Runnable() {
+ public void run() {
+ for (int i = 0; i < dll.length; i++) {
+ GVTTreeBuilderListener dl =
+ (GVTTreeBuilderListener)dll[i];
+ dl.gvtBuildStarted(ev);
+ }
+ }
+ });
+ } catch (InvocationTargetException e) {
+ }
}
}
}
1.5 +32 -19 xml-batik/sources/org/apache/batik/swing/svg/SVGDocumentLoader.java
Index: SVGDocumentLoader.java
===================================================================
RCS file: /home/cvs/xml-batik/sources/org/apache/batik/swing/svg/SVGDocumentLoader.java,v
retrieving revision 1.4
retrieving revision 1.5
diff -u -r1.4 -r1.5
--- SVGDocumentLoader.java 19 Apr 2001 13:13:51 -0000 1.4
+++ SVGDocumentLoader.java 8 Mar 2002 08:45:28 -0000 1.5
@@ -12,6 +12,8 @@
import java.io.InterruptedIOException;
+import java.lang.reflect.InvocationTargetException;
+
import java.util.Collections;
import java.util.LinkedList;
import java.util.List;
@@ -26,7 +28,7 @@
* This class represents an object which loads asynchroneaously a SVG document.
*
* @author <a href="mailto:stephane@hillion.org">Stephane Hillion</a>
- * @version $Id: SVGDocumentLoader.java,v 1.4 2001/04/19 13:13:51 hillion Exp $
+ * @version $Id: SVGDocumentLoader.java,v 1.5 2002/03/08 08:45:28 hillion Exp $
*/
public class SVGDocumentLoader extends Thread {
@@ -100,27 +102,32 @@
/**
* Fires a SVGDocumentLoaderEvent.
*/
- protected void fireStartedEvent() {
+ protected void fireStartedEvent() throws InterruptedException {
final Object[] dll = listeners.toArray();
if (dll.length > 0) {
- final SVGDocumentLoaderEvent ev = new SVGDocumentLoaderEvent(this, null);
+ final SVGDocumentLoaderEvent ev =
+ new SVGDocumentLoaderEvent(this, null);
if (EventQueue.isDispatchThread()) {
for (int i = 0; i < dll.length; i++) {
- SVGDocumentLoaderListener dl = (SVGDocumentLoaderListener)dll[i];
+ SVGDocumentLoaderListener dl =
+ (SVGDocumentLoaderListener)dll[i];
dl.documentLoadingStarted(ev);
}
} else {
- EventQueue.invokeLater(new Runnable() {
- public void run() {
- for (int i = 0; i < dll.length; i++) {
- SVGDocumentLoaderListener dl =
- (SVGDocumentLoaderListener)dll[i];
- dl.documentLoadingStarted(ev);
- }
- }
- });
+ try {
+ EventQueue.invokeAndWait(new Runnable() {
+ public void run() {
+ for (int i = 0; i < dll.length; i++) {
+ SVGDocumentLoaderListener dl =
+ (SVGDocumentLoaderListener)dll[i];
+ dl.documentLoadingStarted(ev);
+ }
+ }
+ });
+ } catch (InvocationTargetException e) {
+ }
}
}
}
@@ -132,11 +139,13 @@
final Object[] dll = listeners.toArray();
if (dll.length > 0) {
- final SVGDocumentLoaderEvent ev = new SVGDocumentLoaderEvent(this, doc);
+ final SVGDocumentLoaderEvent ev =
+ new SVGDocumentLoaderEvent(this, doc);
if (EventQueue.isDispatchThread()) {
for (int i = 0; i < dll.length; i++) {
- SVGDocumentLoaderListener dl = (SVGDocumentLoaderListener)dll[i];
+ SVGDocumentLoaderListener dl =
+ (SVGDocumentLoaderListener)dll[i];
dl.documentLoadingCompleted(ev);
}
} else {
@@ -160,11 +169,13 @@
final Object[] dll = listeners.toArray();
if (dll.length > 0) {
- final SVGDocumentLoaderEvent ev = new SVGDocumentLoaderEvent(this, null);
+ final SVGDocumentLoaderEvent ev =
+ new SVGDocumentLoaderEvent(this, null);
if (EventQueue.isDispatchThread()) {
for (int i = 0; i < dll.length; i++) {
- SVGDocumentLoaderListener dl = (SVGDocumentLoaderListener)dll[i];
+ SVGDocumentLoaderListener dl =
+ (SVGDocumentLoaderListener)dll[i];
dl.documentLoadingFailed(ev);
}
} else {
@@ -188,11 +199,13 @@
final Object[] dll = listeners.toArray();
if (dll.length > 0) {
- final SVGDocumentLoaderEvent ev = new SVGDocumentLoaderEvent(this, null);
+ final SVGDocumentLoaderEvent ev =
+ new SVGDocumentLoaderEvent(this, null);
if (EventQueue.isDispatchThread()) {
for (int i = 0; i < dll.length; i++) {
- SVGDocumentLoaderListener dl = (SVGDocumentLoaderListener)dll[i];
+ SVGDocumentLoaderListener dl =
+ (SVGDocumentLoaderListener)dll[i];
dl.documentLoadingCancelled(ev);
}
} else {
1.4 +16 -11 xml-batik/sources/org/apache/batik/swing/svg/SVGLoadEventDispatcher.java
Index: SVGLoadEventDispatcher.java
===================================================================
RCS file: /home/cvs/xml-batik/sources/org/apache/batik/swing/svg/SVGLoadEventDispatcher.java,v
retrieving revision 1.3
retrieving revision 1.4
diff -u -r1.3 -r1.4
--- SVGLoadEventDispatcher.java 25 Feb 2002 15:05:33 -0000 1.3
+++ SVGLoadEventDispatcher.java 8 Mar 2002 08:45:28 -0000 1.4
@@ -10,6 +10,8 @@
import java.awt.EventQueue;
+import java.lang.reflect.InvocationTargetException;
+
import java.util.Collections;
import java.util.LinkedList;
import java.util.List;
@@ -26,7 +28,7 @@
* This class dispatches the SVGLoadEvent event on a SVG document.
*
* @author <a href="mailto:stephane@hillion.org">Stephane Hillion</a>
- * @version $Id: SVGLoadEventDispatcher.java,v 1.3 2002/02/25 15:05:33 hillion Exp $
+ * @version $Id: SVGLoadEventDispatcher.java,v 1.4 2002/03/08 08:45:28 hillion Exp $
*/
public class SVGLoadEventDispatcher extends Thread {
@@ -125,7 +127,7 @@
/**
* Fires a SVGLoadEventDispatcherEvent.
*/
- protected void fireStartedEvent() {
+ protected void fireStartedEvent() throws InterruptedException {
final Object[] dll = listeners.toArray();
if (dll.length > 0) {
@@ -139,15 +141,18 @@
dl.svgLoadEventDispatchStarted(ev);
}
} else {
- EventQueue.invokeLater(new Runnable() {
- public void run() {
- for (int i = 0; i < dll.length; i++) {
- SVGLoadEventDispatcherListener dl =
- (SVGLoadEventDispatcherListener)dll[i];
- dl.svgLoadEventDispatchStarted(ev);
- }
- }
- });
+ try {
+ EventQueue.invokeAndWait(new Runnable() {
+ public void run() {
+ for (int i = 0; i < dll.length; i++) {
+ SVGLoadEventDispatcherListener dl =
+ (SVGLoadEventDispatcherListener)dll[i];
+ dl.svgLoadEventDispatchStarted(ev);
+ }
+ }
+ });
+ } catch (InvocationTargetException e) {
+ }
}
}
}
1.3 +7 -7 xml-batik/xdocs/scriptFeatures.xml
Index: scriptFeatures.xml
===================================================================
RCS file: /home/cvs/xml-batik/xdocs/scriptFeatures.xml,v
retrieving revision 1.2
retrieving revision 1.3
diff -u -r1.2 -r1.3
--- scriptFeatures.xml 7 Mar 2002 15:23:12 -0000 1.2
+++ scriptFeatures.xml 8 Mar 2002 08:45:28 -0000 1.3
@@ -11,7 +11,7 @@
<!-- ========================================================================= -->
<!-- author shillion@ilog.fr -->
-<!-- version $Id: scriptFeatures.xml,v 1.2 2002/03/07 15:23:12 hillion Exp $ -->
+<!-- version $Id: scriptFeatures.xml,v 1.3 2002/03/08 08:45:28 hillion Exp $ -->
<!-- ========================================================================= -->
<document>
<header>
@@ -100,7 +100,7 @@
</tr>
</table>
<p>
- Shows an confirm dialog with 'OK' and 'Cancel' button.
+ Shows a confirm dialog with 'OK' and 'Cancel' buttons.
</p>
<ul>
<li><em>question</em>: The string to display</li>
@@ -114,8 +114,8 @@
<table>
<tr>
- <td>Method <code>prompt</code>(<em>message</em>,
- [<em>defaultValue</em>])</td>
+ <td>Method <code>prompt</code>(<em>message</em>[,
+ <em>defaultValue</em>])</td>
</tr>
</table>
<p>
@@ -208,7 +208,7 @@
</p>
<ul>
<li><em>script</em>: A string representing the script to evaluate.</li>
- <li><em>interval</em>: The timeout in milliseconds.</li>
+ <li><em>timeout</em>: The timeout in milliseconds.</li>
</ul>
<p>
This method returns an object which can be used with
@@ -231,7 +231,7 @@
</p>
<ul>
<li><em>function</em>: A function to call.</li>
- <li><em>interval</em>: The timeout in milliseconds.</li>
+ <li><em>timeout</em>: The timeout in milliseconds.</li>
</ul>
<p>
This method returns an object which can be used with
@@ -247,7 +247,7 @@
</tr>
</table>
<p>
- Cancels an timeout that was set by a call to <code>setTimeout</code>.
+ Cancels a timeout that was set by a call to <code>setTimeout</code>.
</p>
<ul>
<li><em>timeoutID</em>: An object returned by a call to
1.27 +6 -4 xml-batik/xdocs/site-book.xml
Index: site-book.xml
===================================================================
RCS file: /home/cvs/xml-batik/xdocs/site-book.xml,v
retrieving revision 1.26
retrieving revision 1.27
diff -u -r1.26 -r1.27
--- site-book.xml 7 Mar 2002 15:16:50 -0000 1.26
+++ site-book.xml 8 Mar 2002 08:45:28 -0000 1.27
@@ -12,10 +12,10 @@
<!-- author stephane@hillion.org -->
<!-- author tkormann@apache.org -->
<!-- author vincent.hardy@eng.sun.com -->
-<!-- version $Id: site-book.xml,v 1.26 2002/03/07 15:16:50 hillion Exp $ -->
+<!-- version $Id: site-book.xml,v 1.27 2002/03/08 08:45:28 hillion Exp $ -->
<!-- ========================================================================= -->
-<book title="Apache Batik documentation" copyright="2000-2001 The Apache Software Foundation">
+<book title="Apache Batik documentation" copyright="2000-2002 The Apache Software Foundation">
<!-- ======================= -->
<!-- Home -->
<!-- ======================= -->
@@ -58,11 +58,13 @@
<page id="architecture" label="Architecture" source="architecture.xml"/>
<page id="svggen" label="Generator" source="svggen.xml" />
<page id="domapi" label="DOM API" source="domTutorial.xml" />
- <page id="scripting" label="Scripting Intro" source="scriptIntro.xml" />
- <page id="scriptfeatures" label="Script Features" source="scriptFeatures.xml" />
<page id="svgcanvas" label="JSVGCanvas" source="jsvgcanvas.xml" />
<page id="rasterizerTutorial" label="Transcoder API" source="rasterizerTutorial.xml"/>
<separator/>
+ <page id="scripting" label="Scripting Intro" source="scriptIntro.xml" />
+ <page id="scriptfeatures" label="Scripting Features" source="scriptFeatures.xml" />
+ <page id="javaScripting" label="Java Scripting" source="javaScripting.xml" />
+ <separator />
<page id="extendingBatik" label="Extensions" source="extendingBatik.xml" />
<separator/>
<page id="test" label="Testing" source="testInfrastructure.xml"/>
1.1 xml-batik/xdocs/javaScripting.xml
Index: javaScripting.xml
===================================================================
<?xml version="1.0"?>
<!DOCTYPE document SYSTEM "./dtd/document-v10.dtd">
<!-- ========================================================================= -->
<!-- Copyright (C) The Apache Software Foundation. All rights reserved. -->
<!-- -->
<!-- This software is published under the terms of the Apache Software License -->
<!-- version 1.1, a copy of which has been included with this distribution in -->
<!-- the LICENSE file. -->
<!-- ========================================================================= -->
<!-- ========================================================================= -->
<!-- author shillion@ilog.fr -->
<!-- version $Id: javaScripting.xml,v 1.1 2002/03/08 08:45:28 hillion Exp $ -->
<!-- ========================================================================= -->
<document>
<header>
<title>Scripting With Java</title>
<authors>
<person name="Stephane Hillion" email="shillion@ilog.fr"/>
</authors>
</header>
<body>
<s1 title="How to manipulate a JSVGCanvas DOM">
<p>
The follow code template demonstrates how to manipulate an SVG
document displayed in a JSVGCanvas directly from a Java program.
</p>
<source>
import java.awt.event.WindowEvent;
import javax.swing.JFrame;
import org.apache.batik.swing.JSVGCanvas;
import org.apache.batik.swing.svg.SVGLoadEventDispatcherAdapter;
import org.apache.batik.swing.svg.SVGLoadEventDispatcherEvent;
import org.apache.batik.script.Window;
import org.w3c.dom.Document;
import org.w3c.dom.Element;
import org.w3c.dom.events.Event;
import org.w3c.dom.events.EventListener;
import org.w3c.dom.events.EventTarget;
public class SVGApplication {
public static void main(String[] args) {
new SVGApplication();
}
JFrame frame;
JSVGCanvas canvas;
Document document;
Window window;
public SVGApplication() {
frame = new JFrame();
canvas = new JSVGCanvas();
// Forces the canvas to always be dynamic even if the current
// document does not contains scripting or animation.
canvas.setDocumentState(JSVGCanvas.ALWAYS_DYNAMIC);
canvas.addSVGLoadEventDispatcherListener
(new SVGLoadEventDispatcherAdapter() {
public void svgLoadEventDispatchStarted
(SVGLoadEventDispatcherEvent e) {
// At this time the document is available...
document = canvas.getSVGDocument();
// ...and the window object too.
window = canvas.getUpdateManager().
getScriptingEnvironment().createWindow();
// Registers the listeners on the document
// just before the SVGLoad event is
// dispatched.
registerListeners();
// It is time to pack the frame.
frame.pack();
}
});
frame.addWindowListener(new WindowAdapter() {
public void windowOpened(WindowEvent e) {
// Loads the base document now.
canvas.setURI("doc.svg");
}
});
frame.getContentPane().add(canvas);
frame.setSize(800, 600);
frame.show();
}
public void registerListeners() {
// Gets an element from the loaded document.
Element elt = document.getElementById("elt-id");
// Adds a 'onload' listener
((EventTarget)elt).addEventListener("SVGLoad",
new OnLoadAction(),
false);
// Adds a 'onclick' listener
((EventTarget)elt).addEventListener("click",
new OnClickAction(),
false);
}
public class OnLoadAction implements EventListener {
public void handleEvent(Event evt) {
// Make some action here...
// For example start an animation loop:
window.setInterval(new Animation(), 50);
}
}
public class OnClickAction implements EventListener {
public void handleEvent(Event evt) {
// Make some actions here...
}
}
public class Animation implements Runnable {
public void run() {
// Insert animation code here...
}
}
}
</source>
</s1>
<s1 title="Writing thread-safe code">
<p>
The DOM listeners registered on the SVG document are called from
the canvas update thread. To avoid race conditions do not manipulate
the DOM tree from another thread.<br/>
The way to switch from an external thread to the canvas update
thread is to use the following code:
</p>
<source>
// Returns immediately
canvas.getUpdateManager().getUpdateRunnableQueue().
invokeLater(new Runnable() {
// Insert some actions on the DOM here
});
- or -
// Waits until the Runnable is invoked
canvas.getUpdateManager().getUpdateRunnableQueue().
invokeAndWait(new Runnable() {
// Insert some actions on the DOM here
});
</source>
</s1>
</body>
</document>
---------------------------------------------------------------------
To unsubscribe, e-mail: batik-dev-unsubscribe@xml.apache.org
For additional commands, e-mail: batik-dev-help@xml.apache.org