You are viewing a plain text version of this content. The canonical link for it is here.
Posted to batik-commits@xmlgraphics.apache.org by ca...@apache.org on 2005/09/13 15:31:09 UTC

svn commit: r280553 [1/9] - in /xmlgraphics/batik/trunk: ./ resources/org/apache/batik/apps/svgbrowser/resources/ sources/org/apache/batik/bridge/ sources/org/apache/batik/bridge/svg12/ sources/org/apache/batik/css/engine/ sources/org/apache/batik/dom/...

Author: cam
Date: Tue Sep 13 06:29:29 2005
New Revision: 280553

URL: http://svn.apache.org/viewcvs?rev=280553&view=rev
Log:
1.  Added sXBL support for SVG 1.2 documents.
2.  CSSEngine now has a more generic way of navigating documents with
    shadow trees (CSSNavigableNode interface).
3.  Updated most internal events and event listeners to DOM 3 events.
    (CSSEngine wasn't updated, since it can't have a dependency on the
    Batik DOM classes.)
4.  Added some methods to the org.apache.batik.dom.events.CustomEvent
    interface to allow DOM 3 custom events to work properly.  Custom
    events also fixed for javascript.
5.  Small event handling bug fixes.
6.  Resource documents have their own scripting environment.
7.  SVG 1.2 "shapechange" and "RenderedBBoxChange" events.
8.  Updated some event types for SVG 1.2 documents.
    (Event type aliases still to do.)
9.  Updated build.xml to ignore .svn directories.
12. Added myself to the splash screen. :-)

Added:
    xmlgraphics/batik/trunk/sources/org/apache/batik/bridge/svg12/AbstractContentSelector.java   (with props)
    xmlgraphics/batik/trunk/sources/org/apache/batik/bridge/svg12/BindableElementBridge.java   (with props)
    xmlgraphics/batik/trunk/sources/org/apache/batik/bridge/svg12/BindingListener.java   (with props)
    xmlgraphics/batik/trunk/sources/org/apache/batik/bridge/svg12/ContentManager.java   (with props)
    xmlgraphics/batik/trunk/sources/org/apache/batik/bridge/svg12/ContentSelectionChangedEvent.java   (with props)
    xmlgraphics/batik/trunk/sources/org/apache/batik/bridge/svg12/ContentSelectionChangedListener.java   (with props)
    xmlgraphics/batik/trunk/sources/org/apache/batik/bridge/svg12/DefaultContentSelector.java   (with props)
    xmlgraphics/batik/trunk/sources/org/apache/batik/bridge/svg12/DefaultXBLManager.java   (with props)
    xmlgraphics/batik/trunk/sources/org/apache/batik/bridge/svg12/SVG12BridgeContext.java   (with props)
    xmlgraphics/batik/trunk/sources/org/apache/batik/bridge/svg12/SVG12BridgeEventSupport.java   (with props)
    xmlgraphics/batik/trunk/sources/org/apache/batik/bridge/svg12/SVG12BridgeUpdateHandler.java   (with props)
    xmlgraphics/batik/trunk/sources/org/apache/batik/bridge/svg12/SVG12FocusManager.java   (with props)
    xmlgraphics/batik/trunk/sources/org/apache/batik/bridge/svg12/SVG12TextElementBridge.java   (with props)
    xmlgraphics/batik/trunk/sources/org/apache/batik/bridge/svg12/SVG12URIResolver.java   (with props)
    xmlgraphics/batik/trunk/sources/org/apache/batik/bridge/svg12/XBLContentElementBridge.java   (with props)
    xmlgraphics/batik/trunk/sources/org/apache/batik/bridge/svg12/XBLShadowTreeElementBridge.java   (with props)
    xmlgraphics/batik/trunk/sources/org/apache/batik/bridge/svg12/XPathPatternContentSelector.java   (with props)
    xmlgraphics/batik/trunk/sources/org/apache/batik/bridge/svg12/XPathSubsetContentSelector.java   (with props)
    xmlgraphics/batik/trunk/sources/org/apache/batik/css/engine/CSSNavigableDocument.java   (with props)
    xmlgraphics/batik/trunk/sources/org/apache/batik/css/engine/CSSNavigableDocumentListener.java   (with props)
    xmlgraphics/batik/trunk/sources/org/apache/batik/css/engine/CSSNavigableNode.java   (with props)
    xmlgraphics/batik/trunk/sources/org/apache/batik/dom/svg/SVGOMUseShadowRoot.java   (with props)
    xmlgraphics/batik/trunk/sources/org/apache/batik/dom/svg12/BindableElement.java   (with props)
    xmlgraphics/batik/trunk/sources/org/apache/batik/dom/svg12/SVG12OMDocument.java   (with props)
    xmlgraphics/batik/trunk/sources/org/apache/batik/dom/svg12/XBLEventSupport.java   (with props)
    xmlgraphics/batik/trunk/sources/org/apache/batik/dom/svg12/XBLOMContentElement.java   (with props)
    xmlgraphics/batik/trunk/sources/org/apache/batik/dom/svg12/XBLOMDefinitionElement.java   (with props)
    xmlgraphics/batik/trunk/sources/org/apache/batik/dom/svg12/XBLOMElement.java   (with props)
    xmlgraphics/batik/trunk/sources/org/apache/batik/dom/svg12/XBLOMHandlerGroupElement.java   (with props)
    xmlgraphics/batik/trunk/sources/org/apache/batik/dom/svg12/XBLOMImportElement.java   (with props)
    xmlgraphics/batik/trunk/sources/org/apache/batik/dom/svg12/XBLOMShadowTreeElement.java   (with props)
    xmlgraphics/batik/trunk/sources/org/apache/batik/dom/svg12/XBLOMShadowTreeEvent.java   (with props)
    xmlgraphics/batik/trunk/sources/org/apache/batik/dom/svg12/XBLOMTemplateElement.java   (with props)
    xmlgraphics/batik/trunk/sources/org/apache/batik/dom/svg12/XBLOMXBLElement.java   (with props)
    xmlgraphics/batik/trunk/sources/org/apache/batik/dom/xbl/
    xmlgraphics/batik/trunk/sources/org/apache/batik/dom/xbl/GenericXBLManager.java   (with props)
    xmlgraphics/batik/trunk/sources/org/apache/batik/dom/xbl/NodeXBL.java   (with props)
    xmlgraphics/batik/trunk/sources/org/apache/batik/dom/xbl/OriginalEvent.java   (with props)
    xmlgraphics/batik/trunk/sources/org/apache/batik/dom/xbl/ShadowTreeEvent.java   (with props)
    xmlgraphics/batik/trunk/sources/org/apache/batik/dom/xbl/XBLManager.java   (with props)
    xmlgraphics/batik/trunk/sources/org/apache/batik/dom/xbl/XBLManagerData.java   (with props)
    xmlgraphics/batik/trunk/sources/org/apache/batik/dom/xbl/XBLShadowTreeElement.java   (with props)
    xmlgraphics/batik/trunk/sources/org/apache/batik/parser/AbstractScanner.java   (with props)
    xmlgraphics/batik/trunk/sources/org/apache/batik/script/ScriptEventWrapper.java   (with props)
    xmlgraphics/batik/trunk/sources/org/apache/batik/util/XBLConstants.java   (with props)
Removed:
    xmlgraphics/batik/trunk/sources/org/apache/batik/css/engine/CSSImportNode.java
    xmlgraphics/batik/trunk/sources/org/apache/batik/css/engine/CSSImportedElementRoot.java
    xmlgraphics/batik/trunk/sources/org/apache/batik/dom/svg/SVGOMCSSImportedElementRoot.java
