ucar.unidata.ui
Class XmlTree

java.lang.Object
  extended by java.awt.Component
      extended by java.awt.Container
          extended by javax.swing.JComponent
              extended by javax.swing.JTree
                  extended by ucar.unidata.ui.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:
Serialized Form

Nested Class Summary
 class XmlTree.MyRenderer
          Class MyRenderer is used to return the correct image icon for certain jtree nodes
static class XmlTree.XlinkTreeNode
          Class XlinkTreeNode.
static class XmlTree.XmlTreeNode
          Class XmlTreeNode
 
Nested classes/interfaces inherited from class javax.swing.JTree
JTree.AccessibleJTree, JTree.DropLocation, JTree.DynamicUtilTreeNode, JTree.EmptySelectionModel, JTree.TreeModelHandler, JTree.TreeSelectionRedirector
 
Nested classes/interfaces inherited from class javax.swing.JComponent
JComponent.AccessibleJComponent
 
Nested classes/interfaces inherited from class java.awt.Container
Container.AccessibleAWTContainer
 
Nested classes/interfaces inherited from class java.awt.Component
Component.AccessibleAWTComponent, Component.BaselineResizeBehavior, Component.BltBufferStrategy, Component.FlipBufferStrategy
 
Field Summary
static String ATTR_LABEL
          xml attribute
static String ATTR_NAME
          xml attribute
static String ATTR_XLINKHREF
          xml attribute
static String NULL_STRING
          the null string
 
Fields inherited from class javax.swing.JTree
ANCHOR_SELECTION_PATH_PROPERTY, CELL_EDITOR_PROPERTY, CELL_RENDERER_PROPERTY, cellEditor, cellRenderer, editable, EDITABLE_PROPERTY, EXPANDS_SELECTED_PATHS_PROPERTY, INVOKES_STOP_CELL_EDITING_PROPERTY, invokesStopCellEditing, LARGE_MODEL_PROPERTY, largeModel, LEAD_SELECTION_PATH_PROPERTY, ROOT_VISIBLE_PROPERTY, rootVisible, ROW_HEIGHT_PROPERTY, rowHeight, SCROLLS_ON_EXPAND_PROPERTY, scrollsOnExpand, SELECTION_MODEL_PROPERTY, selectionModel, selectionRedirector, SHOWS_ROOT_HANDLES_PROPERTY, showsRootHandles, TOGGLE_CLICK_COUNT_PROPERTY, toggleClickCount, TREE_MODEL_PROPERTY, treeModelListener, VISIBLE_ROW_COUNT_PROPERTY, visibleRowCount
 
Fields inherited from class javax.swing.JComponent
accessibleContext, listenerList, TOOL_TIP_TEXT_KEY, ui, UNDEFINED_CONDITION, WHEN_ANCESTOR_OF_FOCUSED_COMPONENT, WHEN_FOCUSED, WHEN_IN_FOCUSED_WINDOW
 
Fields inherited from class java.awt.Component
BOTTOM_ALIGNMENT, CENTER_ALIGNMENT, LEFT_ALIGNMENT, RIGHT_ALIGNMENT, TOP_ALIGNMENT
 
Fields inherited from interface java.awt.image.ImageObserver
ABORT, ALLBITS, ERROR, FRAMEBITS, HEIGHT, PROPERTIES, SOMEBITS, WIDTH
 
Constructor Summary
XmlTree(Element xmlRoot)
          ctor
XmlTree(Element xmlRoot, boolean openFirstLevel)
          ctor
XmlTree(Element xmlRoot, boolean openFirstLevel, String basePath)
          ctor
 
Method Summary
 void addTagsToNotProcess(List tags)
          Define the set of tags we should NOT process
 void addTagsToNotProcessButRecurse(List tags)
          Define the set of tags that we don't want to add to the jtree but do want to recurse
 void addTagsToNotRecurse(List tags)
          Define the set of tags whose children we should NOT process
 void addTagsToProcess(List tags)
          Define the set of tags who we should process
 void addTagsToRecurse(List tags)
          Define the set of tags whose child elements we should process
 void addTagToNotProcess(String tag)
          Define a tag we should NOT process
 void addTagToNotRecurse(String tag)
          Define a tag whose children we should NOT process
 void addTagToProcess(String tag)
          Define a tag who we should process
 void addTagToRecurse(String tag)
          Define a tag whose child elements we should process
 void addXlinkTag(String tagName)
          Define a tag name that holds xlink references to other xml files
 void defineLabelAttr(String tagName, String attrName)
          Define the name of the attribute to use for a label for elements with the given tag name
 void defineLabelChild(String tagName, String childTag)
          Where do we get the label for the tag
 void defineTooltipChild(String tagName, String childTag)
          Where do we get the tooltip text
 void doClick(XmlTree tree, Element element)
          tree node was clicked
 void doClick(XmlTree tree, XmlTree.XmlTreeNode node, Element element)
          tree node was clicked
 void doDoubleClick(XmlTree tree, Element element)
          Gets called when an Xml Element has been double clicked.
 void doDoubleClick(XmlTree tree, XmlTree.XmlTreeNode node, Element element)
          Gets called when an Xml Element has been double clicked.
 void doRightClick(XmlTree tree, Element element, MouseEvent event)
          Handle right click
 void doRightClick(XmlTree tree, XmlTree.XmlTreeNode node, Element element, MouseEvent event)
          Handle right click
 String expandRelativeUrl(String href)
          Utility to expand a relative url wrt to a base url
