tkormann 02/02/13 05:00:31 Modified: sources/org/apache/batik/bridge AbstractGraphicsNodeBridge.java SVGSVGElementBridge.java SVGTextElementBridge.java SVGUseElementBridge.java sources/org/apache/batik/dom/events EventSupport.java Log: - let bubbling phase happen inside all bridge - show stacktrace if an error occured inside a DOM listener Revision Changes Path 1.11 +5 -3 xml-batik/sources/org/apache/batik/bridge/AbstractGraphicsNodeBridge.java Index: AbstractGraphicsNodeBridge.java =================================================================== RCS file: /home/cvs/xml-batik/sources/org/apache/batik/bridge/AbstractGraphicsNodeBridge.java,v retrieving revision 1.10 retrieving revision 1.11 diff -u -r1.10 -r1.11 --- AbstractGraphicsNodeBridge.java 13 Feb 2002 09:51:01 -0000 1.10 +++ AbstractGraphicsNodeBridge.java 13 Feb 2002 13:00:31 -0000 1.11 @@ -39,7 +39,7 @@ * </ul> * * @author <a href="mailto:[EMAIL PROTECTED]">Thierry Kormann</a> - * @version $Id: AbstractGraphicsNodeBridge.java,v 1.10 2002/02/13 09:51:01 tkormann Exp $ + * @version $Id: AbstractGraphicsNodeBridge.java,v 1.11 2002/02/13 13:00:31 tkormann Exp $ */ public abstract class AbstractGraphicsNodeBridge extends AbstractSVGBridge implements GraphicsNodeBridge, ErrorConstants { @@ -153,10 +153,12 @@ } node.setTransform(at); fireBridgeUpdateCompleted(be); + } else { + System.out.println("Unsupported attribute modification: "+attrName+ + " on "+e.getLocalName()); } } - /** * The listener class for 'DOMAttrModified' event. */ @@ -171,7 +173,7 @@ */ public void handleEvent(Event evt) { if (evt.getTarget() != e) { - throw new Error("handleEvent bad target"); + return; } handleDOMAttrModifiedEvent((MutationEvent)evt); } 1.21 +67 -2 xml-batik/sources/org/apache/batik/bridge/SVGSVGElementBridge.java Index: SVGSVGElementBridge.java =================================================================== RCS file: /home/cvs/xml-batik/sources/org/apache/batik/bridge/SVGSVGElementBridge.java,v retrieving revision 1.20 retrieving revision 1.21 diff -u -r1.20 -r1.21 --- SVGSVGElementBridge.java 11 Feb 2002 16:00:08 -0000 1.20 +++ SVGSVGElementBridge.java 13 Feb 2002 13:00:31 -0000 1.21 @@ -22,6 +22,10 @@ import org.apache.batik.util.SVGConstants; 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.MutationEvent; import org.w3c.dom.svg.SVGElement; import org.w3c.dom.svg.SVGSVGElement; @@ -29,12 +33,27 @@ * Bridge class for the <svg> element. * * @author <a href="mailto:[EMAIL PROTECTED]">Thierry Kormann</a> - * @version $Id: SVGSVGElementBridge.java,v 1.20 2002/02/11 16:00:08 tkormann Exp $ + * @version $Id: SVGSVGElementBridge.java,v 1.21 2002/02/13 13:00:31 tkormann Exp $ */ public class SVGSVGElementBridge extends AbstractSVGBridge implements GraphicsNodeBridge, ErrorConstants { /** + * The element that has been handled by this bridge. + */ + protected Element e; + + /** + * The graphics node constructed by this bridge. + */ + protected GraphicsNode node; + + /** + * The bridge context to use for dynamic updates. + */ + protected BridgeContext ctx; + + /** * Constructs a new bridge for the <svg> element. */ public SVGSVGElementBridge() {} @@ -46,8 +65,11 @@ return SVG_SVG_TAG; } + /** + * Returns a new instance of this bridge. + */ public Bridge getInstance(){ - return this; + return new SVGSVGElementBridge(); } /** @@ -189,6 +211,12 @@ // bind the specified element and its associated graphics node if needed if (ctx.isDynamic()) { + ((EventTarget)e).addEventListener("DOMAttrModified", + new DOMAttrModifiedEventListener(), + false); + this.e = e; + this.node = node; + this.ctx = ctx; ctx.bind(e, node); } } @@ -200,6 +228,43 @@ return true; } + // dynamic support + + /** + * Handles DOMAttrModified events. + * + * @param evt the DOM mutation event + */ + protected void handleDOMAttrModifiedEvent(MutationEvent evt) { + String attrName = evt.getAttrName(); + + BridgeUpdateEvent be = new BridgeUpdateEvent(); + fireBridgeUpdateStarting(be); + System.out.println("Unsupported attribute modification: "+attrName+ + " on "+e.getLocalName()); + fireBridgeUpdateCompleted(be); + } + + + /** + * The listener class for 'DOMAttrModified' event. + */ + protected class DOMAttrModifiedEventListener implements EventListener { + + /** + * Handles 'DOMAttrModfied' events and deleguates to the + * 'handleDOMAttrModifiedEvent' method any changes to the + * GraphicsNode if any. + * + * @param evt the DOM event + */ + public void handleEvent(Event evt) { + if (evt.getTarget() != e) { + return; + } + handleDOMAttrModifiedEvent((MutationEvent)evt); + } + } /** * A viewport for a SVGSVGElement. 1.47 +6 -4 xml-batik/sources/org/apache/batik/bridge/SVGTextElementBridge.java Index: SVGTextElementBridge.java =================================================================== RCS file: /home/cvs/xml-batik/sources/org/apache/batik/bridge/SVGTextElementBridge.java,v retrieving revision 1.46 retrieving revision 1.47 diff -u -r1.46 -r1.47 --- SVGTextElementBridge.java 13 Feb 2002 09:51:01 -0000 1.46 +++ SVGTextElementBridge.java 13 Feb 2002 13:00:31 -0000 1.47 @@ -60,7 +60,7 @@ * Bridge class for the <text> element. * * @author <a href="[EMAIL PROTECTED]>Bill Haneman</a> - * @version $Id: SVGTextElementBridge.java,v 1.46 2002/02/13 09:51:01 tkormann Exp $ + * @version $Id: SVGTextElementBridge.java,v 1.47 2002/02/13 13:00:31 tkormann Exp $ */ public class SVGTextElementBridge extends AbstractSVGBridge implements GraphicsNodeBridge, ErrorConstants { @@ -258,9 +258,11 @@ (e, SVG_TRANSFORM_ATTRIBUTE, s); } node.setTransform(at); - + fireBridgeUpdateCompleted(be); - + } else { + System.out.println("Unsupported attribute modification: "+attrName+ + " on "+e.getLocalName()); } } @@ -279,7 +281,7 @@ */ public void handleEvent(Event evt) { if (evt.getTarget() != e) { - throw new Error("handleEvent bad target"); + return; } handleDOMAttrModifiedEvent((MutationEvent)evt); } 1.18 +69 -2 xml-batik/sources/org/apache/batik/bridge/SVGUseElementBridge.java Index: SVGUseElementBridge.java =================================================================== RCS file: /home/cvs/xml-batik/sources/org/apache/batik/bridge/SVGUseElementBridge.java,v retrieving revision 1.17 retrieving revision 1.18 diff -u -r1.17 -r1.18 --- SVGUseElementBridge.java 11 Feb 2002 16:00:08 -0000 1.17 +++ SVGUseElementBridge.java 13 Feb 2002 13:00:31 -0000 1.18 @@ -26,6 +26,10 @@ import org.w3c.dom.NamedNodeMap; import org.w3c.dom.Node; import org.w3c.dom.css.ViewCSS; +import org.w3c.dom.events.Event; +import org.w3c.dom.events.EventListener; +import org.w3c.dom.events.EventTarget; +import org.w3c.dom.events.MutationEvent; import org.w3c.dom.svg.SVGSVGElement; import org.w3c.dom.svg.SVGSymbolElement; @@ -33,12 +37,27 @@ * Bridge class for the <use> element. * * @author <a href="mailto:[EMAIL PROTECTED]">Thierry Kormann</a> - * @version $Id: SVGUseElementBridge.java,v 1.17 2002/02/11 16:00:08 tkormann Exp $ + * @version $Id: SVGUseElementBridge.java,v 1.18 2002/02/13 13:00:31 tkormann Exp $ */ public class SVGUseElementBridge extends AbstractSVGBridge implements GraphicsNodeBridge, ErrorConstants { /** + * The element that has been handled by this bridge. + */ + protected Element e; + + /** + * The graphics node constructed by this bridge. + */ + protected GraphicsNode node; + + /** + * The bridge context to use for dynamic updates. + */ + protected BridgeContext ctx; + + /** * Constructs a new bridge for the <use> element. */ public SVGUseElementBridge() {} @@ -50,8 +69,11 @@ return SVG_USE_TAG; } + /** + * Returns a new instance of this bridge. + */ public Bridge getInstance(){ - return this; + return new SVGUseElementBridge(); } /** @@ -211,6 +233,13 @@ // bind the specified element and its associated graphics node if needed if (ctx.isDynamic()) { + ((EventTarget)e).addEventListener("DOMAttrModified", + new DOMAttrModifiedEventListener(), + false); + this.e = e; + this.node = node; + this.ctx = ctx; + ctx.bind(e, node); } } @@ -220,5 +249,43 @@ */ public boolean isComposite() { return false; + } + + // dynamic support + + /** + * Handles DOMAttrModified events. + * + * @param evt the DOM mutation event + */ + protected void handleDOMAttrModifiedEvent(MutationEvent evt) { + String attrName = evt.getAttrName(); + + BridgeUpdateEvent be = new BridgeUpdateEvent(); + fireBridgeUpdateStarting(be); + System.out.println("Unsupported attribute modification: "+attrName+ + " on "+e.getLocalName()); + fireBridgeUpdateCompleted(be); + } + + + /** + * The listener class for 'DOMAttrModified' event. + */ + protected class DOMAttrModifiedEventListener implements EventListener { + + /** + * Handles 'DOMAttrModfied' events and deleguates to the + * 'handleDOMAttrModifiedEvent' method any changes to the + * GraphicsNode if any. + * + * @param evt the DOM event + */ + public void handleEvent(Event evt) { + if (evt.getTarget() != e) { + return; + } + handleDOMAttrModifiedEvent((MutationEvent)evt); + } } } 1.6 +3 -3 xml-batik/sources/org/apache/batik/dom/events/EventSupport.java Index: EventSupport.java =================================================================== RCS file: /home/cvs/xml-batik/sources/org/apache/batik/dom/events/EventSupport.java,v retrieving revision 1.5 retrieving revision 1.6 diff -u -r1.5 -r1.6 --- EventSupport.java 2 Aug 2001 17:58:00 -0000 1.5 +++ EventSupport.java 13 Feb 2002 13:00:31 -0000 1.6 @@ -19,7 +19,7 @@ * @see NodeEventTarget * @author <a href="mailto:[EMAIL PROTECTED]">Thierry Kormann</a> * @author <a href="mailto:[EMAIL PROTECTED]">Stephane Hillion</a> - * @version $Id: EventSupport.java,v 1.5 2001/08/02 17:58:00 hillion Exp $ + * @version $Id: EventSupport.java,v 1.6 2002/02/13 13:00:31 tkormann Exp $ */ public class EventSupport { @@ -220,8 +220,8 @@ for (int i=0; i < listeners.length; ++i) { try { listeners[i].handleEvent(evt); - } catch (Throwable th) { - // <!> FIXME: should do something else + } catch (Throwable th) { + th.printStackTrace(System.err); } } }
--------------------------------------------------------------------- To unsubscribe, e-mail: [EMAIL PROTECTED] For additional commands, e-mail: [EMAIL PROTECTED]