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 [2/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/...

Modified: xmlgraphics/batik/trunk/sources/org/apache/batik/bridge/BridgeEventSupport.java
URL: http://svn.apache.org/viewcvs/xmlgraphics/batik/trunk/sources/org/apache/batik/bridge/BridgeEventSupport.java?rev=280553&r1=280552&r2=280553&view=diff
==============================================================================
--- xmlgraphics/batik/trunk/sources/org/apache/batik/bridge/BridgeEventSupport.java (original)
+++ xmlgraphics/batik/trunk/sources/org/apache/batik/bridge/BridgeEventSupport.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.
@@ -26,10 +26,10 @@
 import java.util.List;
 
 import org.apache.batik.dom.events.DOMKeyEvent;
-import org.apache.batik.dom.events.DOMKeyboardEvent;
-import org.apache.batik.dom.events.DOMTextEvent;
+import org.apache.batik.dom.events.DOMMouseEvent;
+import org.apache.batik.dom.events.NodeEventTarget;
 import org.apache.batik.dom.svg.SVGOMDocument;
-import org.apache.batik.dom.svg12.SVGOMWheelEvent;
+import org.apache.batik.dom.util.DOMUtilities;
 import org.apache.batik.gvt.GraphicsNode;
 import org.apache.batik.gvt.TextNode;
 import org.apache.batik.gvt.event.EventDispatcher;
@@ -37,21 +37,19 @@
 import org.apache.batik.gvt.event.GraphicsNodeKeyListener;
 import org.apache.batik.gvt.event.GraphicsNodeMouseEvent;
 import org.apache.batik.gvt.event.GraphicsNodeMouseListener;
-import org.apache.batik.gvt.event.GraphicsNodeMouseWheelEvent;
-import org.apache.batik.gvt.event.GraphicsNodeMouseWheelListener;
 import org.apache.batik.gvt.renderer.StrokingTextPainter;
 import org.apache.batik.gvt.text.GVTAttributedCharacterIterator;
 import org.apache.batik.gvt.text.TextHit;
 import org.apache.batik.gvt.text.TextSpanLayout;
 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.events.DocumentEvent;
 import org.w3c.dom.events.Event;
 import org.w3c.dom.events.EventListener;
 import org.w3c.dom.events.EventTarget;
-import org.w3c.dom.events.MouseEvent;
 
 /**
  * This class is responsible of tracking GraphicsNodeMouseEvent and
@@ -60,9 +58,7 @@
  * @author <a href="mailto:tkormann@ilog.fr">Thierry Kormann</a>
  * @version $Id$
  */
-public class BridgeEventSupport implements SVGConstants {
-
-    private BridgeEventSupport() {}
+public abstract class BridgeEventSupport implements SVGConstants {
 
     /**
      * Is called only for the root element in order to dispatch GVT
@@ -75,18 +71,47 @@
             if (dispatcher != null) {
                 final Listener listener = new Listener(ctx, ua);
                 dispatcher.addGraphicsNodeMouseListener(listener);
-                dispatcher.addGraphicsNodeMouseWheelListener(listener);
                 dispatcher.addGraphicsNodeKeyListener(listener);
                 // add an unload listener on the SVGDocument to remove
                 // that listener for dispatching events
                 EventListener l = new GVTUnloadListener(dispatcher, listener);
-                EventTarget target = (EventTarget)doc;
-                target.addEventListener("SVGUnload", l, false);
-                ctx.storeEventListener(target, "SVGUnload", l, false);
+                NodeEventTarget target = (NodeEventTarget)doc;
+                target.addEventListenerNS
+                    (XMLConstants.XML_EVENTS_NAMESPACE_URI,
+                     "SVGUnload",
+                     l, false, null);
+                storeEventListenerNS
+                    (ctx, target,
+                     XMLConstants.XML_EVENTS_NAMESPACE_URI,
+                     "SVGUnload",
+                     l, false);
             }
         }
     }
 
+    /**
+     * Calls storeEventListener on the given BridgeContext.
+     */
+    protected static void storeEventListener(BridgeContext ctx,
+                                             EventTarget e,
+                                             String t,
+                                             EventListener l,
+                                             boolean c) {
+        ctx.storeEventListener(e, t, l, c);
+    }
+
+    /**
+     * Calls storeEventListenerNS on the given BridgeContext.
+     */
+    protected static void storeEventListenerNS(BridgeContext ctx,
+                                               EventTarget e,
+                                               String n,
+                                               String t,
+                                               EventListener l,
+                                               boolean c) {
+        ctx.storeEventListenerNS(e, n, t, l, c);
+    }
+
     protected static class GVTUnloadListener implements EventListener {
 
         protected EventDispatcher dispatcher;
@@ -101,8 +126,10 @@
         public void handleEvent(Event evt) {
             dispatcher.removeGraphicsNodeMouseListener(listener);
             dispatcher.removeGraphicsNodeKeyListener(listener);
-            evt.getTarget().removeEventListener
-                (SVGConstants.SVG_SVGUNLOAD_EVENT_TYPE, this, false);
+            NodeEventTarget et = (NodeEventTarget) evt.getTarget();
+            et.removeEventListenerNS
+                (XMLConstants.XML_EVENTS_NAMESPACE_URI, "SVGUnload",
+                 this, false);
         }
     }
 
@@ -110,20 +137,17 @@
      * A GraphicsNodeMouseListener that dispatch DOM events accordingly.
      */
     protected static class Listener implements GraphicsNodeMouseListener,
-                                               GraphicsNodeMouseWheelListener,
                                                GraphicsNodeKeyListener {
         
         protected BridgeContext context;
         protected UserAgent ua;
         protected Element lastTargetElement;
         protected boolean isDown;
-        protected boolean svg12;
 
         public Listener(BridgeContext ctx, UserAgent u) {
             context = ctx;
             ua = u;
             SVGOMDocument doc = (SVGOMDocument) ctx.getDocument();
-            svg12 = doc.isSVG12();
         }
 
         // Key -------------------------------------------------------------
@@ -136,20 +160,12 @@
             // XXX isDown is not preventing key repeats
             if (!isDown) {
                 isDown = true;
-                if (svg12) {
-                    dispatchKeyboardEvent("keydown", evt);
-                } else {
-                    dispatchKeyEvent("keydown", evt);
-                }
+                dispatchKeyEvent("keydown", evt);
             }
             if (evt.getKeyChar() == KeyEvent.CHAR_UNDEFINED) {
                 // We will not get a KEY_TYPED event for this char
                 // so generate a keypress event here.
-                if (svg12) {
-                    dispatchTextEvent(evt);
-                } else {
-                    dispatchKeyEvent("keypress", evt);
-                }
+                dispatchKeyEvent("keypress", evt);
             }
         }
 
@@ -158,12 +174,7 @@
          * @param evt the graphics node key event
          */
         public void keyReleased(GraphicsNodeKeyEvent evt) {
-            if (svg12) {
-                dispatchKeyboardEvent("keyup", evt);
-            } else {
-                dispatchKeyEvent("keyup", evt);
-            }
-            isDown = false;
+            dispatchKeyEvent("keyup", evt);
         }
 
         /**
@@ -171,11 +182,7 @@
          * @param evt the graphics node key event
          */
         public void keyTyped(GraphicsNodeKeyEvent evt) {
-            if (svg12) {
-                dispatchTextEvent(evt);
-            } else {
-                dispatchKeyEvent("keypress", evt);
-            }
+            dispatchKeyEvent("keypress", evt);
         }
 
         /**
@@ -211,554 +218,6 @@
         }
 
         /**
-         * Dispatch a DOM 3 Keyboard event.
-         */
-        protected void dispatchKeyboardEvent(String eventType,
-                                             GraphicsNodeKeyEvent evt) {
-            FocusManager fmgr = context.getFocusManager();
-            if (fmgr == null) {
-                return;
-            }
-
-            Element targetElement = (Element) fmgr.getCurrentEventTarget();
-            if (targetElement == null) {
-                return;
-            }
-            DocumentEvent d = (DocumentEvent) targetElement.getOwnerDocument();
-            DOMKeyboardEvent keyEvt
-                = (DOMKeyboardEvent) d.createEvent("KeyboardEvent");
-            keyEvt.initKeyboardEventNS(XMLConstants.XML_EVENTS_NAMESPACE_URI,
-                                       eventType, 
-                                       true,
-                                       true,
-                                       null,
-                                       mapKeyCodeToIdentifier(evt.getKeyCode()),
-                                       mapKeyLocation(evt.getKeyLocation()),
-                                       getModifiersList(evt.getLockState(),
-                                                        evt.getModifiers()));
-
-            try {
-                ((EventTarget)targetElement).dispatchEvent(keyEvt);
-            } catch (RuntimeException e) {
-                ua.displayError(e);
-            }
-        }
-
-        /**
-         * Dispatch a DOM 3 Text event.
-         */
-        protected void dispatchTextEvent(GraphicsNodeKeyEvent evt) {
-            FocusManager fmgr = context.getFocusManager();
-            if (fmgr == null) {
-                return;
-            }
-
-            Element targetElement = (Element) fmgr.getCurrentEventTarget();
-            if (targetElement == null) {
-                return;
-            }
-            DocumentEvent d = (DocumentEvent) targetElement.getOwnerDocument();
-            DOMTextEvent textEvt = (DOMTextEvent) d.createEvent("TextEvent");
-            textEvt.initTextEventNS(XMLConstants.XML_EVENTS_NAMESPACE_URI,
-                                    "textInput", 
-                                    true,
-                                    true,
-                                    null,
-                                    String.valueOf(evt.getKeyChar()));
-
-            try {
-                ((EventTarget) targetElement).dispatchEvent(textEvt);
-            } catch (RuntimeException e) {
-                ua.displayError(e);
-            }
-        }
-
-        /**
-         * String constants representing DOM modifier strings for various all
-         * key lock combinations.
-         */
-        protected static final String[] LOCK_STRINGS = {
-            "",
-            "CapsLock",
-            "NumLock",
-            "NumLock CapsLock",
-            "Scroll",
-            "Scroll CapsLock",
-            "Scroll NumLock",
-            "Scroll NumLock CapsLock",
-            "KanaMode",
-            "KanaMode CapsLock",
-            "KanaMode NumLock",
-            "KanaMode NumLock CapsLock",
-            "KanaMode Scroll",
-            "KanaMode Scroll CapsLock",
-            "KanaMode Scroll NumLock",
-            "KanaMode Scroll NumLock CapsLock"
-        };
-
-        /**
-         * String constants representing DOM modifier strings for various all
-         * shift modifier combinations.
-         */
-        protected static final String[] MODIFIER_STRINGS = {
-            "",
-            "Alt",
-            "AltGraph",
-            "Alt AltGraph",
-            "Control",
-            "Alt Control",
-            "AltGraph Control",
-            "Alt AltGraph Control",
-            "Shift",
-            "Alt Shift",
-            "AltGraph Shift",
-            "Alt AltGraph Shift",
-            "Control Shift",
-            "Alt Control Shift",
-            "AltGraph Control Shift",
-            "Alt AltGraph Control Shift",
-            "Meta",
-            "Alt Meta",
-            "AltGraph Meta",
-            "Alt AltGraph Meta",
-            "Control Meta",
-            "Alt Control Meta",
-            "AltGraph Control Meta",
-            "Alt AltGraph Control Meta",
-            "Shift Meta",
-            "Alt Shift Meta",
-            "AltGraph Shift Meta",
-            "Alt AltGraph Shift Meta",
-            "Control Shift Meta",
-            "Alt Control Shift Meta",
-            "AltGraph Control Shift Meta",
-            "Alt AltGraph Control Shift Meta"
-        };
-
-        /**
-         * Gets a DOM 3 modifiers string from the given lock and
-         * shift bitmasks.
-         */
-        protected String getModifiersList(int lockState, int modifiers) {
-            if ((modifiers & 0x20) != 0) {
-                modifiers = 0x10 | (modifiers & 0x0f);
-            } else {
-                modifiers = modifiers & 0x0f;
-            }
-            return LOCK_STRINGS[lockState & 0x0f] + MODIFIER_STRINGS[modifiers];
-        }
-
-        /**
-         * Maps Java KeyEvent location numbers to DOM 3 location numbers.
-         */
-        protected int mapKeyLocation(int location) {
-            return location - 1;
-        }
-
-        /**
-         * Array to hold the map of Java keycodes to DOM 3 key strings.
-         */
-        protected static String[][] IDENTIFIER_KEY_CODES = new String[256][];
-        static {
-            putIdentifierKeyCode(DOMKeyboardEvent.KEY_0,
-                                 KeyEvent.VK_0);
-            putIdentifierKeyCode(DOMKeyboardEvent.KEY_1,
-                                 KeyEvent.VK_1);
-            putIdentifierKeyCode(DOMKeyboardEvent.KEY_2,
-                                 KeyEvent.VK_2);
-            putIdentifierKeyCode(DOMKeyboardEvent.KEY_3,
-                                 KeyEvent.VK_3);
-            putIdentifierKeyCode(DOMKeyboardEvent.KEY_4,
-                                 KeyEvent.VK_4);
-            putIdentifierKeyCode(DOMKeyboardEvent.KEY_5,
-                                 KeyEvent.VK_5);
-            putIdentifierKeyCode(DOMKeyboardEvent.KEY_6,
-                                 KeyEvent.VK_6);
-            putIdentifierKeyCode(DOMKeyboardEvent.KEY_7,
-                                 KeyEvent.VK_7);
-            putIdentifierKeyCode(DOMKeyboardEvent.KEY_8,
-                                 KeyEvent.VK_8);
-            putIdentifierKeyCode(DOMKeyboardEvent.KEY_9,
-                                 KeyEvent.VK_9);
-            putIdentifierKeyCode(DOMKeyboardEvent.KEY_ACCEPT,
-                                 KeyEvent.VK_ACCEPT);
-            putIdentifierKeyCode(DOMKeyboardEvent.KEY_AGAIN,
-                                 KeyEvent.VK_AGAIN);
-            putIdentifierKeyCode(DOMKeyboardEvent.KEY_A,
-                                 KeyEvent.VK_A);
-            putIdentifierKeyCode(DOMKeyboardEvent.KEY_ALL_CANDIDATES,
-                                 KeyEvent.VK_ALL_CANDIDATES);
-            putIdentifierKeyCode(DOMKeyboardEvent.KEY_ALPHANUMERIC,
-                                 KeyEvent.VK_ALPHANUMERIC);
-            putIdentifierKeyCode(DOMKeyboardEvent.KEY_ALT_GRAPH,
-                                 KeyEvent.VK_ALT_GRAPH);
-            putIdentifierKeyCode(DOMKeyboardEvent.KEY_ALT,
-                                 KeyEvent.VK_ALT);
-            putIdentifierKeyCode(DOMKeyboardEvent.KEY_AMPERSAND,
-                                 KeyEvent.VK_AMPERSAND);
-            putIdentifierKeyCode(DOMKeyboardEvent.KEY_APOSTROPHE,
-                                 KeyEvent.VK_QUOTE);
-            putIdentifierKeyCode(DOMKeyboardEvent.KEY_ASTERISK,
-                                 KeyEvent.VK_ASTERISK);
-            putIdentifierKeyCode(DOMKeyboardEvent.KEY_AT,
-                                 KeyEvent.VK_AT);
-            putIdentifierKeyCode(DOMKeyboardEvent.KEY_BACKSLASH,
-                                 KeyEvent.VK_BACK_SLASH);
-            putIdentifierKeyCode(DOMKeyboardEvent.KEY_BACKSPACE,
-                                 KeyEvent.VK_BACK_SPACE);
-            putIdentifierKeyCode(DOMKeyboardEvent.KEY_B,
-                                 KeyEvent.VK_B);
-            putIdentifierKeyCode(DOMKeyboardEvent.KEY_CANCEL,
-                                 KeyEvent.VK_CANCEL);
-            putIdentifierKeyCode(DOMKeyboardEvent.KEY_CAPS_LOCK,
-                                 KeyEvent.VK_CAPS_LOCK);
-            putIdentifierKeyCode(DOMKeyboardEvent.KEY_CIRCUMFLEX,
-                                 KeyEvent.VK_CIRCUMFLEX);
-            putIdentifierKeyCode(DOMKeyboardEvent.KEY_C,
-                                 KeyEvent.VK_C);
-            putIdentifierKeyCode(DOMKeyboardEvent.KEY_CLEAR,
-                                 KeyEvent.VK_CLEAR);
-            putIdentifierKeyCode(DOMKeyboardEvent.KEY_CODE_INPUT,
-                                 KeyEvent.VK_CODE_INPUT);
-            putIdentifierKeyCode(DOMKeyboardEvent.KEY_COLON,
-                                 KeyEvent.VK_COLON);
-            putIdentifierKeyCode(DOMKeyboardEvent.KEY_COMBINING_ACUTE,
-                                 KeyEvent.VK_DEAD_ACUTE);
-            putIdentifierKeyCode(DOMKeyboardEvent.KEY_COMBINING_BREVE,
-                                 KeyEvent.VK_DEAD_BREVE);
-            putIdentifierKeyCode(DOMKeyboardEvent.KEY_COMBINING_CARON,
-                                 KeyEvent.VK_DEAD_CARON);
-            putIdentifierKeyCode(DOMKeyboardEvent.KEY_COMBINING_CEDILLA,
-                                 KeyEvent.VK_DEAD_CEDILLA);
-            putIdentifierKeyCode(DOMKeyboardEvent.KEY_COMBINING_CIRCUMFLEX,
-                                 KeyEvent.VK_DEAD_CIRCUMFLEX);
-            putIdentifierKeyCode(DOMKeyboardEvent.KEY_COMBINING_DIERESIS,
-                                 KeyEvent.VK_DEAD_DIAERESIS);
-            putIdentifierKeyCode(DOMKeyboardEvent.KEY_COMBINING_DOT_ABOVE,
-                                 KeyEvent.VK_DEAD_ABOVEDOT);
-            putIdentifierKeyCode(DOMKeyboardEvent.KEY_COMBINING_DOUBLE_ACUTE,
-                                 KeyEvent.VK_DEAD_DOUBLEACUTE);
-            putIdentifierKeyCode(DOMKeyboardEvent.KEY_COMBINING_GRAVE,
-                                 KeyEvent.VK_DEAD_GRAVE);
-            putIdentifierKeyCode(DOMKeyboardEvent.KEY_COMBINING_IOTA,
-                                 KeyEvent.VK_DEAD_IOTA);
-            putIdentifierKeyCode(DOMKeyboardEvent.KEY_COMBINING_MACRON,
-                                 KeyEvent.VK_DEAD_MACRON);
-            putIdentifierKeyCode(DOMKeyboardEvent.KEY_COMBINING_OGONEK,
-                                 KeyEvent.VK_DEAD_OGONEK);
-            putIdentifierKeyCode(DOMKeyboardEvent.KEY_COMBINING_RING_ABOVE,
-                                 KeyEvent.VK_DEAD_ABOVERING);
-            putIdentifierKeyCode(DOMKeyboardEvent.KEY_COMBINING_TILDE,
-                                 KeyEvent.VK_DEAD_TILDE);
-            putIdentifierKeyCode(DOMKeyboardEvent.KEY_COMMA,
-                                 KeyEvent.VK_COMMA);
-            putIdentifierKeyCode(DOMKeyboardEvent.KEY_COMPOSE,
-                                 KeyEvent.VK_COMPOSE);
-            putIdentifierKeyCode(DOMKeyboardEvent.KEY_CONTROL,
-                                 KeyEvent.VK_CONTROL);
-            putIdentifierKeyCode(DOMKeyboardEvent.KEY_CONVERT,
-                                 KeyEvent.VK_CONVERT);
-            putIdentifierKeyCode(DOMKeyboardEvent.KEY_COPY,
-                                 KeyEvent.VK_COPY);
-            putIdentifierKeyCode(DOMKeyboardEvent.KEY_CUT,
-                                 KeyEvent.VK_CUT);
-            putIdentifierKeyCode(DOMKeyboardEvent.KEY_DELETE,
-                                 KeyEvent.VK_DELETE);
-            putIdentifierKeyCode(DOMKeyboardEvent.KEY_D,
-                                 KeyEvent.VK_D);
-            putIdentifierKeyCode(DOMKeyboardEvent.KEY_DOLLAR,
-                                 KeyEvent.VK_DOLLAR);
-            putIdentifierKeyCode(DOMKeyboardEvent.KEY_DOWN,
-                                 KeyEvent.VK_DOWN);
-            putIdentifierKeyCode(DOMKeyboardEvent.KEY_E,
-                                 KeyEvent.VK_E);
-            putIdentifierKeyCode(DOMKeyboardEvent.KEY_END,
-                                 KeyEvent.VK_END);
-            putIdentifierKeyCode(DOMKeyboardEvent.KEY_ENTER,
-                                 KeyEvent.VK_ENTER);
-            putIdentifierKeyCode(DOMKeyboardEvent.KEY_EQUALS,
-                                 KeyEvent.VK_EQUALS);
-            putIdentifierKeyCode(DOMKeyboardEvent.KEY_ESCAPE,
-                                 KeyEvent.VK_ESCAPE);
-            putIdentifierKeyCode(DOMKeyboardEvent.KEY_EURO,
-                                 KeyEvent.VK_EURO_SIGN);
-            putIdentifierKeyCode(DOMKeyboardEvent.KEY_EXCLAMATION,
-                                 KeyEvent.VK_EXCLAMATION_MARK);
-            putIdentifierKeyCode(DOMKeyboardEvent.KEY_F10,
-                                 KeyEvent.VK_F10);
-            putIdentifierKeyCode(DOMKeyboardEvent.KEY_F11,
-                                 KeyEvent.VK_F11);
-            putIdentifierKeyCode(DOMKeyboardEvent.KEY_F12,
-                                 KeyEvent.VK_F12);
-            putIdentifierKeyCode(DOMKeyboardEvent.KEY_F13,
-                                 KeyEvent.VK_F13);
-            putIdentifierKeyCode(DOMKeyboardEvent.KEY_F14,
-                                 KeyEvent.VK_F14);
-            putIdentifierKeyCode(DOMKeyboardEvent.KEY_F15,
-                                 KeyEvent.VK_F15);
-            putIdentifierKeyCode(DOMKeyboardEvent.KEY_F16,
-                                 KeyEvent.VK_F16);
-            putIdentifierKeyCode(DOMKeyboardEvent.KEY_F17,
-                                 KeyEvent.VK_F17);
-            putIdentifierKeyCode(DOMKeyboardEvent.KEY_F18,
-                                 KeyEvent.VK_F18);
-            putIdentifierKeyCode(DOMKeyboardEvent.KEY_F19,
-                                 KeyEvent.VK_F19);
-            putIdentifierKeyCode(DOMKeyboardEvent.KEY_F1,
-                                 KeyEvent.VK_F1);
-            putIdentifierKeyCode(DOMKeyboardEvent.KEY_F20,
-                                 KeyEvent.VK_F20);
-            putIdentifierKeyCode(DOMKeyboardEvent.KEY_F21,
-                                 KeyEvent.VK_F21);
-            putIdentifierKeyCode(DOMKeyboardEvent.KEY_F22,
-                                 KeyEvent.VK_F22);
-            putIdentifierKeyCode(DOMKeyboardEvent.KEY_F23,
-                                 KeyEvent.VK_F23);
-            putIdentifierKeyCode(DOMKeyboardEvent.KEY_F24,
-                                 KeyEvent.VK_F24);
-            putIdentifierKeyCode(DOMKeyboardEvent.KEY_F2,
-                                 KeyEvent.VK_F2);
-            putIdentifierKeyCode(DOMKeyboardEvent.KEY_F3,
-                                 KeyEvent.VK_F3);
-            putIdentifierKeyCode(DOMKeyboardEvent.KEY_F4,
-                                 KeyEvent.VK_F4);
-            putIdentifierKeyCode(DOMKeyboardEvent.KEY_F5,
-                                 KeyEvent.VK_F5);
-            putIdentifierKeyCode(DOMKeyboardEvent.KEY_F6,
-                                 KeyEvent.VK_F6);
-            putIdentifierKeyCode(DOMKeyboardEvent.KEY_F7,
-                                 KeyEvent.VK_F7);
-            putIdentifierKeyCode(DOMKeyboardEvent.KEY_F8,
-                                 KeyEvent.VK_F8);
-            putIdentifierKeyCode(DOMKeyboardEvent.KEY_F9,
-                                 KeyEvent.VK_F9);
-            putIdentifierKeyCode(DOMKeyboardEvent.KEY_FINAL_MODE,
-                                 KeyEvent.VK_FINAL);
-            putIdentifierKeyCode(DOMKeyboardEvent.KEY_FIND,
-                                 KeyEvent.VK_FIND);
-            putIdentifierKeyCode(DOMKeyboardEvent.KEY_F,
-                                 KeyEvent.VK_F);
-            putIdentifierKeyCode(DOMKeyboardEvent.KEY_FULL_STOP,
-                                 KeyEvent.VK_PERIOD);
-            putIdentifierKeyCode(DOMKeyboardEvent.KEY_FULL_WIDTH,
-                                 KeyEvent.VK_FULL_WIDTH);
-            putIdentifierKeyCode(DOMKeyboardEvent.KEY_G,
-                                 KeyEvent.VK_G);
-            putIdentifierKeyCode(DOMKeyboardEvent.KEY_GRAVE,
-                                 KeyEvent.VK_BACK_QUOTE);
-            putIdentifierKeyCode(DOMKeyboardEvent.KEY_GREATER_THAN,
-                                 KeyEvent.VK_GREATER);
-            putIdentifierKeyCode(DOMKeyboardEvent.KEY_HALF_WIDTH,
-                                 KeyEvent.VK_HALF_WIDTH);
-            putIdentifierKeyCode(DOMKeyboardEvent.KEY_HASH,
-                                 KeyEvent.VK_NUMBER_SIGN);
-            putIdentifierKeyCode(DOMKeyboardEvent.KEY_HELP,
-                                 KeyEvent.VK_HELP);
-            putIdentifierKeyCode(DOMKeyboardEvent.KEY_HIRAGANA,
-                                 KeyEvent.VK_HIRAGANA);
-            putIdentifierKeyCode(DOMKeyboardEvent.KEY_H,
-                                 KeyEvent.VK_H);
-            putIdentifierKeyCode(DOMKeyboardEvent.KEY_HOME,
-                                 KeyEvent.VK_HOME);
-            putIdentifierKeyCode(DOMKeyboardEvent.KEY_I,
-                                 KeyEvent.VK_I);
-            putIdentifierKeyCode(DOMKeyboardEvent.KEY_INSERT,
-                                 KeyEvent.VK_INSERT);
-            putIdentifierKeyCode(DOMKeyboardEvent.KEY_INVERTED_EXCLAMATION,
-                                 KeyEvent.VK_INVERTED_EXCLAMATION_MARK);
-            putIdentifierKeyCode(DOMKeyboardEvent.KEY_JAPANESE_HIRAGANA,
-                                 KeyEvent.VK_JAPANESE_HIRAGANA);
-            putIdentifierKeyCode(DOMKeyboardEvent.KEY_JAPANESE_KATAKANA,
-                                 KeyEvent.VK_JAPANESE_KATAKANA);
-            putIdentifierKeyCode(DOMKeyboardEvent.KEY_JAPANESE_ROMAJI,
-                                 KeyEvent.VK_JAPANESE_ROMAN);
-            putIdentifierKeyCode(DOMKeyboardEvent.KEY_J,
-                                 KeyEvent.VK_J);
-            putIdentifierKeyCode(DOMKeyboardEvent.KEY_KANA_MODE,
-                                 KeyEvent.VK_KANA_LOCK);
-            putIdentifierKeyCode(DOMKeyboardEvent.KEY_KANJI_MODE,
-                                 KeyEvent.VK_KANJI);
-            putIdentifierKeyCode(DOMKeyboardEvent.KEY_KATAKANA,
-                                 KeyEvent.VK_KATAKANA);
-            putIdentifierKeyCode(DOMKeyboardEvent.KEY_K,
-                                 KeyEvent.VK_K);
-            putIdentifierKeyCode(DOMKeyboardEvent.KEY_LEFT_BRACE,
-                                 KeyEvent.VK_BRACELEFT);
-            putIdentifierKeyCode(DOMKeyboardEvent.KEY_LEFT,
-                                 KeyEvent.VK_LEFT);
-            putIdentifierKeyCode(DOMKeyboardEvent.KEY_LEFT_PARENTHESIS,
-                                 KeyEvent.VK_LEFT_PARENTHESIS);
-            putIdentifierKeyCode(DOMKeyboardEvent.KEY_LEFT_SQUARE_BRACKET,
-                                 KeyEvent.VK_OPEN_BRACKET);
-            putIdentifierKeyCode(DOMKeyboardEvent.KEY_LESS_THAN,
-                                 KeyEvent.VK_LESS);
-            putIdentifierKeyCode(DOMKeyboardEvent.KEY_L,
-                                 KeyEvent.VK_L);
-            putIdentifierKeyCode(DOMKeyboardEvent.KEY_META,
-                                 KeyEvent.VK_META);
-            putIdentifierKeyCode(DOMKeyboardEvent.KEY_META,
-                                 KeyEvent.VK_META);
-            putIdentifierKeyCode(DOMKeyboardEvent.KEY_MINUS,
-                                 KeyEvent.VK_MINUS);
-            putIdentifierKeyCode(DOMKeyboardEvent.KEY_M,
-                                 KeyEvent.VK_M);
-            putIdentifierKeyCode(DOMKeyboardEvent.KEY_MODE_CHANGE,
-                                 KeyEvent.VK_MODECHANGE);
-            putIdentifierKeyCode(DOMKeyboardEvent.KEY_N,
-                                 KeyEvent.VK_N);
-            putIdentifierKeyCode(DOMKeyboardEvent.KEY_NONCONVERT,
-                                 KeyEvent.VK_NONCONVERT);
-            putIdentifierKeyCode(DOMKeyboardEvent.KEY_NUM_LOCK,
-                                 KeyEvent.VK_NUM_LOCK);
-            putIdentifierKeyCode(DOMKeyboardEvent.KEY_NUM_LOCK,
-                                 KeyEvent.VK_NUM_LOCK);
-            putIdentifierKeyCode(DOMKeyboardEvent.KEY_O,
-                                 KeyEvent.VK_O);
-            putIdentifierKeyCode(DOMKeyboardEvent.KEY_PAGE_DOWN,
-                                 KeyEvent.VK_PAGE_DOWN);
-            putIdentifierKeyCode(DOMKeyboardEvent.KEY_PAGE_UP,
-                                 KeyEvent.VK_PAGE_UP);
-            putIdentifierKeyCode(DOMKeyboardEvent.KEY_PASTE,
-                                 KeyEvent.VK_PASTE);
-            putIdentifierKeyCode(DOMKeyboardEvent.KEY_PAUSE,
-                                 KeyEvent.VK_PAUSE);
-            putIdentifierKeyCode(DOMKeyboardEvent.KEY_P,
-                                 KeyEvent.VK_P);
-            putIdentifierKeyCode(DOMKeyboardEvent.KEY_PLUS,
-                                 KeyEvent.VK_PLUS);
-            putIdentifierKeyCode(DOMKeyboardEvent.KEY_PREVIOUS_CANDIDATE,
-                                 KeyEvent.VK_PREVIOUS_CANDIDATE);
-            putIdentifierKeyCode(DOMKeyboardEvent.KEY_PRINT_SCREEN,
-                                 KeyEvent.VK_PRINTSCREEN);
-            putIdentifierKeyCode(DOMKeyboardEvent.KEY_PROPS,
-                                 KeyEvent.VK_PROPS);
-            putIdentifierKeyCode(DOMKeyboardEvent.KEY_Q,
-                                 KeyEvent.VK_Q);
-            putIdentifierKeyCode(DOMKeyboardEvent.KEY_QUOTE,
-                                 KeyEvent.VK_QUOTEDBL);
-            putIdentifierKeyCode(DOMKeyboardEvent.KEY_RIGHT_BRACE,
-                                 KeyEvent.VK_BRACERIGHT);
-            putIdentifierKeyCode(DOMKeyboardEvent.KEY_RIGHT,
-                                 KeyEvent.VK_RIGHT);
-            putIdentifierKeyCode(DOMKeyboardEvent.KEY_RIGHT_PARENTHESIS,
-                                 KeyEvent.VK_RIGHT_PARENTHESIS);
-            putIdentifierKeyCode(DOMKeyboardEvent.KEY_RIGHT_SQUARE_BRACKET,
-                                 KeyEvent.VK_CLOSE_BRACKET);
-            putIdentifierKeyCode(DOMKeyboardEvent.KEY_R,
-                                 KeyEvent.VK_R);
-            putIdentifierKeyCode(DOMKeyboardEvent.KEY_ROMAN_CHARACTERS,
-                                 KeyEvent.VK_ROMAN_CHARACTERS);
-            putIdentifierKeyCode(DOMKeyboardEvent.KEY_SCROLL,
-                                 KeyEvent.VK_SCROLL_LOCK);
-            putIdentifierKeyCode(DOMKeyboardEvent.KEY_SCROLL,
-                                 KeyEvent.VK_SCROLL_LOCK);
-            putIdentifierKeyCode(DOMKeyboardEvent.KEY_SEMICOLON,
-                                 KeyEvent.VK_SEMICOLON);
-            putIdentifierKeyCode(DOMKeyboardEvent.KEY_SEMIVOICED_SOUND,
-                                 KeyEvent.VK_DEAD_SEMIVOICED_SOUND);
-            putIdentifierKeyCode(DOMKeyboardEvent.KEY_SHIFT,
-                                 KeyEvent.VK_SHIFT);
-            putIdentifierKeyCode(DOMKeyboardEvent.KEY_SHIFT,
-                                 KeyEvent.VK_SHIFT);
-            putIdentifierKeyCode(DOMKeyboardEvent.KEY_S,
-                                 KeyEvent.VK_S);
-            putIdentifierKeyCode(DOMKeyboardEvent.KEY_SLASH,
-                                 KeyEvent.VK_SLASH);
-            putIdentifierKeyCode(DOMKeyboardEvent.KEY_SPACE,
-                                 KeyEvent.VK_SPACE);
-            putIdentifierKeyCode(DOMKeyboardEvent.KEY_STOP,
-                                 KeyEvent.VK_STOP);
-            putIdentifierKeyCode(DOMKeyboardEvent.KEY_TAB,
-                                 KeyEvent.VK_TAB);
-            putIdentifierKeyCode(DOMKeyboardEvent.KEY_T,
-                                 KeyEvent.VK_T);
-            putIdentifierKeyCode(DOMKeyboardEvent.KEY_U,
-                                 KeyEvent.VK_U);
-            putIdentifierKeyCode(DOMKeyboardEvent.KEY_UNDERSCORE,
-                                 KeyEvent.VK_UNDERSCORE);
-            putIdentifierKeyCode(DOMKeyboardEvent.KEY_UNDO,
-                                 KeyEvent.VK_UNDO);
-            putIdentifierKeyCode(DOMKeyboardEvent.KEY_UNIDENTIFIED,
-                                 KeyEvent.VK_UNDEFINED);
-            putIdentifierKeyCode(DOMKeyboardEvent.KEY_UP,
-                                 KeyEvent.VK_UP);
-            putIdentifierKeyCode(DOMKeyboardEvent.KEY_V,
-                                 KeyEvent.VK_V);
-            putIdentifierKeyCode(DOMKeyboardEvent.KEY_VOICED_SOUND,
-                                 KeyEvent.VK_DEAD_VOICED_SOUND);
-            putIdentifierKeyCode(DOMKeyboardEvent.KEY_W,
-                                 KeyEvent.VK_W);
-            putIdentifierKeyCode(DOMKeyboardEvent.KEY_X,
-                                 KeyEvent.VK_X);
-            putIdentifierKeyCode(DOMKeyboardEvent.KEY_Y,
-                                 KeyEvent.VK_Y);
-            putIdentifierKeyCode(DOMKeyboardEvent.KEY_Z,
-                                 KeyEvent.VK_Z);
-            // Java keycodes for duplicate keys
-            putIdentifierKeyCode(DOMKeyboardEvent.KEY_0,
-                                 KeyEvent.VK_NUMPAD0);
-            putIdentifierKeyCode(DOMKeyboardEvent.KEY_1,
-                                 KeyEvent.VK_NUMPAD1);
-            putIdentifierKeyCode(DOMKeyboardEvent.KEY_2,
-                                 KeyEvent.VK_NUMPAD2);
-            putIdentifierKeyCode(DOMKeyboardEvent.KEY_3,
-                                 KeyEvent.VK_NUMPAD3);
-            putIdentifierKeyCode(DOMKeyboardEvent.KEY_4,
-                                 KeyEvent.VK_NUMPAD4);
-            putIdentifierKeyCode(DOMKeyboardEvent.KEY_5,
-                                 KeyEvent.VK_NUMPAD5);
-            putIdentifierKeyCode(DOMKeyboardEvent.KEY_6,
-                                 KeyEvent.VK_NUMPAD6);
-            putIdentifierKeyCode(DOMKeyboardEvent.KEY_7,
-                                 KeyEvent.VK_NUMPAD7);
-            putIdentifierKeyCode(DOMKeyboardEvent.KEY_8,
-                                 KeyEvent.VK_NUMPAD8);
-            putIdentifierKeyCode(DOMKeyboardEvent.KEY_9,
-                                 KeyEvent.VK_NUMPAD9);
-            putIdentifierKeyCode(DOMKeyboardEvent.KEY_ASTERISK,
-                                 KeyEvent.VK_MULTIPLY);
-            putIdentifierKeyCode(DOMKeyboardEvent.KEY_DOWN,
-                                 KeyEvent.VK_KP_DOWN);
-            putIdentifierKeyCode(DOMKeyboardEvent.KEY_FULL_STOP,
-                                 KeyEvent.VK_DECIMAL);
-            putIdentifierKeyCode(DOMKeyboardEvent.KEY_LEFT,
-                                 KeyEvent.VK_KP_LEFT);
-            putIdentifierKeyCode(DOMKeyboardEvent.KEY_MINUS,
-                                 KeyEvent.VK_SUBTRACT);
-            putIdentifierKeyCode(DOMKeyboardEvent.KEY_PLUS,
-                                 KeyEvent.VK_ADD);
-            putIdentifierKeyCode(DOMKeyboardEvent.KEY_RIGHT,
-                                 KeyEvent.VK_KP_RIGHT);
-            putIdentifierKeyCode(DOMKeyboardEvent.KEY_SLASH,
-                                 KeyEvent.VK_DIVIDE);
-            putIdentifierKeyCode(DOMKeyboardEvent.KEY_UP,
-                                 KeyEvent.VK_KP_UP);
-        }
-
-        /**
-         * Put a key code to key identifier mapping into the
-         * IDENTIFIER_KEY_CODES table.
-         */
-        protected static void putIdentifierKeyCode(String keyIdentifier,
-                                                   int keyCode) {
-            if (IDENTIFIER_KEY_CODES[keyCode / 256] == null) {
-                IDENTIFIER_KEY_CODES[keyCode / 256] = new String[256];
-            }
-            IDENTIFIER_KEY_CODES[keyCode / 256][keyCode % 256] = keyIdentifier;
-        }
-
-        /**
-         * Convert a Java key code to a DOM 3 key string.
-         */
-        protected String mapKeyCodeToIdentifier(int keyCode) {
-            String[] a = IDENTIFIER_KEY_CODES[keyCode / 256];
-            if (a == null) {
-                return DOMKeyboardEvent.KEY_UNIDENTIFIED;
-            }
-            return a[keyCode % 256];
-        }
-
-        /**
          * The java KeyEvent keyCodes and the DOMKeyEvent keyCodes
          * map except for the VK_ENTER code (which has a different value
          * in DOM and the VK_KANA_LOCK and VK_INPUT_METHOD_ON_OFF which
@@ -777,41 +236,6 @@
             }
         }
 
-        // MouseWheel ------------------------------------------------------
-
-        public void mouseWheelMoved(GraphicsNodeMouseWheelEvent evt) {
-            if (!svg12) {
-                return;
-            }
-
-            FocusManager fmgr = context.getFocusManager();
-            if (fmgr == null) {
-                return;
-            }
-
-            Element targetElement = (Element) fmgr.getCurrentEventTarget();
-            if (targetElement == null) {
-                return;
-            }
-            Document doc = targetElement.getOwnerDocument();
-            targetElement = doc.getDocumentElement();
-            DocumentEvent d = (DocumentEvent) doc;
-            SVGOMWheelEvent wheelEvt
-                = (SVGOMWheelEvent) d.createEvent("WheelEvent");
-            wheelEvt.initWheelEventNS(XMLConstants.XML_EVENTS_NAMESPACE_URI,
-                                      "wheel", 
-                                      true,
-                                      true,
-                                      null,
-                                      evt.getWheelDelta());
-
-            try {
-                ((EventTarget)targetElement).dispatchEvent(wheelEvt);
-            } catch (RuntimeException e) {
-                ua.displayError(e);
-            }
-        }
-            
         // Mouse -----------------------------------------------------------
 
         public void mouseClicked(GraphicsNodeMouseEvent evt) {
@@ -827,7 +251,17 @@
         }
 
         public void mouseEntered(GraphicsNodeMouseEvent evt) {
-            dispatchMouseEvent("mouseover", evt, true);
+            Point clientXY = evt.getClientPoint();
+            GraphicsNode node = evt.getGraphicsNode();
+            Element targetElement = getEventTarget
+                (node, new Point2D.Float(evt.getX(), evt.getY()));
+            Element relatedElement = getRelatedElement(evt);
+            dispatchMouseEvent("mouseover", 
+                               targetElement,
+                               relatedElement,
+                               clientXY, 
+                               evt, 
+                               true);
         }
 
         public void mouseExited(GraphicsNodeMouseEvent evt) {
@@ -942,22 +376,24 @@
             Point screenXY = evt.getScreenPoint();
             // create the coresponding DOM MouseEvent
             DocumentEvent d = (DocumentEvent)targetElement.getOwnerDocument();
-            MouseEvent mouseEvt = (MouseEvent)d.createEvent("MouseEvents");
-            mouseEvt.initMouseEvent(eventType, 
-                                    true, 
-                                    cancelable, 
-                                    null,
-                                    evt.getClickCount(),
-                                    screenXY.x, 
-                                    screenXY.y,
-                                    clientXY.x,
-                                    clientXY.y,
-                                    evt.isControlDown(), 
-                                    evt.isAltDown(),
-                                    evt.isShiftDown(), 
-                                    evt.isMetaDown(),
-                                    button, 
-                                    (EventTarget)relatedElement);
+            DOMMouseEvent mouseEvt
+                = (DOMMouseEvent)d.createEvent("MouseEvents");
+            String modifiers
+                = DOMUtilities.getModifiersList(evt.getLockState(),
+                                                evt.getModifiers());
+            mouseEvt.initMouseEventNS(XMLConstants.XML_EVENTS_NAMESPACE_URI,
+                                      eventType, 
+                                      true, 
+                                      cancelable, 
+                                      null,
+                                      evt.getClickCount(),
+                                      screenXY.x, 
+                                      screenXY.y,
+                                      clientXY.x,
+                                      clientXY.y,
+                                      button, 
+                                      (EventTarget)relatedElement,
+                                      modifiers);
 
             try {
                 ((EventTarget)targetElement).dispatchEvent(mouseEvt);

Modified: xmlgraphics/batik/trunk/sources/org/apache/batik/bridge/CSSUtilities.java
URL: http://svn.apache.org/viewcvs/xmlgraphics/batik/trunk/sources/org/apache/batik/bridge/CSSUtilities.java?rev=280553&r1=280552&r2=280553&view=diff
==============================================================================
--- xmlgraphics/batik/trunk/sources/org/apache/batik/bridge/CSSUtilities.java (original)
+++ xmlgraphics/batik/trunk/sources/org/apache/batik/bridge/CSSUtilities.java Tue Sep 13 06:29:29 2005
@@ -1,6 +1,6 @@
 /*
 
-   Copyright 2001-2003  The Apache Software Foundation 
+   Copyright 2001-2003,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.
@@ -555,6 +555,9 @@
      * @param e the element
      */
     public static boolean convertDisplay(Element e) {
+        if (!(e instanceof CSSStylableElement)) {
+            return true;
+        }
         Value v = getComputedStyle(e, SVGCSSEngine.DISPLAY_INDEX);
         return v.getStringValue().charAt(0) != 'n';
     }

Modified: xmlgraphics/batik/trunk/sources/org/apache/batik/bridge/CursorManager.java
URL: http://svn.apache.org/viewcvs/xmlgraphics/batik/trunk/sources/org/apache/batik/bridge/CursorManager.java?rev=280553&r1=280552&r2=280553&view=diff
==============================================================================
--- xmlgraphics/batik/trunk/sources/org/apache/batik/bridge/CursorManager.java (original)
+++ xmlgraphics/batik/trunk/sources/org/apache/batik/bridge/CursorManager.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.
@@ -435,7 +435,7 @@
         // Try to load as an SVG Document
         DocumentLoader loader = ctx.getDocumentLoader();
         SVGDocument svgDoc = (SVGDocument)cursorElement.getOwnerDocument();
-        URIResolver resolver = new URIResolver(svgDoc, loader);
+        URIResolver resolver = ctx.createURIResolver(svgDoc, loader);
         try {
             Element rootElement = null;
             Node n = resolver.getNode(uriStr, cursorElement);

Modified: xmlgraphics/batik/trunk/sources/org/apache/batik/bridge/FocusManager.java
URL: http://svn.apache.org/viewcvs/xmlgraphics/batik/trunk/sources/org/apache/batik/bridge/FocusManager.java?rev=280553&r1=280552&r2=280553&view=diff
==============================================================================
--- xmlgraphics/batik/trunk/sources/org/apache/batik/bridge/FocusManager.java (original)
+++ xmlgraphics/batik/trunk/sources/org/apache/batik/bridge/FocusManager.java Tue Sep 13 06:29:29 2005
@@ -1,6 +1,6 @@
 /*
 
-   Copyright 2002-2003  The Apache Software Foundation 
+   Copyright 2002-2003,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.
@@ -17,6 +17,10 @@
  */
 package org.apache.batik.bridge;
 
+import org.apache.batik.dom.events.DOMUIEvent;
+import org.apache.batik.dom.events.NodeEventTarget;
+import org.apache.batik.util.XMLConstants;
+
 import org.w3c.dom.Document;
 import org.w3c.dom.Element;
 import org.w3c.dom.events.DocumentEvent;
@@ -24,7 +28,6 @@
 import org.w3c.dom.events.EventListener;
 import org.w3c.dom.events.EventTarget;
 import org.w3c.dom.events.MouseEvent;
-import org.w3c.dom.events.UIEvent;
 
 /**
  * A class that manages focus on elements.
@@ -76,22 +79,67 @@
      */
     public FocusManager(Document doc) {
         document = doc;
-        EventTarget target = (EventTarget)doc;
-
-        mouseclickListener = new MouseClickTacker();
-        target.addEventListener("click", mouseclickListener, true);
+        addEventListeners(doc);
+    }
 
-        mouseoverListener = new MouseOverTacker();
-        target.addEventListener("mouseover", mouseoverListener, true);
+    /**
+     * Adds the event listeners to the document.
+     */
+    protected void addEventListeners(Document doc) {
+        NodeEventTarget target = (NodeEventTarget) doc;
 
-        mouseoutListener = new MouseOutTacker();
-        target.addEventListener("mouseout", mouseoutListener, true);
+        mouseclickListener = new MouseClickTracker();
+        target.addEventListenerNS
+            (XMLConstants.XML_EVENTS_NAMESPACE_URI,
+             "click",
+             mouseclickListener, true, null);
+
+        mouseoverListener = new MouseOverTracker();
+        target.addEventListenerNS
+            (XMLConstants.XML_EVENTS_NAMESPACE_URI,
+             "mouseover",
+             mouseoverListener, true, null);
+
+        mouseoutListener = new MouseOutTracker();
+        target.addEventListenerNS
+            (XMLConstants.XML_EVENTS_NAMESPACE_URI,
+             "mouseout",
+             mouseoutListener, true, null);
 
         domFocusInListener = new DOMFocusInTracker();
-        target.addEventListener("DOMFocusIn", domFocusInListener, true);
+        target.addEventListenerNS
+            (XMLConstants.XML_EVENTS_NAMESPACE_URI,
+             "DOMFocusIn",
+             domFocusInListener, true, null);
 
         domFocusOutListener = new DOMFocusOutTracker();
-        target.addEventListener("DOMFocusOut", domFocusOutListener, true);
+        target.addEventListenerNS
+            (XMLConstants.XML_EVENTS_NAMESPACE_URI,
+             "DOMFocusOut",
+             domFocusOutListener, true, null);
+    }
+
+    /**
+     * Removes the event listeners from the document.
+     */
+    protected void removeEventListeners(Document doc) {
+        NodeEventTarget target = (NodeEventTarget) doc;
+
+        target.removeEventListenerNS
+            (XMLConstants.XML_EVENTS_NAMESPACE_URI, "click",
+             mouseclickListener, true);
+        target.removeEventListenerNS
+            (XMLConstants.XML_EVENTS_NAMESPACE_URI, "mouseover",
+             mouseoverListener, true);
+        target.removeEventListenerNS
+            (XMLConstants.XML_EVENTS_NAMESPACE_URI, "mouseout",
+             mouseoutListener, true);
+        target.removeEventListenerNS
+            (XMLConstants.XML_EVENTS_NAMESPACE_URI, "DOMFocusIn",
+             domFocusInListener, true);
+        target.removeEventListenerNS
+            (XMLConstants.XML_EVENTS_NAMESPACE_URI, "DOMFocusOut",
+             domFocusOutListener, true);
     }
 
     /**
@@ -106,12 +154,7 @@
      */
     public void dispose() {
         if (document == null) return;
-        EventTarget target = (EventTarget)document;
-        target.removeEventListener("click", mouseclickListener, true);
-        target.removeEventListener("mouseover", mouseoverListener, true);
-        target.removeEventListener("mouseout", mouseoutListener, true);
-        target.removeEventListener("DOMFocusIn", domFocusInListener, true);
-        target.removeEventListener("DOMFocusOut", domFocusOutListener, true);
+        removeEventListeners(document);
         lastFocusEventTarget = null;
         document = null;
     }
@@ -119,7 +162,7 @@
     /**
      * The class that is responsible for tracking 'mouseclick' changes.
      */
-    protected class MouseClickTacker implements EventListener {
+    protected class MouseClickTracker implements EventListener {
 
         public void handleEvent(Event evt) {
             MouseEvent mevt = (MouseEvent)evt;
@@ -133,9 +176,10 @@
     protected class DOMFocusInTracker implements EventListener {
 
         public void handleEvent(Event evt) {
+            EventTarget newTarget = evt.getTarget();
             if (lastFocusEventTarget != null && 
-                lastFocusEventTarget != evt.getTarget()) {
-                fireDOMFocusOutEvent(lastFocusEventTarget);
+                lastFocusEventTarget != newTarget) {
+                fireDOMFocusOutEvent(lastFocusEventTarget, newTarget);
             }
             lastFocusEventTarget = evt.getTarget();
         }
@@ -146,6 +190,9 @@
      */
     protected class DOMFocusOutTracker implements EventListener {
 
+        public DOMFocusOutTracker() {
+        }
+
         public void handleEvent(Event evt) {
             lastFocusEventTarget = null;
         }
@@ -155,11 +202,13 @@
      * The class that is responsible to update the focus according to
      * 'mouseover' event.
      */
-    protected class MouseOverTacker implements EventListener {
+    protected class MouseOverTracker implements EventListener {
 
         public void handleEvent(Event evt) {
+            MouseEvent me = (MouseEvent) evt;
             EventTarget target = evt.getTarget();
-            fireDOMFocusInEvent(target);
+            EventTarget relatedTarget = me.getRelatedTarget();
+            fireDOMFocusInEvent(target, relatedTarget);
         }
     }
 
@@ -167,37 +216,53 @@
      * The class that is responsible to update the focus according to
      * 'mouseout' event.
      */
-    protected class MouseOutTacker implements EventListener {
+    protected class MouseOutTracker implements EventListener {
 
         public void handleEvent(Event evt) {
+            MouseEvent me = (MouseEvent) evt;
             EventTarget target = evt.getTarget();
-            fireDOMFocusOutEvent(target);
+            EventTarget relatedTarget = me.getRelatedTarget();
+            fireDOMFocusOutEvent(target, relatedTarget);
         }
     }
 
     /**
      * Fires a 'DOMFocusIn' event to the specified target.
      *
-     * @param target the event target
+     * @param target the newly focussed event target
+     * @param relatedTarget the previously focussed event target
      */
-    protected void fireDOMFocusInEvent(EventTarget target) {
+    protected void fireDOMFocusInEvent(EventTarget target,
+                                       EventTarget relatedTarget) {
         DocumentEvent docEvt = 
             (DocumentEvent)((Element)target).getOwnerDocument();
-        UIEvent uiEvt = (UIEvent)docEvt.createEvent("UIEvents");
-        uiEvt.initUIEvent("DOMFocusIn", true, false, null, 0);
+        DOMUIEvent uiEvt = (DOMUIEvent)docEvt.createEvent("UIEvents");
+        uiEvt.initUIEventNS(XMLConstants.XML_EVENTS_NAMESPACE_URI,
+                            "DOMFocusIn",
+                            true,    // canBubbleArg
+                            false,   // cancelableArg
+                            null,    // viewArg
+                            0);      // detailArg
         target.dispatchEvent(uiEvt);
     }
 
     /**
      * Fires a 'DOMFocusOut' event to the specified target.
      *
-     * @param target the event target
+     * @param target the previously focussed event target
+     * @param relatedTarget the newly focussed event target
      */
-    protected void fireDOMFocusOutEvent(EventTarget target) {
+    protected void fireDOMFocusOutEvent(EventTarget target,
+                                        EventTarget relatedTarget) {
         DocumentEvent docEvt = 
             (DocumentEvent)((Element)target).getOwnerDocument();
-        UIEvent uiEvt = (UIEvent)docEvt.createEvent("UIEvents");
-        uiEvt.initUIEvent("DOMFocusOut", true, false, null, 0);
+        DOMUIEvent uiEvt = (DOMUIEvent)docEvt.createEvent("UIEvents");
+        uiEvt.initUIEventNS(XMLConstants.XML_EVENTS_NAMESPACE_URI,
+                            "DOMFocusOut",
+                            true,    // canBubbleArg
+                            false,   // cancelableArg
+                            null,    // viewArg
+                            0);      // detailArg
         target.dispatchEvent(uiEvt);
     }
     
@@ -210,8 +275,13 @@
     protected void fireDOMActivateEvent(EventTarget target, int detailArg) {
         DocumentEvent docEvt = 
             (DocumentEvent)((Element)target).getOwnerDocument();
-        UIEvent uiEvt = (UIEvent)docEvt.createEvent("UIEvents");
-        uiEvt.initUIEvent("DOMActivate", true, true, null, detailArg);
+        DOMUIEvent uiEvt = (DOMUIEvent)docEvt.createEvent("UIEvents");
+        uiEvt.initUIEventNS(XMLConstants.XML_EVENTS_NAMESPACE_URI,
+                            "DOMActivate",
+                            true,    // canBubbleArg
+                            true,    // cancelableArg
+                            null,    // viewArg
+                            0);      // detailArg
         target.dispatchEvent(uiEvt);
     }
 }

Modified: xmlgraphics/batik/trunk/sources/org/apache/batik/bridge/GVTBuilder.java
URL: http://svn.apache.org/viewcvs/xmlgraphics/batik/trunk/sources/org/apache/batik/bridge/GVTBuilder.java?rev=280553&r1=280552&r2=280553&view=diff
==============================================================================
--- xmlgraphics/batik/trunk/sources/org/apache/batik/bridge/GVTBuilder.java (original)
+++ xmlgraphics/batik/trunk/sources/org/apache/batik/bridge/GVTBuilder.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.
@@ -90,7 +90,7 @@
             ctx.addUIEventListeners(document);
 
             // register GVT listeners for AWT event support
-            BridgeEventSupport.addGVTListener(ctx, document);
+            ctx.addGVTListener(document);
         }
 
         // <!> FIXME: TO BE REMOVED

Modified: xmlgraphics/batik/trunk/sources/org/apache/batik/bridge/SVGAElementBridge.java
URL: http://svn.apache.org/viewcvs/xmlgraphics/batik/trunk/sources/org/apache/batik/bridge/SVGAElementBridge.java?rev=280553&r1=280552&r2=280553&view=diff
==============================================================================
--- xmlgraphics/batik/trunk/sources/org/apache/batik/bridge/SVGAElementBridge.java (original)
+++ xmlgraphics/batik/trunk/sources/org/apache/batik/bridge/SVGAElementBridge.java Tue Sep 13 06:29:29 2005
@@ -20,13 +20,14 @@
 import java.awt.Cursor;
 
 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.gvt.GraphicsNode;
+import org.apache.batik.util.XMLConstants;
+
 import org.w3c.dom.Element;
 import org.w3c.dom.events.Event;
 import org.w3c.dom.events.EventListener;
-import org.w3c.dom.events.EventTarget;
-import org.w3c.dom.events.UIEvent;
 import org.w3c.dom.svg.SVGAElement;
 
 /**
@@ -71,18 +72,30 @@
         super.buildGraphicsNode(ctx, e, node);
 
         if (ctx.isInteractive()) {
-            EventTarget target = (EventTarget)e;
+            NodeEventTarget target = (NodeEventTarget)e;
             EventListener l = new AnchorListener(ctx.getUserAgent());
-            target.addEventListener(SVG_EVENT_CLICK, l, false);
-            ctx.storeEventListener(target, SVG_EVENT_CLICK, l, false);
+            target.addEventListenerNS
+                (XMLConstants.XML_EVENTS_NAMESPACE_URI, SVG_EVENT_CLICK,
+                 l, false, null);
+            ctx.storeEventListenerNS
+                (target, XMLConstants.XML_EVENTS_NAMESPACE_URI, SVG_EVENT_CLICK,
+                 l, false);
 
             l = new CursorMouseOverListener(ctx.getUserAgent());
-            target.addEventListener(SVG_EVENT_MOUSEOVER, l, false);
-            ctx.storeEventListener(target, SVG_EVENT_MOUSEOVER, l, false);
+            target.addEventListenerNS
+                (XMLConstants.XML_EVENTS_NAMESPACE_URI, SVG_EVENT_MOUSEOVER,
+                 l, false, null);
+            ctx.storeEventListenerNS
+                (target, XMLConstants.XML_EVENTS_NAMESPACE_URI, SVG_EVENT_MOUSEOVER,
+                 l, false);
 
             l = new CursorMouseOutListener(ctx.getUserAgent());
-            target.addEventListener(SVG_EVENT_MOUSEOUT, l, false);
-            ctx.storeEventListener(target, SVG_EVENT_MOUSEOUT, l, false);
+            target.addEventListenerNS
+                (XMLConstants.XML_EVENTS_NAMESPACE_URI, SVG_EVENT_MOUSEOUT,
+                 l, false, null);
+            ctx.storeEventListenerNS
+                (target, XMLConstants.XML_EVENTS_NAMESPACE_URI, SVG_EVENT_MOUSEOUT,
+                 l, false);
         }
     }
 

Modified: xmlgraphics/batik/trunk/sources/org/apache/batik/bridge/SVGClipPathElementBridge.java
URL: http://svn.apache.org/viewcvs/xmlgraphics/batik/trunk/sources/org/apache/batik/bridge/SVGClipPathElementBridge.java?rev=280553&r1=280552&r2=280553&view=diff
==============================================================================
--- xmlgraphics/batik/trunk/sources/org/apache/batik/bridge/SVGClipPathElementBridge.java (original)
+++ xmlgraphics/batik/trunk/sources/org/apache/batik/bridge/SVGClipPathElementBridge.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.
@@ -23,8 +23,8 @@
 import java.awt.geom.Area;
 import java.awt.geom.GeneralPath;
 
-import org.apache.batik.css.engine.CSSImportNode;
-import org.apache.batik.dom.svg.SVGOMCSSImportedElementRoot;
+import org.apache.batik.dom.svg.SVGOMUseElement;
+import org.apache.batik.dom.svg.SVGOMUseShadowRoot;
 import org.apache.batik.ext.awt.image.renderable.ClipRable;
 import org.apache.batik.ext.awt.image.renderable.ClipRable8Bit;
 import org.apache.batik.ext.awt.image.renderable.Filter;
@@ -123,17 +123,13 @@
             hasChildren = true;
 
             // if this is a 'use' element, get the actual shape used
-            if (child instanceof CSSImportNode) {
-                SVGOMCSSImportedElementRoot shadow =
-                    (SVGOMCSSImportedElementRoot)
-                    ((CSSImportNode) child).getCSSImportedElementRoot();
-                
-                if (shadow != null) {
-                    Node shadowChild = shadow.getFirstChild();
-                    if (shadowChild != null
-                            && shadowChild.getNodeType() == Node.ELEMENT_NODE) {
-                        child = (Element) shadowChild;
-                    }
+            if (child instanceof SVGOMUseElement) {
+                Node shadowChild
+                    = ((SVGOMUseElement) child).getCSSFirstChild();
+
+                if (shadowChild != null
+                        && shadowChild.getNodeType() == Node.ELEMENT_NODE) {
+                    child = (Element) shadowChild;
                 }
             }
 

Modified: xmlgraphics/batik/trunk/sources/org/apache/batik/bridge/SVGImageElementBridge.java
URL: http://svn.apache.org/viewcvs/xmlgraphics/batik/trunk/sources/org/apache/batik/bridge/SVGImageElementBridge.java?rev=280553&r1=280552&r2=280553&view=diff
==============================================================================
--- xmlgraphics/batik/trunk/sources/org/apache/batik/bridge/SVGImageElementBridge.java (original)
+++ xmlgraphics/batik/trunk/sources/org/apache/batik/bridge/SVGImageElementBridge.java Tue Sep 13 06:29:29 2005
@@ -32,6 +32,8 @@
 import org.apache.batik.css.engine.CSSEngine;
 import org.apache.batik.css.engine.SVGCSSEngine;
 import org.apache.batik.dom.AbstractNode;
+import org.apache.batik.dom.events.DOMMouseEvent;
+import org.apache.batik.dom.events.NodeEventTarget;
 import org.apache.batik.dom.svg.SVGOMDocument;
 import org.apache.batik.dom.svg.SVGOMElement;
 import org.apache.batik.dom.util.XLinkSupport;
@@ -48,6 +50,8 @@
 import org.apache.batik.gvt.ShapeNode;
 import org.apache.batik.util.ParsedURL;
 import org.apache.batik.util.MimeTypeConstants;
+import org.apache.batik.util.XMLConstants;
+
 import org.w3c.dom.Document;
 import org.w3c.dom.Element;
 import org.w3c.dom.Node;
@@ -55,7 +59,6 @@
 import org.w3c.dom.events.Event;
 import org.w3c.dom.events.EventListener;
 import org.w3c.dom.events.EventTarget;
-import org.w3c.dom.events.MouseEvent;
 import org.w3c.dom.events.MutationEvent;
 import org.w3c.dom.svg.SVGDocument;
 import org.w3c.dom.svg.SVGSVGElement;
@@ -478,17 +481,35 @@
     protected void rebuildImageNode() {
         // Reference copy of the imgDocument
         if ((imgDocument != null) && (listener != null)) {
-            EventTarget tgt = (EventTarget)imgDocument.getRootElement();
+            NodeEventTarget tgt = (NodeEventTarget)imgDocument.getRootElement();
 
-            tgt.removeEventListener(SVG_EVENT_CLICK,     listener, false);
-            tgt.removeEventListener(SVG_EVENT_KEYDOWN,   listener, false);
-            tgt.removeEventListener(SVG_EVENT_KEYPRESS,  listener, false);
-            tgt.removeEventListener(SVG_EVENT_KEYUP,     listener, false);
-            tgt.removeEventListener(SVG_EVENT_MOUSEDOWN, listener, false);
-            tgt.removeEventListener(SVG_EVENT_MOUSEMOVE, listener, false);
-            tgt.removeEventListener(SVG_EVENT_MOUSEOUT,  listener, false);
-            tgt.removeEventListener(SVG_EVENT_MOUSEOVER, listener, false);
-            tgt.removeEventListener(SVG_EVENT_MOUSEUP,   listener, false);
+            tgt.removeEventListenerNS
+                (XMLConstants.XML_EVENTS_NAMESPACE_URI, SVG_EVENT_CLICK,
+                 listener, false);
+            tgt.removeEventListenerNS
+                (XMLConstants.XML_EVENTS_NAMESPACE_URI, SVG_EVENT_KEYDOWN,
+                 listener, false);
+            tgt.removeEventListenerNS
+                (XMLConstants.XML_EVENTS_NAMESPACE_URI, SVG_EVENT_KEYPRESS,
+                 listener, false);
+            tgt.removeEventListenerNS
+                (XMLConstants.XML_EVENTS_NAMESPACE_URI, SVG_EVENT_KEYUP,
+                 listener, false);
+            tgt.removeEventListenerNS
+                (XMLConstants.XML_EVENTS_NAMESPACE_URI, SVG_EVENT_MOUSEDOWN,
+                 listener, false);
+            tgt.removeEventListenerNS
+                (XMLConstants.XML_EVENTS_NAMESPACE_URI, SVG_EVENT_MOUSEMOVE,
+                 listener, false);
+            tgt.removeEventListenerNS
+                (XMLConstants.XML_EVENTS_NAMESPACE_URI, SVG_EVENT_MOUSEOUT,
+                 listener, false);
+            tgt.removeEventListenerNS
+                (XMLConstants.XML_EVENTS_NAMESPACE_URI, SVG_EVENT_MOUSEOVER,
+                 listener, false);
+            tgt.removeEventListenerNS
+                (XMLConstants.XML_EVENTS_NAMESPACE_URI, SVG_EVENT_MOUSEUP,
+                 listener, false);
             listener = null;
         }
 
@@ -644,34 +665,70 @@
         // to the <image> element (inside the original document).
         if (ctx.isInteractive()) {
             listener = new ForwardEventListener(svgElement, e);
-            EventTarget tgt = (EventTarget)svgElement;
-
-            tgt.addEventListener(SVG_EVENT_CLICK, listener, false);
-            subCtx.storeEventListener(tgt, SVG_EVENT_CLICK, listener, false);
-
-            tgt.addEventListener(SVG_EVENT_KEYDOWN, listener, false);
-            subCtx.storeEventListener(tgt, SVG_EVENT_KEYDOWN, listener, false);
-
-            tgt.addEventListener(SVG_EVENT_KEYPRESS, listener, false);
-            subCtx.storeEventListener(tgt, SVG_EVENT_KEYPRESS, listener, false);
-
-            tgt.addEventListener(SVG_EVENT_KEYUP, listener, false);
-            subCtx.storeEventListener(tgt, SVG_EVENT_KEYUP, listener, false);
-
-            tgt.addEventListener(SVG_EVENT_MOUSEDOWN, listener, false);
-            subCtx.storeEventListener(tgt, SVG_EVENT_MOUSEDOWN, listener,false);
-
-            tgt.addEventListener(SVG_EVENT_MOUSEMOVE, listener, false);
-            subCtx.storeEventListener(tgt, SVG_EVENT_MOUSEMOVE, listener,false);
-
-            tgt.addEventListener(SVG_EVENT_MOUSEOUT, listener, false);
-            subCtx.storeEventListener(tgt, SVG_EVENT_MOUSEOUT, listener, false);
-
-            tgt.addEventListener(SVG_EVENT_MOUSEOVER, listener, false);
-            subCtx.storeEventListener(tgt, SVG_EVENT_MOUSEOVER, listener,false);
+            NodeEventTarget tgt = (NodeEventTarget)svgElement;
 
-            tgt.addEventListener(SVG_EVENT_MOUSEUP, listener, false);
-            subCtx.storeEventListener(tgt, SVG_EVENT_MOUSEUP, listener, false);
+            tgt.addEventListenerNS
+                (XMLConstants.XML_EVENTS_NAMESPACE_URI, SVG_EVENT_CLICK,
+                 listener, false, null);
+            subCtx.storeEventListenerNS
+                (tgt, XMLConstants.XML_EVENTS_NAMESPACE_URI, SVG_EVENT_CLICK,
+                 listener, false);
+
+            tgt.addEventListenerNS
+                (XMLConstants.XML_EVENTS_NAMESPACE_URI, SVG_EVENT_KEYDOWN,
+                 listener, false, null);
+            subCtx.storeEventListenerNS
+                (tgt, XMLConstants.XML_EVENTS_NAMESPACE_URI, SVG_EVENT_KEYDOWN,
+                 listener, false);
+
+            tgt.addEventListenerNS
+                (XMLConstants.XML_EVENTS_NAMESPACE_URI, SVG_EVENT_KEYPRESS,
+                 listener, false, null);
+            subCtx.storeEventListenerNS
+                (tgt, XMLConstants.XML_EVENTS_NAMESPACE_URI, SVG_EVENT_KEYPRESS,
+                 listener, false);
+
+            tgt.addEventListenerNS
+                (XMLConstants.XML_EVENTS_NAMESPACE_URI, SVG_EVENT_KEYUP,
+                 listener, false, null);
+            subCtx.storeEventListenerNS
+                (tgt, XMLConstants.XML_EVENTS_NAMESPACE_URI, SVG_EVENT_KEYUP,
+                 listener, false);
+
+            tgt.addEventListenerNS
+                (XMLConstants.XML_EVENTS_NAMESPACE_URI, SVG_EVENT_MOUSEDOWN,
+                 listener, false, null);
+            subCtx.storeEventListenerNS
+                (tgt, XMLConstants.XML_EVENTS_NAMESPACE_URI, SVG_EVENT_MOUSEDOWN,
+                 listener, false);
+
+            tgt.addEventListenerNS
+                (XMLConstants.XML_EVENTS_NAMESPACE_URI, SVG_EVENT_MOUSEMOVE,
+                 listener, false, null);
+            subCtx.storeEventListenerNS
+                (tgt, XMLConstants.XML_EVENTS_NAMESPACE_URI, SVG_EVENT_MOUSEMOVE,
+                 listener, false);
+
+            tgt.addEventListenerNS
+                (XMLConstants.XML_EVENTS_NAMESPACE_URI, SVG_EVENT_MOUSEOUT,
+                 listener, false, null);
+            subCtx.storeEventListenerNS
+                (tgt, XMLConstants.XML_EVENTS_NAMESPACE_URI, SVG_EVENT_MOUSEOUT,
+                 listener, false);
+
+            tgt.addEventListenerNS
+                (XMLConstants.XML_EVENTS_NAMESPACE_URI, SVG_EVENT_MOUSEOVER,
+                 listener, false, null);
+            subCtx.storeEventListenerNS
+                (tgt, XMLConstants.XML_EVENTS_NAMESPACE_URI, SVG_EVENT_MOUSEOVER,
+                 listener, false);
+
+            tgt.addEventListenerNS
+                (XMLConstants.XML_EVENTS_NAMESPACE_URI, SVG_EVENT_MOUSEUP,
+                 listener, false, null);
+            subCtx.storeEventListenerNS
+                (tgt, XMLConstants.XML_EVENTS_NAMESPACE_URI, SVG_EVENT_MOUSEUP,
+                 listener, false);
         }
 
         return result;
@@ -679,17 +736,35 @@
 
     public void dispose() {
         if ((imgDocument != null) && (listener != null)) {
-            EventTarget tgt = (EventTarget)imgDocument.getRootElement();
+            NodeEventTarget tgt = (NodeEventTarget)imgDocument.getRootElement();
 
-            tgt.removeEventListener(SVG_EVENT_CLICK,     listener, false);
-            tgt.removeEventListener(SVG_EVENT_KEYDOWN,   listener, false);
-            tgt.removeEventListener(SVG_EVENT_KEYPRESS,  listener, false);
-            tgt.removeEventListener(SVG_EVENT_KEYUP,     listener, false);
-            tgt.removeEventListener(SVG_EVENT_MOUSEDOWN, listener, false);
-            tgt.removeEventListener(SVG_EVENT_MOUSEMOVE, listener, false);
-            tgt.removeEventListener(SVG_EVENT_MOUSEOUT,  listener, false);
-            tgt.removeEventListener(SVG_EVENT_MOUSEOVER, listener, false);
-            tgt.removeEventListener(SVG_EVENT_MOUSEUP,   listener, false);
+            tgt.removeEventListenerNS
+                (XMLConstants.XML_EVENTS_NAMESPACE_URI, SVG_EVENT_CLICK,
+                 listener, false);
+            tgt.removeEventListenerNS
+                (XMLConstants.XML_EVENTS_NAMESPACE_URI, SVG_EVENT_KEYDOWN,
+                 listener, false);
+            tgt.removeEventListenerNS
+                (XMLConstants.XML_EVENTS_NAMESPACE_URI, SVG_EVENT_KEYPRESS,
+                 listener, false);
+            tgt.removeEventListenerNS
+                (XMLConstants.XML_EVENTS_NAMESPACE_URI, SVG_EVENT_KEYUP,
+                 listener, false);
+            tgt.removeEventListenerNS
+                (XMLConstants.XML_EVENTS_NAMESPACE_URI, SVG_EVENT_MOUSEDOWN,
+                 listener, false);
+            tgt.removeEventListenerNS
+                (XMLConstants.XML_EVENTS_NAMESPACE_URI, SVG_EVENT_MOUSEMOVE,
+                 listener, false);
+            tgt.removeEventListenerNS
+                (XMLConstants.XML_EVENTS_NAMESPACE_URI, SVG_EVENT_MOUSEOUT,
+                 listener, false);
+            tgt.removeEventListenerNS
+                (XMLConstants.XML_EVENTS_NAMESPACE_URI, SVG_EVENT_MOUSEOVER,
+                 listener, false);
+            tgt.removeEventListenerNS
+                (XMLConstants.XML_EVENTS_NAMESPACE_URI, SVG_EVENT_MOUSEUP,
+                 listener, false);
             listener = null;
         }
 
@@ -727,26 +802,25 @@
         }
 
         public void handleEvent(Event e) {
-            MouseEvent evt = (MouseEvent) e;
-            MouseEvent newMouseEvent = (MouseEvent)
+            DOMMouseEvent evt = (DOMMouseEvent) e;
+            DOMMouseEvent newMouseEvent = (DOMMouseEvent)
                 // DOM Level 2 6.5 cast from Document to DocumentEvent is ok
                 ((DocumentEvent)imgElement.getOwnerDocument()).createEvent("MouseEvents");
 
-            newMouseEvent.initMouseEvent(evt.getType(),
-                                         evt.getBubbles(),
-                                         evt.getCancelable(),
-                                         evt.getView(),
-                                         evt.getDetail(),
-                                         evt.getScreenX(),
-                                         evt.getScreenY(),
-                                         evt.getClientX(),
-                                         evt.getClientY(),
-                                         evt.getCtrlKey(),
-                                         evt.getAltKey(),
-                                         evt.getShiftKey(),
-                                         evt.getMetaKey(),
-                                         evt.getButton(),
-                                         (EventTarget)imgElement);
+            newMouseEvent.initMouseEventNS
+                (XMLConstants.XML_EVENTS_NAMESPACE_URI,
+                 evt.getType(),
+                 evt.getBubbles(),
+                 evt.getCancelable(),
+                 evt.getView(),
+                 evt.getDetail(),
+                 evt.getScreenX(),
+                 evt.getScreenY(),
+                 evt.getClientX(),
+                 evt.getClientY(),
+                 evt.getButton(),
+                 (EventTarget)imgElement,
+                 evt.getModifiersString());
             ((EventTarget)imgElement).dispatchEvent(newMouseEvent);
         }
     }

Modified: xmlgraphics/batik/trunk/sources/org/apache/batik/bridge/SVGShapeElementBridge.java
URL: http://svn.apache.org/viewcvs/xmlgraphics/batik/trunk/sources/org/apache/batik/bridge/SVGShapeElementBridge.java?rev=280553&r1=280552&r2=280553&view=diff
==============================================================================
--- xmlgraphics/batik/trunk/sources/org/apache/batik/bridge/SVGShapeElementBridge.java (original)
+++ xmlgraphics/batik/trunk/sources/org/apache/batik/bridge/SVGShapeElementBridge.java Tue Sep 13 06:29:29 2005
@@ -1,6 +1,6 @@
 /*
 
-   Copyright 2001-2003  The Apache Software Foundation 
+   Copyright 2001-2003,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.
@@ -137,7 +137,7 @@
     /**
      * Invoked when the geometry of an graphical element has changed.
      */
-    protected  void handleGeometryChanged() {
+    protected void handleGeometryChanged() {
         super.handleGeometryChanged();
         ShapeNode shapeNode = (ShapeNode)node;
         shapeNode.setShapePainter(createShapePainter(ctx, e, shapeNode));

Modified: xmlgraphics/batik/trunk/sources/org/apache/batik/bridge/SVGTextElementBridge.java
URL: http://svn.apache.org/viewcvs/xmlgraphics/batik/trunk/sources/org/apache/batik/bridge/SVGTextElementBridge.java?rev=280553&r1=280552&r2=280553&view=diff
==============================================================================
--- xmlgraphics/batik/trunk/sources/org/apache/batik/bridge/SVGTextElementBridge.java (original)
+++ xmlgraphics/batik/trunk/sources/org/apache/batik/bridge/SVGTextElementBridge.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.
@@ -19,11 +19,8 @@
 
 import java.awt.AlphaComposite;
 import java.awt.Color;
-import java.awt.Composite;
-import java.awt.Paint;
 import java.awt.RenderingHints;
 import java.awt.Shape;
-import java.awt.Stroke;
 import java.awt.font.TextAttribute;
 import java.awt.geom.AffineTransform;
 import java.awt.geom.GeneralPath;
@@ -40,7 +37,6 @@
 import java.util.Map;
 import java.util.Set;
 import java.util.StringTokenizer;
-import java.util.Vector;
 import java.util.WeakHashMap;
 
 import org.apache.batik.css.engine.CSSEngineEvent;
@@ -49,6 +45,7 @@
 import org.apache.batik.css.engine.StyleMap;
 import org.apache.batik.css.engine.value.ListValue;
 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.SVGOMElement;
 import org.apache.batik.dom.svg.SVGTextContent;
@@ -66,13 +63,14 @@
 import org.apache.batik.gvt.text.TextPaintInfo;
 import org.apache.batik.gvt.text.TextPath;
 import org.apache.batik.gvt.text.TextSpanLayout;
+import org.apache.batik.util.XMLConstants;
+
 import org.w3c.dom.Element;
 import org.w3c.dom.Node;
 import org.w3c.dom.css.CSSPrimitiveValue;
 import org.w3c.dom.css.CSSValue;
 import org.w3c.dom.events.Event;
 import org.w3c.dom.events.EventListener;
-import org.w3c.dom.events.EventTarget;
 import org.w3c.dom.events.MutationEvent;
 
 /**
@@ -316,21 +314,25 @@
             return;             // Only add the listeners if we are dynamic
 
 
-        EventTarget evtTarget = (EventTarget)e;
+        NodeEventTarget evtTarget = (NodeEventTarget)e;
 
         //to be notified when a child is removed from the 
         //<text> element.
-        evtTarget.addEventListener
-            ("DOMNodeRemoved", childNodeRemovedEventListener, true);
-        ctx.storeEventListener
-            (evtTarget, "DOMNodeRemoved", childNodeRemovedEventListener, true);
+        evtTarget.addEventListenerNS
+            (XMLConstants.XML_EVENTS_NAMESPACE_URI, "DOMNodeRemoved",
+             childNodeRemovedEventListener, true, null);
+        ctx.storeEventListenerNS
+            (evtTarget, XMLConstants.XML_EVENTS_NAMESPACE_URI, "DOMNodeRemoved",
+             childNodeRemovedEventListener, true);
         
         //to be notified when the modification of the subtree
         //of the <text> element is done
-        evtTarget.addEventListener
-            ("DOMSubtreeModified", subtreeModifiedEventListener, false);
-        ctx.storeEventListener
-            (evtTarget, "DOMSubtreeModified", subtreeModifiedEventListener, false);
+        evtTarget.addEventListenerNS
+            (XMLConstants.XML_EVENTS_NAMESPACE_URI, "DOMSubtreeModified",
+             subtreeModifiedEventListener, false, null);
+        ctx.storeEventListenerNS
+            (evtTarget, XMLConstants.XML_EVENTS_NAMESPACE_URI, "DOMSubtreeModified",
+             subtreeModifiedEventListener, false);
 
         // traverse the children to add context on 
         // <tspan>, <tref> and <textPath>
@@ -411,13 +413,13 @@
      * Invoked when an MutationEvent of type 'DOMNodeInserted' is fired.
      */
     public void handleDOMNodeRemovedEvent(MutationEvent evt) {
-        EventTarget evtTarget = evt.getTarget();
-        evtTarget.removeEventListener("DOMNodeRemoved",
-                                      childNodeRemovedEventListener,
-                                      true);
-        evtTarget.removeEventListener("DOMSubtreeModified",
-                                      subtreeModifiedEventListener,
-                                      false);
+        NodeEventTarget evtTarget = (NodeEventTarget) evt.getTarget();
+        evtTarget.removeEventListenerNS
+            (XMLConstants.XML_EVENTS_NAMESPACE_URI, "DOMNodeRemoved",
+             childNodeRemovedEventListener, true);
+        evtTarget.removeEventListenerNS
+            (XMLConstants.XML_EVENTS_NAMESPACE_URI, "DOMSubtreeModified",
+             subtreeModifiedEventListener, false);
         super.handleDOMNodeRemovedEvent(evt);
     }
 
@@ -496,8 +498,8 @@
      * value.
      */
     protected void computeLaidoutText(BridgeContext ctx, 
-                                       Element e,
-                                       GraphicsNode node) {
+                                      Element e,
+                                      GraphicsNode node) {
         AttributedString as = buildAttributedString(ctx, e);
         addGlyphPositionAttributes(as, e, ctx);
         if (ctx.isDynamic()) {
@@ -526,6 +528,10 @@
             // Force Complex SVG fonts to be recreated, if we have them.
             tn.setAttributedCharacterIterator(as.getIterator());
         }
+
+        if (ctx.isDynamic()) {
+            checkBBoxChange();
+        }
     }
 
     /**
@@ -876,11 +882,15 @@
                         asb.append(s, m);
                     }
                 } else if (ln.equals(SVG_A_TAG)) {
-                    EventTarget target = (EventTarget)nodeElement;
+                    NodeEventTarget target = (NodeEventTarget)nodeElement;
                     UserAgent ua = ctx.getUserAgent();
                     EventListener l = new SVGAElementBridge.AnchorListener(ua);
-                    target.addEventListener(SVG_EVENT_CLICK, l, false);
-                    ctx.storeEventListener(target, SVG_EVENT_CLICK, l, false);
+                    target.addEventListenerNS
+                        (XMLConstants.XML_EVENTS_NAMESPACE_URI, SVG_EVENT_CLICK,
+                         l, false, null);
+                    ctx.storeEventListenerNS
+                        (target, XMLConstants.XML_EVENTS_NAMESPACE_URI,
+                         SVG_EVENT_CLICK, l, false);
                     
                     fillAttributedStringBuffer(ctx,
                                                nodeElement,

Modified: xmlgraphics/batik/trunk/sources/org/apache/batik/bridge/SVGUseElementBridge.java
URL: http://svn.apache.org/viewcvs/xmlgraphics/batik/trunk/sources/org/apache/batik/bridge/SVGUseElementBridge.java?rev=280553&r1=280552&r2=280553&view=diff
==============================================================================
--- xmlgraphics/batik/trunk/sources/org/apache/batik/bridge/SVGUseElementBridge.java (original)
+++ xmlgraphics/batik/trunk/sources/org/apache/batik/bridge/SVGUseElementBridge.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.
@@ -23,19 +23,21 @@
 import java.awt.geom.Rectangle2D;
 
 import org.apache.batik.css.engine.CSSEngine;
-import org.apache.batik.dom.svg.SVGOMCSSImportedElementRoot;
+import org.apache.batik.dom.events.NodeEventTarget;
 import org.apache.batik.dom.svg.SVGOMDocument;
 import org.apache.batik.dom.svg.SVGOMUseElement;
+import org.apache.batik.dom.svg.SVGOMUseShadowRoot;
 import org.apache.batik.dom.util.XLinkSupport;
 import org.apache.batik.gvt.CompositeGraphicsNode;
 import org.apache.batik.gvt.GraphicsNode;
+import org.apache.batik.util.XMLConstants;
+
 import org.w3c.dom.Attr;
 import org.w3c.dom.Element;
 import org.w3c.dom.NamedNodeMap;
 import org.w3c.dom.Node;
 import org.w3c.dom.events.Event;
 import org.w3c.dom.events.EventListener;
-import org.w3c.dom.events.EventTarget;
 import org.w3c.dom.events.MutationEvent;
 
 /**
@@ -45,7 +47,7 @@
  * @version $Id$
  */
 public class SVGUseElementBridge extends AbstractGraphicsNodeBridge {
-    /*
+    /**
      * Used to handle mutation of the referenced content. This is
      * only used in dynamic context and only for reference to local
      * content.
@@ -172,8 +174,8 @@
         }
 
         // attach the referenced element to the current document
-        SVGOMCSSImportedElementRoot root;
-        root = new SVGOMCSSImportedElementRoot(document, e, isLocal);
+        SVGOMUseShadowRoot root;
+        root = new SVGOMUseShadowRoot(document, e, isLocal);
         root.appendChild(localRefElement);
 
         if (gn == null) {
@@ -185,11 +187,11 @@
         }
 
         SVGOMUseElement ue = (SVGOMUseElement)e;
-        Node oldRoot = ue.getCSSImportedElementRoot();
+        Node oldRoot = ue.getCSSFirstChild();
         if (oldRoot != null) {
             disposeTree(oldRoot);
         }
-        ue.setCSSImportedElementRoot(root);
+        ue.setUseShadowTree(root);
 
         Element g = localRefElement;
 
@@ -223,11 +225,19 @@
 
         if (l != null) {
             // Remove event listeners
-            EventTarget target = l.target;
-            target.removeEventListener("DOMAttrModified", l, true);
-            target.removeEventListener("DOMNodeInserted", l, true);
-            target.removeEventListener("DOMNodeRemoved", l, true);
-            target.removeEventListener("DOMCharacterDataModified",l, true);
+            NodeEventTarget target = l.target;
+            target.removeEventListenerNS
+                (XMLConstants.XML_EVENTS_NAMESPACE_URI, "DOMAttrModified",
+                 l, true);
+            target.removeEventListenerNS
+                (XMLConstants.XML_EVENTS_NAMESPACE_URI, "DOMNodeInserted",
+                 l, true);
+            target.removeEventListenerNS
+                (XMLConstants.XML_EVENTS_NAMESPACE_URI, "DOMNodeRemoved",
+                 l, true);
+            target.removeEventListenerNS
+                (XMLConstants.XML_EVENTS_NAMESPACE_URI, "DOMCharacterDataModified",
+                 l, true);
             l = null;
         }
 
@@ -238,21 +248,36 @@
         if (isLocal && ctx.isDynamic()) {
             l = new ReferencedElementMutationListener();
         
-            EventTarget target = (EventTarget)refElement;
+            NodeEventTarget target = (NodeEventTarget)refElement;
             l.target = target;
             
-            target.addEventListener("DOMAttrModified", l, true);
-            theCtx.storeEventListener(target, "DOMAttrModified", l, true);
+            target.addEventListenerNS
+                (XMLConstants.XML_EVENTS_NAMESPACE_URI, "DOMAttrModified",
+                 l, true, null);
+            theCtx.storeEventListenerNS
+                (target, XMLConstants.XML_EVENTS_NAMESPACE_URI, "DOMAttrModified",
+                 l, true);
             
-            target.addEventListener("DOMNodeInserted", l, true);
-            theCtx.storeEventListener(target, "DOMNodeInserted", l, true);
+            target.addEventListenerNS
+                (XMLConstants.XML_EVENTS_NAMESPACE_URI, "DOMNodeInserted",
+                 l, true, null);
+            theCtx.storeEventListenerNS
+                (target, XMLConstants.XML_EVENTS_NAMESPACE_URI, "DOMNodeInserted",
+                 l, true);
             
-            target.addEventListener("DOMNodeRemoved", l, true);
-            theCtx.storeEventListener(target, "DOMNodeRemoved", l, true);
+            target.addEventListenerNS
+                (XMLConstants.XML_EVENTS_NAMESPACE_URI, "DOMNodeRemoved",
+                 l, true, null);
+            theCtx.storeEventListenerNS
+                (target, XMLConstants.XML_EVENTS_NAMESPACE_URI, "DOMNodeRemoved",
+                 l, true);
             
-            target.addEventListener("DOMCharacterDataModified", l, true);
-            theCtx.storeEventListener
-                (target, "DOMCharacterDataModified", l, true);
+            target.addEventListenerNS
+                (XMLConstants.XML_EVENTS_NAMESPACE_URI, "DOMCharacterDataModified",
+                 l, true, null);
+            theCtx.storeEventListenerNS
+                (target, XMLConstants.XML_EVENTS_NAMESPACE_URI, "DOMCharacterDataModified",
+                 l, true);
         }
         
         return gn;
@@ -261,17 +286,25 @@
     public void dispose() {
         if (l != null) {
             // Remove event listeners
-            EventTarget target = l.target;
-            target.removeEventListener("DOMAttrModified", l, true);
-            target.removeEventListener("DOMNodeInserted", l, true);
-            target.removeEventListener("DOMNodeRemoved", l, true);
-            target.removeEventListener("DOMCharacterDataModified",l, true);
+            NodeEventTarget target = l.target;
+            target.removeEventListenerNS
+                (XMLConstants.XML_EVENTS_NAMESPACE_URI, "DOMAttrModified",
+                 l, true);
+            target.removeEventListenerNS
+                (XMLConstants.XML_EVENTS_NAMESPACE_URI, "DOMNodeInserted",
+                 l, true);
+            target.removeEventListenerNS
+                (XMLConstants.XML_EVENTS_NAMESPACE_URI, "DOMNodeRemoved",
+                 l, true);
+            target.removeEventListenerNS
+                (XMLConstants.XML_EVENTS_NAMESPACE_URI, "DOMCharacterDataModified",
+                 l, true);
             l = null;
         }
 
         SVGOMUseElement ue = (SVGOMUseElement)e;
-        if ((ue != null) && (ue.getCSSImportedElementRoot() != null)) {
-            disposeTree(ue.getCSSImportedElementRoot());
+        if (ue != null && ue.getCSSFirstChild() != null) {
+            disposeTree(ue.getCSSFirstChild());
         }
 
         super.dispose();
@@ -345,10 +378,14 @@
         super.buildGraphicsNode(ctx, e, node);
 
         if (ctx.isInteractive()) {
-            EventTarget target = (EventTarget)e;
+            NodeEventTarget target = (NodeEventTarget)e;
             EventListener l = new CursorMouseOverListener(ctx);
-            target.addEventListener(SVG_EVENT_MOUSEOVER, l, false);
-            ctx.storeEventListener(target, SVG_EVENT_MOUSEOVER, l, false);
+            target.addEventListenerNS
+                (XMLConstants.XML_EVENTS_NAMESPACE_URI, SVG_EVENT_MOUSEOVER,
+                 l, false, null);
+            ctx.storeEventListenerNS
+                (target, XMLConstants.XML_EVENTS_NAMESPACE_URI, SVG_EVENT_MOUSEOVER,
+                 l, false);
         }
     }
 
@@ -382,8 +419,8 @@
     /**
      * Used to handle modifications to the referenced content
      */
-    public class ReferencedElementMutationListener implements EventListener {
-        EventTarget target;
+    protected class ReferencedElementMutationListener implements EventListener {
+        protected NodeEventTarget target;
 
         public void handleEvent(Event evt) {
             // We got a mutation in the referenced content. We need to