Package docking.widgets.tree
Class GTreeLazyNode
java.lang.Object
docking.widgets.tree.GTreeNode
docking.widgets.tree.GTreeLazyNode
- All Implemented Interfaces:
Cloneable
,Comparable<GTreeNode>
- Direct Known Subclasses:
DomainFolderNode
,GTreeSlowLoadingNode
Base class for GTreeNodes that populate their children on demand (typically when expanded).
Also, children of this node can be unloaded by calling
unloadChildren()
. This
can be used by nodes in large trees to save memory by unloading children that are no longer
in the current tree view (collapsed). Of course, that decision would need to be balanced
against the extra time to reload the nodes in the event that a filter is applied. Also, if
some external event occurs that changes the set of children for a GTreeLazyNode, you can call
unloadChildren()
to clear any previously loaded children.-
Constructor Summary
-
Method Summary
Modifier and TypeMethodDescriptionvoid
Adds the given node at the given index as a child to this nodevoid
Adds the given node as a child to this node.void
Adds the given nodes as children to this nodechildren()
clone()
Creates a clone of this node.void
dispose()
protected void
Adds a node to this node's children at the given index and notifies the tree.protected void
Adds a node to this node's children.protected void
doAddNodes
(List<GTreeNode> nodes) Adds the given nodes to this node's children.protected void
doFireNodeAdded
(GTreeNode newNode) protected void
protected void
doFireNodeRemoved
(GTreeNode removedNode, int index) protected void
protected void
doRemoveNode
(GTreeNode node) Removes the node from this node's children and notifies the tree.protected void
doSetChildren
(List<GTreeNode> childList) Sets the children of this node to the given list of child nodes, but does not notify the tree.protected void
doSetChildrenAndFireEvent
(List<GTreeNode> childList) Sets the children of this node to the given list of child nodes and fires the appropriate tree event to kick the tree to update the display.Subclasses must be able to generate their children nodes on demand by implementing this method.final GTreeNode
Returns the parent of this node.getTree()
Returns the GTree that this node is attached tofinal boolean
Returns true if the node is in the process of loading its children.boolean
isLoaded()
True if the children for this node have been loaded yet.final boolean
isRoot()
Returns true if this is a root node of a GTreevoid
Removes all children from this node.void
removeNode
(GTreeNode node) Remove the given node from this nodevoid
Sets this lazy node back to the "unloaded" state such that if its children are accessed, it will reload its children as needed.Methods inherited from class docking.widgets.tree.GTreeNode
collapse, compareTo, equals, expand, filter, fireNodeChanged, fireNodeStructureChanged, getChild, getChild, getChild, getChildCount, getChildren, getDisplayText, getIcon, getIndexInParent, getIndexOfChild, getLeafCount, getName, getNodeCount, getRoot, getToolTip, getTreePath, hashCode, isAncestor, isAutoExpandPermitted, isEditable, isExpanded, isLeaf, iterator, loadAll, setChildren, stream, toString, valueChanged
-
Constructor Details
-
GTreeLazyNode
public GTreeLazyNode()
-
-
Method Details
-
generateChildren
Subclasses must be able to generate their children nodes on demand by implementing this method.- Overrides:
generateChildren
in classGTreeNode
- Returns:
- the list of GTreeNodes that make up the children for this node.
-
unloadChildren
public void unloadChildren()Sets this lazy node back to the "unloaded" state such that if its children are accessed, it will reload its children as needed. -
addNode
Description copied from class:GTreeNode
Adds the given node as a child to this node. Note: this method may be inefficient so if you have many nodes to add, you should use eitherGTreeNode.addNodes(List)
orGTreeNode.setChildren(List)
-
addNode
Description copied from class:GTreeNode
Adds the given node at the given index as a child to this node -
addNodes
Description copied from class:GTreeNode
Adds the given nodes as children to this node -
removeAll
public void removeAll()Description copied from class:GTreeNode
Removes all children from this node. The children nodes will be disposed. -
removeNode
Description copied from class:GTreeNode
Remove the given node from this node- Overrides:
removeNode
in classGTreeNode
- Parameters:
node
- the to be removed
-
getParent
Returns the parent of this node. Note: this method is deliberately not synchronized (See comments above)- Returns:
- the parent of this node.
-
isRoot
public final boolean isRoot()Returns true if this is a root node of a GTree- Returns:
- true if this is a root node of a GTree
-
children
-
doSetChildrenAndFireEvent
Sets the children of this node to the given list of child nodes and fires the appropriate tree event to kick the tree to update the display. Note: This method must be called from the swing thread because it will notify the underlying JTree.- Parameters:
childList
- the list of child nodes to assign as children to this node- See Also:
-
doSetChildren
Sets the children of this node to the given list of child nodes, but does not notify the tree. This method does not have to be called from the swing thread. It is intended to be used by background threads that want to populate all or part of the tree, but wait until the bulk operations are completed before notifying the tree.- Parameters:
childList
- the list of child nodes to assign as children to this node
-
doAddNode
Adds a node to this node's children. Must be called from the swing thread.- Parameters:
node
- the node to add as a child to this node
-
doAddNode
Adds a node to this node's children at the given index and notifies the tree. Must be called from the swing thread.- Parameters:
index
- the index at which to add the new nodenode
- the node to add as a child to this node
-
doRemoveNode
Removes the node from this node's children and notifies the tree. Must be called from the swing thread.- Parameters:
node
- the node to remove
-
doAddNodes
Adds the given nodes to this node's children. Must be called from the swing thread.- Parameters:
nodes
- the nodes to add to the children this node
-
clone
Creates a clone of this node. The clone should contain a shallow copy of all the node's attributes except that the parent and children are null.- Overrides:
clone
in classObject
- Returns:
- the clone of this object.
- Throws:
CloneNotSupportedException
- if some implementation prevents itself from being cloned.
-
dispose
public void dispose() -
isInProgress
public final boolean isInProgress()Returns true if the node is in the process of loading its children. SeeGTreeSlowLoadingNode
- Returns:
- true if the node is in the process of loading its children.
-
isLoaded
public boolean isLoaded()True if the children for this node have been loaded yet. Some GTree nodes are lazy in that they don't load their children until needed. Nodes that have the IN_PROGRESS node as it child is considered loaded if in the swing thread, otherwise they are considered not loaded.- Returns:
- true if the children for this node have been loaded.
-
getTree
Returns the GTree that this node is attached to- Returns:
- the GTree that this node is attached to
-
doFireNodeAdded
-
doFireNodeRemoved
-
doFireNodeStructureChanged
protected void doFireNodeStructureChanged() -
doFireNodeChanged
protected void doFireNodeChanged()
-