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]