Class DefaultXBLManager

  • All Implemented Interfaces:
    XBLManager, XBLConstants

    public class DefaultXBLManager
    extends java.lang.Object
    implements XBLManager, XBLConstants
    A full featured sXBL manager.
    Version:
    $Id: DefaultXBLManager.java 1851346 2019-01-15 13:41:00Z ssteiner $
    • Field Detail

      • isProcessing

        protected boolean isProcessing
        Whether XBL processing is currently taking place.
      • document

        protected org.w3c.dom.Document document
        The document.
      • 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 java.util.Map contentManagers
        Map of shadow trees to content managers.
      • imports

        protected java.util.Map imports
        Map of import elements to import records.
      • bindingListenerList

        protected javax.swing.event.EventListenerList bindingListenerList
        Global event listener list for XBL binding related events.
      • contentSelectionChangedListenerList

        protected javax.swing.event.EventListenerList contentSelectionChangedListenerList
        Global event listener list for ContentSelectionChanged events.
    • Constructor Detail

      • DefaultXBLManager

        public DefaultXBLManager​(org.w3c.dom.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​(org.w3c.dom.Element defRef)
        Adds a definition through its referring definition element (one with a 'ref' attribute).
      • removeDefinitionRef

        protected void removeDefinitionRef​(org.w3c.dom.Element defRef)
        Removes a definition through its referring definition element (one with a 'ref' attribute).
      • addImport

        protected void addImport​(org.w3c.dom.Element imp)
        Imports bindings from another document.
      • addImportedDefinitions

        protected void addImportedDefinitions​(org.w3c.dom.Element imp,
                                              org.w3c.dom.Node n)
        Adds the definitions in the given imported subtree.
      • removeImport

        protected void removeImport​(org.w3c.dom.Element imp)
        Removes an import.
      • addDefinition

        protected void addDefinition​(java.lang.String namespaceURI,
                                     java.lang.String localName,
                                     XBLOMDefinitionElement def,
                                     org.w3c.dom.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
      • 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.
      • getActiveDefinition

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

        protected void unbind​(org.w3c.dom.Element e)
        Unbinds each bindable element in the given element's subtree.
      • bind

        protected void bind​(org.w3c.dom.Element e)
        Binds each bindable element in the given element's subtree.
      • rebind

        protected void rebind​(java.lang.String namespaceURI,
                              java.lang.String localName,
                              org.w3c.dom.Element e)
        Rebinds each bindable element of the given name in the given element's subtree.
      • fireShadowTreeEvent

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

        public org.w3c.dom.Node getXblParentNode​(org.w3c.dom.Node n)
        Get the parent of a node in the fully flattened tree.
        Specified by:
        getXblParentNode in interface XBLManager
      • getXblChildNodes

        public org.w3c.dom.NodeList getXblChildNodes​(org.w3c.dom.Node n)
        Get the list of child nodes of a node in the fully flattened tree.
        Specified by:
        getXblChildNodes in interface XBLManager
      • getXblScopedChildNodes

        public org.w3c.dom.NodeList getXblScopedChildNodes​(org.w3c.dom.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 org.w3c.dom.Node getXblFirstChild​(org.w3c.dom.Node n)
        Get the first child node of a node in the fully flattened tree.
        Specified by:
        getXblFirstChild in interface XBLManager
      • getXblLastChild

        public org.w3c.dom.Node getXblLastChild​(org.w3c.dom.Node n)
        Get the last child node of a node in the fully flattened tree.
        Specified by:
        getXblLastChild in interface XBLManager
      • getXblPreviousSibling

        public org.w3c.dom.Node getXblPreviousSibling​(org.w3c.dom.Node n)
        Get the node which directly precedes a node in the xblParentNode's xblChildNodes list.
        Specified by:
        getXblPreviousSibling in interface XBLManager
      • getXblNextSibling

        public org.w3c.dom.Node getXblNextSibling​(org.w3c.dom.Node n)
        Get the node which directly follows a node in the xblParentNode's xblChildNodes list.
        Specified by:
        getXblNextSibling in interface XBLManager
      • getXblFirstElementChild

        public org.w3c.dom.Element getXblFirstElementChild​(org.w3c.dom.Node n)
        Get the first element child of a node in the fully flattened tree.
        Specified by:
        getXblFirstElementChild in interface XBLManager
      • getXblLastElementChild

        public org.w3c.dom.Element getXblLastElementChild​(org.w3c.dom.Node n)
        Get the last element child of a node in the fully flattened tree.
        Specified by:
        getXblLastElementChild in interface XBLManager
      • getXblPreviousElementSibling

        public org.w3c.dom.Element getXblPreviousElementSibling​(org.w3c.dom.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 org.w3c.dom.Element getXblNextElementSibling​(org.w3c.dom.Node n)
        Get the first element that follows a node in the xblParentNode's xblChildNodes list.
        Specified by:
        getXblNextElementSibling in interface XBLManager
      • getXblBoundElement

        public org.w3c.dom.Element getXblBoundElement​(org.w3c.dom.Node n)
        Get the bound element whose shadow tree a node resides in.
        Specified by:
        getXblBoundElement in interface XBLManager
      • getXblShadowTree

        public org.w3c.dom.Element getXblShadowTree​(org.w3c.dom.Node n)
        Get the shadow tree of a node.
        Specified by:
        getXblShadowTree in interface XBLManager
      • getXblDefinitions

        public org.w3c.dom.NodeList getXblDefinitions​(org.w3c.dom.Node n)
        Get the xbl:definition elements currently binding an element.
        Specified by:
        getXblDefinitions in interface XBLManager
      • updateLinks

        protected void updateLinks​(org.w3c.dom.Node n)
        Updates the xblPreviousSibling and xblNextSibling properties of the given XBL node.
      • getXblContentElement

        public XBLOMContentElement getXblContentElement​(org.w3c.dom.Node n)
        Returns the content element that caused the given node to be present in the flattened tree.
      • computeBubbleLimit

        public static int computeBubbleLimit​(org.w3c.dom.Node from,
                                             org.w3c.dom.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​(org.w3c.dom.Node n)
        Returns the ContentManager that handles the shadow tree the given node resides in.
      • setContentManager

        void setContentManager​(org.w3c.dom.Element shadow,
                               ContentManager cm)
        Records the ContentManager that handles the given shadow tree.
      • invalidateChildNodes

        public void invalidateChildNodes​(org.w3c.dom.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 java.lang.Object[] getContentSelectionChangedListeners()
        Returns an array of the gloabl ContentSelectionChangedListeners.
      • shadowTreeSelectedContentChanged

        void shadowTreeSelectedContentChanged​(java.util.Set deselected,
                                              java.util.Set selected)
        Called by the ContentManager of a shadow tree to indicate some selected nodes have changed.
      • 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​(org.w3c.dom.Element bindableElement,
                                                   org.w3c.dom.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,
                                             org.w3c.dom.Element imp)
        Returns whether the given definition element is the active one for its element name.