Modified:
    xmlgraphics/batik/trunk/.classpath
    xmlgraphics/batik/trunk/build.xml
    xmlgraphics/batik/trunk/resources/org/apache/batik/apps/svgbrowser/resources/GUI.properties
    xmlgraphics/batik/trunk/sources/org/apache/batik/bridge/AbstractGraphicsNodeBridge.java
    xmlgraphics/batik/trunk/sources/org/apache/batik/bridge/BaseScriptingEnvironment.java
    xmlgraphics/batik/trunk/sources/org/apache/batik/bridge/BridgeContext.java
    xmlgraphics/batik/trunk/sources/org/apache/batik/bridge/BridgeEventSupport.java
    xmlgraphics/batik/trunk/sources/org/apache/batik/bridge/CSSUtilities.java
    xmlgraphics/batik/trunk/sources/org/apache/batik/bridge/CursorManager.java
    xmlgraphics/batik/trunk/sources/org/apache/batik/bridge/FocusManager.java
    xmlgraphics/batik/trunk/sources/org/apache/batik/bridge/GVTBuilder.java
    xmlgraphics/batik/trunk/sources/org/apache/batik/bridge/SVGAElementBridge.java
    xmlgraphics/batik/trunk/sources/org/apache/batik/bridge/SVGClipPathElementBridge.java
    xmlgraphics/batik/trunk/sources/org/apache/batik/bridge/SVGImageElementBridge.java
    xmlgraphics/batik/trunk/sources/org/apache/batik/bridge/SVGShapeElementBridge.java
    xmlgraphics/batik/trunk/sources/org/apache/batik/bridge/SVGTextElementBridge.java
    xmlgraphics/batik/trunk/sources/org/apache/batik/bridge/SVGUseElementBridge.java
    xmlgraphics/batik/trunk/sources/org/apache/batik/bridge/SVGUtilities.java
    xmlgraphics/batik/trunk/sources/org/apache/batik/bridge/ScriptingEnvironment.java
    xmlgraphics/batik/trunk/sources/org/apache/batik/bridge/URIResolver.java
    xmlgraphics/batik/trunk/sources/org/apache/batik/bridge/UpdateManager.java
    xmlgraphics/batik/trunk/sources/org/apache/batik/bridge/svg12/SVG12BridgeExtension.java
    xmlgraphics/batik/trunk/sources/org/apache/batik/bridge/svg12/SVG12ScriptingEnvironment.java
    xmlgraphics/batik/trunk/sources/org/apache/batik/bridge/svg12/SVGFlowRootElementBridge.java
    xmlgraphics/batik/trunk/sources/org/apache/batik/css/engine/CSSEngine.java
    xmlgraphics/batik/trunk/sources/org/apache/batik/css/engine/SVG12CSSEngine.java
    xmlgraphics/batik/trunk/sources/org/apache/batik/dom/AbstractDOMImplementation.java
    xmlgraphics/batik/trunk/sources/org/apache/batik/dom/AbstractDocument.java
    xmlgraphics/batik/trunk/sources/org/apache/batik/dom/AbstractElement.java
    xmlgraphics/batik/trunk/sources/org/apache/batik/dom/AbstractNode.java
    xmlgraphics/batik/trunk/sources/org/apache/batik/dom/AbstractParentNode.java
    xmlgraphics/batik/trunk/sources/org/apache/batik/dom/ExtendedNode.java
    xmlgraphics/batik/trunk/sources/org/apache/batik/dom/events/AbstractEvent.java
    xmlgraphics/batik/trunk/sources/org/apache/batik/dom/events/CustomEvent.java
    xmlgraphics/batik/trunk/sources/org/apache/batik/dom/events/DOMMouseEvent.java
    xmlgraphics/batik/trunk/sources/org/apache/batik/dom/events/EventListenerList.java
    xmlgraphics/batik/trunk/sources/org/apache/batik/dom/events/EventSupport.java
    xmlgraphics/batik/trunk/sources/org/apache/batik/dom/svg/AbstractElement.java
    xmlgraphics/batik/trunk/sources/org/apache/batik/dom/svg/SVGOMDocument.java
    xmlgraphics/batik/trunk/sources/org/apache/batik/dom/svg/SVGOMElement.java
    xmlgraphics/batik/trunk/sources/org/apache/batik/dom/svg/SVGOMStyleElement.java
    xmlgraphics/batik/trunk/sources/org/apache/batik/dom/svg/SVGOMUseElement.java
    xmlgraphics/batik/trunk/sources/org/apache/batik/dom/svg/SVGStylableElement.java
    xmlgraphics/batik/trunk/sources/org/apache/batik/dom/svg12/SVG12DOMImplementation.java
    xmlgraphics/batik/trunk/sources/org/apache/batik/dom/svg12/SVGOMWheelEvent.java
    xmlgraphics/batik/trunk/sources/org/apache/batik/dom/util/DOMUtilities.java
    xmlgraphics/batik/trunk/sources/org/apache/batik/dom/util/DoublyIndexedTable.java
    xmlgraphics/batik/trunk/sources/org/apache/batik/dom/util/TriplyIndexedTable.java
    xmlgraphics/batik/trunk/sources/org/apache/batik/ext/awt/image/GraphicsUtil.java
    xmlgraphics/batik/trunk/sources/org/apache/batik/ext/awt/image/rendered/CompositeRed.java
    xmlgraphics/batik/trunk/sources/org/apache/batik/extension/svg/BatikFlowTextElementBridge.java
    xmlgraphics/batik/trunk/sources/org/apache/batik/gvt/FillShapePainter.java
    xmlgraphics/batik/trunk/sources/org/apache/batik/gvt/filter/GraphicsNodeRed8Bit.java
    xmlgraphics/batik/trunk/sources/org/apache/batik/script/rhino/EventTargetWrapper.java
    xmlgraphics/batik/trunk/sources/org/apache/batik/script/rhino/RhinoClassLoader.java
    xmlgraphics/batik/trunk/sources/org/apache/batik/script/rhino/RhinoInterpreter.java
    xmlgraphics/batik/trunk/sources/org/apache/batik/swing/JSVGCanvas.java
    xmlgraphics/batik/trunk/sources/org/apache/batik/swing/JSVGScrollPane.java
    xmlgraphics/batik/trunk/sources/org/apache/batik/swing/svg/AbstractJSVGComponent.java
    xmlgraphics/batik/trunk/sources/org/apache/batik/transcoder/print/PrintTranscoder.java
    xmlgraphics/batik/trunk/sources/org/apache/batik/util/SoftDoublyIndexedTable.java
    xmlgraphics/batik/trunk/sources/org/apache/batik/util/gui/DOMViewer.java
    xmlgraphics/batik/trunk/sources/org/apache/batik/util/gui/resource/MenuFactory.java

Modified: xmlgraphics/batik/trunk/.classpath
URL: http://svn.apache.org/viewcvs/xmlgraphics/batik/trunk/.classpath?rev=280553&r1=280552&r2=280553&view=diff
==============================================================================
--- xmlgraphics/batik/trunk/.classpath (original)
+++ xmlgraphics/batik/trunk/.classpath Tue Sep 13 06:29:29 2005
@@ -2,14 +2,15 @@
 <classpath>
     <classpathentry kind="con" path="org.eclipse.jdt.launching.JRE_CONTAINER"/>
     <classpathentry
-        excluding="org/apache/batik/script/jacl/**|org/apache/batik/script/jpython/**"
+        excluding="org/apache/batik/script/jacl/**|org/apache/batik/script/jpython/**|**/.svn/"
         kind="src" path="sources"/>
-    <classpathentry kind="src" path="test-sources"/>
+    <classpathentry excluding="**/.svn/" kind="src" path="sources-1.4"/>
+    <classpathentry excluding="**/.svn/" kind="src" path="test-sources"/>
     <classpathentry kind="lib" path="lib/js.jar"/>
     <classpathentry kind="lib" path="lib/pdf-transcoder.jar"/>
     <classpathentry kind="lib" path="lib/xerces_2_5_0.jar"/>
     <classpathentry kind="lib" path="lib/xml-apis-dom3.jar"/>
-    <classpathentry kind="src" path="resources"/>
-    <classpathentry kind="src" path="test-resources"/>
+    <classpathentry excluding="**/.svn/" kind="src" path="resources"/>
+    <classpathentry excluding="**/.svn/" kind="src" path="test-resources"/>
     <classpathentry kind="output" path="classes"/>
 </classpath>

Modified: xmlgraphics/batik/trunk/build.xml
URL: http://svn.apache.org/viewcvs/xmlgraphics/batik/trunk/build.xml?rev=280553&r1=280552&r2=280553&view=diff
==============================================================================
--- xmlgraphics/batik/trunk/build.xml (original)
+++ xmlgraphics/batik/trunk/build.xml Tue Sep 13 06:29:29 2005
@@ -156,13 +156,13 @@
 
     <uptodate property="IWasLoadedUpToDate" 
      targetfile="${testresources}/org/apache/batik/bridge/IWasLoaded.jar">
-     <srcfiles dir= "${testresources}//org/apache/batik/bridge"
+     <srcfiles dir="${testresources}//org/apache/batik/bridge"
                includes="IWasLoaded.java"/>
     </uptodate>
 
     <uptodate property="IWasLoadedTooUpToDate" 
      targetfile="${testresources}/org/apache/batik/bridge/IWasLoadedToo.jar">
