Package docking.widgets.tree
Class GTreeSlowLoadingNode
- java.lang.Object
-
- docking.widgets.tree.AbstractGTreeNode
-
- docking.widgets.tree.GTreeSlowLoadingNode
-
- All Implemented Interfaces:
GTreeNode
,java.lang.Comparable<GTreeNode>
,java.lang.Iterable<GTreeNode>
- Direct Known Subclasses:
FSBDirNode
,FSBRootNode
public abstract class GTreeSlowLoadingNode extends AbstractGTreeNode
Base class for GTNodes that want to use a lazy loading approach, but the loading may be slow and therefor should be done in another thread. By using SlowLoadingNode nodes, you don't have to create all the nodes up front and the nodes will only be created as needed. If you extend this base class, you have to implement one additional method than if you extended AbstractGTreeNode and that is generateChildren(TaskMonitor monitor). The generateChildren(TaskMonitor monitor) method will be called automatically from a task thread when needed. While the loading is taking place, An "In Progress" node will be displayed.
-
-
Nested Class Summary
-
Nested classes/interfaces inherited from class docking.widgets.tree.AbstractGTreeNode
AbstractGTreeNode.AllPathsIterator
-
-
Constructor Summary
Constructors Constructor Description GTreeSlowLoadingNode()
-
Method Summary
All Methods Instance Methods Abstract Methods Concrete Methods Modifier and Type Method Description void
addNode(int index, GTreeNode node)
Note: you cannot call this method from the Swing thread, as the data may not have been loaded.void
dispose()
Disposes this node and all of its descendants.protected void
doAddNode(int index, GTreeNode child)
protected java.util.List<GTreeNode>
doGetActiveChildren()
protected int
doGetAllChildCount()
protected java.util.List<GTreeNode>
doGetAllChildren()
protected GTreeNode
doGetChild(int index)
protected int
doGetChildCount()
protected int
doGetIndexOfChild(GTreeNode node)
protected int
doGetIndexOfChild(GTreeNode node, java.util.List<GTreeNode> children)
Subclasses can override this method to perform faster lookups of a node; for example, if the subclass has a sorted list of children, then a binary search can be used.protected void
doResetActiveChildren()
Convenience method to clear any filtered items by restoring the active children of this node to be the complete set of children.protected void
doSetActiveChildren(java.util.List<GTreeNode> childList)
protected void
doSetChildren(java.util.List<GTreeNode> childList, boolean notify)
void
fireNodeChanged(GTreeNode parentNode, GTreeNode node)
Notifies the tree that a node has changed.void
fireNodeStructureChanged(GTreeNode node)
Notifies the tree that the node has different children.abstract java.util.List<GTreeNode>
generateChildren(TaskMonitor monitor)
GTreeNode
getParent()
Returns the parent of this node.protected boolean
isChildrenLoaded()
boolean
isChildrenLoadedOrInProgress()
boolean
isInProgress()
Returns true if this node is currently being modified.protected void
loadChildren()
This will be called when it is time to load children.void
removeNode(GTreeNode node)
Remove the given node from this node.protected void
setInProgress()
protected void
swingSetChildren(java.util.List<GTreeNode> childList, boolean notify, boolean onlyIfInProgress)
-
Methods inherited from class docking.widgets.tree.AbstractGTreeNode
addNode, allPaths, clearFilter, compareTo, filter, getAllChildCount, getAllChildren, getChild, getChild, getChildCount, getChildren, getFilter, getIndexInParent, getIndexOfChild, getLeafCount, getNodeCount, getRoot, getTree, getTreePath, hashCode, isAncestor, isEditable, isFilteredOut, iterator, removeAll, setChildren, toString, valueChanged
-
Methods inherited from class java.lang.Object
clone, equals, finalize, getClass, notify, notifyAll, wait, wait, wait
-
Methods inherited from interface docking.widgets.tree.GTreeNode
getIcon, getName, getToolTip, isLeaf
-
-
-
-
Method Detail
-
generateChildren
public abstract java.util.List<GTreeNode> generateChildren(TaskMonitor monitor) throws CancelledException
- Throws:
CancelledException
-
loadChildren
protected final void loadChildren()
Description copied from class:AbstractGTreeNode
This will be called when it is time to load children. Some subclasses may not use this method, but may instead have children externally added.- Overrides:
loadChildren
in classAbstractGTreeNode
-
swingSetChildren
protected void swingSetChildren(java.util.List<GTreeNode> childList, boolean notify, boolean onlyIfInProgress)
-
addNode
public void addNode(int index, GTreeNode node)
Note: you cannot call this method from the Swing thread, as the data may not have been loaded. Instead, this method should be called from aGTreeTask
.- Specified by:
addNode
in interfaceGTreeNode
- Overrides:
addNode
in classAbstractGTreeNode
- Parameters:
index
- The index where the node should be insertednode
- The node to insert
-
getParent
public GTreeNode getParent()
Description copied from interface:GTreeNode
Returns the parent of this node.
-
dispose
public void dispose()
Description copied from interface:GTreeNode
Disposes this node and all of its descendants.
-
isInProgress
public boolean isInProgress()
Description copied from interface:GTreeNode
Returns true if this node is currently being modified.- Specified by:
isInProgress
in interfaceGTreeNode
- Returns:
- true if this node is currently being modified.
-
setInProgress
protected void setInProgress()
-
isChildrenLoadedOrInProgress
public boolean isChildrenLoadedOrInProgress()
-
isChildrenLoaded
protected boolean isChildrenLoaded()
-
doGetChildCount
protected int doGetChildCount()
-
doGetAllChildCount
protected int doGetAllChildCount()
-
doGetAllChildren
protected java.util.List<GTreeNode> doGetAllChildren()
-
doGetActiveChildren
protected java.util.List<GTreeNode> doGetActiveChildren()
-
doGetChild
protected GTreeNode doGetChild(int index)
-
doGetIndexOfChild
protected int doGetIndexOfChild(GTreeNode node)
-
doGetIndexOfChild
protected int doGetIndexOfChild(GTreeNode node, java.util.List<GTreeNode> children)
Subclasses can override this method to perform faster lookups of a node; for example, if the subclass has a sorted list of children, then a binary search can be used.- Parameters:
node
- the node whose index we seekchildren
- the children who contain the given node (may be null)- Returns:
- the index of the given child in the given list
-
doAddNode
protected void doAddNode(int index, GTreeNode child)
-
removeNode
public void removeNode(GTreeNode node)
Description copied from interface:GTreeNode
Remove the given node from this node.- Specified by:
removeNode
in interfaceGTreeNode
- Parameters:
node
- the to be removed.
-
doSetChildren
protected void doSetChildren(java.util.List<GTreeNode> childList, boolean notify)
-
doSetActiveChildren
protected void doSetActiveChildren(java.util.List<GTreeNode> childList)
-
doResetActiveChildren
protected void doResetActiveChildren()
Convenience method to clear any filtered items by restoring the active children of this node to be the complete set of children.
-
fireNodeChanged
public void fireNodeChanged(GTreeNode parentNode, GTreeNode node)
Description copied from interface:GTreeNode
Notifies the tree that a node has changed.- Specified by:
fireNodeChanged
in interfaceGTreeNode
- Parameters:
parentNode
- the node that contains the node that was changed.node
- the that changed.
-
fireNodeStructureChanged
public void fireNodeStructureChanged(GTreeNode node)
Description copied from interface:GTreeNode
Notifies the tree that the node has different children. This method- Specified by:
fireNodeStructureChanged
in interfaceGTreeNode
- Parameters:
node
- the node that has changed.
-
-