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