-     <srcfiles dir= "${testresources}//org/apache/batik/bridge"
+     <srcfiles dir="${testresources}//org/apache/batik/bridge"
                includes="IWasLoadedToo.java"/>
     </uptodate>
   </target>
@@ -462,15 +462,11 @@
 
   <target name="clean-test"
           depends="init"
-	  description="Cleans files generated by running tests">
+          description="Cleans files generated by running tests">
     <delete file="${samples}/tests/spec/scripting/security2.jar"/>
     <delete file="${samples}/tests/spec/scripting/java-binding.jar"/>
     <delete file="${samples}/anne.pdf"/>
     <delete file="${samples}/anne.png"/>
-    <delete file="${testresources}/org/apache/batik/bridge/IWasLoaded.jar"/>
-    <delete file="${testresources}/org/apache/batik/bridge/IWasLoadedToo.jar"/>
-    <delete file="${testresources}/org/apache/batik/bridge/JarCheckPermissionsDenied.jar"/>
-    <delete file="${testresources}/org/apache/batik/bridge/JarCheckPermissionsGranted.jar"/>
   </target>
 
 
@@ -517,10 +513,10 @@
   <!-- All batik in a single jar (dependencies: none) -->
   <target name="all-jar" depends="compile, prepare-build" description="Creates a combined JAR file of the Batik libraries in ${build}/lib">
     <jar jarfile="${build}/lib/${project}-all.jar">
-      <fileset dir="${dest}" excludes="**/CVS">
+      <fileset dir="${dest}" excludes="**/.svn">
         <include name="**"/>
       </fileset>
-      <fileset dir="${resources}" excludes="${resources}/**/CVS">
+      <fileset dir="${resources}" excludes="${resources}/**/.svn">
         <include name="**"/>
       </fileset>
     </jar>
@@ -531,14 +527,14 @@
        (dependencies: batik-ext.jar) -->
   <target name="libs-jar" depends="compile, prepare-build">
     <jar jarfile="${build}/lib/${project}-libs.jar">
-      <fileset dir="${dest}" excludes="**/CVS">
+      <fileset dir="${dest}" excludes="**/.svn">
         <include name="org/apache/batik/**"/>
         <include name="org/w3c/css/sac/**"/>
         <include name="org/w3c/dom/smil/**"/>
         <include name="org/w3c/dom/svg/**"/>
         <include name="org/w3c/dom/svg12/**"/>
       </fileset>
-      <fileset dir="${resources}" excludes="${resources}/**/CVS">
+      <fileset dir="${resources}" excludes="${resources}/**/.svn">
         <include name="**"/>
       </fileset>
     </jar>
@@ -572,7 +568,7 @@
         <include name="${package-prefix}/util/io/*.class"/>
         <include name="${package-prefix}/xml/*.class"/>
       </fileset>
-      <fileset dir="${resources}" excludes="${resources}/**/CVS">
+      <fileset dir="${resources}" excludes="${resources}/**/.svn">
         <include name="${package-prefix}/bridge/**"/>
         <include name="${package-prefix}/css/**"/>
         <include name="${package-prefix}/dom/**"/>
@@ -609,7 +605,7 @@
         <include name="${package-prefix}/Version.class"/>
         <include name="${package-prefix}/util/resources/*.class"/>
       </fileset>
-      <fileset dir="${resources}" excludes="${resources}/**/CVS">
+      <fileset dir="${resources}" excludes="${resources}/**/.svn">
         <include name="${package-prefix}/util/resources/**"/>
         <include name="${package-prefix}/util/io/resources/**"/>
       </fileset>
@@ -624,7 +620,7 @@
         <include name="${package-prefix}/ext/awt/**/*.class"/>
         <include name="${package-prefix}/ext/swing/**/*.class"/>
       </fileset>
-      <fileset dir="${resources}" excludes="${resources}/**/CVS">
+      <fileset dir="${resources}" excludes="${resources}/**/.svn">
         <include name="${package-prefix}/ext/awt/image/**"/>
         <include name="${package-prefix}/ext/swing/**"/>
       </fileset>
@@ -638,7 +634,7 @@
       <fileset dir="${dest}">
         <include name="${package-prefix}/svggen/**/*.class"/>
       </fileset>
-      <fileset dir="${resources}" excludes="${resources}/**/CVS">
+      <fileset dir="${resources}" excludes="${resources}/**/.svn">
         <include name="${package-prefix}/svggen/font/resources/**"/>
       </fileset>
     </jar>
@@ -654,7 +650,7 @@
         <include name="${package-prefix}/ext/awt/g2d/*.class"/>
         <include name="${package-prefix}/util/*Constants.class"/>
       </fileset>
-      <fileset dir="${resources}" excludes="${resources}/**/CVS">
+      <fileset dir="${resources}" excludes="${resources}/**/.svn">
         <include name="${package-prefix}/svggen/font/resources/**"/>
       </fileset>
     </jar>
@@ -667,7 +663,7 @@
       <fileset dir="${dest}">
         <include name="${package-prefix}/util/gui/**/*.class"/>
       </fileset>
-      <fileset dir="${resources}" excludes="${resources}/**/CVS">
+      <fileset dir="${resources}" excludes="${resources}/**/.svn">
         <include name="${package-prefix}/util/gui/**/resources/**"/>
       </fileset>
     </jar>
@@ -682,14 +678,14 @@
         <include name="${package-prefix}/dom/events/*.class"/>
         <include name="${package-prefix}/dom/traversal/*.class"/>
         <include name="${package-prefix}/dom/util/*.class"/>
-        <include name="${package-prefix}/dom/dom3/*.class"/>
-        <include name="${package-prefix}/dom/dom3/events/*.class"/>
+        <include name="${package-prefix}/dom/xbl/*.class"/>
       </fileset>
-      <fileset dir="${resources}" excludes="${resources}/**/CVS">
+      <fileset dir="${resources}" excludes="${resources}/**/.svn">
         <include name="${package-prefix}/dom/resources/*"/>
         <include name="${package-prefix}/dom/events/resources/**"/>
         <include name="${package-prefix}/dom/traversal/resources/**"/>
         <include name="${package-prefix}/dom/util/resources/**"/>
+        <include name="${package-prefix}/dom/xbl/resources/**"/>
       </fileset>
     </jar>
   </target>
@@ -708,7 +704,7 @@
         <include name="${package-prefix}/css/engine/value/svg12/*.class"/>
         <include name="${package-prefix}/css/parser/*.class"/>
       </fileset>
-      <fileset dir="${resources}" excludes="${resources}/**/CVS">
+      <fileset dir="${resources}" excludes="${resources}/**/.svn">
         <include name="${package-prefix}/css/dom/resources/**"/>
         <include name="${package-prefix}/css/engine/resources/**"/>
         <include name="${package-prefix}/css/engine/sac/resources/**"/>
@@ -728,7 +724,7 @@
         <include name="${package-prefix}/dom/svg/*.class"/>
         <include name="${package-prefix}/dom/svg12/*.class"/>
       </fileset>
-      <fileset dir="${resources}" excludes="${resources}/**/CVS">
+      <fileset dir="${resources}" excludes="${resources}/**/.svn">
         <include name="${package-prefix}/dom/svg/resources/**"/>
         <include name="${package-prefix}/dom/svg12/resources/**"/>
       </fileset>
@@ -742,7 +738,7 @@
       <fileset dir="${dest}">
         <include name="${package-prefix}/gvt/**/*.class"/>
       </fileset>
-      <fileset dir="${resources}" excludes="${resources}/**/CVS">
+      <fileset dir="${resources}" excludes="${resources}/**/.svn">
         <include name="${package-prefix}/gvt/**/resources/*"/>
       </fileset>
     </jar>
@@ -755,7 +751,7 @@
       <fileset dir="${dest}">
         <include name="${package-prefix}/parser/**/*.class"/>
       </fileset>
-      <fileset dir="${resources}" excludes="${resources}/**/CVS">
+      <fileset dir="${resources}" excludes="${resources}/**/.svn">
         <include name="${package-prefix}/parser/**/resources/*"/>
       </fileset>
     </jar>
@@ -768,7 +764,7 @@
       <fileset dir="${dest}">
         <include name="${package-prefix}/script/**/*.class"/>
       </fileset>
-      <fileset dir="${resources}" excludes="${resources}/**/CVS">
+      <fileset dir="${resources}" excludes="${resources}/**/.svn">
         <include name="${package-prefix}/script/**/resources/*"/>
         <include name="META-INF/services/org.apache.batik.script.InterpreterFactory"/>
       </fileset>