static String expandRelativeUrl(String href, String baseUrlPath)
          Utility to expand a relative url wrt to a base url
 String expandRelativeUrl(XmlTree.XmlTreeNode node, String href)
          Expand the relative url
protected  void expandXlink(XmlTree.XlinkTreeNode node, String href)
          expand the xlink node
 void fireTreeWillExpand(TreePath treePath)
          Fire the event
 Component getContents()
          Return the gui component.
protected  ImageIcon getIcon(Element xmlNode, boolean isLeaf)
          Get the icon used for the node
 ImageIcon getIconForNode(Element node)
          Get the icon for a node
 boolean getIncludeAttributes()
          Get the IncludeAttributes property.
 String getLabel(Element n)
          Return the String used for the JTree node.
 JScrollPane getScroller()
          Get the scrollpane the xmltree is in
 Element getSelectedElement()
          Find the xml element that corresponds to the selected jtree node
 List getSelectedElements()
          Return a list of the xml Element nodes that have been selected.
 String getToolTipText(Element n)
          A hook to allow subclasses to get tooltip text for a particular xml element
 String getToolTipText(MouseEvent event)
          Get the tooltip at the mouse
 boolean getUseTagNameAsLabel()
          Get the UseTagNameAsLabel property.
 NodeList getXlinkImportElements(Element root)
          Find the xml elements to use when we have an xlink to an xml doc
protected  int getXlinkImportLevel()
          When we load in an xlinked document how far down do we go before we start displaying the nodes
 Element getXmlElement(TreeNode treeNode)
          Return the xml Element that corresponds to the given tree node
 Element getXmlNodeAt(int x, int y)
          Return the xml Element located at the given position
protected  Element getXmlNodeAtPath(TreePath path)
          Return the xml Element located at the given position
 Element getXmlRoot()
          Return the root element of the xml dom
 XmlTree.XmlTreeNode getXmlTreeNodeAt(int x, int y)
          Return the xml tree node located at the given position
protected  XmlTree.XmlTreeNode getXmlTreeNodeAtPath(TreePath path)
          Return the xml tree node located at the given position
protected  boolean initXlinkRoot(Element root, Document doc, String url)
          Allows derived classes to initialize the xlink loaded xml
 void loadTree()
          Reload the xml into the jtree
static void main(String[] args)
          Test
protected  void process(XmlTree.XmlTreeNode parentTreeNode, Element xmlNode)
          Walk the xml tree at the given xmlNode and create the JTree
protected  Document readXlinkXml(String href)
          Process the xlink href
 void selectElement(Element element)
          Select in the jtree the node that corresponds to the given xml element
 void setIconForTag(ImageIcon icon, String tagName)
          Associate the icon with the tag
 void setIncludeAttributes(boolean value)
          Set the IncludeAttributes property.
 void setMultipleSelect(boolean v)
          Set tree select mode
 void setUseTagNameAsLabel(boolean value)
          Set the UseTagNameAsLabel property.
 void setXmlRoot(Element newRoot)
          Set the root and reinitialize
protected  boolean shouldProcess(Element xmlNode)
          Should we show the given xml Element
protected  boolean shouldRecurse(Element xmlNode)
          Should we recursiely descend the children of the given xml Element
protected  void treeClick(MouseEvent event)
          Gets called when the tree is clicked.
 
