Hi Thomas. I'd like to submit the code I've written for the sXBL support. There are three major modifications to existing code that I want to point out:
- Rather than having a set of XBL DOM classes that inherit from the Abstract* classes to add the XBL functionality, the Abstract* classes now implement the NodeXBL interface. The actual implementation of these methods, though, is deferred to an XBLManager. There is an org.apache.batik.dom.xbl.GenericXBLManager that is used by default, which does not perform any XBL processing at all. The org.apache.batik.bridge.svg12.DefaultXBLManager is the XBL manager that does the real work, and it is installed into the AbstractDocument by the UpdateManager when the document is started. - To handle the differences in event processing under XBL, an XBLEventSupport class that extends the standard EventSupport class is used. It does two things: performs XBL specific event propagation (i.e., events crossing shadow trees, events being routed through a definition's handlerGroup) and allows the registration of implementation event listeners. The implementation event listeners are listeners that are called even if they would not be under the normal rules of XBL event propagation (e.g., DOM mutation events that are only dispatched within a shadow tree). These are needed any time document-wide events are to be captured (e.g., DOMAttrModified events caught by the AbstractGraphicsNodeBridge) that should also handle events in any shadow tree. - The CSSNavigableDocument interface is used to provide document-specific traversal behaviour for the CSSEngine. This wraps up use element shadow trees (previously handled by a CSSImportNode) and CSS inheritance on the XBL fully flattened tree. Documents that don't implement the interface still just use the standard DOM traversal methods. The full patch is at http://mcc.id.au/temp/2005/batik-sxbl-1.diff. Let me know if there's anything you object to, or ask me to summarise anything more succinctly than the 450KB patch. :) Thanks, Cameron -- e-mail : cam (at) mcc.id.au icq : 26955922 web : http://mcc.id.au/ msn : cam-msn (at) aka.mcc.id.au office : +61399055779 jabber : heycam (at) jabber.org --------------------------------------------------------------------- To unsubscribe, e-mail: [EMAIL PROTECTED] For additional commands, e-mail: [EMAIL PROTECTED]