E - custom node typepublic class AsyncTreeModel<E extends AsyncUniqueNode> extends WebTreeModel<E>
WebAsyncTree,
AsyncTreeDataProvider,
Serialized Form| Modifier and Type | Field and Description |
|---|---|
protected boolean |
asyncLoading
Whether to load children asynchronously or not.
|
protected java.util.List<AsyncTreeModelListener> |
asyncTreeModelListeners
Asynchronous tree listeners.
|
protected java.lang.Object |
busyLock
Lock object for busy state changes.
|
protected java.lang.Object |
cacheLock
Lock object for cache changes.
|
protected AsyncTreeDataProvider<E> |
dataProvider
Asynchronous tree data provider.
|
protected java.lang.Object |
modelListenersLock
Lock object for asynchronous tree listeners.
|
protected com.alee.utils.collection.DoubleMap<java.lang.String,E> |
nodeById
Direct nodes cache (node ID -> node).
|
protected java.util.Map<java.lang.String,java.lang.Boolean> |
nodeCached
Nodes cached states (parent ID -> children cached state).
|
protected java.util.Map<java.lang.String,java.util.List<E>> |
rawNodeChildrenCache
Cache for children nodes returned by data provider (parent ID -> list of raw child nodes).
|
protected E |
rootNode
Root node cache.
|
protected WebAsyncTree<E> |
tree
Asynchronous tree that uses this model.
|
| Constructor and Description |
|---|
AsyncTreeModel(WebAsyncTree<E> tree,
AsyncTreeDataProvider<E> dataProvider)
Constructs default asynchronous tree model using custom data provider.
|
| Modifier and Type | Method and Description |
|---|---|
void |
addAsyncTreeModelListener(AsyncTreeModelListener listener)
Adds new asynchronous tree model listener.
|
void |
addChildNodes(E parent,
java.util.List<E> children)
Adds child nodes for the specified node.
|
boolean |
areChildrenLoaded(E node)
Returns whether children for the specified node are already loaded or not.
|
protected void |
cacheNodeById(E node)
Caches node by its IDs.
|
protected void |
cacheNodesById(java.util.List<E> nodes)
Caches nodes by their IDs.
|
protected void |
clearNodeChildrenCache(E[] nodes,
boolean clearNodes)
Clears nodes children cached states.
|
protected void |
clearNodeChildrenCache(E node,
boolean clearNode)
Clears node and all of its child nodes children cached states.
|
protected void |
clearNodeChildrenCache(java.util.List<E> nodes,
boolean clearNodes)
Clears nodes children cached states.
|
protected java.util.List<E> |
filterAndSort(E parentNode,
java.util.List<E> children)
Returns list of filtered and sorted raw children.
|
E |
findNode(java.lang.String nodeId)
Looks for the node with the specified ID in the tree model and returns it or null if it was not found.
|
protected void |
fireChildrenLoadCompleted(E parent,
java.util.List<E> children)
Fires children load complete event.
|
protected void |
fireChildrenLoadFailed(E parent,
java.lang.Throwable cause)
Fires children load failed event.
|
protected void |
fireChildrenLoadStarted(E parent)
Fires children load start event.
|
java.util.List<AsyncTreeModelListener> |
getAsyncTreeModelListeners()
Returns list of all available asynchronous tree model listeners.
|
E |
getChild(java.lang.Object parent,
int index)
Returns child node for parent node at the specified index.
|
int |
getChildCount(java.lang.Object parent)
Returns children count for specified node.
|
AsyncTreeDataProvider<E> |
getDataProvider()
Returns asynchronous tree data provider.
|
com.alee.utils.collection.DoubleMap<java.lang.String,E> |
getNodesCache()
Returns nodes cache map copy.
|
E |
getRoot()
Returns tree root node.
|
void |
insertNodeInto(javax.swing.tree.MutableTreeNode newChild,
javax.swing.tree.MutableTreeNode parent,
int index)
Inserts new child node into parent node at the specified index.
|
protected void |
insertNodeIntoImpl(E child,
E parent,
int index)
Inserts a child node into parent node.
|
void |
insertNodesInto(E[] children,
E parent,
int index)
Inserts an array of child nodes into parent node.
|
void |
insertNodesInto(java.util.List<E> children,
E parent,
int index)
Inserts a list of child nodes into parent node.
|
protected void |
insertNodesIntoImpl(E[] children,
E parent,
int index)
Inserts an array of child nodes into parent node.
|
protected void |
insertNodesIntoImpl(java.util.List<E> children,
E parent,
int index)
Inserts a list of child nodes into parent node.
|
boolean |
isAsyncLoading()
Returns whether children are loaded asynchronously or not.
|
boolean |
isLeaf(java.lang.Object node)
Returns whether the specified node is leaf or not.
|
protected int |
loadChildren(E parent)
Loads (or reloads) node children and returns zero or children count if async mode is off.
|
protected void |
performSortingAndFiltering(E parentNode,
boolean recursively,
boolean performUpdates)
Updates node children using current comparator and filter.
|
void |
reload(javax.swing.tree.TreeNode node)
Reloads node children.
|
void |
removeAsyncTreeModelListener(AsyncTreeModelListener listener)
Removes asynchronous tree model listener.
|
void |
removeNodeFromParent(javax.swing.tree.MutableTreeNode node)
Removes specified node from parent node.
|
void |
setAsyncLoading(boolean asyncLoading)
Sets whether to load children asynchronously or not.
|
void |
setChildNodes(E parent,
java.util.List<E> children)
Sets child nodes for the specified node.
|
void |
updateSortingAndFiltering()
Updates nodes sorting and filtering for all loaded nodes.
|
void |
updateSortingAndFiltering(E parentNode)
Updates sorting and filtering for the specified node children.
|
void |
updateSortingAndFiltering(E parentNode,
boolean recursively)
Updates sorting and filtering for the specified node children.
|
protected void |
updateSortingAndFilteringImpl(E parentNode,
boolean recursively,
boolean performUpdates)
Updates sorting and filtering for the specified node children.
|
getRootNode, removeNodesFromParent, removeNodesFromParent, removeNodesFromParent, updateNode, updateNodeStructure, updateTree, valueForPathChangedaddTreeModelListener, asksAllowsChildren, fireTreeNodesChanged, fireTreeNodesInserted, fireTreeNodesRemoved, fireTreeStructureChanged, getIndexOfChild, getListeners, getPathToRoot, getPathToRoot, getTreeModelListeners, nodeChanged, nodesChanged, nodeStructureChanged, nodesWereInserted, nodesWereRemoved, reload, removeTreeModelListener, setAsksAllowsChildren, setRootprotected final java.lang.Object modelListenersLock
protected final java.util.List<AsyncTreeModelListener> asyncTreeModelListeners
protected final WebAsyncTree<E extends AsyncUniqueNode> tree
protected final AsyncTreeDataProvider<E extends AsyncUniqueNode> dataProvider
protected boolean asyncLoading
protected E extends AsyncUniqueNode rootNode
protected final java.lang.Object cacheLock
protected final java.util.Map<java.lang.String,java.lang.Boolean> nodeCached
protected final java.util.Map<java.lang.String,java.util.List<E extends AsyncUniqueNode>> rawNodeChildrenCache
protected final com.alee.utils.collection.DoubleMap<java.lang.String,E extends AsyncUniqueNode> nodeById
protected final java.lang.Object busyLock
public AsyncTreeModel(WebAsyncTree<E> tree, AsyncTreeDataProvider<E> dataProvider)
tree - asynchronous treedataProvider - data providerpublic boolean isAsyncLoading()
public void setAsyncLoading(boolean asyncLoading)
asyncLoading - whether to load children asynchronously or notpublic AsyncTreeDataProvider<E> getDataProvider()
public E getRoot()
getRoot in interface javax.swing.tree.TreeModelgetRoot in class javax.swing.tree.DefaultTreeModelpublic boolean isLeaf(java.lang.Object node)
isLeaf in interface javax.swing.tree.TreeModelisLeaf in class javax.swing.tree.DefaultTreeModelnode - nodepublic int getChildCount(java.lang.Object parent)
getChildCount in interface javax.swing.tree.TreeModelgetChildCount in class javax.swing.tree.DefaultTreeModelparent - parent nodepublic E getChild(java.lang.Object parent, int index)
getChild in interface javax.swing.tree.TreeModelgetChild in class javax.swing.tree.DefaultTreeModelparent - parent nodeindex - child node indexpublic boolean areChildrenLoaded(E node)
node - node to processpublic void reload(javax.swing.tree.TreeNode node)
reload in class javax.swing.tree.DefaultTreeModelnode - nodeprotected void clearNodeChildrenCache(E node, boolean clearNode)
node - node to clear cache forclearNode - whether should clear node cache or notprotected void clearNodeChildrenCache(java.util.List<E> nodes, boolean clearNodes)
nodes - nodes to clear cache forclearNodes - whether should clear nodes cache or notprotected void clearNodeChildrenCache(E[] nodes, boolean clearNodes)
nodes - nodes to clear cache forclearNodes - whether should clear nodes cache or notprotected void cacheNodeById(E node)
node - node to cacheprotected void cacheNodesById(java.util.List<E> nodes)
nodes - list of nodes to cacheprotected int loadChildren(E parent)
parent - node to load children forAsyncTreeDataProvider.loadChildren(AsyncUniqueNode, ChildrenListener)public void setChildNodes(E parent, java.util.List<E> children)
parent - node to processchildren - new node childrenpublic void addChildNodes(E parent, java.util.List<E> children)
parent - node to processchildren - new node childrenpublic void removeNodeFromParent(javax.swing.tree.MutableTreeNode node)
removeNodeFromParent in class javax.swing.tree.DefaultTreeModelnode - node to removepublic void insertNodeInto(javax.swing.tree.MutableTreeNode newChild,
javax.swing.tree.MutableTreeNode parent,
int index)
insertNodeInto in class javax.swing.tree.DefaultTreeModelnewChild - new child nodeparent - parent nodeindex - insert indexpublic void insertNodesInto(java.util.List<E> children, E parent, int index)
insertNodesInto in class WebTreeModel<E extends AsyncUniqueNode>children - list of new child nodesparent - parent nodeindex - insert indexpublic void insertNodesInto(E[] children, E parent, int index)
insertNodesInto in class WebTreeModel<E extends AsyncUniqueNode>children - array of new child nodesparent - parent nodeindex - insert indexprotected void insertNodeIntoImpl(E child, E parent, int index)
child - new child nodeparent - parent nodeindex - insert indexprotected void insertNodesIntoImpl(java.util.List<E> children, E parent, int index)
children - list of new child nodesparent - parent nodeindex - insert indexprotected void insertNodesIntoImpl(E[] children, E parent, int index)
children - array of new child nodesparent - parent nodeindex - insert indexpublic void updateSortingAndFiltering()
public void updateSortingAndFiltering(E parentNode)
parentNode - node which children sorting and filtering should be updatedpublic void updateSortingAndFiltering(E parentNode, boolean recursively)
parentNode - node which children sorting and filtering should be updatedrecursively - whether should update the whole children structure recursively or notprotected void updateSortingAndFilteringImpl(E parentNode, boolean recursively, boolean performUpdates)
parentNode - node which children sorting and filtering should be updatedrecursively - whether should update the whole children structure recursively or notperformUpdates - whether tree updates should be triggered within this methodprotected void performSortingAndFiltering(E parentNode, boolean recursively, boolean performUpdates)
parentNode - node which children sorting and filtering should be updatedrecursively - whether should update the whole children structure recursively or notperformUpdates - whether tree updates should be triggered within this methodprotected java.util.List<E> filterAndSort(E parentNode, java.util.List<E> children)
parentNode - parent nodechildren - children to filter and sortpublic E findNode(java.lang.String nodeId)
nodeId - node IDpublic com.alee.utils.collection.DoubleMap<java.lang.String,E> getNodesCache()
public java.util.List<AsyncTreeModelListener> getAsyncTreeModelListeners()
public void addAsyncTreeModelListener(AsyncTreeModelListener listener)
listener - asynchronous tree model listener to addpublic void removeAsyncTreeModelListener(AsyncTreeModelListener listener)
listener - asynchronous tree model listener to removeprotected void fireChildrenLoadStarted(E parent)
parent - node which children are being loadedprotected void fireChildrenLoadCompleted(E parent, java.util.List<E> children)
parent - node which children were loadedchildren - loaded child nodesprotected void fireChildrenLoadFailed(E parent, java.lang.Throwable cause)
parent - node which children were loadedcause - children load failure cause