Package ucar.unidata.ui
Class XmlTree
java.lang.Object
java.awt.Component
java.awt.Container
javax.swing.JComponent
javax.swing.JTree
ucar.unidata.ui.XmlTree
- All Implemented Interfaces:
ImageObserver,MenuContainer,Serializable,Accessible,Scrollable
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:
-
Nested Class Summary
Nested ClassesModifier and TypeClassDescriptionclassClass MyRenderer is used to return the correct image icon for certain jtree nodesstatic classClass XlinkTreeNode.static classClass XmlTreeNodeNested classes/interfaces inherited from class javax.swing.JTree
JTree.AccessibleJTree, JTree.DropLocation, JTree.DynamicUtilTreeNode, JTree.EmptySelectionModel, JTree.TreeModelHandler, JTree.TreeSelectionRedirectorNested classes/interfaces inherited from class javax.swing.JComponent
JComponent.AccessibleJComponentNested classes/interfaces inherited from class java.awt.Container
Container.AccessibleAWTContainerNested classes/interfaces inherited from class java.awt.Component
Component.AccessibleAWTComponent, Component.BaselineResizeBehavior, Component.BltBufferStrategy, Component.FlipBufferStrategy -
Field Summary
FieldsModifier and TypeFieldDescriptionstatic final Stringxml attributestatic final Stringxml attributestatic final Stringxml attributestatic final Stringthe null stringFields 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, visibleRowCountFields inherited from class javax.swing.JComponent
listenerList, TOOL_TIP_TEXT_KEY, ui, UNDEFINED_CONDITION, WHEN_ANCESTOR_OF_FOCUSED_COMPONENT, WHEN_FOCUSED, WHEN_IN_FOCUSED_WINDOWFields inherited from class java.awt.Component
accessibleContext, BOTTOM_ALIGNMENT, CENTER_ALIGNMENT, LEFT_ALIGNMENT, RIGHT_ALIGNMENT, TOP_ALIGNMENTFields inherited from interface java.awt.image.ImageObserver
ABORT, ALLBITS, ERROR, FRAMEBITS, HEIGHT, PROPERTIES, SOMEBITS, WIDTH -
Constructor Summary
Constructors -
Method Summary
Modifier and TypeMethodDescriptionvoidaddTagsToNotProcess(List tags) Define the set of tags we should NOT processvoidDefine the set of tags that we don't want to add to the jtree but do want to recursevoidaddTagsToNotRecurse(List tags) Define the set of tags whose children we should NOT processvoidaddTagsToProcess(List tags) Define the set of tags who we should processvoidaddTagsToRecurse(List tags) Define the set of tags whose child elements we should processvoidaddTagToNotProcess(String tag) Define a tag we should NOT processvoidaddTagToNotRecurse(String tag) Define a tag whose children we should NOT processvoidaddTagToProcess(String tag) Define a tag who we should processvoidaddTagToRecurse(String tag) Define a tag whose child elements we should processvoidaddXlinkTag(String tagName) Define a tag name that holds xlink references to other xml filesvoiddefineLabelAttr(String tagName, String attrName) Define the name of the attribute to use for a label for elements with the given tag namevoiddefineLabelChild(String tagName, String childTag) Where do we get the label for the tagvoiddefineTooltipChild(String tagName, String childTag) Where do we get the tooltip textvoidtree node was clickedvoiddoClick(XmlTree tree, XmlTree.XmlTreeNode node, Element element) tree node was clickedvoiddoDoubleClick(XmlTree tree, Element element) Gets called when an Xml Element has been double clicked.voiddoDoubleClick(XmlTree tree, XmlTree.XmlTreeNode node, Element element) Gets called when an Xml Element has been double clicked.voiddoRightClick(XmlTree tree, Element element, MouseEvent event) Handle right clickvoiddoRightClick(XmlTree tree, XmlTree.XmlTreeNode node, Element element, MouseEvent event) Handle right clickexpandRelativeUrl(String href) Utility to expand a relative url wrt to a base urlstatic StringexpandRelativeUrl(String href, String baseUrlPath) Utility to expand a relative url wrt to a base urlexpandRelativeUrl(XmlTree.XmlTreeNode node, String href) Expand the relative urlprotected voidexpandXlink(XmlTree.XlinkTreeNode node, String href) expand the xlink nodevoidfireTreeWillExpand(TreePath treePath) Fire the eventReturn the gui component.protected ImageIconGet the icon used for the nodegetIconForNode(Element node) Get the icon for a nodebooleanGet the IncludeAttributes property.Return the String used for the JTree node.Get the scrollpane the xmltree is inFind the xml element that corresponds to the selected jtree nodeReturn a list of the xml Element nodes that have been selected.getToolTipText(MouseEvent event) Get the tooltip at the mouseA hook to allow subclasses to get tooltip text for a particular xml elementbooleanGet the UseTagNameAsLabel property.Find the xml elements to use when we have an xlink to an xml docprotected intWhen we load in an xlinked document how far down do we go before we start displaying the nodesgetXmlElement(TreeNode treeNode) Return the xml Element that corresponds to the given tree nodegetXmlNodeAt(int x, int y) Return the xml Element located at the given positionprotected ElementgetXmlNodeAtPath(TreePath path) Return the xml Element located at the given positionReturn the root element of the xml domgetXmlTreeNodeAt(int x, int y) Return the xml tree node located at the given positionprotected XmlTree.XmlTreeNodegetXmlTreeNodeAtPath(TreePath path) Return the xml tree node located at the given positionprotected booleaninitXlinkRoot(Element root, Document doc, String url) Allows derived classes to initialize the xlink loaded xmlvoidloadTree()Reload the xml into the jtreestatic voidTestprotected voidprocess(XmlTree.XmlTreeNode parentTreeNode, Element xmlNode) Walk the xml tree at the given xmlNode and create the JTreeprotected DocumentreadXlinkXml(String href) Process the xlink hrefvoidselectElement(Element element) Select in the jtree the node that corresponds to the given xml elementvoidsetIconForTag(ImageIcon icon, String tagName) Associate the icon with the tagvoidsetIncludeAttributes(boolean value) Set the IncludeAttributes property.voidsetMultipleSelect(boolean v) Set tree select modevoidsetUseTagNameAsLabel(boolean value) Set the UseTagNameAsLabel property.voidsetXmlRoot(Element newRoot) Set the root and reinitializeprotected booleanshouldProcess(Element xmlNode) Should we show the given xml Elementprotected booleanshouldRecurse(Element xmlNode) Should we recursiely descend the children of the given xml Elementprotected voidtreeClick(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, updateUIMethods 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, hide, isDoubleBuffered, isLightweightComponent, isManagingFocus, isOpaque, isOptimizedDrawingEnabled, isPaintingForPrint, isPaintingOrigin, 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, updateMethods 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, transferFocusDownCycle, validate, validateTreeMethods 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, getPropertyChangeListeners, getPropertyChangeListeners, getSize, getToolkit, getTreeLock, gotFocus, handleEvent, hasFocus, 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, requestFocus, requestFocus, requestFocusInWindow, resize, resize, setBounds, setBounds, setComponentOrientation, setCursor, setDropTarget, setFocusable, setFocusTraversalKeysEnabled, setIgnoreRepaint, setLocale, setLocation, setLocation, setMixingCutoutShape, setName, setSize, setSize, show, show, size, toString, transferFocus, transferFocusBackward, transferFocusUpCycle
-
Field Details
-
ATTR_NAME
xml attribute- See Also:
-
ATTR_LABEL
xml attribute- See Also:
-
ATTR_XLINKHREF
xml attribute- See Also:
-
NULL_STRING
the null string
-
-
Constructor Details
-
XmlTree
ctor- Parameters:
xmlRoot- The root of the xml dom tree
-
XmlTree
ctor- Parameters:
xmlRoot- The root of the xml dom treeopenFirstLevel- Should the first level of the jtree be opened
-
XmlTree
ctor- Parameters:
xmlRoot- The root of the xml dom treeopenFirstLevel- Should the first level of the jtree be openedbasePath- Where the xml came from
-
-
Method Details
-
getIconForNode
Get the icon for a node- Parameters:
node- the node- Returns:
- null
-
getToolTipText
Get the tooltip at the mouse- Overrides:
getToolTipTextin classJTree- Parameters:
event- Where the mouse is- Returns:
- The tooltip text
-
getToolTipText
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
Return a list of the xml Element nodes that have been selected.- Returns:
- List of selected nodes.
-
selectElement
Select in the jtree the node that corresponds to the given xml element- Parameters:
element- The xml element to select
-
getSelectedElement
Find the xml element that corresponds to the selected jtree node- Returns:
- Selected xml element or null if none selected
-
getXmlRoot
Return the root element of the xml dom- Returns:
- root element of the xml dom
-
setXmlRoot
Set the root and reinitialize- Parameters:
newRoot- The new xml root
-
treeClick
Gets called when the tree is clicked.- Parameters:
event- Mouse event
-
doDoubleClick
Gets called when an Xml Element has been double clicked.- Parameters:
tree- The tree (this).node- The node that was clicked onelement- The corresponding xml element
-
doDoubleClick
Gets called when an Xml Element has been double clicked.- Parameters:
tree- The tree (this)element- The xml element
-
doClick
tree node was clicked- Parameters:
tree- The tree (this)node- Tree node that was clickedelement- Corresponding xml node
-
doClick
tree node was clicked- Parameters:
tree- The tree (this)element- Corresponding xml node
-
doRightClick
Handle right click- Parameters:
tree- The tree (this)node- Tree node that was clickedelement- Corresponding xml nodeevent- The mouse event
-
doRightClick
Handle right click- Parameters:
tree- The tree (this)element- Corresponding xml nodeevent- The mouse event
-
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
Get the scrollpane the xmltree is in- Returns:
- The scroller
-
defineLabelAttr
Define the name of the attribute to use for a label for elements with the given tag name- Parameters:
tagName- The tag nameattrName- Attribute that defines the label
-
defineLabelChild
Where do we get the label for the tag- Parameters:
tagName- The tag namechildTag- Tag name of child node to look for label
-
defineTooltipChild
Where do we get the tooltip text- Parameters:
tagName- The tag namechildTag- Tag of the child where we get tooltip text
-
addXlinkTag
Define a tag name that holds xlink references to other xml files- Parameters:
tagName- The tag name
-
addTagsToRecurse
Define the set of tags whose child elements we should process- Parameters:
tags- List of tag names
-
setIconForTag
Associate the icon with the tag- Parameters:
icon- The icontagName- The tag name
-
addTagToRecurse
Define a tag whose child elements we should process- Parameters:
tag- The tag name
-
addTagsToProcess
Define the set of tags who we should process- Parameters:
tags- List of tag names
-
addTagToProcess
Define a tag who we should process- Parameters:
tag- the tag name
-
addTagsToNotProcessButRecurse
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
Define the set of tags whose children we should NOT process- Parameters:
tags- List of tag names
-
addTagToNotRecurse
Define a tag whose children we should NOT process- Parameters:
tag- The tag name
-
addTagsToNotProcess
Define the set of tags we should NOT process- Parameters:
tags- List of tag names
-
addTagToNotProcess
Define a tag we should NOT process- Parameters:
tag- The tag name
-
fireTreeWillExpand
Fire the event- Overrides:
fireTreeWillExpandin classJTree- Parameters:
treePath- Expanding path- Throws:
ExpandVetoException- on badness
-
expandRelativeUrl
Expand the relative url- Parameters:
node- the nodehref- the base href- Returns:
- the expanded URL
-
expandRelativeUrl
Utility to expand a relative url wrt to a base url- Parameters:
href- The (potentially) relative url- Returns:
- Fully qualified url
-
expandRelativeUrl
Utility to expand a relative url wrt to a base url- Parameters:
href- The (potentially) relative urlbaseUrlPath- The base path- Returns:
- Fully qualified url
-
readXlinkXml
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
expand the xlink node- Parameters:
node- The nodehref- The href to the xml doc
-
getXlinkImportElements
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
Allows derived classes to initialize the xlink loaded xml- Parameters:
root- The root of the xlink loaded xmldoc- The document the xml was created withurl- The url- Returns:
- true if the xlink tree should be added
-
shouldProcess
Should we show the given xml Element- Parameters:
xmlNode-- Returns:
- Should we look at this node and turn it into a jtree node
-
getIcon
Get the icon used for the node- Parameters:
xmlNode- The nodeisLeaf- Is it a leaf node- Returns:
- The icon or null
-
process
Walk the xml tree at the given xmlNode and create the JTree- Parameters:
parentTreeNode- The parent jtree nodexmlNode- The xml node to process
-
shouldRecurse
Should we recursiely descend the children of the given xml Element- Parameters:
xmlNode- The xml node- Returns:
- Should we recurse down
-
getLabel
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
Return the xml Element located at the given position- Parameters:
x- xy- y- Returns:
- The node
-
getXmlNodeAtPath
Return the xml Element located at the given position- Parameters:
path- The path- Returns:
- The node or null
-
getXmlTreeNodeAt
Return the xml tree node located at the given position- Parameters:
x- xy- y- Returns:
- The node or null
-
getXmlTreeNodeAtPath
Return the xml tree node located at the given position- Parameters:
path- The tree path- Returns:
- The node or null
-
getXmlElement
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
Test- Parameters:
args- cmd line args
-