NAME
XmTree - The Tree widget class
SYNOPSIS
#include <Xm/XTree.h>
DESCRIPTION
The Tree widget is a container that shows the relationship of its
children in a graphical tree-like format. Each child of the Tree widget
is a node in the Tree. The parent-child relationships between these
nodes are completely distinct from the widget hierarch.. The hierarchy
of nodes is created by specifying the tree "parent" of each node as a
constraint resource. If a node’s parent is NULL then it is assumed to
be a root of the tree. Although each widget can only have one parent,
the Tree widget supports adding more than one "root" node to a single
Tree.
Note: the Tree widget assumes that is will be totally responsible for
mapping and unmapping its children. Therefore no child of this widget
should ever modify its mappedWhenManaged resource. If a child does
modify this resource the behavior is undefined.
User Interaction
Each node in the tree can be in four states: open, closed, always open,
and hidden. The state of a node changes how it appears to the user and
what actions are available to the user.
Open This node will have an open folder shown to its left
that may be selected by the user to close this node.
When a node is open all of its children will be visible
to the user.
Closed This node will have a closed folder shown to its left
that may be selected by the user to open this node. When
a node is closed none of its children will be visible to
the user.
Always Open This node will have no folder button associated with it.
All of its children will be visible to the user.
Hidden This node will not be shown to the user and all of its
children will appear and act exactly as if they were
children of this node’s parent. It will appear to the
user as if this node does not exist.
To maintain consistency of the user interface we have found that it is
bestto use the node state "Always Open" for nodes with no children.
This way the user will only see a folder button next to a node that has
children to display. A folder button associated with a node that has no
children has no defined semantics.
Normal Resources
Name Class Type Initial Value
connectStyle ConnectStyle unsigned char XmTreeDirect
horizontalNodeSpace Dimension HorizontalDimension 20
verticalNodeSpace Dimension VerticalDimension 2
All resource names begin with XmN and all resource class names begin
with XmC.
connectStyle
The style of the lines visually connecting parent nodes to children
nodes. The valid styles are XmTreeDirect or XmTreeLadder.
horizontalNodeSpace
verticalNodeSpace
The amount of space between each node in the tree and it nearest
neighbor.
The following resources are inherited from the XmHierarchy widget:
Name Class Type Initial Value
autoClose AutoClose Boolean True
closeFolderPixmap Pixmap Pixmap XmUNSPECIFIED_PIXMAP
horizontalMargin Dimension HorizontalDimension 2
openFolderPixmap Pixmap Pixmap XmUNSPECIFIED_PIXMAP
refigureMode Boolean Boolean True
verticalMargin Dimension VerticalDimension 2
All resource names begin with XmN and all resource class names begin
with XmC.
Constraint Resources
Name Class Type Initial Value
openClosePadding OpenClosePadding Int 0
lineColor Foreground Pixel <dynamic>
lineWidth LineWidth Dimension 0
All resource names begin with XmN and all resource class names begin
with XmC. openClosePadding
The number of pixels between the folder button and the node it is
associated with.
lineColor
The color of the line connecting a node to its parent. The default
value for this resource is the foreground color of the Tree widget.
lineWidth
The width of a connection line between a node and its parent
The following constraint resources are inherited from the XmHierarchy
widget:
Name Class Type Initial Value
insertBefore InsertBefore Widget NULL
nodeState NodeState XmHierarchyNodeState Open
parentNode ParentNode Widget NULL
All resource names begin with XmN and all resource class names begin
with XmC. Geometry Management:
The layout is performed by assigning each node a box that is just large
enough to con- tain itself and all of its children. A recursive layout
is then performed that centers each node vertically in its box and at
the extreme left horizontally. The children’s boxes are then placed to
the right of the node separated by the horizontalNodeSpace from their
parent, stacked above each other and separated by verticalNodeSpace.
This process is repeated recursively for each child in the tree.
The preferred size of the entire tree will be just large enough to
contain all nodes in the hierarchy. As the state of nodes change the
tree will attempt to resize itself to con- tain its current
configuration. If the tree is forced larger than the desired size the
nodes will be centered vertically and flush to the left edge of the
tree widget. If the tree is forced smaller, some nodes may be moved or
drawn outside the end of the tree. For this reason it is usually
desirable to put the tree into a Scrolled Window widget.
SEE ALSO
XmColumn(3X)
COPYRIGHT
Copyright (c) 1992 by Integrated Computer Solutions, Inc.
15 July 1992 XmForm(3X)