public class ResultTree extends Tree
Tree
API, used to handle hierarchical
data, whose nodes are DataSource records which are retrieved from a server. Modifying ResultTrees
ResultTree
nodes cannot be directly added or removed from a paged
ResultTree
via Tree
APIs such as Tree.add()
or
Tree.remove()
, since such trees are considered to be read-only by
virtue of containing ResultSet
s, which are read-only data structures. Even in other
FetchMode
s, calling such APIs will only update the local cache of the ResultTree,
rather than triggering any server traffict to update the DataSource.
Use DataSource.addData()
/removeData()
to add/remove rows from the DataSource
, and the ResultTree
will reflect the changes automatically. Alternatively, the DataSource.updateCaches()
method may be called to only update local caches of the DataSource in question, without
generating any server traffic.
To create a locally modifiable cache of records from a DataSource, you can use DataSource.fetchData()
to retrieve a List of records which can be
modified directly, or you can create a client-only DataSource
from the retrieved data
to share a modifiable cache between several DataBoundComponents.
RecordList.SortNormalizer
jsObj
config, configOnly, factoryCreated, factoryProperties, id, scClassName
Constructor and Description |
---|
ResultTree() |
ResultTree(com.google.gwt.core.client.JavaScriptObject jsObj) |
Modifier and Type | Method and Description |
---|---|
Tree |
applyFilter(Tree tree,
Criteria criteria,
TreeFilterMode filterMode,
DataSource dataSource)
The ResultTree will call applyFilter() when it needs to locally filter the tree using the current filter criteria.
|
Tree |
applyFilter(Tree tree,
Criteria criteria,
TreeFilterMode filterMode,
DataSource dataSource,
DSRequest requestProperties)
The ResultTree will call applyFilter() when it needs to locally filter the tree using the current filter criteria.
|
int |
compareCriteria(Criteria newCriteria,
Criteria oldCriteria)
Default behavior is to call
DataSource.compareCriteria() to
determine whether new criteria is equivalent to the old criteria (returns 0) or not. |
int |
compareCriteria(Criteria newCriteria,
Criteria oldCriteria,
DSRequest requestProperties)
Default behavior is to call
DataSource.compareCriteria() to
determine whether new criteria is equivalent to the old criteria (returns 0) or not. |
com.google.gwt.core.client.JavaScriptObject |
create() |
void |
dataArrived(TreeNode parentNode)
This callback fires whenever the resultTree receives new nodes from the server, after the new nodes have been integrated
into the tree.
|
TreeNode |
get(int pos)
Get the item in the openList at a particular position.
|
PreserveOpenState |
getAutoPreserveOpenState()
Controls what happens to the
"open state" - the set of
nodes opened or closed by the end user after tree data is loaded - when an entirely new tree of nodes is loaded from the
server, as a consequence of calling invalidateCache() or of changing criteria such that the current cache of nodes is dropped. |
boolean |
getCanReturnOpenFolders()
When using
fetchMode:"paged" and providing multiple levels of the tree in
one DSResponse, this property specifies the default value assumed for the canReturnOpenSubfoldersProperty when no
value for that property is provided for a node. |
java.lang.String |
getCanReturnOpenSubfoldersProperty()
When using
fetchMode:"paged" and providing multiple levels of the tree in
one DSResponse, canReturnOpenSubfoldersProperty may be set on any folder to indicate whether child folders
might be returned by the server already open. |
java.lang.String |
getChildCountProperty()
When using
fetchMode:"paged" and providing multiple levels of the tree in
one DSResponse, childCountProperty must be set for any folders that include only a partial list of
children. |
TreeNode[] |
getData()
Optional initial data for the tree.
|
DataSource |
getDataSource()
What
DataSource is this resultTree associated with? |
java.lang.Boolean |
getDefaultIsFolder()
Controls whether nodes are assumed to be folders or leaves by default.
|
java.lang.Boolean |
getDefaultNewNodesToRoot()
This attribute governs how to handle cache-synch when a new node is added to this dataSource with no explicit parentId.
|
java.lang.Boolean |
getDisableCacheSync()
By default when the data of this ResultTree's dataSource is modified, the ResultTree will be updated to display these
changes.
|
java.lang.Boolean |
getDiscardParentlessNodes()
When data is loaded from the server, should nodes with an explicit value for the
Tree.parentIdField which doesn't map to a valid parent node be
dropped? If set to false, for TreeGrid.loadDataOnDemand :false trees, parentless nodes will be added as children of the root node - for TreeGrid.loadDataOnDemand :true, they will be added as
children of the folder currently requesting children. |
FetchMode |
getFetchMode()
Mode of fetching records from server.
|
java.lang.Boolean |
getKeepParentsOnFilter()
If set, tree-based filtering is performed such that parent nodes are kept as long as they have children that match the
filter criteria, even if the parents themselves do not match the filter criteria.
|
java.lang.Boolean |
getLoadDataOnDemand()
Does this resultTree load data incrementally as folders within the tree are opened, or is it all loaded in a single
request?
|
TreeModelType |
getModelType()
Selects the model used to construct the tree representation.
|
java.lang.String |
getOpenState()
Returns a snapshot of the current open state of this tree's data as a
TreeGridOpenState
object. |
static ResultTree |
getOrCreateRef(com.google.gwt.core.client.JavaScriptObject jsObj) |
java.lang.Boolean |
getProgressiveLoading()
Sets
progressive loading mode for this ResultTree. |
TreeNode[] |
getRange(int start,
int end)
Get a range of items from the open list
|
java.lang.Integer |
getResultSize()
How many tree nodes to retrieve at once from each large set of children in the tree.
|
com.google.gwt.core.client.JavaScriptObject |
getRootNode()
This attribute may be used to specify a root value for the parentIdField of this resultTree.
|
java.lang.String[] |
getServerFilterFields()
When
keepParentsOnFilter is enabled for
fetchMode:"local" ResultTrees, this property lists field names that will be
sent to the server if they are present in the criteria. |
java.lang.Boolean |
getUpdateCacheFromRequest()
When a successful Add, Update or Remove type operation fires on this ResultTree's dataSource, if
DSResponse.data is unset, should we integrate the submitted data values
(from the request) into our data-set? |
void |
invalidateCache()
Manually invalidate this ResultTree's cache.
|
void |
setAutoPreserveOpenState(PreserveOpenState autoPreserveOpenState)
Controls what happens to the
"open state" - the set of
nodes opened or closed by the end user after tree data is loaded - when an entirely new tree of nodes is loaded from the
server, as a consequence of calling invalidateCache() or of changing criteria such that the current cache of nodes is dropped. |
void |
setCanReturnOpenFolders(boolean canReturnOpenFolders)
When using
fetchMode:"paged" and providing multiple levels of the tree in
one DSResponse, this property specifies the default value assumed for the canReturnOpenSubfoldersProperty when no
value for that property is provided for a node. |
void |
setCanReturnOpenSubfoldersProperty(java.lang.String canReturnOpenSubfoldersProperty)
When using
fetchMode:"paged" and providing multiple levels of the tree in
one DSResponse, canReturnOpenSubfoldersProperty may be set on any folder to indicate whether child folders
might be returned by the server already open. |
void |
setChildCountProperty(java.lang.String childCountProperty)
When using
fetchMode:"paged" and providing multiple levels of the tree in
one DSResponse, childCountProperty must be set for any folders that include only a partial list of
children. |
void |
setChildren(TreeNode parent,
java.util.List newChildren)
Replaces the existing children of a parent node.
|
void |
setChildren(TreeNode parent,
java.util.List newChildren,
java.lang.Integer totalChildren)
Replaces the existing children of a parent node.
|
void |
setCriteria(Criteria newCriteria)
Set the filter criteria to use when fetching rows.
|
void |
setData(TreeNode... data)
Optional initial data for the tree.
|
void |
setDataSource(DataSource dataSource)
What
DataSource is this resultTree associated with? |
void |
setDefaultIsFolder(java.lang.Boolean defaultIsFolder)
Controls whether nodes are assumed to be folders or leaves by default.
|
void |
setDefaultNewNodesToRoot(java.lang.Boolean defaultNewNodesToRoot)
This attribute governs how to handle cache-synch when a new node is added to this dataSource with no explicit parentId.
|
void |
setDisableCacheSync(java.lang.Boolean disableCacheSync)
By default when the data of this ResultTree's dataSource is modified, the ResultTree will be updated to display these
changes.
|
void |
setDiscardParentlessNodes(java.lang.Boolean discardParentlessNodes)
When data is loaded from the server, should nodes with an explicit value for the
Tree.parentIdField which doesn't map to a valid parent node be
dropped? If set to false, for TreeGrid.loadDataOnDemand :false trees, parentless nodes will be added as children of the root node - for TreeGrid.loadDataOnDemand :true, they will be added as
children of the folder currently requesting children. |
void |
setFetchMode(FetchMode fetchMode)
Mode of fetching records from server.
|
void |
setKeepParentsOnFilter(java.lang.Boolean keepParentsOnFilter)
If set, tree-based filtering is performed such that parent nodes are kept as long as they have children that match the
filter criteria, even if the parents themselves do not match the filter criteria.
|
void |
setLoadDataOnDemand(java.lang.Boolean loadDataOnDemand)
Does this resultTree load data incrementally as folders within the tree are opened, or is it all loaded in a single
request?
|
void |
setModelType(TreeModelType modelType)
Selects the model used to construct the tree representation.
|
void |
setOpenState(java.lang.String openState)
Reset the set of open folders within this tree's data to match the
TreeGridOpenState
object passed in. |
void |
setProgressiveLoading(java.lang.Boolean progressiveLoading)
Sets
progressive loading mode for this ResultTree. |
void |
setResultSize(java.lang.Integer resultSize)
How many tree nodes to retrieve at once from each large set of children in the tree.
|
void |
setRootNode(com.google.gwt.core.client.JavaScriptObject rootNode)
This attribute may be used to specify a root value for the parentIdField of this resultTree.
|
void |
setServerFilterFields(java.lang.String... serverFilterFields)
When
keepParentsOnFilter is enabled for
fetchMode:"local" ResultTrees, this property lists field names that will be
sent to the server if they are present in the criteria. |
void |
setUpdateCacheFromRequest(java.lang.Boolean updateCacheFromRequest)
When a successful Add, Update or Remove type operation fires on this ResultTree's dataSource, if
DSResponse.data is unset, should we integrate the submitted data values
(from the request) into our data-set? |
void |
unloadChildren(TreeNode node)
Deprecated.
It's recommended that you instead use
Tree.reloadChildren()
to reload the children of a folder, or Tree.removeChildren() if you need to clear the cached children of a folder to add specific local data. |
java.lang.Boolean |
willFetchData(Criteria newCriteria)
Will changing the criteria for this resultTree require fetching new data from the server or can the new criteria be
satisfied from data already cached on the client?
|
add, add, add, add, addDataChangedHandler, addList, addList, addList, addList, allChildrenLoaded, closeAll, closeAll, closeFolder, closeFolders, find, find, find, findById, getAllNodes, getAllNodes, getAutoOpenRoot, getChildren, getChildrenProperty, getChildrenResultSet, getDataSourceAsString, getDefaultNodeTitle, getDescendantFolders, getDescendantFolders, getDescendantLeaves, getDescendantLeaves, getDescendants, getDescendants, getFilteredTree, getFilteredTree, getFolders, getIdField, getIsFolderProperty, getLeaves, getLength, getLevel, getLoadState, getName, getNameProperty, getOpenList, getOpenProperty, getParent, getParentIdField, getParentPath, getParents, getPath, getPathDelim, getReportCollisions, getRoot, getRootValue, getSeparateFolders, getShowRoot, getSortFoldersBeforeLeaves, getTitle, getTitleProperty, hasChildren, hasFolders, hasLeaves, isDescendantOf, isFolder, isLeaf, isLoaded, isOpen, isRoot, linkNodes, loadChildren, loadChildren, move, move, nodeForRecord, openAll, openAll, openFolder, openFolders, reloadChildren, remove, removeChildren, removeList, setAutoOpenRoot, setChildrenProperty, setDataSource, setDefaultNodeTitle, setIdField, setIsFolderProperty, setJavaScriptObject, setNameProperty, setOpenProperty, setParentIdField, setPathDelim, setProperty, setProperty, setProperty, setProperty, setReportCollisions, setRoot, setRootValue, setRootValue, setSeparateFolders, setShowRoot, setSortFoldersBeforeLeaves, setTitleProperty
add, addAt, addDataChangedHandler, addList, addList, addListAt, contains, contains, containsAll, duplicate, equals, find, find, find, findAll, findAll, findAll, findAll, findAll, findAll, findAll, findAll, findIndex, findIndex, findIndex, findIndex, findIndex, findIndex, findIndex, findIndex, findNextIndex, findNextIndex, findNextIndex, findNextIndex, findNextIndex, findNextIndex, findNextIndex, findNextIndex, findNextIndex, findNextIndex, first, getItems, getJsObj, getOrCreateJsObj, getProperty, getRangeList, getValueMap, indexOf, indexOf, intersect, isARecordList, isCreated, isEmpty, last, lastIndexOf, lastIndexOf, remove, removeAt, removeList, set, setLength, setSort, sort, sort, sortByProperty, sortByProperty, toArray
applyFactoryProperties, asSGWTComponent, createJsObj, destroy, doAddHandler, doInit, error, error, errorIfNotCreated, fireEvent, getAttribute, getAttributeAsBoolean, getAttributeAsDate, getAttributeAsDouble, getAttributeAsElement, getAttributeAsFloat, getAttributeAsInt, getAttributeAsJavaScriptObject, getAttributeAsMap, getAttributeAsString, getAttributeAsStringArray, getClassName, getConfig, getHandlerCount, getID, getRef, getScClassName, getTestInstance, hasAutoAssignedID, internalSetID, internalSetID, isConfigOnly, isFactoryCreated, onBind, onInit, registerID, setAttribute, setAttribute, setAttribute, setAttribute, setAttribute, setAttribute, setAttribute, setAttribute, setAttribute, setAttribute, setAttribute, setAttribute, setAttribute, setAttribute, setAttribute, setAttribute, setAttribute, setAttribute, setAttribute, setAttribute, setConfig, setConfigOnly, setFactoryCreated, setID, setScClassName
public ResultTree()
public ResultTree(com.google.gwt.core.client.JavaScriptObject jsObj)
public static ResultTree getOrCreateRef(com.google.gwt.core.client.JavaScriptObject jsObj)
public void setAutoPreserveOpenState(PreserveOpenState autoPreserveOpenState)
"open state"
- the set of
nodes opened or closed by the end user after tree data is loaded - when an entirely new tree of nodes is loaded from the
server, as a consequence of calling invalidateCache()
or of changing criteria such that the current cache of nodes is dropped.autoPreserveOpenState
- Default value is "whenUnique"public PreserveOpenState getAutoPreserveOpenState()
"open state"
- the set of
nodes opened or closed by the end user after tree data is loaded - when an entirely new tree of nodes is loaded from the
server, as a consequence of calling invalidateCache()
or of changing criteria such that the current cache of nodes is dropped.public void setCanReturnOpenFolders(boolean canReturnOpenFolders) throws java.lang.IllegalStateException
fetchMode:"paged"
and providing multiple levels of the tree in
one DSResponse, this property specifies the default value assumed for the canReturnOpenSubfoldersProperty
when no
value for that property is provided for a node.canReturnOpenFolders
- Default value is falsejava.lang.IllegalStateException
- this property cannot be changed after the underlying component has been createdpublic boolean getCanReturnOpenFolders()
fetchMode:"paged"
and providing multiple levels of the tree in
one DSResponse, this property specifies the default value assumed for the canReturnOpenSubfoldersProperty
when no
value for that property is provided for a node.public void setCanReturnOpenSubfoldersProperty(java.lang.String canReturnOpenSubfoldersProperty) throws java.lang.IllegalStateException
fetchMode:"paged"
and providing multiple levels of the tree in
one DSResponse, canReturnOpenSubfoldersProperty
may be set on any folder to indicate whether child folders
might be returned by the server already open. If the property is set to false on a folder then subfolders of that folder
are never allowed to be returned already open. This enables the paging mechanism to be more efficient in the amount of
data that it requests from the server. For example, setting the canReturnOpenSubfoldersProperty
value
to false
on a node is appropriate if the server-side code determines that the the node's children consist
of entirely leaf nodes.
canReturnOpenSubfoldersProperty
- Default value is "canReturnOpenSubfolders"java.lang.IllegalStateException
- this property cannot be changed after the underlying component has been createdsetCanReturnOpenFolders(boolean)
public java.lang.String getCanReturnOpenSubfoldersProperty()
fetchMode:"paged"
and providing multiple levels of the tree in
one DSResponse, canReturnOpenSubfoldersProperty
may be set on any folder to indicate whether child folders
might be returned by the server already open. If the property is set to false on a folder then subfolders of that folder
are never allowed to be returned already open. This enables the paging mechanism to be more efficient in the amount of
data that it requests from the server. For example, setting the canReturnOpenSubfoldersProperty
value
to false
on a node is appropriate if the server-side code determines that the the node's children consist
of entirely leaf nodes.
getCanReturnOpenFolders()
public void setChildCountProperty(java.lang.String childCountProperty) throws java.lang.IllegalStateException
fetchMode:"paged"
and providing multiple levels of the tree in
one DSResponse, childCountProperty
must be set for any folders that include only a partial list of
children. For a deeper discussion see the Paging large sets of children section of the TreeDataBinding
overview.childCountProperty
- Default value is "childCount"java.lang.IllegalStateException
- this property cannot be changed after the underlying component has been createdpublic java.lang.String getChildCountProperty()
fetchMode:"paged"
and providing multiple levels of the tree in
one DSResponse, childCountProperty
must be set for any folders that include only a partial list of
children. For a deeper discussion see the Paging large sets of children section of the TreeDataBinding
overview.public void setData(TreeNode... data) throws java.lang.IllegalStateException
fetchMode
is "basic"
or "local"
then the format of this data is exactly the same parentId
-linked list of tree nodes as documented on Tree.data
(when the modelType
is set to
"parent"
). If the fetchMode
is "paged"
then the format is extended to allow the
childCountProperty
to be set on folder nodes.
Providing an initial set of nodes in this way does not affect the behavior of the ResultTree in its loading of unloaded folders. An equivalent result is achieved if the first fetch from the server returns this same data.
If
fetchMode
is "paged"
then you may make folder-by-folder choices as to whether to use paging
for the childen of each folder. If you would like to use paging in a folder then you may include a partial list of that
folder's children with the data, provided that you set the childCountProperty
to the total number of
children. Otherwise you will need to include either all children of the folder or none of the children. Open folders
without any children provided will cause immediate, new fetches for the children, as usual.
Because the initial data
is treated exactly as though it were returned from the tree's first server fetch, the order of the initial data must
match the initial sort order of the TreeGrid displaying the data or, if no such sort is specified, the native storage
order on the server. For example, consider initial data containing n
records having the
parentId
"X"
, meaning they are all in the same folder. These n
records are the
records at indices 0
through (n - 1)
that are stored on the server under the parent node. If
the childCountProperty
set on the parent node indicates that there are m > n
total rows under
the parent node then the records at indices n
to (m - 1)
will be fetched from the server as
the user scrolls the additional rows into view.
Note : This is an advanced setting
setData
in class Tree
data
- Default value is nulljava.lang.IllegalStateException
- this property cannot be changed after the underlying component has been createdTree.setData(com.smartgwt.client.widgets.tree.TreeNode[])
,
TreeNode
,
TreeDataBinding overview and related methods
public TreeNode[] getData()
fetchMode
is "basic"
or "local"
then the format of this data is exactly the same parentId
-linked list of tree nodes as documented on Tree.data
(when the modelType
is set to
"parent"
). If the fetchMode
is "paged"
then the format is extended to allow the
childCountProperty
to be set on folder nodes.
Providing an initial set of nodes in this way does not affect the behavior of the ResultTree in its loading of unloaded folders. An equivalent result is achieved if the first fetch from the server returns this same data.
If
fetchMode
is "paged"
then you may make folder-by-folder choices as to whether to use paging
for the childen of each folder. If you would like to use paging in a folder then you may include a partial list of that
folder's children with the data, provided that you set the childCountProperty
to the total number of
children. Otherwise you will need to include either all children of the folder or none of the children. Open folders
without any children provided will cause immediate, new fetches for the children, as usual.
Because the initial data
is treated exactly as though it were returned from the tree's first server fetch, the order of the initial data must
match the initial sort order of the TreeGrid displaying the data or, if no such sort is specified, the native storage
order on the server. For example, consider initial data containing n
records having the
parentId
"X"
, meaning they are all in the same folder. These n
records are the
records at indices 0
through (n - 1)
that are stored on the server under the parent node. If
the childCountProperty
set on the parent node indicates that there are m > n
total rows under
the parent node then the records at indices n
to (m - 1)
will be fetched from the server as
the user scrolls the additional rows into view.
getData
in class Tree
Tree.getData()
,
TreeNode
,
TreeDataBinding overview and related methods
public void setDefaultIsFolder(java.lang.Boolean defaultIsFolder) throws java.lang.IllegalStateException
Nodes that have children or have the isFolderProperty
set to true will always be considered
folders. Other nodes will be considered folders or leaves by default according to this setting.
If
defaultIsFolder
is unset, the ResultTree will automatically set it to match the value of loadDataOnDemand
. This means that, when using
folder-by-folder load on demand (loadDataOnDemand:true
), by default a newly loaded node will be considered
to be a folder that has not loaded its children yet.
When not using folder-by-folder load on demand, by default a
newly loaded node is considered a leaf. If you set defaultIsFolder:true
explicitly, by default a newly
loaded node is considered to be a folder with no children.
See Tree.isFolder()
for details on how to explicitly mark nodes as folders
or leaves.
setDefaultIsFolder
in class Tree
defaultIsFolder
- Default value is nulljava.lang.IllegalStateException
- this property cannot be changed after the underlying component has been createdTreeGrid.setLoadDataOnDemand(java.lang.Boolean)
public java.lang.Boolean getDefaultIsFolder()
Nodes that have children or have the isFolderProperty
set to true will always be considered
folders. Other nodes will be considered folders or leaves by default according to this setting.
If
defaultIsFolder
is unset, the ResultTree will automatically set it to match the value of loadDataOnDemand
. This means that, when using
folder-by-folder load on demand (loadDataOnDemand:true
), by default a newly loaded node will be considered
to be a folder that has not loaded its children yet.
When not using folder-by-folder load on demand, by default a
newly loaded node is considered a leaf. If you set defaultIsFolder:true
explicitly, by default a newly
loaded node is considered to be a folder with no children.
See Tree.isFolder()
for details on how to explicitly mark nodes as folders
or leaves.
getDefaultIsFolder
in class Tree
TreeGrid.getLoadDataOnDemand()
public void setDefaultNewNodesToRoot(java.lang.Boolean defaultNewNodesToRoot)
If set to true
, when a new node is added to this dataSource via DataSource.addData()
, with no explicit parentId, the node will be added as
a child of the root node of this result tree. Otherwise it will be ignored.
Similar logic applies to updated nodes
- if this property is true and the parentId of an updated
node is cleared, it will be moved to become a child of root, otherwise it will be dropped from the tree.
Note : This is an advanced setting
defaultNewNodesToRoot
- Default value is falsepublic java.lang.Boolean getDefaultNewNodesToRoot()
If set to true
, when a new node is added to this dataSource via DataSource.addData()
, with no explicit parentId, the node will be added as
a child of the root node of this result tree. Otherwise it will be ignored.
Similar logic applies to updated nodes
- if this property is true and the parentId of an updated
node is cleared, it will be moved to become a child of root, otherwise it will be dropped from the tree.
public void setDisableCacheSync(java.lang.Boolean disableCacheSync) throws java.lang.IllegalStateException
Note : This is an advanced setting
disableCacheSync
- Default value is falsejava.lang.IllegalStateException
- this property cannot be changed after the underlying component has been createdpublic java.lang.Boolean getDisableCacheSync()
public void setDiscardParentlessNodes(java.lang.Boolean discardParentlessNodes) throws java.lang.IllegalStateException
Tree.parentIdField
which doesn't map to a valid parent node be
dropped? If set to false, for TreeGrid.loadDataOnDemand
:false trees, parentless nodes will be added as children of the root node - for TreeGrid.loadDataOnDemand
:true, they will be added as
children of the folder currently requesting children. This effectively allows nodes to be loaded into the current
(or root) folder without needing an explicit parentIdField
value
that matches the folder's ID or rootValue
for the resultTree.
Note: For
loadDataOnDemand:false
trees, if this property is unset at init time, it will default to true
if an explicit rootNode
has been specified. This ensures
that if the data tree retrieved from the server includes ancestors of the desired root-node we don't display them.
Otherwise this property always defaults to false.
Note : This is an advanced setting
setDiscardParentlessNodes
in class Tree
discardParentlessNodes
- Default value is nulljava.lang.IllegalStateException
- this property cannot be changed after the underlying component has been createdpublic java.lang.Boolean getDiscardParentlessNodes()
Tree.parentIdField
which doesn't map to a valid parent node be
dropped? If set to false, for TreeGrid.loadDataOnDemand
:false trees, parentless nodes will be added as children of the root node - for TreeGrid.loadDataOnDemand
:true, they will be added as
children of the folder currently requesting children. This effectively allows nodes to be loaded into the current
(or root) folder without needing an explicit parentIdField
value
that matches the folder's ID or rootValue
for the resultTree.
Note: For
loadDataOnDemand:false
trees, if this property is unset at init time, it will default to true
if an explicit rootNode
has been specified. This ensures
that if the data tree retrieved from the server includes ancestors of the desired root-node we don't display them.
Otherwise this property always defaults to false.
getDiscardParentlessNodes
in class Tree
public void setFetchMode(FetchMode fetchMode) throws java.lang.IllegalStateException
fetchMode:"local" implies that local filtering will always be performed. See
keepParentsOnFilter
for additional filtering
details.
fetchMode:"basic" or "paged" implies that if search criteria change, the entire tree will be discarded and
re-fetched from the server. When retrieving the replacement tree data, the default behavior will be to preserve the
openState
for any nodes that the server returns which
were previously opened by the user. Note that this implies that if loadDataOnDemand
is enabled and the server returns only
root-level nodes, open state will be preserved only for root-level nodes, and children of open root-level nodes will be
immediately fetched from the server if they are not included in the server's initial response.
fetchMode:"paged"
enables paging for nodes that have very large numbers of children. Whenever the children of a folder are loaded, the
resultTree
will set DSRequest.startRow
and endRow
when requesting children from the DataSource, and will manage
loading of further children on demand, similar to how a ResultSet
manages paging for
lists. For a deeper discussion see the Paging large sets of children section of the TreeDataBinding
overview.
fetchMode
- Default value is "basic"java.lang.IllegalStateException
- this property cannot be changed after the underlying component has been createdTreeDataBinding overview and related methods
,
Paging for Children Examplepublic FetchMode getFetchMode()
fetchMode:"local" implies that local filtering will always be performed. See
keepParentsOnFilter
for additional filtering
details.
fetchMode:"basic" or "paged" implies that if search criteria change, the entire tree will be discarded and
re-fetched from the server. When retrieving the replacement tree data, the default behavior will be to preserve the
openState
for any nodes that the server returns which
were previously opened by the user. Note that this implies that if loadDataOnDemand
is enabled and the server returns only
root-level nodes, open state will be preserved only for root-level nodes, and children of open root-level nodes will be
immediately fetched from the server if they are not included in the server's initial response.
fetchMode:"paged"
enables paging for nodes that have very large numbers of children. Whenever the children of a folder are loaded, the
resultTree
will set DSRequest.startRow
and endRow
when requesting children from the DataSource, and will manage
loading of further children on demand, similar to how a ResultSet
manages paging for
lists. For a deeper discussion see the Paging large sets of children section of the TreeDataBinding
overview.
TreeDataBinding overview and related methods
,
Paging for Children Examplepublic void setKeepParentsOnFilter(java.lang.Boolean keepParentsOnFilter) throws java.lang.IllegalStateException
When keepParentsOnFilter
is
enabled for paged ResultTrees, server-side filtering is required.
When enabled for non-paged trees, fetchMode:"local"
is automatically enabled so that all filtering behavior shifts to
the client-side and full criteria are no longer sent to the server. Instead, server fetches will always load all nodes,
or with loadDataOnDemand
:true, will always load
all nodes under a given parent. This means that the server does not need to implement special tree filtering logic.
Optionally, serverFilterFields
can be set to a
list of field names that will be sent to the server whenever they are present in the criteria.
keepParentsOnFilter
- Default value is nulljava.lang.IllegalStateException
- this property cannot be changed after the underlying component has been createdTreeDataBinding overview and related methods
public java.lang.Boolean getKeepParentsOnFilter()
When keepParentsOnFilter
is
enabled for paged ResultTrees, server-side filtering is required.
When enabled for non-paged trees, fetchMode:"local"
is automatically enabled so that all filtering behavior shifts to
the client-side and full criteria are no longer sent to the server. Instead, server fetches will always load all nodes,
or with loadDataOnDemand
:true, will always load
all nodes under a given parent. This means that the server does not need to implement special tree filtering logic.
Optionally, serverFilterFields
can be set to a
list of field names that will be sent to the server whenever they are present in the criteria.
TreeDataBinding overview and related methods
public void setLoadDataOnDemand(java.lang.Boolean loadDataOnDemand) throws java.lang.IllegalStateException
loadDataOnDemand
- Default value is truejava.lang.IllegalStateException
- this property cannot be changed after the underlying component has been createdTreeGrid.setLoadDataOnDemand(java.lang.Boolean)
public java.lang.Boolean getLoadDataOnDemand()
TreeGrid.getLoadDataOnDemand()
public void setModelType(TreeModelType modelType)
TreeModelType
for
the available options and their implications. If the "parent" modelType is used, you can provide the initial
parent-linked data set to the tree via the Tree.data
attribute.
If the "children" modelType is used, you can provide the initial tree structure to the Tree via the Tree.root
attribute.
Note : This is an advanced setting
setModelType
in class Tree
modelType
- Default value is "parent"Tree.setData(com.smartgwt.client.widgets.tree.TreeNode[])
,
Tree.setRoot(com.smartgwt.client.widgets.tree.TreeNode)
,
Node Titles Examplepublic TreeModelType getModelType()
TreeModelType
for
the available options and their implications. If the "parent" modelType is used, you can provide the initial
parent-linked data set to the tree via the Tree.data
attribute.
If the "children" modelType is used, you can provide the initial tree structure to the Tree via the Tree.root
attribute.
getModelType
in class Tree
Tree.getData()
,
Tree.getRoot()
,
Node Titles Examplepublic void setProgressiveLoading(java.lang.Boolean progressiveLoading)
progressive loading mode
for this ResultTree.
The ResultTree will copy this setting onto the DSRequest
s that it issues, overriding
the OperationBinding- and DataSource-level settings, in cases where the use of progressive loading does not affect the
correctness of the tree's paging algorithm. This setting is applied automatically by DataBoundComponent
s that have their own explicit setting for progressiveLoading
.
Note: This
property only has an effect for fetchMode:"paged"
ResultTrees.
progressiveLoading
- Default value is nullDataSource.setProgressiveLoading(java.lang.Boolean)
,
OperationBinding.progressiveLoading
,
DSRequest.setProgressiveLoading(java.lang.Boolean)
,
ProgressiveLoading overview and related methods
public java.lang.Boolean getProgressiveLoading()
progressive loading mode
for this ResultTree.
The ResultTree will copy this setting onto the DSRequest
s that it issues, overriding
the OperationBinding- and DataSource-level settings, in cases where the use of progressive loading does not affect the
correctness of the tree's paging algorithm. This setting is applied automatically by DataBoundComponent
s that have their own explicit setting for progressiveLoading
.
Note: This
property only has an effect for fetchMode:"paged"
ResultTrees.
public void setResultSize(java.lang.Integer resultSize) throws java.lang.IllegalStateException
Applicable only with
fetchMode: "paged"
. When a paged ResultTree is asked for rows that have not yet been loaded, it will fetch
adjacent rows that are likely to be required soon, in batches of this size.
Note : This is an advanced setting
resultSize
- Default value is 75java.lang.IllegalStateException
- this property cannot be changed after the underlying component has been createdTreeDataBinding overview and related methods
public java.lang.Integer getResultSize()
Applicable only with
fetchMode: "paged"
. When a paged ResultTree is asked for rows that have not yet been loaded, it will fetch
adjacent rows that are likely to be required soon, in batches of this size.
TreeDataBinding overview and related methods
public void setServerFilterFields(java.lang.String... serverFilterFields) throws java.lang.IllegalStateException
keepParentsOnFilter
is enabled for
fetchMode:"local"
ResultTrees, this property lists field names that will be
sent to the server if they are present in the criteria.serverFilterFields
- Default value is nulljava.lang.IllegalStateException
- this property cannot be changed after the underlying component has been createdpublic java.lang.String[] getServerFilterFields()
keepParentsOnFilter
is enabled for
fetchMode:"local"
ResultTrees, this property lists field names that will be
sent to the server if they are present in the criteria.public void setUpdateCacheFromRequest(java.lang.Boolean updateCacheFromRequest) throws java.lang.IllegalStateException
DSResponse.data
is unset, should we integrate the submitted data values
(from the request) into our data-set?
Note : This is an advanced setting
updateCacheFromRequest
- Default value is truejava.lang.IllegalStateException
- this property cannot be changed after the underlying component has been createdpublic java.lang.Boolean getUpdateCacheFromRequest()
DSResponse.data
is unset, should we integrate the submitted data values
(from the request) into our data-set?public Tree applyFilter(Tree tree, Criteria criteria, TreeFilterMode filterMode, DataSource dataSource)
Default behavior is to call Tree.getFilteredTree()
to
obtain a new, filtered tree.
Override this method or Tree.getFilteredTree()
to implement your own client-side filtering behavior. Note that the original tree should not be
affected.
tree
- the source tree to be filteredcriteria
- the filter criteriafilterMode
- mode to use for filteringdataSource
- dataSource for filtering if the Tree does not already have onepublic Tree applyFilter(Tree tree, Criteria criteria, TreeFilterMode filterMode, DataSource dataSource, DSRequest requestProperties)
Default behavior is to call Tree.getFilteredTree()
to
obtain a new, filtered tree.
Override this method or Tree.getFilteredTree()
to implement your own client-side filtering behavior. Note that the original tree should not be
affected.
tree
- the source tree to be filteredcriteria
- the filter criteriafilterMode
- mode to use for filteringdataSource
- dataSource for filtering if the Tree does not already have onerequestProperties
- Request properties block. This allows developers to specify properties that would impact the filter such as DSRequest.textMatchStyle
public int compareCriteria(Criteria newCriteria, Criteria oldCriteria)
DataSource.compareCriteria()
to
determine whether new criteria is equivalent to the old criteria (returns 0) or not. See DataSource.compareCriteria()
for a full explanation of the default
behavior. The CriteriaPolicy
used is "dropOnChange".
Override this method or
DataSource.compareCriteria()
to implement your own
client-side filtering behavior.
newCriteria
- new filter criteriaoldCriteria
- old filter criteriaCriteriaPolicy
public int compareCriteria(Criteria newCriteria, Criteria oldCriteria, DSRequest requestProperties)
DataSource.compareCriteria()
to
determine whether new criteria is equivalent to the old criteria (returns 0) or not. See DataSource.compareCriteria()
for a full explanation of the default
behavior. The CriteriaPolicy
used is "dropOnChange".
Override this method or
DataSource.compareCriteria()
to implement your own
client-side filtering behavior.
newCriteria
- new filter criteriaoldCriteria
- old filter criteriarequestProperties
- dataSource request propertiesCriteriaPolicy
public void dataArrived(TreeNode parentNode)
parentNode
- The parentNode for which children were just loadedpublic TreeNode get(int pos)
get
in class RecordList
pos
- position of the node to getpublic java.lang.String getOpenState()
TreeGridOpenState
object. This object can be passed to setOpenState()
or TreeGrid.setOpenState()
to open the same set of
folders within the tree's data (assuming the nodes are still present in the data).
setOpenState(java.lang.String)
public TreeNode[] getRange(int start, int end)
getRange
in class RecordList
start
- start positionend
- end position (NOT inclusive)public void invalidateCache()
Generally a ResultTree will observe and incorporate updates to the
DataSource that provides its records, but when this is not possible, invalidateCache()
allows manual cache
invalidation.
Components bound to this ResultTree will typically re-request the currently visible portion of the dataset, causing the ResultTree to re-fetch data from the server.
public void setChildren(TreeNode parent, java.util.List newChildren)
totalChildren
argument). The supplied array of children
may be null or empty to indicate there are none, but if present must be in the standard format as would be sent from the
server, as described by TreeDataBinding
. In particular, note that for a paged
ResultTree
, each child node:
Tree.childrenProperty
(but not via TreeNode.id
/TreeNode.parentId
linking) setChildren
in class Tree
parent
- parent of childrennewChildren
- children to be setTree.removeChildren(com.smartgwt.client.widgets.tree.TreeNode)
,
DataSource.updateCaches(com.smartgwt.client.data.DSResponse)
public void setChildren(TreeNode parent, java.util.List newChildren, java.lang.Integer totalChildren)
totalChildren
argument). The supplied array of children
may be null or empty to indicate there are none, but if present must be in the standard format as would be sent from the
server, as described by TreeDataBinding
. In particular, note that for a paged
ResultTree
, each child node:
Tree.childrenProperty
(but not via TreeNode.id
/TreeNode.parentId
linking) parent
- parent of childrennewChildren
- children to be settotalChildren
- number of total children (if not all have been provided as newChildren); only
allowed if pagingTree.removeChildren(com.smartgwt.client.widgets.tree.TreeNode)
,
DataSource.updateCaches(com.smartgwt.client.data.DSResponse)
public void setOpenState(java.lang.String openState)
TreeGridOpenState
object passed in. Used to restore previous state retrieved from the tree by a call to getOpenState()
.
openState
- Object describing the desired set of open folders.. See TreeGridOpenState
getOpenState()
public void unloadChildren(TreeNode node)
Tree.reloadChildren()
to reload the children of a folder, or Tree.removeChildren()
if you need to clear the cached children of a folder to add specific local data.unloadChildren
in class Tree
node
- folder in questionpublic java.lang.Boolean willFetchData(Criteria newCriteria)
This method can be used to determine whether TreeGrid.fetchData()
or TreeGrid.filterData()
will cause a server side fetch when passed a
certain set of criteria.
newCriteria
- new criteria to test.public void setDataSource(DataSource dataSource) throws java.lang.IllegalStateException
DataSource
is this resultTree associated with?setDataSource
in class Tree
dataSource
- dataSource Default value is nulljava.lang.IllegalStateException
- this property cannot be changed after the underlying component has been createdDatabinding overview and related methods
,
DataSource fields Examplepublic DataSource getDataSource()
DataSource
is this resultTree associated with?getDataSource
in class Tree
Databinding overview and related methods
,
DataSource fields Examplepublic void setRootNode(com.google.gwt.core.client.JavaScriptObject rootNode) throws java.lang.IllegalStateException
rootValue
for this tree, allowing a component to navigate
a tree starting at a specific node. May be overridden via treeRootValue
for ResultTrees generated by a TreeGrid
component.
rootNode
- rootNode Default value is nulljava.lang.IllegalStateException
- this property cannot be changed after the underlying component has been createdpublic com.google.gwt.core.client.JavaScriptObject getRootNode()
rootValue
for this tree, allowing a component to navigate
a tree starting at a specific node. May be overridden via treeRootValue
for ResultTrees generated by a TreeGrid
component.
public void setCriteria(Criteria newCriteria)
Depending on the result of
ResultTree.compareCriteria()
and setting for fetchMode
,
setting criteria may cause a trip to the server to get a new set of nodes, or may simply
cause already-fetched nodes to be re-filtered according to the new criteria.
For a basic overview on when server fetches are generally performed, see fetchMode
. However, this is not
the final determination of when server fetches occur. Criteria can be split into local
criteria and server criteria by specifying
serverFilterFields
.
Thus, even when using fetchMode:"local" a new server fetch will occur if the server
criteria changes. For details on how the criteria is split, see
DataSource.splitCriteria()
.
Note: if criteria is being split to retrieve server criteria portion and the criteria is
an AdvancedCriteria
, the criteria must consist of a
single "and" operator and one or more simple criteria below it. No other logical
operators may be used. In other words, the
AdvancedCriteria
provided must be exactly representable
by a simple criteria.
newCriteria
- the filter criteria