cjolif 2003/07/09 06:00:46
Modified: sources/org/apache/batik/bridge
BaseScriptingEnvironment.java
sources/org/apache/batik/script ScriptHandler.java
Added: sources/org/w3c/dom/svg EventListenerInitializer.java
Log:
add/modify classes for Batik to be conformant with SVG 1.1 specification
Appendix D, on Java language binding.
This is closing BR #21374
Revision Changes Path
1.23 +42 -27
xml-batik/sources/org/apache/batik/bridge/BaseScriptingEnvironment.java
Index: BaseScriptingEnvironment.java
===================================================================
RCS file:
/home/cvs/xml-batik/sources/org/apache/batik/bridge/BaseScriptingEnvironment.java,v
retrieving revision 1.22
retrieving revision 1.23
diff -u -r1.22 -r1.23
--- BaseScriptingEnvironment.java 8 Jul 2003 00:16:56 -0000 1.22
+++ BaseScriptingEnvironment.java 9 Jul 2003 13:00:45 -0000 1.23
@@ -35,6 +35,7 @@
import org.w3c.dom.events.EventTarget;
import org.w3c.dom.svg.SVGDocument;
import org.w3c.dom.svg.SVGSVGElement;
+import org.w3c.dom.svg.EventListenerInitializer;
/**
* This class is the base class for SVG scripting.
@@ -46,7 +47,7 @@
/**
* Constant used to describe inline scripts
*/
- public static final String INLINE_SCRIPT_DESCRIPTION
+ public static final String INLINE_SCRIPT_DESCRIPTION
= "BaseScriptingEnvironment.constant.inline.script.description";
/**
@@ -84,7 +85,7 @@
}
return false;
}
-
+
/**
* Tells whether the given SVG element is dynamic.
*/
@@ -153,7 +154,7 @@
(null, SVGConstants.SVG_ONMOUSEUP_ATTRIBUTE).length() > 0) {
return true;
}
-
+
for (Node n = elt.getFirstChild();
n != null;
n = n.getNextSibling()) {
@@ -166,7 +167,7 @@
}
return false;
}
-
+
protected final static String EVENT_NAME = "event";
protected final static String ALTERNATE_EVENT_NAME = "evt";
@@ -180,7 +181,7 @@
* The user-agent.
*/
protected UserAgent userAgent;
-
+
/**
* The document to manage.
*/
@@ -239,7 +240,7 @@
public Interpreter getInterpreter(String lang) {
interpreter = bridgeContext.getInterpreter(lang);
if (interpreter == null) {
- if (languages.contains(lang))
+ if (languages.contains(lang))
// Already issued warning so just return null;
return null;
@@ -304,33 +305,47 @@
URL docURL = null;
try {
docURL = new URL(docPURL.toString());
- } catch (MalformedURLException mue) {
+ } catch (MalformedURLException mue) {
/* nothing just let docURL be null */
}
cll = new DocumentJarClassLoader
(new URL(purl.toString()), docURL);
-
+
// Get the 'Script-Handler' entry in the manifest.
URL url = cll.findResource("META-INF/MANIFEST.MF");
if (url == null) {
continue;
}
Manifest man = new Manifest(url.openStream());
+
String sh;
+
sh = man.getMainAttributes().getValue("Script-Handler");
- if (sh == null) {
- continue;
+ if (sh != null) {
+ // Run the script handler.
+ ScriptHandler h;
+ h = (ScriptHandler)cll.loadClass(sh).newInstance();
+
+ if (window == null) {
+ window = createWindow();
+ }
+
+ h.run(document, window);
}
-
- // Run the script handler.
- ScriptHandler h;
- h = (ScriptHandler)cll.loadClass(sh).newInstance();
-
- if (window == null) {
- window = createWindow();
+
+ sh = man.getMainAttributes().getValue("SVG-Handler-Class");
+ if (sh != null) {
+ // Run the initializer
+ EventListenerInitializer initializer;
+ initializer =
+
(EventListenerInitializer)cll.loadClass(sh).newInstance();
+
+ if (window == null) {
+ window = createWindow();
+ }
+
+ initializer.initializeEventListeners((SVGDocument)document);
}
-
- h.run(document, window);
} catch (Exception e) {
if (userAgent != null) {
userAgent.displayError(e);
@@ -395,11 +410,11 @@
}
/**
- * Checks that the script URLs and the document url are
+ * Checks that the script URLs and the document url are
* compatible. A SecurityException is thrown if loading
* the script is not allowed.
*/
- protected void checkCompatibleScriptURL(String scriptType,
+ protected void checkCompatibleScriptURL(String scriptType,
ParsedURL scriptPURL){
userAgent.checkLoadScript(scriptType, scriptPURL, docPURL);
}
@@ -416,8 +431,8 @@
/**
* Auxiliary method for dispatchSVGLoad.
*/
- protected void dispatchSVGLoad(Element elt,
- boolean checkCanRun,
+ protected void dispatchSVGLoad(Element elt,
+ boolean checkCanRun,
String lang) {
for (Node n = elt.getFirstChild();
n != null;
@@ -449,7 +464,7 @@
t.dispatchEvent(ev);
return;
}
-
+
if (checkCanRun) {
// Check that it is ok to run embeded scripts
checkCompatibleScriptURL(lang, docPURL);
@@ -618,8 +633,8 @@
* @param h A handler called when the data is available.
* @param enc The character encoding of the data.
*/
- public void getURL(String uri,
- org.apache.batik.script.Window.GetURLHandler h,
+ public void getURL(String uri,
+ org.apache.batik.script.Window.GetURLHandler h,
String enc) {
}
1.2 +3 -3 xml-batik/sources/org/apache/batik/script/ScriptHandler.java
Index: ScriptHandler.java
===================================================================
RCS file: /home/cvs/xml-batik/sources/org/apache/batik/script/ScriptHandler.java,v
retrieving revision 1.1
retrieving revision 1.2
diff -u -r1.1 -r1.2
--- ScriptHandler.java 10 Apr 2002 07:24:33 -0000 1.1
+++ ScriptHandler.java 9 Jul 2003 13:00:45 -0000 1.2
@@ -15,7 +15,7 @@
* an SVG document.
*
* A ScriptHandler instance is called when a 'script' element's 'type'
- * attribute value is 'application/x-java-jar-file' and when the
+ * attribute value is 'application/java-archive' and when the
* manifest of the jar file referenced by the 'xlink:href' attribute
* contains a 'Script-Handler' entry. The value of this entry must be
* the classname of the ScriptHandler to call.
@@ -27,7 +27,7 @@
* @version $Id$
*/
public interface ScriptHandler {
-
+
/**
* Runs this handler. This method is called by the SVG viewer
* when the scripts are loaded.
1.1 xml-batik/sources/org/w3c/dom/svg/EventListenerInitializer.java
Index: EventListenerInitializer.java
===================================================================
/*****************************************************************************
* 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. *
*****************************************************************************/
package org.w3c.dom.svg;
/**
* This interface must be implemented in order to call Java code from
* an SVG document.
*
* A <code>EventListenerInitializer</code> instance is called when
* a 'script' element's 'type' attribute value is 'application/java-archive' and when
* the manifest of the jar file referenced by the 'xlink:href' attribute contains
* a 'SVG-Handler-Class' entry. The value of this entry must be the classname of the
* <code>EventListenerInitializer</code> to call.
*
* This classes implementing this interface must have a default
* constructor.
*
* @version $Id: EventListenerInitializer.java,v 1.1 2003/07/09 13:00:46 cjolif Exp $
*/
public interface EventListenerInitializer {
/**
* This method is called by the SVG viewer
* when the scripts are loaded to register
* the listener needed.
* @param doc The current document.
*/
public void initializeEventListeners(SVGDocument doc);
}
---------------------------------------------------------------------
To unsubscribe, e-mail: [EMAIL PROTECTED]
For additional commands, e-mail: [EMAIL PROTECTED]