org.apache.batik.bridge.svg12
Class DefaultXBLManager

java.lang.Object
  extended by org.apache.batik.bridge.svg12.DefaultXBLManager
All Implemented Interfaces:
XBLManager, XBLConstants

public class DefaultXBLManager
extends Object
implements XBLManager, XBLConstants

A full featured sXBL manager.


Nested Class Summary
protected  class DefaultXBLManager.DefAttrListener
          DOM attribute mutation listener for definition elements.
protected  class DefaultXBLManager.DefinitionRecord
          Record class for storing information about an XBL definition.
protected  class DefaultXBLManager.DefNodeInsertedListener
          DOM node inserted listener for definition elements.
protected  class DefaultXBLManager.DefNodeRemovedListener
          DOM node removed listener for definition elements.
protected  class DefaultXBLManager.DocInsertedListener
          DOM node inserted listener for the document.
protected  class DefaultXBLManager.DocRemovedListener
          DOM node removed listener for the document.
protected  class DefaultXBLManager.DocSubtreeListener
          DOM subtree mutation listener for the document.
protected  class DefaultXBLManager.ImportAttrListener
          DOM attribute mutation listener for import elements.
protected  class DefaultXBLManager.ImportInsertedListener
          DOM node inserted listener for imported XBL trees.
protected  class DefaultXBLManager.ImportRecord
          Record class for storing information about an XBL import.
protected  class DefaultXBLManager.ImportRemovedListener
          DOM node removed listener for imported XBL trees.
protected  class DefaultXBLManager.ImportSubtreeListener
          DOM subtree listener for imported XBL trees.
protected  class DefaultXBLManager.RefAttrListener
          DOM attribute mutation listener for referencing definition elements.
protected  class DefaultXBLManager.TemplateMutationListener
          DOM mutation listener for template elements.
protected  class DefaultXBLManager.XblChildNodes
          To iterate over the XBL child nodes.
protected  class DefaultXBLManager.XBLRecord
          XBL record.
protected  class DefaultXBLManager.XblScopedChildNodes
          To iterate over the scoped XBL child nodes.
 
Field Summary
protected  EventListenerList bindingListenerList
          Global event listener list for XBL binding related events.
protected  Map contentManagers
          Map of shadow trees to content managers.
protected  EventListenerList contentSelectionChangedListenerList
          Global event listener list for ContentSelectionChanged events.
protected  BridgeContext ctx
          The BridgeContext.
protected  DoublyIndexedTable definitionLists
          Map of namespace URI/local name pairs to ordered sets of definition records.
protected  DoublyIndexedTable definitions
          Map of definition element/import element pairs to definition records.
protected  DefaultXBLManager.DocInsertedListener docInsertedListener
          DOM node inserted listener for the document.
protected  DefaultXBLManager.DocRemovedListener docRemovedListener
          DOM node removed listener for the document.
protected  DefaultXBLManager.DocSubtreeListener docSubtreeListener
          DOM subtree mutation listener for the document.
protected  Document document
          The document.
protected  DefaultXBLManager.ImportAttrListener importAttrListener
          DOM attribute listener for import elements.
protected  Map imports
          Map of import elements to import records.
protected  boolean isProcessing
          Whether XBL processing is currently taking place.
protected  DefaultXBLManager.RefAttrListener refAttrListener
          DOM attribute listener for referencing definition elements.
 
Fields inherited from interface org.apache.batik.util.XBLConstants
XBL_BINDINGS_ATTRIBUTE, XBL_BOUND_EVENT_TYPE, XBL_CONTENT_TAG, XBL_DEFINITION_TAG, XBL_ELEMENT_ATTRIBUTE, XBL_HANDLER_GROUP_TAG, XBL_IMPORT_TAG, XBL_INCLUDES_ATTRIBUTE, XBL_NAMESPACE_URI, XBL_ONBOUND_ATTRIBUTE, XBL_ONPREBIND_ATTRIBUTE, XBL_ONUNBINDING_ATTRIBUTE, XBL_PREBIND_EVENT_TYPE, XBL_REF_ATTRIBUTE, XBL_SHADOW_TREE_TAG, XBL_TEMPLATE_TAG, XBL_UNBINDING_EVENT_TYPE, XBL_XBL_TAG
 