@@ -782,7 +778,7 @@
       <fileset dir="${dest}">
         <include name="${package-prefix}/transcoder/**/*.class"/>
       </fileset>
-      <fileset dir="${resources}" excludes="${resources}/**/CVS">
+      <fileset dir="${resources}" excludes="${resources}/**/.svn">
         <include name="${package-prefix}/transcoder/**/resources/*"/>
       </fileset>
     </jar>
@@ -794,7 +790,7 @@
       <fileset dir="${dest}">
         <include name="${package-prefix}/xml/**/*.class"/>
       </fileset>
-      <fileset dir="${resources}" excludes="${resources}/**/CVS">
+      <fileset dir="${resources}" excludes="${resources}/**/.svn">
         <include name="${package-prefix}/xml/**/resources/*"/>
       </fileset>
     </jar>
@@ -806,7 +802,7 @@
       <fileset dir="${dest}">
         <include name="${package-prefix}/bridge/**/*.class"/>
       </fileset>
-      <fileset dir="${resources}" excludes="${resources}/**/CVS">
+      <fileset dir="${resources}" excludes="${resources}/**/.svn">
         <include name="${package-prefix}/bridge/BrokenLink.svg"/>
         <include name="${package-prefix}/bridge/**/resources/*"/>
       </fileset>
@@ -819,7 +815,7 @@
       <fileset dir="${dest}">
         <include name="${package-prefix}/swing/**/*.class"/>
       </fileset>
-      <fileset dir="${resources}" excludes="${resources}/**/CVS">
+      <fileset dir="${resources}" excludes="${resources}/**/.svn">
         <include name="${package-prefix}/swing/**/resources/*"/>
       </fileset>
     </jar>
@@ -828,14 +824,14 @@
   <!-- Extensions (dependencies: all) -->
   <target name="extension-jar" depends="compile, prepare-build">
     <jar jarfile="${build}/lib/${project}-extension.jar">
-      <fileset dir="${resources}" excludes="${resources}/**/CVS">
+      <fileset dir="${resources}" excludes="${resources}/**/.svn">
         <include name="META-INF/services/*"/>
         <exclude name="META-INF/services/org.apache.batik.script.InterpreterFactory"/>
       </fileset>
       <fileset dir="${dest}">
         <include name="${package-prefix}/extension/**/*.class"/>
       </fileset>
-      <fileset dir="${resources}" excludes="${resources}/**/CVS">
+      <fileset dir="${resources}" excludes="${resources}/**/.svn">
         <include name="${package-prefix}/extension/**/resources/*"/>
       </fileset>
     </jar>
@@ -853,7 +849,7 @@
       <fileset dir="${dest}">
         <include name="${package-prefix}/apps/svgpp/**/*.class"/>
       </fileset>
-      <fileset dir="${resources}" excludes="${resources}/**/CVS">
+      <fileset dir="${resources}" excludes="${resources}/**/.svn">
         <include name="${package-prefix}/apps/svgpp/**/resources/**"/>
       </fileset>
     </jar>
@@ -871,7 +867,7 @@
       <fileset dir="${dest}">
         <include name="${package-prefix}/apps/slideshow/**/*.class"/>
       </fileset>
-      <fileset dir="${resources}" excludes="${resources}/**/CVS">
+      <fileset dir="${resources}" excludes="${resources}/**/.svn">
         <include name="${package-prefix}/apps/slideshow/**/resources/**"/>
       </fileset>
     </jar>
@@ -895,7 +891,7 @@
         <include name="${package-prefix}/apps/svgbrowser/**/*.class"/>
         <include name="${package-prefix}/experiment/**/*.class"/>
       </fileset>
-      <fileset dir="${resources}" excludes="${resources}/**/CVS">
+      <fileset dir="${resources}" excludes="${resources}/**/.svn">
         <include name="${package-prefix}/apps/svgbrowser/**/resources/**"/>
         <exclude name="${package-prefix}/apps/svgbrowser/resources/squiggle.xsl" />
         <exclude name="${package-prefix}/apps/svgbrowser/resources/squiggle.svg" />
@@ -916,7 +912,7 @@
         <attribute name="Implementation-Version" value="${version}${revisionType}${revisionNumber}"/>
         <attribute name="Implementation-Vendor" value="Apache Software Foundation (http://xml.apache.org/batik/)"/>
       </manifest>
-        <fileset dir="${resources}" excludes="${resources}/**/CVS">
+        <fileset dir="${resources}" excludes="${resources}/**/.svn">
             <include name="META-INF/services/**"/>
         </fileset>
      </jar>
@@ -941,7 +937,7 @@
       <fileset dir="${dest}">
         <include name="${package-prefix}/apps/rasterizer/**/*.class"/>
       </fileset>
-      <fileset dir="${resources}" excludes="${resources}/**/CVS">
+      <fileset dir="${resources}" excludes="${resources}/**/.svn">
         <include name="${package-prefix}/apps/rasterizer/**/resources/**"/>
       </fileset>
     </jar>
@@ -960,7 +956,7 @@
         <attribute name="Implementation-Version" value="${version}${revisionType}${revisionNumber}"/>
         <attribute name="Implementation-Vendor" value="Apache Software Foundation (http://xml.apache.org/batik/)"/>
       </manifest>
-        <fileset dir="${resources}" excludes="${resources}/**/CVS">
+        <fileset dir="${resources}" excludes="${resources}/**/.svn">
             <include name="META-INF/services/**"/>
         </fileset>
      </jar>

Modified: xmlgraphics/batik/trunk/resources/org/apache/batik/apps/svgbrowser/resources/GUI.properties
URL: http://svn.apache.org/viewcvs/xmlgraphics/batik/trunk/resources/org/apache/batik/apps/svgbrowser/resources/GUI.properties?rev=280553&r1=280552&r2=280553&view=diff
==============================================================================
--- xmlgraphics/batik/trunk/resources/org/apache/batik/apps/svgbrowser/resources/GUI.properties (original)
+++ xmlgraphics/batik/trunk/resources/org/apache/batik/apps/svgbrowser/resources/GUI.properties Tue Sep 13 06:29:29 2005
@@ -609,8 +609,8 @@
 AboutDialog.label.contributors = \n\
 Committers: \n\
 Thomas DeWeese, Bill Haneman, Vincent Hardy, Stephane Hillion, \
-Dean Jackson, Christophe Jolif, Thierry Kormann, Bella Robinson, Nicolas Socheleau, \
-Emmanuel Tissandier \
+Dean Jackson, Christophe Jolif, Thierry Kormann, Cameron McCormack, \
+Bella Robinson, Nicolas Socheleau, Emmanuel Tissandier \
 \n\n\
 Contributors: \n\
 Curt Arnold, Bert Bos, James Davidson, Robert DiBlasi, \

Modified: xmlgraphics/batik/trunk/sources/org/apache/batik/bridge/AbstractGraphicsNodeBridge.java
URL: http://svn.apache.org/viewcvs/xmlgraphics/batik/trunk/sources/org/apache/batik/bridge/AbstractGraphicsNodeBridge.java?rev=280553&r1=280552&r2=280553&view=diff
==============================================================================
--- xmlgraphics/batik/trunk/sources/org/apache/batik/bridge/AbstractGraphicsNodeBridge.java (original)
+++ xmlgraphics/batik/trunk/sources/org/apache/batik/bridge/AbstractGraphicsNodeBridge.java Tue Sep 13 06:29:29 2005
@@ -1,6 +1,6 @@
 /*
 
-   Copyright 2001-2004  The Apache Software Foundation 
+   Copyright 2001-2005  The Apache Software Foundation 
 
    Licensed under the Apache License, Version 2.0 (the "License");
    you may not use this file except in compliance with the License.
@@ -24,7 +24,9 @@
 
 import org.apache.batik.css.engine.CSSEngineEvent;
 import org.apache.batik.css.engine.SVGCSSEngine;
+import org.apache.batik.dom.events.AbstractEvent;
 import org.apache.batik.dom.svg.SVGContext;
+import org.apache.batik.dom.svg.SVGOMDocument;
 import org.apache.batik.dom.svg.SVGOMElement;
 import org.apache.batik.ext.awt.geom.SegmentList;
 import org.apache.batik.gvt.CanvasGraphicsNode;
@@ -33,6 +35,8 @@
 
 import org.w3c.dom.Element;
 import org.w3c.dom.Node;
+import org.w3c.dom.events.DocumentEvent;
+import org.w3c.dom.events.EventTarget;
 import org.w3c.dom.events.MutationEvent;
 import org.w3c.dom.svg.SVGFitToViewBox;
 
@@ -79,6 +83,11 @@
     protected BridgeContext ctx;
 
     /**
+     * Whether the document is an SVG 1.2 document.
+     */
+    protected boolean isSVG12;
+
+    /**
      * Constructs a new abstract bridge.
      */
     protected AbstractGraphicsNodeBridge() {}