Methods inherited from class javax.swing.JTree
addSelectionInterval, addSelectionPath, addSelectionPaths, addSelectionRow, addSelectionRows, addTreeExpansionListener, addTreeSelectionListener, addTreeWillExpandListener, cancelEditing, clearSelection, clearToggledPaths, collapsePath, collapseRow, convertValueToText, createTreeModel, createTreeModelListener, expandPath, expandRow, fireTreeCollapsed, fireTreeExpanded, fireTreeWillCollapse, fireValueChanged, getAccessibleContext, getAnchorSelectionPath, getCellEditor, getCellRenderer, getClosestPathForLocation, getClosestRowForLocation, getDefaultTreeModel, getDescendantToggledPaths, getDragEnabled, getDropLocation, getDropMode, getEditingPath, getExpandedDescendants, getExpandsSelectedPaths, getInvokesStopCellEditing, getLastSelectedPathComponent, getLeadSelectionPath, getLeadSelectionRow, getMaxSelectionRow, getMinSelectionRow, getModel, getNextMatch, getPathBetweenRows, getPathBounds, getPathForLocation, getPathForRow, getPreferredScrollableViewportSize, getRowBounds, getRowCount, getRowForLocation, getRowForPath, getRowHeight, getScrollableBlockIncrement, getScrollableTracksViewportHeight, getScrollableTracksViewportWidth, getScrollableUnitIncrement, getScrollsOnExpand, getSelectionCount, getSelectionModel, getSelectionPath, getSelectionPaths, getSelectionRows, getShowsRootHandles, getToggleClickCount, getTreeExpansionListeners, getTreeSelectionListeners, getTreeWillExpandListeners, getUI, getUIClassID, getVisibleRowCount, hasBeenExpanded, isCollapsed, isCollapsed, isEditable, isEditing, isExpanded, isExpanded, isFixedRowHeight, isLargeModel, isPathEditable, isPathSelected, isRootVisible, isRowSelected, isSelectionEmpty, isVisible, makeVisible, paramString, removeDescendantSelectedPaths, removeDescendantToggledPaths, removeSelectionInterval, removeSelectionPath, removeSelectionPaths, removeSelectionRow, removeSelectionRows, removeTreeExpansionListener, removeTreeSelectionListener, removeTreeWillExpandListener, scrollPathToVisible, scrollRowToVisible, setAnchorSelectionPath, setCellEditor, setCellRenderer, setDragEnabled, setDropMode, setEditable, setExpandedState, setExpandsSelectedPaths, setInvokesStopCellEditing, setLargeModel, setLeadSelectionPath, setModel, setRootVisible, setRowHeight, setScrollsOnExpand, setSelectionInterval, setSelectionModel, setSelectionPath, setSelectionPaths, setSelectionRow, setSelectionRows, setShowsRootHandles, setToggleClickCount, setUI, setVisibleRowCount, startEditingAtPath, stopEditing, treeDidChange, updateUI
 
Methods inherited from class javax.swing.JComponent
addAncestorListener, addNotify, addVetoableChangeListener, computeVisibleRect, contains, createToolTip, disable, enable, firePropertyChange, firePropertyChange, firePropertyChange, fireVetoableChange, getActionForKeyStroke, getActionMap, getAlignmentX, getAlignmentY, getAncestorListeners, getAutoscrolls, getBaseline, getBaselineResizeBehavior, getBorder, getBounds, getClientProperty, getComponentGraphics, getComponentPopupMenu, getConditionForKeyStroke, getDebugGraphicsOptions, getDefaultLocale, getFontMetrics, getGraphics, getHeight, getInheritsPopupMenu, getInputMap, getInputMap, getInputVerifier, getInsets, getInsets, getListeners, getLocation, getMaximumSize, getMinimumSize, getNextFocusableComponent, getPopupLocation, getPreferredSize, getRegisteredKeyStrokes, getRootPane, getSize, getToolTipLocation, getToolTipText, getTopLevelAncestor, getTransferHandler, getVerifyInputWhenFocusTarget, getVetoableChangeListeners, getVisibleRect, getWidth, getX, getY, grabFocus, isDoubleBuffered, isLightweightComponent, isManagingFocus, isOpaque, isOptimizedDrawingEnabled, isPaintingForPrint, isPaintingTile, isRequestFocusEnabled, isValidateRoot, paint, paintBorder, paintChildren, paintComponent, paintImmediately, paintImmediately, print, printAll, printBorder, printChildren, printComponent, processComponentKeyEvent, processKeyBinding, processKeyEvent, processMouseEvent, processMouseMotionEvent, putClientProperty, registerKeyboardAction, registerKeyboardAction, removeAncestorListener, removeNotify, removeVetoableChangeListener, repaint, repaint, requestDefaultFocus, requestFocus, requestFocus, requestFocusInWindow, requestFocusInWindow, resetKeyboardActions, reshape, revalidate, scrollRectToVisible, setActionMap, setAlignmentX, setAlignmentY, setAutoscrolls, setBackground, setBorder, setComponentPopupMenu, setDebugGraphicsOptions, setDefaultLocale, setDoubleBuffered, setEnabled, setFocusTraversalKeys, setFont, setForeground, setInheritsPopupMenu, setInputMap, setInputVerifier, setMaximumSize, setMinimumSize, setNextFocusableComponent, setOpaque, setPreferredSize, setRequestFocusEnabled, setToolTipText, setTransferHandler, setUI, setVerifyInputWhenFocusTarget, setVisible, unregisterKeyboardAction, update
 
