Class XmlTree

All Implemented Interfaces:
ImageObserver, MenuContainer, Serializable, Accessible, Scrollable

public class XmlTree extends JTree
A generic JTree that displays an xml document. Can be configured in a variety of ways to show or not show certain tags, etc.
See Also:
  • Field Details

  • Constructor Details

    • XmlTree

      public XmlTree(Element xmlRoot)
      ctor
      Parameters:
      xmlRoot - The root of the xml dom tree
    • XmlTree

      public XmlTree(Element xmlRoot, boolean openFirstLevel)
      ctor
      Parameters:
      xmlRoot - The root of the xml dom tree
      openFirstLevel - Should the first level of the jtree be opened
    • XmlTree

      public XmlTree(Element xmlRoot, boolean openFirstLevel, String basePath)
      ctor
      Parameters:
      xmlRoot - The root of the xml dom tree
      openFirstLevel - Should the first level of the jtree be opened
      basePath - Where the xml came from
  • Method Details

    • getIconForNode

      public ImageIcon getIconForNode(Element node)
      Get the icon for a node
      Parameters:
      node - the node
      Returns:
      null
    • getToolTipText

      public String getToolTipText(MouseEvent event)
      Get the tooltip at the mouse
      Overrides:
      getToolTipText in class JTree
      Parameters:
      event - Where the mouse is
      Returns:
      The tooltip text
    • getToolTipText

      public String getToolTipText(Element n)
      A hook to allow subclasses to get tooltip text for a particular xml element
      Parameters:
      n - The xml element
      Returns:
      The tooltip text
    • loadTree

      public void loadTree()
      Reload the xml into the jtree
    • setUseTagNameAsLabel

      public void setUseTagNameAsLabel(boolean value)
      Set the UseTagNameAsLabel property.
      Parameters:
      value - The new value for UseTagNameAsLabel
    • getUseTagNameAsLabel

      public boolean getUseTagNameAsLabel()
      Get the UseTagNameAsLabel property.
      Returns:
      The UseTagNameAsLabel
    • setIncludeAttributes

      public void setIncludeAttributes(boolean value)
      Set the IncludeAttributes property.
      Parameters:
      value - The new value for IncludeAttributes
    • getIncludeAttributes

      public boolean getIncludeAttributes()
      Get the IncludeAttributes property.
      Returns:
      The IncludeAttributes
    • getSelectedElements

      public List getSelectedElements()
      Return a list of the xml Element nodes that have been selected.
      Returns:
      List of selected nodes.
    • selectElement

      public void selectElement(Element element)
      Select in the jtree the node that corresponds to the given xml element
      Parameters:
      element - The xml element to select
    • getSelectedElement

      public Element getSelectedElement()
      Find the xml element that corresponds to the selected jtree node
      Returns:
      Selected xml element or null if none selected
    • getXmlRoot

      public Element getXmlRoot()
      Return the root element of the xml dom
      Returns:
      root element of the xml dom
    • setXmlRoot

      public void setXmlRoot(Element newRoot)
      Set the root and reinitialize
      Parameters:
      newRoot - The new xml root
    • treeClick

      protected void treeClick(MouseEvent event)
      Gets called when the tree is clicked.
      Parameters:
      event - Mouse event
    • doDoubleClick

      public void doDoubleClick(XmlTree tree, XmlTree.XmlTreeNode node, Element element)
      Gets called when an Xml Element has been double clicked.
      Parameters:
      tree - The tree (this).
      node - The node that was clicked on
      element - The corresponding xml element
    • doDoubleClick

      public void doDoubleClick(XmlTree tree, Element element)
      Gets called when an Xml Element has been double clicked.
      Parameters:
      tree - The tree (this)
      element - The xml element
    • doClick

      public void doClick(XmlTree tree, XmlTree.XmlTreeNode node, Element element)
      tree node was clicked
      Parameters:
      tree - The tree (this)
      node - Tree node that was clicked
      element - Corresponding xml node
    • doClick

      public void doClick(XmlTree tree, Element element)
      tree node was clicked
      Parameters:
      tree - The tree (this)
      element - Corresponding xml node
    • doRightClick

      public void doRightClick(XmlTree tree, XmlTree.XmlTreeNode node, Element element, MouseEvent event)
      Handle right click
      Parameters:
      tree - The tree (this)
      node - Tree node that was clicked
      element - Corresponding xml node
      event - The mouse event
    • doRightClick

      public void doRightClick(XmlTree tree, Element element, MouseEvent event)
      Handle right click
      Parameters:
      tree - The tree (this)
      element - Corresponding xml node
      event - The mouse event
    • getContents

      public Component getContents()
      Return the gui component. This has to be called because we create the JTree here. (We don't at construction time because of the tagsToRecurse/Process setting).
      Returns:
      The contents
    • getScroller

      public JScrollPane getScroller()
      Get the scrollpane the xmltree is in
      Returns:
      The scroller
    • defineLabelAttr

      public void defineLabelAttr(String tagName, String attrName)
      Define the name of the attribute to use for a label for elements with the given tag name
      Parameters:
      tagName - The tag name
      attrName - Attribute that defines the label
    • defineLabelChild

      public void defineLabelChild(String tagName, String childTag)
      Where do we get the label for the tag
      Parameters:
      tagName - The tag name
      childTag - Tag name of child node to look for label
    • defineTooltipChild

      public void defineTooltipChild(String tagName, String childTag)
      Where do we get the tooltip text
      Parameters:
      tagName - The tag name
      childTag - Tag of the child where we get tooltip text
    • addXlinkTag

      public void addXlinkTag(String tagName)
      Define a tag name that holds xlink references to other xml files
      Parameters:
      tagName - The tag name
    • addTagsToRecurse

      public void addTagsToRecurse(List tags)
      Define the set of tags whose child elements we should process
      Parameters:
      tags - List of tag names
    • setIconForTag

      public void setIconForTag(ImageIcon icon, String tagName)
      Associate the icon with the tag
      Parameters:
      icon - The icon
      tagName - The tag name
    • addTagToRecurse

      public void addTagToRecurse(String tag)
      Define a tag whose child elements we should process
      Parameters:
      tag - The tag name
    • addTagsToProcess

      public void addTagsToProcess(List tags)
      Define the set of tags who we should process
      Parameters:
      tags - List of tag names
    • addTagToProcess

      public void addTagToProcess(String tag)
      Define a tag who we should process
      Parameters:
      tag - the tag name
    • addTagsToNotProcessButRecurse

      public void addTagsToNotProcessButRecurse(List tags)
      Define the set of tags that we don't want to add to the jtree but do want to recurse
      Parameters:
      tags - List of tag names
    • addTagsToNotRecurse

      public void addTagsToNotRecurse(List tags)
      Define the set of tags whose children we should NOT process
      Parameters:
      tags - List of tag names
    • addTagToNotRecurse

      public void addTagToNotRecurse(String tag)
      Define a tag whose children we should NOT process
      Parameters:
      tag - The tag name
    • addTagsToNotProcess

      public void addTagsToNotProcess(List tags)
      Define the set of tags we should NOT process
      Parameters:
      tags - List of tag names
    • addTagToNotProcess

      public void addTagToNotProcess(String tag)
      Define a tag we should NOT process
      Parameters:
      tag - The tag name
    • fireTreeWillExpand

      public void fireTreeWillExpand(TreePath treePath) throws ExpandVetoException
      Fire the event
      Overrides:
      fireTreeWillExpand in class JTree
      Parameters:
      treePath - Expanding path
      Throws:
      ExpandVetoException - on badness
    • expandRelativeUrl

      public String expandRelativeUrl(XmlTree.XmlTreeNode node, String href)
      Expand the relative url
      Parameters:
      node - the node
      href - the base href
      Returns:
      the expanded URL
    • expandRelativeUrl

      public String expandRelativeUrl(String href)
      Utility to expand a relative url wrt to a base url
      Parameters:
      href - The (potentially) relative url
      Returns:
      Fully qualified url
    • expandRelativeUrl

      public static String expandRelativeUrl(String href, String baseUrlPath)
      Utility to expand a relative url wrt to a base url
      Parameters:
      href - The (potentially) relative url
      baseUrlPath - The base path
      Returns:
      Fully qualified url
    • readXlinkXml

      protected Document readXlinkXml(String href) throws Exception
      Process the xlink href
      Parameters:
      href - Points to the xml file
      Returns:
      The new document
      Throws:
      Exception - On badness
    • getXlinkImportLevel

      protected int getXlinkImportLevel()
      When we load in an xlinked document how far down do we go before we start displaying the nodes
      Returns:
      import level
    • expandXlink

      protected void expandXlink(XmlTree.XlinkTreeNode node, String href)
      expand the xlink node
      Parameters:
      node - The node
      href - The href to the xml doc
    • getXlinkImportElements

      public NodeList getXlinkImportElements(Element root)
      Find the xml elements to use when we have an xlink to an xml doc
      Parameters:
      root - get the xlink elements
      Returns:
      element to use
    • initXlinkRoot

      protected boolean initXlinkRoot(Element root, Document doc, String url)
      Allows derived classes to initialize the xlink loaded xml
      Parameters:
      root - The root of the xlink loaded xml
      doc - The document the xml was created with
      url - The url
      Returns:
      true if the xlink tree should be added
    • shouldProcess

      protected boolean shouldProcess(Element xmlNode)
      Should we show the given xml Element
      Parameters:
      xmlNode -
      Returns:
      Should we look at this node and turn it into a jtree node
    • getIcon

      protected ImageIcon getIcon(Element xmlNode, boolean isLeaf)
      Get the icon used for the node
      Parameters:
      xmlNode - The node
      isLeaf - Is it a leaf node
      Returns:
      The icon or null
    • process

      protected void process(XmlTree.XmlTreeNode parentTreeNode, Element xmlNode)
      Walk the xml tree at the given xmlNode and create the JTree
      Parameters:
      parentTreeNode - The parent jtree node
      xmlNode - The xml node to process
    • shouldRecurse

      protected boolean shouldRecurse(Element xmlNode)
      Should we recursiely descend the children of the given xml Element
      Parameters:
      xmlNode - The xml node
      Returns:
      Should we recurse down
    • getLabel

      public String getLabel(Element n)
      Return the String used for the JTree node. This first looks in the tagNameToLabelAttr hashtable for an attribute name to fetch the label. If not found we try the attributes "label" and "name".
      Parameters:
      n - The node
      Returns:
      Its label
    • getXmlNodeAt

      public Element getXmlNodeAt(int x, int y)
      Return the xml Element located at the given position
      Parameters:
      x - x
      y - y
      Returns:
      The node
    • getXmlNodeAtPath

      protected Element getXmlNodeAtPath(TreePath path)
      Return the xml Element located at the given position
      Parameters:
      path - The path
      Returns:
      The node or null
    • getXmlTreeNodeAt

      public XmlTree.XmlTreeNode getXmlTreeNodeAt(int x, int y)
      Return the xml tree node located at the given position
      Parameters:
      x - x
      y - y
      Returns:
      The node or null
    • getXmlTreeNodeAtPath

      protected XmlTree.XmlTreeNode getXmlTreeNodeAtPath(TreePath path)
      Return the xml tree node located at the given position
      Parameters:
      path - The tree path
      Returns:
      The node or null
    • getXmlElement

      public Element getXmlElement(TreeNode treeNode)
      Return the xml Element that corresponds to the given tree node
      Parameters:
      treeNode - The tree node
      Returns:
      The corresponding xml node
    • setMultipleSelect

      public void setMultipleSelect(boolean v)
      Set tree select mode
      Parameters:
      v - Do multiples?
    • main

      public static void main(String[] args)
      Test
      Parameters:
      args - cmd line args