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 TypeClassDescriptionclass
Class MyRenderer is used to return the correct image icon for certain jtree nodesstatic class
Class XlinkTreeNode.static class
Class XmlTreeNodeNested 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
FieldsModifier and TypeFieldDescriptionstatic final String
xml attributestatic final String
xml attributestatic final String
xml attributestatic final String
the 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, visibleRowCount
Fields inherited from class javax.swing.JComponent
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
accessibleContext, 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
Constructors -
Method Summary
Modifier and TypeMethodDescriptionvoid
addTagsToNotProcess
(List tags) Define the set of tags we should NOT processvoid
Define the set of tags that we don't want to add to the jtree but do want to recursevoid
addTagsToNotRecurse
(List tags) Define the set of tags whose children we should NOT processvoid
addTagsToProcess
(List tags) Define the set of tags who we should processvoid
addTagsToRecurse
(List tags) Define the set of tags whose child elements we should processvoid
addTagToNotProcess
(String tag) Define a tag we should NOT processvoid
addTagToNotRecurse
(String tag) Define a tag whose children we should NOT processvoid
addTagToProcess
(String tag) Define a tag who we should processvoid
addTagToRecurse
(String tag) Define a tag whose child elements we should processvoid
addXlinkTag
(String tagName) Define a tag name that holds xlink references to other xml filesvoid
defineLabelAttr
(String tagName, String attrName) Define the name of the attribute to use for a label for elements with the given tag namevoid
defineLabelChild
(String tagName, String childTag) Where do we get the label for the tagvoid
defineTooltipChild
(String tagName, String childTag) Where do we get the tooltip textvoid
tree node was clickedvoid
doClick
(XmlTree tree, XmlTree.XmlTreeNode node, Element element) tree node was clickedvoid
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 clickvoid
doRightClick
(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 String
expandRelativeUrl
(String href, String baseUrlPath) Utility to expand a relative url wrt to a base urlexpandRelativeUrl
(XmlTree.XmlTreeNode node, String href) Expand the relative urlprotected void
expandXlink
(XmlTree.XlinkTreeNode node, String href) expand the xlink nodevoid
fireTreeWillExpand
(TreePath treePath) Fire the eventReturn the gui component.protected ImageIcon
Get the icon used for the nodegetIconForNode
(Element node) Get the icon for a nodeboolean
Get 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 elementboolean
Get the UseTagNameAsLabel property.Find the xml elements to use when we have an xlink to an xml docprotected int
When 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 Element
getXmlNodeAtPath
(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.XmlTreeNode
getXmlTreeNodeAtPath
(TreePath path) Return the xml tree node located at the given positionprotected boolean
initXlinkRoot
(Element root, Document doc, String url) Allows derived classes to initialize the xlink loaded xmlvoid
loadTree()
Reload the xml into the jtreestatic void
Testprotected void
process
(XmlTree.XmlTreeNode parentTreeNode, Element xmlNode) Walk the xml tree at the given xmlNode and create the JTreeprotected Document
readXlinkXml
(String href) Process the xlink hrefvoid
selectElement
(Element element) Select in the jtree the node that corresponds to the given xml elementvoid
setIconForTag
(ImageIcon icon, String tagName) Associate the icon with the tagvoid
setIncludeAttributes
(boolean value) Set the IncludeAttributes property.void
setMultipleSelect
(boolean v) Set tree select modevoid
setUseTagNameAsLabel
(boolean value) Set the UseTagNameAsLabel property.void
setXmlRoot
(Element newRoot) Set the root and reinitializeprotected boolean
shouldProcess
(Element xmlNode) Should we show the given xml Elementprotected boolean
shouldRecurse
(Element xmlNode) Should we recursiely descend the children of the given xml Elementprotected 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, 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, 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, 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, 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:
getToolTipText
in 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:
fireTreeWillExpand
in 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
-