Constructor Summary
DefaultXBLManager(Document doc, BridgeContext ctx)
          Creates a new DefaultXBLManager for the given document.
 
Method Summary
 void addBindingListener(BindingListener l)
          Adds the specified BindingListener to the global listener list.
 void addContentSelectionChangedListener(ContentSelectionChangedListener l)
          Adds the specified ContentSelectionChangedListener to the global listener list.
protected  void addDefinition(String namespaceURI, String localName, XBLOMDefinitionElement def, Element imp)
          Adds an xbl:definition element to the list of definitions that could possibly affect elements with the specified QName.
protected  void addDefinitionElementListeners(XBLOMDefinitionElement def, DefaultXBLManager.ImportRecord ir)
          Adds DOM mutation listeners to the given definition element.
protected  void addDefinitionRef(Element defRef)
          Adds a definition through its referring definition element (one with a 'ref' attribute).
protected  void addImport(Element imp)
          Imports bindings from another document.
protected  void addImportedDefinitions(Element imp, Node n)
          Adds the definitions in the given imported subtree.
protected  void addTemplateElementListeners(XBLOMTemplateElement template, DefaultXBLManager.ImportRecord ir)
          Adds DOM mutation listeners to the given template element.
protected  void bind(Element e)
          Binds each bindable element in the given element's subtree.
protected  XBLOMShadowTreeElement cloneTemplate(XBLOMTemplateElement template)
          Clones a template element for use as a shadow tree.
static int computeBubbleLimit(Node from, Node to)
          Determines the number of nodes events should bubble if the mouse pointer has moved from one element to another.
protected  void dispatchBindingChangedEvent(Element bindableElement, Element shadowTree)
          Dispatches a BindingEvent the registered listeners.
protected  void fireShadowTreeEvent(BindableElement elt, String type, XBLShadowTreeElement e)
          Fires a ShadowTreeEvent of the given type on this element.
protected  DefaultXBLManager.DefinitionRecord getActiveDefinition(String namespaceURI, String localName)
          Returns the definition record of the active definition for namespace URI/local name pair.
 ContentManager getContentManager(Node n)
          Returns the ContentManager that handles the shadow tree the given node resides in.
protected  Object[] getContentSelectionChangedListeners()
          Returns an array of the gloabl ContentSelectionChangedListeners.
protected  DefaultXBLManager.XBLRecord getRecord(Node n)
          Returns the XBL record for the given node.
 Element getXblBoundElement(Node n)
          Get the bound element whose shadow tree a node resides in.
 NodeList getXblChildNodes(Node n)
          Get the list of child nodes of a node in the fully flattened tree.
 XBLOMContentElement getXblContentElement(Node n)
          Returns the content element that caused the given node to be present in the flattened tree.
 NodeList getXblDefinitions(Node n)
          Get the xbl:definition elements currently binding an element.
 Node getXblFirstChild(Node n)
          Get the first child node of a node in the fully flattened tree.
 Element getXblFirstElementChild(Node n)
          Get the first element child of a node in the fully flattened tree.
 Node getXblLastChild(Node n)
          Get the last child node of a node in the fully flattened tree.
 Element getXblLastElementChild(Node n)
          Get the last element child of a node in the fully flattened tree.
 Element getXblNextElementSibling(Node n)
          Get the first element that follows a node in the xblParentNode's xblChildNodes list.
 Node getXblNextSibling(Node n)
          Get the node which directly follows a node in the xblParentNode's xblChildNodes list.
 Node getXblParentNode(Node n)
          Get the parent of a node in the fully flattened tree.
 Element getXblPreviousElementSibling(Node n)
          Get the first element that precedes the a node in the xblParentNode's xblChildNodes list.
 Node getXblPreviousSibling(Node n)
          Get the node which directly precedes a node in the xblParentNode's xblChildNodes list.
 NodeList getXblScopedChildNodes(Node n)
          Get the list of child nodes of a node in the fully flattened tree that are within the same shadow scope.
 Element getXblShadowTree(Node n)
          Get the shadow tree of a node.
 void invalidateChildNodes(Node n)
          Mark the xblChildNodes and xblScopedChildNodes variables as invalid.