@@ -168,6 +177,7 @@
             this.node = node;
             this.ctx = ctx;
             ((SVGOMElement)e).setSVGContext(this);
+            isSVG12 = ctx.isSVG12();
         }
     }
 
@@ -193,10 +203,34 @@
     /**
      * Invoked when the geometry of an graphical element has changed.
      */
-    protected  void handleGeometryChanged() {
+    protected void handleGeometryChanged() {
         node.setFilter(CSSUtilities.convertFilter(e, node, ctx));
         node.setMask(CSSUtilities.convertMask(e, node, ctx));
         node.setClip(CSSUtilities.convertClipPath(e, node, ctx));
+        if (isSVG12) {
+            if (!SVG_USE_TAG.equals(e.getLocalName())) {
+                // ShapeChange events get fired only for basic shapes and paths.
+                fireShapeChangeEvent();
+            }
+            fireBBoxChangeEvent();
+        }
+    }
+
+    /**
+     * Fires a ShapeChange event on the element this bridge is managing.
+     */
+    protected void fireShapeChangeEvent() {
+        DocumentEvent d = (DocumentEvent) e.getOwnerDocument();
+        AbstractEvent evt = (AbstractEvent) d.createEvent("SVGEvents");
+        evt.initEventNS(SVG_NAMESPACE_URI,
+                        "shapechange",
+                        true,
+                        false);
+        try {
+            ((EventTarget) e).dispatchEvent(evt);
+        } catch (RuntimeException ex) {
+            ctx.getUserAgent().displayError(ex);
+        }
     }
 
     /**
@@ -242,7 +276,7 @@
     /**
      * Disposes all resources related to the specified node and its subtree
      */
-    static void disposeTree(Node node) {
+    protected void disposeTree(Node node) {
         if (node instanceof SVGOMElement) {
             SVGOMElement elt = (SVGOMElement)node;
             BridgeUpdateHandler h = (BridgeUpdateHandler)elt.getSVGContext();
@@ -303,6 +337,43 @@
         }
     }
 
+    /**
+     * Checks if the bounding box of the node has changed, and if so,
+     * fires a bboxchange event on the element.
+     */
+    protected void checkBBoxChange() {
+        if (e != null) {
+            /*Rectangle2D oldBBox = bbox;
+            Rectangle2D newBBox = getBBox();
+            if (oldBBox != newBBox && newBBox != null) {
+                if (oldBBox == null ||
+                        oldBBox.getX() != bbox.getX()
+                        || oldBBox.getY() != bbox.getY()
+                        || oldBBox.getWidth() != bbox.getWidth()
+                        || oldBBox.getHeight() != bbox.getHeight()) {*/
+                    fireBBoxChangeEvent();
+                /*}
+            }*/
+        }
+    }
+
+    /**
+     * Fires an svg:bboxchange event on the element.
+     */
+    protected void fireBBoxChangeEvent() {
+        DocumentEvent d = (DocumentEvent) e.getOwnerDocument();
+        AbstractEvent evt = (AbstractEvent) d.createEvent("SVGEvents");
+        evt.initEventNS(SVG_NAMESPACE_URI,
+                        "RenderedBBoxChange",
+                        true,
+                        false);
+        try {
+            ((EventTarget) e).dispatchEvent(evt);
+        } catch (RuntimeException ex) {
+            ctx.getUserAgent().displayError(ex);
+        }
+    }
+
     // SVGContext implementation ///////////////////////////////////////////
 
     /**
@@ -332,6 +403,9 @@
      * stroke-width and filter effects).
      */
     public Rectangle2D getBBox() {
+        if (node == null) {
+            return null;
+        }
         Shape s = node.getOutline();
         
         if ((bboxShape != null) && (s == bboxShape.get())) return bbox;

Modified: xmlgraphics/batik/trunk/sources/org/apache/batik/bridge/BaseScriptingEnvironment.java
URL: http://svn.apache.org/viewcvs/xmlgraphics/batik/trunk/sources/org/apache/batik/bridge/BaseScriptingEnvironment.java?rev=280553&r1=280552&r2=280553&view=diff
==============================================================================
--- xmlgraphics/batik/trunk/sources/org/apache/batik/bridge/BaseScriptingEnvironment.java (original)
+++ xmlgraphics/batik/trunk/sources/org/apache/batik/bridge/BaseScriptingEnvironment.java Tue Sep 13 06:29:29 2005
@@ -1,6 +1,6 @@
 /*
 
-   Copyright 2002-2004  The Apache Software Foundation 
+   Copyright 2002-2005  The Apache Software Foundation 
 
    Licensed under the Apache License, Version 2.0 (the "License");
    you may not use this file except in compliance with the License.
@@ -30,12 +30,17 @@
 import java.util.jar.Manifest;
 
 import org.apache.batik.dom.AbstractElement;
+import org.apache.batik.dom.events.AbstractEvent;
+import org.apache.batik.dom.events.NodeEventTarget;
 import org.apache.batik.dom.util.XLinkSupport;
 import org.apache.batik.script.Interpreter;
 import org.apache.batik.script.InterpreterException;
+import org.apache.batik.script.ScriptEventWrapper;
 import org.apache.batik.script.ScriptHandler;
 import org.apache.batik.util.ParsedURL;
 import org.apache.batik.util.SVGConstants;
+import org.apache.batik.util.XMLConstants;
+
 import org.w3c.dom.Document;
 import org.w3c.dom.Element;
 import org.w3c.dom.Node;
@@ -483,11 +488,19 @@
             }
         }
 
-        Event ev;
         DocumentEvent de = (DocumentEvent)elt.getOwnerDocument();
-        ev = de.createEvent("SVGEvents");
-        ev.initEvent("SVGLoad", false, false);
-        EventTarget t = (EventTarget)elt;
+        AbstractEvent ev = (AbstractEvent) de.createEvent("SVGEvents");
+        String type;
+        if (bridgeContext.isSVG12()) {
+            type = "load";
+        } else {
+            type = "SVGLoad";
+        }
+        ev.initEventNS(XMLConstants.XML_EVENTS_NAMESPACE_URI,
+                       type,
+                       false,
+                       false);
+        NodeEventTarget t = (NodeEventTarget)elt;
 
         final String s =
             elt.getAttributeNS(null, SVGConstants.SVG_ONLOAD_ATTRIBUTE);
@@ -524,8 +537,14 @@
         EventListener l = new EventListener() {
                 public void handleEvent(Event evt) {
                     try {
-                        interp.bindObject(EVENT_NAME, evt);
-                        interp.bindObject(ALTERNATE_EVENT_NAME, evt);
+                        Object event;
+                        if (evt instanceof ScriptEventWrapper) {
+                            event = ((ScriptEventWrapper) evt).getEventObject();
+                        } else {
+                            event = evt;
+                        }
+                        interp.bindObject(EVENT_NAME, event);
+                        interp.bindObject(ALTERNATE_EVENT_NAME, event);
                         interp.evaluate(new StringReader(s), desc);
                     } catch (IOException io) {
                     } catch (InterpreterException e) {
@@ -533,30 +552,46 @@
                     }
                 }
             };
-        t.addEventListener("SVGLoad", l, false);
+        t.addEventListenerNS
+            (XMLConstants.XML_EVENTS_NAMESPACE_URI, type,
+             l, false, null);
         t.dispatchEvent(ev);
-        t.removeEventListener("SVGLoad", l, false);
+        t.removeEventListenerNS
+            (XMLConstants.XML_EVENTS_NAMESPACE_URI, type,
+             l, false);
     }
 
     /**
      * Method to dispatch SVG Zoom event.
      */
     protected void dispatchSVGZoomEvent() {
-        dispatchSVGDocEvent("SVGZoom");
+        if (bridgeContext.isSVG12()) {
+            dispatchSVGDocEvent("zoom");
+        } else {
+            dispatchSVGDocEvent("SVGZoom");
+        }
     }
 
     /**
      * Method to dispatch SVG Scroll event.
      */
     protected void dispatchSVGScrollEvent() {
-        dispatchSVGDocEvent("SVGScroll");
+        if (bridgeContext.isSVG12()) {
+            dispatchSVGDocEvent("scroll");
+        } else {
+            dispatchSVGDocEvent("SVGScroll");
+        }
     }
 
     /**
      * Method to dispatch SVG Resize event.
      */
     protected void dispatchSVGResizeEvent() {
-        dispatchSVGDocEvent("SVGResize");
+        if (bridgeContext.isSVG12()) {
+            dispatchSVGDocEvent("resize");
+        } else {
+            dispatchSVGDocEvent("SVGResize");
+        }
     }
 
     protected void dispatchSVGDocEvent(String eventType) {
@@ -566,8 +601,11 @@
         EventTarget t = root;
 
         DocumentEvent de = (DocumentEvent)document;
-        Event ev = de.createEvent("SVGEvents");
-        ev.initEvent(eventType, false, false);
+        AbstractEvent ev = (AbstractEvent) de.createEvent("SVGEvents");
+        ev.initEventNS(XMLConstants.XML_EVENTS_NAMESPACE_URI,
+                       eventType,
+                       false,
+                       false);
         t.dispatchEvent(ev);
     }
 

Modified: xmlgraphics/batik/trunk/sources/org/apache/batik/bridge/BridgeContext.java
URL: http://svn.apache.org/viewcvs/xmlgraphics/batik/trunk/sources/org/apache/batik/bridge/BridgeContext.java?rev=280553&r1=280552&r2=280553&view=diff
==============================================================================
--- xmlgraphics/batik/trunk/sources/org/apache/batik/bridge/BridgeContext.java (original)
+++ xmlgraphics/batik/trunk/sources/org/apache/batik/bridge/BridgeContext.java Tue Sep 13 06:29:29 2005
@@ -1,6 +1,6 @@
 /*
 
-   Copyright 2000-2004  The Apache Software Foundation 
+   Copyright 2000-2005  The Apache Software Foundation 
 
    Licensed under the Apache License, Version 2.0 (the "License");
    you may not use this file except in compliance with the License.
@@ -43,11 +43,13 @@
 import org.apache.batik.css.engine.SVGCSSEngine;
 import org.apache.batik.css.engine.SystemColorSupport;
 import org.apache.batik.css.engine.value.Value;
+import org.apache.batik.dom.events.NodeEventTarget;
 import org.apache.batik.dom.svg.SVGContext;
 import org.apache.batik.dom.svg.SVGDOMImplementation;
 import org.apache.batik.dom.svg.SVGOMDocument;
 import org.apache.batik.dom.svg.SVGOMElement;
 import org.apache.batik.dom.svg.SVGStylableElement;
+import org.apache.batik.dom.xbl.XBLManager;
 import org.apache.batik.gvt.CompositeGraphicsNode;
 import org.apache.batik.gvt.GraphicsNode;
 import org.apache.batik.gvt.TextPainter;
@@ -58,6 +60,7 @@
 import org.apache.batik.util.ParsedURL;
 import org.apache.batik.util.SVGConstants;
 import org.apache.batik.util.Service;
+import org.apache.batik.util.XMLConstants;
 
 import org.w3c.dom.Document;
 import org.w3c.dom.Element;
@@ -90,6 +93,11 @@
     protected Document document;
 
     /**
+     * Whether the document is an SVG 1.2 document.
+     */
+    protected boolean isSVG12;
+
+    /**
      * The GVT builder that might be used to create a GVT subtree.
      */
     protected GVTBuilder gvtBuilder;
@@ -147,6 +155,22 @@
     protected Map namespaceURIMap;
 
     /**
+     * Default bridge.
+     * When a bridge is requested for an element type that does not have a
+     * bridge, and there is no other bridge for elements in the same namespace,
+     * the default bridge is returned.  This is used for custom elements,
+     * which all use the same bridge type.
+     */
+    protected Bridge defaultBridge;
+
+    /**
+     * Default bridge reserved namespaces set.
+     * Default bridges will not be created for elements that have a
+     * namespace URI present in this set.
+     */
+    protected Set reservedNamespaceSet;
+
+    /**
      * Element Data Map:
      * This is a general location for elements to 'cache'
      * data.  Such as the graphics tree for a pattern or
@@ -158,7 +182,6 @@
      */
     protected Map elementDataMap;
 
-
     /**
      * The interpreter pool used to handle scripts.
      */
@@ -187,6 +210,7 @@
      * text elements for font resolution).
      */
     public final static int STATIC      = 0;
+
     /**
      * Indicates that DOM listeners should be registered to support,
      * 'interactivity' this includes anchors and cursors, but does not
@@ -212,6 +236,11 @@
     protected UpdateManager updateManager;
 
     /**
+     * The XBL manager.
+     */
+    protected XBLManager xblManager;
+
+    /**
      * Constructs a new empty bridge context.
      */
     protected BridgeContext() {}
@@ -256,7 +285,6 @@
         this.documentLoader = documentLoader;
     }
 
-
     /** 
      * This function creates a new 'sub' BridgeContext to associated
      * with 'newDoc' if one currently doesn't exist, otherwise it
@@ -271,6 +299,7 @@
 
         BridgeContext subCtx;
         subCtx = createBridgeContext();
+        subCtx.dynamicStatus = dynamicStatus;
         subCtx.setGVTBuilder(getGVTBuilder());
         subCtx.setTextPainter(getTextPainter());
         subCtx.setDocument(newDoc);
@@ -280,7 +309,6 @@
         return subCtx;
     }
 
-
     /** 
      * This function creates a new BridgeContext, it mostly
      * exists so subclasses can provide an instance of 
@@ -362,6 +390,7 @@
             fontFamilyMap = null;
         }
         this.document = document;
+        this.isSVG12 = ((SVGOMDocument) document).isSVG12();
         registerSVGBridges();
     }
 
@@ -583,7 +612,6 @@
             setDynamicState(STATIC);
     }
 
-
     /**
      * Returns the update manager, if the bridge supports dynamic features.
      */
@@ -598,25 +626,56 @@
         updateManager = um;
     }
 
