cjolif 01/10/08 08:07:51
Modified: sources/org/apache/batik/bridge BridgeEventSupport.java
Log:
take modification into scripting (new evaluate method) into account
Revision Changes Path
1.15 +25 -14
xml-batik/sources/org/apache/batik/bridge/BridgeEventSupport.java
Index: BridgeEventSupport.java
===================================================================
RCS file:
/home/cvs/xml-batik/sources/org/apache/batik/bridge/BridgeEventSupport.java,v
retrieving revision 1.14
retrieving revision 1.15
diff -u -r1.14 -r1.15
--- BridgeEventSupport.java 2001/09/13 13:10:54 1.14
+++ BridgeEventSupport.java 2001/10/08 15:07:51 1.15
@@ -53,7 +53,7 @@
* on the GVT root to propagate GVT events to the DOM.
* @author <a href="mailto:[EMAIL PROTECTED]>Christophe Jolif</a>
* @author <a href="mailto:[EMAIL PROTECTED]">Stephane Hillion</a>
- * @version $Id: BridgeEventSupport.java,v 1.14 2001/09/13 13:10:54 tkormann Exp $
+ * @version $Id: BridgeEventSupport.java,v 1.15 2001/10/08 15:07:51 cjolif Exp $
*/
class BridgeEventSupport implements SVGConstants {
private static final String[] EVENT_ATTRIBUTES_GRAPHICS = {
@@ -172,6 +172,8 @@
break;
}
}
+ // <!> TODO this will stop working if someone change
+ // the content of the event attribute
addScriptCaller(target, EVENT_NAMES[i+FIRST_SVG_EVENT],
new ScriptCaller(ctx.getUserAgent(),
script, interpret));
@@ -200,10 +202,12 @@
break;
}
}
+ // <!> TODO this will stop working if someone change
+ // the content of the event attribute
addScriptCaller(target, EVENT_NAMES[i+
- FIRST_ANIMATION_EVENT],
- new ScriptCaller(ctx.getUserAgent(),
- script, interpret));
+ FIRST_ANIMATION_EVENT],
+ new ScriptCaller(ctx.getUserAgent(),
+ script, interpret));
}
}
// not other stuff to do on this kind of events
@@ -221,10 +225,13 @@
if (interpret == null) {
UserAgent ua = ctx.getUserAgent();
if (ua != null)
- ua.displayError(new Exception("unknow language:
"+language));
+ ua.displayError(new Exception("unknow language: "+
+ language));
break;
}
}
+ // <!> TODO this will stop working if someone change
+ // the content of the event attribute
addScriptCaller(target, EVENT_NAMES[i],
new ScriptCaller(ctx.getUserAgent(),
script, interpret));
@@ -279,7 +286,8 @@
public static SVGUnloadListener getInstance(Element svgRoot) {
return (SVGUnloadListener)map.get(svgRoot);
}
- public void addListener(EventTarget element, String type, EventListener
listener) {
+ public void addListener(EventTarget element, String type,
+ EventListener listener) {
list.add(new Entry(type, listener, element));
}
public void handleEvent(Event evt) {
@@ -320,7 +328,7 @@
public static void loadScripts(BridgeContext ctx, Document doc) {
NodeList list = doc.getElementsByTagNameNS(SVG_NAMESPACE_URI,
- SVG_SCRIPT_TAG);
+ SVG_SCRIPT_TAG);
final UserAgent ua = ctx.getUserAgent();
String language = null;
Element selement = null;
@@ -336,13 +344,16 @@
script.append(n.getNodeValue());
}
try {
- interpret.evaluate
- (new StringReader(script.toString()));
+ // use Reader mechanism => no caching
+ // (will not be revaluated + <script> content is
+ // generally bigger than the one in event attributes
+ interpret.evaluate(new StringReader(script.toString()));
} catch (IOException io) {
// will never appeared we don't use a file
} catch (InterpreterException e) {
if (ua != null)
- ua.displayError(new Exception("scripting error: "
+e.getMessage()));
+ ua.displayError(new Exception("scripting error: "+
+ e.getMessage()));
}
} else
if (ua != null)
@@ -506,12 +517,12 @@
public void handleEvent(Event evt) {
interpreter.bindObject(EVENT_NAME, evt);
try {
- interpreter.evaluate(new StringReader(script));
- } catch (IOException io) {
- // will never appeared we don't use a file
+ // use the String version to enable caching mechanism
+ interpreter.evaluate(script);
} catch (InterpreterException e) {
if (ua != null)
- ua.displayError(new Exception("scripting error: "
+e.getMessage()));
+ ua.displayError(new Exception("scripting error: "+
+ e.getMessage()));
}
}
}
---------------------------------------------------------------------
To unsubscribe, e-mail: [EMAIL PROTECTED]
For additional commands, e-mail: [EMAIL PROTECTED]