protected  boolean isActiveDefinition(XBLOMDefinitionElement def, Element imp)
          Returns whether the given definition element is the active one for its element name.
 boolean isProcessing()
          Returns whether XBL processing is currently enabled.
protected  void rebind(String namespaceURI, String localName, Element e)
          Rebinds each bindable element of the given name in the given element's subtree.
 void removeBindingListener(BindingListener l)
          Removes the specified BindingListener from the global listener list.
 void removeContentSelectionChangedListener(ContentSelectionChangedListener l)
          Removes the specified ContentSelectionChangedListener from the global listener list.
protected  void removeDefinition(DefaultXBLManager.DefinitionRecord defRec)
          Removes an xbl:definition element from the list of definitions that could possibly affect elements with the specified QName.
protected  void removeDefinitionElementListeners(XBLOMDefinitionElement def, DefaultXBLManager.ImportRecord ir)
          Removes DOM mutation listeners from the given definition element.
protected  void removeDefinitionRef(Element defRef)
          Removes a definition through its referring definition element (one with a 'ref' attribute).
protected  void removeImport(Element imp)
          Removes an import.
protected  void removeTemplateElementListeners(XBLOMTemplateElement template, DefaultXBLManager.ImportRecord ir)
          Removes DOM mutation listeners from the given template element.
protected  void setActiveDefinition(BindableElement elt, DefaultXBLManager.DefinitionRecord defRec)
          Sets the given definition as the active one for a particular bindable element.
protected  void setXblShadowTree(BindableElement elt, XBLOMShadowTreeElement newShadow)
          Sets the shadow tree for the given bindable element.
 void startProcessing()
          Starts XBL processing on the document.
 void stopProcessing()
          Stops XBL processing on the document.
protected  void unbind(Element e)
          Unbinds each bindable element in the given element's subtree.
protected  void updateLinks(Node n)
          Updates the xblPreviousSibling and xblNextSibling properties of the given XBL node.
 
Methods inherited from class java.lang.Object
clone, equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait
 

Field Detail

isProcessing

protected boolean isProcessing
Whether XBL processing is currently taking place.


document

protected Document document
The document.


ctx

protected BridgeContext ctx
The BridgeContext.


definitionLists

protected DoublyIndexedTable definitionLists
Map of namespace URI/local name pairs to ordered sets of definition records.


definitions

protected DoublyIndexedTable definitions
Map of definition element/import element pairs to definition records.


contentManagers

protected Map contentManagers
Map of shadow trees to content managers.


imports

protected Map imports
Map of import elements to import records.


docInsertedListener

protected DefaultXBLManager.DocInsertedListener docInsertedListener
DOM node inserted listener for the document.


docRemovedListener

protected DefaultXBLManager.DocRemovedListener docRemovedListener
DOM node removed listener for the document.


docSubtreeListener

protected DefaultXBLManager.DocSubtreeListener docSubtreeListener
DOM subtree mutation listener for the document.


importAttrListener

protected DefaultXBLManager.ImportAttrListener importAttrListener
DOM attribute listener for import elements.


refAttrListener

protected DefaultXBLManager.RefAttrListener refAttrListener
DOM attribute listener for referencing definition elements.


bindingListenerList

protected EventListenerList bindingListenerList
Global event listener list for XBL binding related events.


contentSelectionChangedListenerList

protected EventListenerList contentSelectionChangedListenerList
Global event listener list for ContentSelectionChanged events.

Constructor Detail

DefaultXBLManager

public DefaultXBLManager(Document doc,
                         BridgeContext ctx)
Creates a new DefaultXBLManager for the given document.

Method Detail

startProcessing

public void startProcessing()
Starts XBL processing on the document.

Specified by:
startProcessing in interface XBLManager

stopProcessing

public void stopProcessing()
Stops XBL processing on the document.

Specified by:
stopProcessing in interface XBLManager

isProcessing

public boolean isProcessing()
Returns whether XBL processing is currently enabled.

Specified by:
isProcessing in interface XBLManager

addDefinitionRef

