Public Member Functions

Wt::WTreeTable Class Reference

A table with a navigatable tree in the first column. More...

#include <Wt/WTreeTable>

Inheritance diagram for Wt::WTreeTable:
Inheritance graph
[legend]

List of all members.

Public Member Functions

 WTreeTable (WContainerWidget *parent=0)
 Creates a new tree table.
void addColumn (const WString &header, const WLength &width)
 Adds an extra column.
int columnCount () const
 Returns the number of columns in this table.
void setTreeRoot (WTreeTableNode *root, const WString &header)
 Sets the tree root.
WTreeTableNodetreeRoot ()
 Returns the tree root.
void setTree (WTree *tree, const WString &header)
 Sets the tree which provides the data for the tree table.
WTreetree () const
 Returns the tree that provides the data this table.
WLength columnWidth (int column) const
 Returns the column width for the given column.
WTextheader (int column) const
 Returns the header for the given column.
WWidgetheaderWidget () const
 Returns the header widget.

Detailed Description

A table with a navigatable tree in the first column.

A WTreeTable implements a tree table, where additional data associated is associated with tree items, which are organized in columns.

Unlike the MVC-based WTreeView widget, the tree renders a widget hierarchy, rather than a hierarhical standard model. This provides extra flexibility (as any widget can be used as contents), at the cost of server-side, client-side and bandwidth resources (especially for large tree tables).

The actual data is organized and provided by WTreeTableNode widgets.

To use the tree table, you must first use addColumn() to specify the additional data columns. Then, you must set the tree root using setTreeRoot() and bind additional information (text or other widgets) in each node using WTreeTableNode::setColumnWidget().

The table cannot be given a height using CSS style rules, instead you must use layout managers, or use resize().

Usage example:

 Wt::WTreeTable *treeTable = new Wt::WTreeTable();
 treeTable->resize(650, 300);

 // Add 3 extra columns
 treeTable->addColumn("Yuppie Factor", 125);
 treeTable->addColumn("# Holidays", 125);
 treeTable->addColumn("Favorite Item", 125);

 // Create and set the root node
 Wt::WTreeTableNode *root = new Wt::WTreeTableNode("All Personnel");
 root->setImagePack("resources/");
 treeTable->setTreeRoot(root, "Emweb Organigram");

 // Populate the tree with data nodes.
 Wt::WTreeTableNode *node1 = new Wt::WTreeTableNode("Upper Management", 0, root);
 Wt::WTreeTableNode *node2;
 node2 = new Wt::WTreeTableNode("Chief Anything Officer", 0, node1);
 node2->setColumnWidget(1, new Wt::WText("-2.8"));
 node2->setColumnWidget(2, new Wt::WText("20"));
 node2->setColumnWidget(3, new Wt::WText("Scepter"));

 node2 = new WTreeTableNode("Vice President of Parties", 0, node1);
 node2->setColumnWidget(1, new Wt::WText("13.57"));
 node2->setColumnWidget(2, new Wt::WText("365"));
 node2->setColumnWidget(3, new Wt::WText("Flag"));

 root->expand();

CSS

The treetable is styled by the current CSS theme. The look can be overridden using the Wt-treetable CSS class. The style selectors that affect the rendering of the tree are indicated in the documentation for WTree (for selection) and WTreeNode (for decoration). In addition, the following selector may be used to to style the header:

.Wt-treetable .Wt-header : header

A screenshot of the treetable:

WTreeTable-default-1.png

An example WTreeTable (default)

WTreeTable-polished-1.png

An example WTreeTable (polished)

See also:
WTreeTableNode, WTreeView

Constructor & Destructor Documentation

Wt::WTreeTable::WTreeTable ( WContainerWidget parent = 0 )

Creates a new tree table.

The treeRoot() is 0. The table should first be properly dimensioned using addColumn() calls, and then data using setTreeRoot().


Member Function Documentation

void Wt::WTreeTable::addColumn ( const WString header,
const WLength width 
)

Adds an extra column.

Add an extra column, specifying the column header and a column width. The extra columns are numbered from 1 as column 0 contains the tree itself. The header for column 0 (the tree itself) is specified in setTreeRoot(), and the width of column 0 takes the remaining available width.

int Wt::WTreeTable::columnCount (  ) const

Returns the number of columns in this table.

Returns the number of columns in the table, including in the count column 0 (which contains the tree).

See also:
addColumn()
WLength Wt::WTreeTable::columnWidth ( int  column ) const

Returns the column width for the given column.

The width of the first column (with index 0), containing the tree, is implied by the width set for the table minus the width of all other columns.

See also:
addColumn(), setTreeRoot()
WText * Wt::WTreeTable::header ( int  column ) const

Returns the header for the given column.

See also:
addColumn(), setTreeRoot()
WWidget * Wt::WTreeTable::headerWidget (  ) const

Returns the header widget.

This is the widget that contains the column headers.

void Wt::WTreeTable::setTree ( WTree tree,
const WString header 
)

Sets the tree which provides the data for the tree table.

See also:
setTreeRoot(WTreeTableNode *, const WString&).
void Wt::WTreeTable::setTreeRoot ( WTreeTableNode root,
const WString header 
)

Sets the tree root.

Sets the data for the tree table, and specify the header for the first column.

See also:
treeRoot(), setTree(WTree *tree, const WString&)
WTree* Wt::WTreeTable::tree (  ) const

Returns the tree that provides the data this table.

See also:
setTree(WTree *tree, const WString&).
 All Classes Namespaces Functions Variables Typedefs Enumerations Enumerator

Generated on Fri Feb 4 2011 for the C++ Web Toolkit (Wt) by doxygen 1.7.2