Methods inherited from class java.awt.Container
add, add, add, add, add, addContainerListener, addImpl, addPropertyChangeListener, addPropertyChangeListener, applyComponentOrientation, areFocusTraversalKeysSet, countComponents, deliverEvent, doLayout, findComponentAt, findComponentAt, getComponent, getComponentAt, getComponentAt, getComponentCount, getComponents, getComponentZOrder, getContainerListeners, getFocusTraversalKeys, getFocusTraversalPolicy, getLayout, getMousePosition, insets, invalidate, isAncestorOf, isFocusCycleRoot, isFocusCycleRoot, isFocusTraversalPolicyProvider, isFocusTraversalPolicySet, layout, list, list, locate, minimumSize, paintComponents, preferredSize, printComponents, processContainerEvent, processEvent, remove, remove, removeAll, removeContainerListener, setComponentZOrder, setFocusCycleRoot, setFocusTraversalPolicy, setFocusTraversalPolicyProvider, setLayout, transferFocusBackward, transferFocusDownCycle, validate, validateTree
 
Methods inherited from class java.awt.Component
action, add, addComponentListener, addFocusListener, addHierarchyBoundsListener, addHierarchyListener, addInputMethodListener, addKeyListener, addMouseListener, addMouseMotionListener, addMouseWheelListener, bounds, checkImage, checkImage, coalesceEvents, contains, createImage, createImage, createVolatileImage, createVolatileImage, disableEvents, dispatchEvent, enable, enableEvents, enableInputMethods, firePropertyChange, firePropertyChange, firePropertyChange, firePropertyChange, firePropertyChange, firePropertyChange, getBackground, getBounds, getColorModel, getComponentListeners, getComponentOrientation, getCursor, getDropTarget, getFocusCycleRootAncestor, getFocusListeners, getFocusTraversalKeysEnabled, getFont, getForeground, getGraphicsConfiguration, getHierarchyBoundsListeners, getHierarchyListeners, getIgnoreRepaint, getInputContext, getInputMethodListeners, getInputMethodRequests, getKeyListeners, getLocale, getLocation, getLocationOnScreen, getMouseListeners, getMouseMotionListeners, getMousePosition, getMouseWheelListeners, getName, getParent, getPeer, getPropertyChangeListeners, getPropertyChangeListeners, getSize, getToolkit, getTreeLock, gotFocus, handleEvent, hasFocus, hide, imageUpdate, inside, isBackgroundSet, isCursorSet, isDisplayable, isEnabled, isFocusable, isFocusOwner, isFocusTraversable, isFontSet, isForegroundSet, isLightweight, isMaximumSizeSet, isMinimumSizeSet, isPreferredSizeSet, isShowing, isValid, isVisible, keyDown, keyUp, list, list, list, location, lostFocus, mouseDown, mouseDrag, mouseEnter, mouseExit, mouseMove, mouseUp, move, nextFocus, paintAll, postEvent, prepareImage, prepareImage, processComponentEvent, processFocusEvent, processHierarchyBoundsEvent, processHierarchyEvent, processInputMethodEvent, processMouseWheelEvent, remove, removeComponentListener, removeFocusListener, removeHierarchyBoundsListener, removeHierarchyListener, removeInputMethodListener, removeKeyListener, removeMouseListener, removeMouseMotionListener, removeMouseWheelListener, removePropertyChangeListener, removePropertyChangeListener, repaint, repaint, repaint, resize, resize, setBounds, setBounds, setComponentOrientation, setCursor, setDropTarget, setFocusable, setFocusTraversalKeysEnabled, setIgnoreRepaint, setLocale, setLocation, setLocation, setName, setSize, setSize, show, show, size, toString, transferFocus, transferFocusUpCycle
 
Methods inherited from class java.lang.Object
clone, equals, finalize, getClass, hashCode, notify, notifyAll, wait, wait, wait
 

Field Detail

ATTR_NAME

public static final String ATTR_NAME
xml attribute

See Also:
Constant Field Values

ATTR_LABEL

public static final String ATTR_LABEL
xml attribute

See Also:
Constant Field Values

ATTR_XLINKHREF

public static final String ATTR_XLINKHREF
xml attribute

See Also:
Constant Field Values

NULL_STRING

public static final String NULL_STRING
the null string

Constructor Detail

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 Detail

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