diff options
author | elmot <elmot@vaadin.com> | 2015-09-25 16:40:44 +0300 |
---|---|---|
committer | elmot <elmot@vaadin.com> | 2015-09-25 16:40:44 +0300 |
commit | a1b265c318dbda4a213cec930785b81e4c0f7d2b (patch) | |
tree | b149daf5a4f50b4f6446c906047cf86495fe0433 /documentation/components/components-treetable.asciidoc | |
parent | b9743a48a1bd0394f19c54ee938c6395a80f3cd8 (diff) | |
download | vaadin-framework-a1b265c318dbda4a213cec930785b81e4c0f7d2b.tar.gz vaadin-framework-a1b265c318dbda4a213cec930785b81e4c0f7d2b.zip |
Framework documentation IN
Change-Id: I767477c1fc3745f9e1f58075fe30c9ac8da63581
Diffstat (limited to 'documentation/components/components-treetable.asciidoc')
-rw-r--r-- | documentation/components/components-treetable.asciidoc | 96 |
1 files changed, 96 insertions, 0 deletions
diff --git a/documentation/components/components-treetable.asciidoc b/documentation/components/components-treetable.asciidoc new file mode 100644 index 0000000000..97e53cdf76 --- /dev/null +++ b/documentation/components/components-treetable.asciidoc @@ -0,0 +1,96 @@ +--- +title: TreeTable +order: 23 +layout: page +--- + +[[components.treetable]] += [classname]#TreeTable# + +[classname]#TreeTable# is an extension of the [classname]#Table# component with +support for a tree-like hierarchy in the first column. As with +[classname]#Tree#, the hierarchy is determined by the parent-children +relationships defined in the [interfacename]#Container.Hierarchical# interface. +The default container is [classname]#HierarchicalContainer#, but you can bind +[classname]#TreeTable# to any container implementing the interface. + +[[figure.components.treetable.basic]] +.[classname]#TreeTable# Component +image::img/treetable-basic.png[] + +As with [classname]#Tree#, you can define the parent-child relationships with +[methodname]#setParent()#, as is shown in the following example with numeric +item IDs: + + +[source, java] +---- +TreeTable ttable = new TreeTable("My TreeTable"); +ttable.addContainerProperty("Name", String.class, null); +ttable.addContainerProperty("Number", Integer.class, null); + +// Create the tree nodes and set the hierarchy +ttable.addItem(new Object[]{"Menu", null}, 0); +ttable.addItem(new Object[]{"Beverages", null}, 1); +ttable.setParent(1, 0); +ttable.addItem(new Object[]{"Foods", null}, 2); +ttable.setParent(2, 0); +ttable.addItem(new Object[]{"Coffee", 23}, 3); +ttable.addItem(new Object[]{"Tea", 42}, 4); +ttable.setParent(3, 1); +ttable.setParent(4, 1); +ttable.addItem(new Object[]{"Bread", 13}, 5); +ttable.addItem(new Object[]{"Cake", 11}, 6); +ttable.setParent(5, 2); +ttable.setParent(6, 2); +---- + +Some container types may allow defining hierarchies if the container data +itself, without explicitly setting the parent-child relationships with +[methodname]#setParent()#. + +Unlike [classname]#Tree#, a [classname]#TreeTable# can have components in the +hierarchical column, both when the property type is a component type and when +the tree table is in editable mode. + +For other features, we refer you to documentation for [classname]#Table#, as +given in +<<dummy/../../../framework/components/components-table#components.table,"Table">>. + +[[components.treetable.collapsed]] +== Expanding and Collapsing Items + +As in [classname]#Tree#, you can set the expanded/collapsed state of an item +programmatically with [methodname]#setCollapsed()#. Note that if you want to +expand all items, there is no [methodname]#expandItemsRecursively()# like in +[classname]#Tree#. Moreover, the [methodname]#getItemIds()# only returns the IDs +of the currently visible items for ordinary [interfacename]#Hierarchical# (not +[interfacename]#Collapsible#) containers. Hence you can not use that to iterate +over all the items, but you need to get the IDs from the underlying container. + + +[source, java] +---- +// Expand the tree +for (Object itemId: ttable.getContainerDataSource() + .getItemIds()) { + ttable.setCollapsed(itemId, false); + + // As we're at it, also disallow children from + // the current leaves + if (! ttable.hasChildren(itemId)) + ttable.setChildrenAllowed(itemId, false); +} +---- + +In large tables, this explicit setting becomes infeasible, as it needs to be +stored in the [classname]#TreeTable# (more exactly, in the +[classname]#HierarchicalStrategy# object) for all the contained items. You can +use a [interfacename]#Collapsible# container to store the collapsed states in +the container, thereby avoiding the explicit settings and memory overhead. There +are no built-in collapsible containers in the Vaadin core framework, so you +either need to use an add-on container or implement it yourself. + + + + |