+    /**
+     * Sets the update manager on the given BridgeContext.
+     */
+    protected void setUpdateManager(BridgeContext ctx, UpdateManager um) {
+        ctx.setUpdateManager(um);
+    }
+
+    /**
+     * Sets the xblManager variable of the given BridgeContext.
+     */
+    protected void setXBLManager(BridgeContext ctx, XBLManager xm) {
+        ctx.xblManager = xm;
+    }
+
+    /**
+     * Returns whether the managed document is an SVG 1.2 document.
+     */
+    public boolean isSVG12() {
+        return isSVG12;
+    }
+
     // reference management //////////////////////////////////////////////////
 
     /**
-     * Returns the element referenced by the specified element by the
-     * specified uri. The referenced element can not be a Document.
-     *
+     * Returns a new URIResolver object.
+     */
+    public URIResolver createURIResolver(SVGDocument doc, DocumentLoader dl) {
+        return new URIResolver(doc, dl);
+    }
+
+    /**
+     * Returns the node referenced by the specified element by the specified
+     * uri. The referenced node can be either an element given by a fragment
+     * ID, or the document node.
      * @param e the element referencing
-     * @param uri the uri of the referenced element
+     * @param uri the uri of the referenced node
      */
-    public Element getReferencedElement(Element e, String uri) {
+    public Node getReferencedNode(Element e, String uri) {
         try {
             SVGDocument document = (SVGDocument)e.getOwnerDocument();
-            URIResolver ur = new URIResolver(document, documentLoader);
-            Element ref = ur.getElement(uri, e);
+            URIResolver ur = createURIResolver(document, documentLoader);
+            Node ref = ur.getNode(uri, e);
             if (ref == null) {
                 throw new BridgeException(e, ERR_URI_BAD_TARGET,
                                           new Object[] {uri});
             } else {
-                SVGOMDocument refDoc = (SVGOMDocument)ref.getOwnerDocument();
+                SVGOMDocument refDoc =
+                    (SVGOMDocument) (ref.getNodeType() == Node.DOCUMENT_NODE
+                                       ? ref
+                                       : ref.getOwnerDocument());
                 // This is new rather than attaching this BridgeContext
                 // with the new document we now create a whole new 
                 // BridgeContext to go with the new document.
@@ -638,15 +697,28 @@
             ex.printStackTrace();
             throw new BridgeException(e, ERR_URI_IO,
                                       new Object[] {uri});
-        } catch (IllegalArgumentException ex) {
-            throw new BridgeException(e, ERR_URI_REFERENCE_A_DOCUMENT,
-                                      new Object[] {uri});
         } catch (SecurityException ex) {
             throw new BridgeException(e, ERR_URI_UNSECURE,
                                       new Object[] {uri});
         }
     }
 
+    /**
+     * Returns the element referenced by the specified element by the
+     * specified uri. The referenced element can not be a Document.
+     *
+     * @param e the element referencing
+     * @param uri the uri of the referenced element
+     */
+    public Element getReferencedElement(Element e, String uri) {
+        Node ref = getReferencedNode(e, uri);
+        if (ref != null && ref.getNodeType() != Node.ELEMENT_NODE) {
+            throw new BridgeException(e, ERR_URI_REFERENCE_A_DOCUMENT,
+                                      new Object[] {uri});
+        }
+        return (Element) ref;
+    }
+
     // Viewport //////////////////////////////////////////////////////////////
 
     /**
@@ -820,11 +892,18 @@
      *
      */
     public Bridge getBridge(String namespaceURI, String localName) {
-        HashMap localNameMap = (HashMap) namespaceURIMap.get(namespaceURI);
-        if (localNameMap == null) {
-            return null;
+        Bridge bridge = null;
+        if (namespaceURIMap != null) {
+            HashMap localNameMap = (HashMap) namespaceURIMap.get(namespaceURI);
+            if (localNameMap != null) {
+                bridge = (Bridge)localNameMap.get(localName);
+            }
+        }
+        if (bridge == null
+                && (reservedNamespaceSet == null
+                    || !reservedNamespaceSet.contains(namespaceURI))) {
+            bridge = defaultBridge;
         }
-        Bridge bridge = (Bridge)localNameMap.get(localName);
         if (isDynamic()) {
             return bridge == null ? null : bridge.getInstance();
         } else {
@@ -895,6 +974,44 @@
         }
     }
 
+    /**
+     * Sets the <tt>Bridge</tt> object to be used for foreign
+     * namespace elements.
+     *
+     * @param bridge the bridge that manages the element
+     */
+    public void setDefaultBridge(Bridge bridge) {
+        defaultBridge = bridge;
+    }
+
+    /**
+     * Adds a namespace URI to avoid when creating default bridges.
+     */
+    public void putReservedNamespaceURI(String namespaceURI) {
+        if (namespaceURI == null) {
+            namespaceURI = "";
+        }
+        if (reservedNamespaceSet == null) {
+            reservedNamespaceSet = new HashSet();
+        }
+        reservedNamespaceSet.add(namespaceURI);
+    }
+
+    /**
+     * Removes a namespace URI to avoid when creating default bridges.
+     */
+    public void removeReservedNamespaceURI(String namespaceURI) {
+        if (namespaceURI == null) {
+            namespaceURI = "";
+        }
+        if (reservedNamespaceSet != null) {
+            reservedNamespaceSet.remove(namespaceURI);
+            if (reservedNamespaceSet.isEmpty()) {
+                reservedNamespaceSet = null;
+            }
+        }
+    }
+
     // dynamic support ////////////////////////////////////////////////////////
 
     /**
@@ -906,7 +1023,7 @@
     /**
      * The DOM EventListener to receive 'DOMCharacterDataModified' event.
      */
-    protected EventListener domCharacterDataModifiedListener;
+    protected EventListener domCharacterDataModifiedEventListener;
 
     /**
      * The DOM EventListener to receive 'DOMAttrModified' event.
@@ -951,45 +1068,58 @@
      * on anchors, for example), is handled during the bubling phase.
      */
     public void addUIEventListeners(Document doc) {
-        EventTarget evtTarget = (EventTarget)doc.getDocumentElement();
+        NodeEventTarget evtTarget = (NodeEventTarget)doc.getDocumentElement();
 
         DOMMouseOverEventListener domMouseOverListener =
             new DOMMouseOverEventListener();
-        evtTarget.addEventListener(SVGConstants.SVG_EVENT_MOUSEOVER, 
-                                   domMouseOverListener,
-                                   true);
-        storeEventListener(evtTarget, SVGConstants.SVG_EVENT_MOUSEOVER, 
-                           domMouseOverListener, true);
+        evtTarget.addEventListenerNS
+            (XMLConstants.XML_EVENTS_NAMESPACE_URI,
+             SVGConstants.SVG_EVENT_MOUSEOVER, 
+             domMouseOverListener, true, null);
+        storeEventListenerNS
+            (evtTarget,
+             XMLConstants.XML_EVENTS_NAMESPACE_URI,
+             SVGConstants.SVG_EVENT_MOUSEOVER, 
+             domMouseOverListener, true);
 
         DOMMouseOutEventListener domMouseOutListener =
             new DOMMouseOutEventListener();
-        evtTarget.addEventListener(SVGConstants.SVG_EVENT_MOUSEOUT,
-                                   domMouseOutListener,
-                                   true);
-        storeEventListener(evtTarget, SVGConstants.SVG_EVENT_MOUSEOUT, 
-                           domMouseOutListener, true);
+        evtTarget.addEventListenerNS
+            (XMLConstants.XML_EVENTS_NAMESPACE_URI,
+             SVGConstants.SVG_EVENT_MOUSEOUT,
+             domMouseOutListener, true, null);
+        storeEventListenerNS
+            (evtTarget,
+             XMLConstants.XML_EVENTS_NAMESPACE_URI,
+             SVGConstants.SVG_EVENT_MOUSEOUT, 
+             domMouseOutListener, true);
 
     }
 
-
     public void removeUIEventListeners(Document doc) {
         EventTarget evtTarget = (EventTarget)doc.getDocumentElement();
         synchronized (eventListenerSet) {
             Iterator i = eventListenerSet.iterator();
             while (i.hasNext()) {
                 EventListenerMememto elm = (EventListenerMememto)i.next();
-                EventTarget   et = elm.getTarget();
+                NodeEventTarget et = elm.getTarget();
                 if (et == evtTarget) {
                     EventListener el = elm.getListener();
                     boolean       uc = elm.getUseCapture();
                     String        t  = elm.getEventType();
-                    if ((et == null) || (el == null) || (t == null))
+                    boolean       n  = elm.getNamespaced();
+                    if (et == null || el == null || t == null) {
                         continue;
-                    et.removeEventListener(t, el, uc);
+                    }
+                    if (n) {
+                        String ns = elm.getNamespaceURI();
+                        et.removeEventListenerNS(ns, t, el, uc);
+                    } else {
+                        et.removeEventListener(t, el, uc);
+                    }
                 }
             }
         }
-        
     }
 
     /**
@@ -998,29 +1128,32 @@
      * properties and update the GVT tree in response.
      */
     public void addDOMListeners() {
-        EventTarget evtTarget = (EventTarget)document;
+        NodeEventTarget evtTarget = (NodeEventTarget)document;
 
         domAttrModifiedEventListener = new DOMAttrModifiedEventListener();
-        evtTarget.addEventListener("DOMAttrModified",
-                                   domAttrModifiedEventListener,
-                                   true);
+        evtTarget.addEventListenerNS
+            (XMLConstants.XML_EVENTS_NAMESPACE_URI,
+             "DOMAttrModified",
+             domAttrModifiedEventListener, true, null);
 
         domNodeInsertedEventListener = new DOMNodeInsertedEventListener();
-        evtTarget.addEventListener("DOMNodeInserted",
-                                   domNodeInsertedEventListener,
-                                   true);
+        evtTarget.addEventListenerNS
+            (XMLConstants.XML_EVENTS_NAMESPACE_URI,
+             "DOMNodeInserted",
+             domNodeInsertedEventListener, true, null);
 
         domNodeRemovedEventListener = new DOMNodeRemovedEventListener();
-        evtTarget.addEventListener("DOMNodeRemoved",
-                                   domNodeRemovedEventListener,
-                                   true);
-
-        domCharacterDataModifiedListener = 
-            new DOMCharacterDataModifiedListener();
-        evtTarget.addEventListener("DOMCharacterDataModified",
-                                   domCharacterDataModifiedListener,
-                                   true);
-
+        evtTarget.addEventListenerNS
+            (XMLConstants.XML_EVENTS_NAMESPACE_URI,
+             "DOMNodeRemoved",
+             domNodeRemovedEventListener, true, null);
+
+        domCharacterDataModifiedEventListener = 
+            new DOMCharacterDataModifiedEventListener();
+        evtTarget.addEventListenerNS
+            (XMLConstants.XML_EVENTS_NAMESPACE_URI,
+             "DOMCharacterDataModified",
+             domCharacterDataModifiedEventListener, true, null);
 
         focusManager = new FocusManager(document);
 
@@ -1031,6 +1164,35 @@
     }
 
     /**
+     * Removes event listeners from the DOM and CSS engine.
+     */
+    protected void removeDOMListeners() {
+        NodeEventTarget evtTarget = (NodeEventTarget)document;
+
+        evtTarget.removeEventListenerNS
+            (XMLConstants.XML_EVENTS_NAMESPACE_URI, "DOMAttrModified",
+             domAttrModifiedEventListener, true);
+        evtTarget.removeEventListenerNS
+            (XMLConstants.XML_EVENTS_NAMESPACE_URI, "DOMNodeInserted",
+             domNodeInsertedEventListener, true);
+        evtTarget.removeEventListenerNS
+            (XMLConstants.XML_EVENTS_NAMESPACE_URI, "DOMNodeRemoved",
+             domNodeRemovedEventListener, true);
+        evtTarget.removeEventListenerNS
+            (XMLConstants.XML_EVENTS_NAMESPACE_URI, "DOMCharacterDataModified",
+             domCharacterDataModifiedEventListener, true);
+        
+        SVGOMDocument svgDocument = (SVGOMDocument)document;
+        CSSEngine cssEngine = svgDocument.getCSSEngine();
+        if (cssEngine != null) {
+            cssEngine.removeCSSEngineListener
+                (cssPropertiesChangedListener);
+            cssEngine.dispose();
+            svgDocument.setCSSEngine(null);
+        }
+    }
+
+    /**
      * Adds to the eventListenerSet the specified event listener
      * registration.
      */
@@ -1043,6 +1205,20 @@
         }
     }
 
+    /**
+     * Adds to the eventListenerSet the specified event listener
+     * registration.
+     */
+    protected void storeEventListenerNS(EventTarget t,
+                                        String n,
+                                        String s,
+                                        EventListener l,
+                                        boolean b) {
+        synchronized (eventListenerSet) {
+            eventListenerSet.add(new EventListenerMememto(t, n, s, l, b, this));
+        }
+    }
+
     public static class SoftReferenceMememto 
         extends CleanerThread.SoftReferenceCleared {
         Object mememto;
@@ -1073,7 +1249,9 @@
         public SoftReference target; // Soft ref to EventTarget
         public SoftReference listener; // Soft ref to EventListener 
         public boolean useCapture;
+        public String namespaceURI;
         public String eventType;
+        public boolean namespaced;
 
         public EventListenerMememto(EventTarget t, 
                                     String s, 
@@ -1087,20 +1265,43 @@
             useCapture = b;
         }
 
+        public EventListenerMememto(EventTarget t, 
+                                    String n,
+                                    String s, 
+                                    EventListener l, 
+                                    boolean b,
+                                    BridgeContext ctx) {
+            this(t, s, l, b, ctx);
+            namespaceURI = n;
+            namespaced = true;
+        }
+
         public EventListener getListener() {
             return (EventListener)listener.get();
         }
-        public EventTarget getTarget() {
-            return (EventTarget)target.get();
+        public NodeEventTarget getTarget() {
+            return (NodeEventTarget)target.get();
         }
         public boolean getUseCapture() {
             return useCapture;
         }
+        public String getNamespaceURI() {
+            return namespaceURI;
+        }
         public String getEventType() {
             return eventType;
         }
+        public boolean getNamespaced() {
+            return namespaced;
+        }
     }
 
+    /**
+     * Adds the GVT listener for AWT event support.
+     */
+    public void addGVTListener(Document doc) {
+        BridgeEventSupport.addGVTListener(this, doc);
+    }
 
     /**
      * Disposes this BridgeContext.
@@ -1108,44 +1309,29 @@
     public void dispose() {
 
         synchronized (eventListenerSet) {
-        // remove all listeners added by Bridges
+            // remove all listeners added by Bridges
             Iterator iter = eventListenerSet.iterator();
-        while (iter.hasNext()) {
-            EventListenerMememto m = (EventListenerMememto)iter.next();
-            EventTarget   et = m.getTarget();
-            EventListener el = m.getListener();
-            boolean       uc = m.getUseCapture();
-            String        t  = m.getEventType();
-            if ((et == null) || (el == null) || (t == null))
-                continue;
-            et.removeEventListener(t, el, uc);
+            while (iter.hasNext()) {
+                EventListenerMememto m = (EventListenerMememto)iter.next();
+                NodeEventTarget et = m.getTarget();
+                EventListener   el = m.getListener();
+                boolean         uc = m.getUseCapture();
+                String          t  = m.getEventType();
+                boolean         n  = m.getNamespaced();
+                if (et == null || el == null || t == null) {
+                    continue;
+                }
+                if (n) {
+                    String ns = m.getNamespaceURI();
+                    et.removeEventListenerNS(ns, t, el, uc);
+                } else {
+                    et.removeEventListener(t, el, uc);
+                }
             }
         }
 
         if (document != null) {
-            EventTarget evtTarget = (EventTarget)document;
-
-            evtTarget.removeEventListener("DOMAttrModified",
-                                          domAttrModifiedEventListener, 
-                                          true);
-            evtTarget.removeEventListener("DOMNodeInserted",
-                                          domNodeInsertedEventListener, 
-                                          true);
-            evtTarget.removeEventListener("DOMNodeRemoved",
-                                          domNodeRemovedEventListener, 
-                                          true);
-            evtTarget.removeEventListener("DOMCharacterDataModified",
-                                          domCharacterDataModifiedListener, 
-                                          true);
-            
-            SVGOMDocument svgDocument = (SVGOMDocument)document;
-            CSSEngine cssEngine = svgDocument.getCSSEngine();
-            if (cssEngine != null) {
-                cssEngine.removeCSSEngineListener
-                    (cssPropertiesChangedListener);
-                cssEngine.dispose();
-                svgDocument.setCSSEngine(null);
-            }
+            removeDOMListeners();
         }
         Iterator iter = interpreterMap.values().iterator();
         while (iter.hasNext()) {
@@ -1185,6 +1371,12 @@
     protected class DOMAttrModifiedEventListener implements EventListener {
 
         /**
+         * Creates a new DOMAttrModifiedEventListener.
+         */
+        public DOMAttrModifiedEventListener() {
+        }
+
+        /**
          * Handles 'DOMAttrModified' event type.
          */
         public void handleEvent(Event evt) {
@@ -1204,6 +1396,16 @@
      * The DOM EventListener invoked when the mouse exits an element
      */
     protected class DOMMouseOutEventListener implements EventListener {
+
+        /**
+         * Creates a new DOMMouseOutEventListener.
+         */
+        public DOMMouseOutEventListener() {
+        }
+
+        /**
+         * Handles 'mouseout' MouseEvent event type.
+         */
         public void handleEvent(Event evt) {
             MouseEvent me = (MouseEvent)evt;
             Element newTarget = (Element)me.getRelatedTarget();
@@ -1227,6 +1429,13 @@
      * 
      */
     protected class DOMMouseOverEventListener implements EventListener {
+
+        /**
+         * Creates a new DOMMouseOverEventListener.
+         */
+        public DOMMouseOverEventListener() {
+        }
+
         /**
          * Handles 'mouseover' MouseEvent event type.
          */
@@ -1246,6 +1455,12 @@
     protected class DOMNodeInsertedEventListener implements EventListener {
 
         /**
+         * Creates a new DOMNodeInsertedEventListener.
+         */
+        public DOMNodeInsertedEventListener() {
+        }
+
+        /**
          * Handles 'DOMNodeInserted' event type.
          */
         public void handleEvent(Event evt) {
@@ -1270,6 +1485,12 @@
     protected class DOMNodeRemovedEventListener implements EventListener {
 
         /**
+         * Creates a new DOMNodeRemovedEventListener.
+         */
+        public DOMNodeRemovedEventListener() {
+        }
+
+        /**
          * Handles 'DOMNodeRemoved' event type.
          */
         public void handleEvent(Event evt) {
@@ -1288,7 +1509,14 @@
     /**
      * The DOM EventListener invoked when a character data is changed.
      */
-    protected class DOMCharacterDataModifiedListener implements EventListener {
+    protected class DOMCharacterDataModifiedEventListener
+            implements EventListener {
+
+        /**
+         * Creates a new DOMCharacterDataModifiedEventListener.
+         */
+        public DOMCharacterDataModifiedEventListener() {
+        }
 
         /**
          * Handles 'DOMNodeRemoved' event type.
@@ -1314,6 +1542,12 @@
      * on a particular element.
      */
     protected class CSSPropertiesChangedListener implements CSSEngineListener {
+
+        /**
+         * Creates a new CSSPropertiesChangedListener.
+         */
+        public CSSPropertiesChangedListener() {
+        }
 
         /**
          * Handles CSSEngineEvent that describes the CSS properties