protected void addDefinitionRef(Element defRef)
Adds a definition through its referring definition element (one with a 'ref' attribute).


removeDefinitionRef

protected void removeDefinitionRef(Element defRef)
Removes a definition through its referring definition element (one with a 'ref' attribute).


addImport

protected void addImport(Element imp)
Imports bindings from another document.


addImportedDefinitions

protected void addImportedDefinitions(Element imp,
                                      Node n)
Adds the definitions in the given imported subtree.


removeImport

protected void removeImport(Element imp)
Removes an import.


addDefinition

protected void addDefinition(String namespaceURI,
                             String localName,
                             XBLOMDefinitionElement def,
                             Element imp)
Adds an xbl:definition element to the list of definitions that could possibly affect elements with the specified QName. This may or may not actually cause a new binding to come in to effect, as this new definition element may be added earlier in the document than another already in effect.

Parameters:
namespaceURI - the namespace URI of the bound elements
localName - the local name of the bound elements
def - the xbl:definition element
imp - the xbl:import or xbl;definition element through which this definition is being added, or null if the binding is in the original document

addDefinitionElementListeners

protected void addDefinitionElementListeners(XBLOMDefinitionElement def,
                                             DefaultXBLManager.ImportRecord ir)
Adds DOM mutation listeners to the given definition element.


addTemplateElementListeners

protected void addTemplateElementListeners(XBLOMTemplateElement template,
                                           DefaultXBLManager.ImportRecord ir)
Adds DOM mutation listeners to the given template element.


removeDefinition

protected void removeDefinition(DefaultXBLManager.DefinitionRecord defRec)
Removes an xbl:definition element from the list of definitions that could possibly affect elements with the specified QName. This will only cause a new binding to come in to effect if it is currently active.


removeDefinitionElementListeners

protected void removeDefinitionElementListeners(XBLOMDefinitionElement def,
                                                DefaultXBLManager.ImportRecord ir)
Removes DOM mutation listeners from the given definition element.


removeTemplateElementListeners

protected void removeTemplateElementListeners(XBLOMTemplateElement template,
                                              DefaultXBLManager.ImportRecord ir)
Removes DOM mutation listeners from the given template element.


getActiveDefinition

protected DefaultXBLManager.DefinitionRecord getActiveDefinition(String namespaceURI,
                                                                 String localName)
Returns the definition record of the active definition for namespace URI/local name pair.


unbind

protected void unbind(Element e)
Unbinds each bindable element in the given element's subtree.


bind

protected void bind(Element e)
Binds each bindable element in the given element's subtree.


rebind

protected void rebind(String namespaceURI,
                      String localName,
                      Element e)
Rebinds each bindable element of the given name in the given element's subtree.


setActiveDefinition

protected void setActiveDefinition(BindableElement elt,
                                   DefaultXBLManager.DefinitionRecord defRec)
Sets the given definition as the active one for a particular bindable element.


setXblShadowTree

protected void setXblShadowTree(BindableElement elt,
                                XBLOMShadowTreeElement newShadow)
Sets the shadow tree for the given bindable element.


fireShadowTreeEvent

protected void fireShadowTreeEvent(BindableElement elt,
                                   String type,
                                   XBLShadowTreeElement e)
Fires a ShadowTreeEvent of the given type on this element.


cloneTemplate

protected XBLOMShadowTreeElement cloneTemplate(XBLOMTemplateElement template)
Clones a template element for use as a shadow tree.


getXblParentNode

public Node getXblParentNode(Node n)
Get the parent of a node in the fully flattened tree.

Specified by:
getXblParentNode in interface XBLManager

getXblChildNodes

public NodeList getXblChildNodes(Node n)
Get the list of child nodes of a node in the fully flattened tree.

Specified by:
getXblChildNodes in interface XBLManager

getXblScopedChildNodes

public NodeList getXblScopedChildNodes(Node n)
Get the list of child nodes of a node in the fully flattened tree that are within the same shadow scope.

Specified by:
getXblScopedChildNodes in interface XBLManager

getXblFirstChild

public Node getXblFirstChild(Node n)
Get the first child node of a node in the fully flattened tree.

Specified by:
getXblFirstChild in interface XBLManager

getXblLastChild

public Node getXblLastChild(Node n)
Get the last child node of a node in the fully flattened tree.

Specified by:
getXblLastChild in interface XBLManager

getXblPreviousSibling

public Node getXblPreviousSibling(Node n)
Get the node which directly precedes a node in the xblParentNode's xblChildNodes list.

Specified by:
getXblPreviousSibling in interface XBLManager

getXblNextSibling

public Node getXblNextSibling(Node n)
Get the node which directly follows a node in the xblParentNode's xblChildNodes list.

Specified by:
getXblNextSibling in interface XBLManager

getXblFirstElementChild

public Element getXblFirstElementChild(Node n)
Get the first element child of a node in the fully flattened tree.

Specified by:
getXblFirstElementChild in interface XBLManager

getXblLastElementChild

public Element getXblLastElementChild(Node n)
Get the last element child of a node in the fully flattened tree.

Specified by:
getXblLastElementChild in interface XBLManager

getXblPreviousElementSibling

public Element getXblPreviousElementSibling(Node n)
Get the first element that precedes the a node in the xblParentNode's xblChildNodes list.

Specified by:
getXblPreviousElementSibling in interface XBLManager

getXblNextElementSibling

public Element getXblNextElementSibling(Node n)
Get the first element that follows a node in the xblParentNode's xblChildNodes list.

Specified by:
getXblNextElementSibling in interface XBLManager

getXblBoundElement

public Element getXblBoundElement(Node n)
Get the bound element whose shadow tree a node resides in.

Specified by:
getXblBoundElement in interface XBLManager

getXblShadowTree

public Element getXblShadowTree(Node n)
Get the shadow tree of a node.

Specified by:
getXblShadowTree in interface XBLManager

getXblDefinitions

public NodeList getXblDefinitions(Node n)
Get the xbl:definition elements currently binding an element.

Specified by:
getXblDefinitions in interface XBLManager

getRecord

protected DefaultXBLManager.XBLRecord getRecord(Node n)
Returns the XBL record for the given node.


updateLinks

protected void updateLinks(Node n)
Updates the xblPreviousSibling and xblNextSibling properties of the given XBL node.


getXblContentElement

public XBLOMContentElement getXblContentElement(Node n)
Returns the content element that caused the given node to be present in the flattened tree.


computeBubbleLimit

public static int computeBubbleLimit(Node from,
                                     Node to)
Determines the number of nodes events should bubble if the mouse pointer has moved from one element to another.

Parameters:
from - the element from which the mouse pointer moved
to - the element to which the mouse pointer moved

getContentManager

public ContentManager getContentManager(Node n)
Returns the ContentManager that handles the shadow tree the given node resides in.


invalidateChildNodes

public void invalidateChildNodes(Node n)
Mark the xblChildNodes and xblScopedChildNodes variables as invalid.


addContentSelectionChangedListener

public void addContentSelectionChangedListener(ContentSelectionChangedListener l)
Adds the specified ContentSelectionChangedListener to the global listener list.


removeContentSelectionChangedListener

public void removeContentSelectionChangedListener(ContentSelectionChangedListener l)
Removes the specified ContentSelectionChangedListener from the global listener list.


getContentSelectionChangedListeners

protected Object[] getContentSelectionChangedListeners()
Returns an array of the gloabl ContentSelectionChangedListeners.


addBindingListener

public void addBindingListener(BindingListener l)
Adds the specified BindingListener to the global listener list.


removeBindingListener

public void removeBindingListener(BindingListener l)
Removes the specified BindingListener from the global listener list.


dispatchBindingChangedEvent

protected void dispatchBindingChangedEvent(Element bindableElement,
                                           Element shadowTree)
Dispatches a BindingEvent the registered listeners.

Parameters:
bindableElement - the bindable element whose binding has changed
shadowTree - the new shadow tree of the bindable element

isActiveDefinition

protected boolean isActiveDefinition(XBLOMDefinitionElement def,
                                     Element imp)
Returns whether the given definition element is the active one for its element name.



Copyright © 2008 Apache Software Foundation. All Rights Reserved.