public abstract class AbstractCheckBoxTreeModel extends AbstractTreeModel implements CheckBoxTreeModel
CheckBoxTreeModel
which maintains the checkbox
state and fires change events more or less optimally.
Clients are expected to populate the tree with implementations of AbstractCheckBoxTreeModel.CheckBoxNode
. The root node is provided by overriding {#link #getRoot()}.
The methods of AbstractCheckBoxTreeModel.CheckBoxNode
that are typically overridden are
AbstractCheckBoxTreeModel.CheckBoxNode.getChildren()
, AbstractCheckBoxTreeModel.CheckBoxNode.isLeaf()
, and
AbstractCheckBoxTreeModel.CheckBoxNode.getLabel()
.
A subclass may extract the state of the leaf nodes from an external source
by overriding AbstractCheckBoxTreeModel.CheckBoxNode.setState(boolean)
and AbstractCheckBoxTreeModel.CheckBoxNode.getState()
.
A subclass may control the criteria which determine which nodes should be
visible by overriding AbstractCheckBoxTreeModel.CheckBoxNode.isVisible()
.
When either an external source of state or the visibility criteria change,
the subclass should invoke the treeChanged(javax.swing.tree.TreePath)
method to notify the
model.Modifier and Type | Class and Description |
---|---|
protected class |
AbstractCheckBoxTreeModel.CheckBoxNode<T extends AbstractCheckBoxTreeModel.CheckBoxNode> |
listenerList
Constructor and Description |
---|
AbstractCheckBoxTreeModel() |
Modifier and Type | Method and Description |
---|---|
java.lang.String |
convertValueToText(java.lang.Object node)
Gets the label text for an object in this tree.
|
java.lang.Object |
getChild(java.lang.Object parent,
int index)
The default
AbstractCheckBoxTreeModel implementation considers only
visible children. |
int |
getChildCount(java.lang.Object parent)
The default
AbstractCheckBoxTreeModel implementation returns the
number of visible children. |
int |
getIndexOfChild(java.lang.Object parent,
java.lang.Object child)
The default
AbstractCheckBoxTreeModel implementation returns the
index of the child within the visible children of this node, or -1 if the
child is not visible. |
abstract java.lang.Object |
getRoot() |
java.lang.Boolean |
getState(java.lang.Object node)
Gets the selection state of an object in this tree.
|
boolean |
isLeaf(java.lang.Object node) |
boolean |
isModified(java.lang.Object node)
Gets whether an object in the tree is modified, relative to a baseline
defined by the model.
|
void |
nodeChanged(javax.swing.tree.TreePath path)
Notify this model that attributes of a node, but not visibility, may have
changed (and its descendants are unaffected).
|
void |
stateForPathChanged(javax.swing.tree.TreePath path,
boolean newState)
Sets the selection state of an object in this tree.
|
void |
treeChanged()
Notify this model that attributes or visibility any node in this model may
have changed.
|
void |
treeChanged(javax.swing.tree.TreePath path)
Notify this model that attributes or visibility of a node or any of its
descendants may have changed.
|
void |
valueForPathChanged(javax.swing.tree.TreePath path,
java.lang.Object newValue) |
addTreeModelListener, fireTreeNodesChanged, fireTreeNodesInserted, fireTreeNodesRemoved, fireTreeStructureChanged, fireTreeStructureChanged, getListeners, getTreeModelListeners, removeTreeModelListener
public abstract java.lang.Object getRoot()
getRoot
in interface javax.swing.tree.TreeModel
public java.lang.Object getChild(java.lang.Object parent, int index)
AbstractCheckBoxTreeModel
implementation considers only
visible children.getChild
in interface javax.swing.tree.TreeModel
public int getChildCount(java.lang.Object parent)
AbstractCheckBoxTreeModel
implementation returns the
number of visible children.getChildCount
in interface javax.swing.tree.TreeModel
public int getIndexOfChild(java.lang.Object parent, java.lang.Object child)
AbstractCheckBoxTreeModel
implementation returns the
index of the child within the visible children of this node, or -1 if the
child is not visible.getIndexOfChild
in interface javax.swing.tree.TreeModel
public boolean isLeaf(java.lang.Object node)
isLeaf
in interface javax.swing.tree.TreeModel
public void valueForPathChanged(javax.swing.tree.TreePath path, java.lang.Object newValue)
valueForPathChanged
in interface javax.swing.tree.TreeModel
public java.lang.Boolean getState(java.lang.Object node)
CheckBoxTreeModel
Gets Boolean.TRUE
or Boolean.FALSE
if the
object is selected or unselected, respectively, and null
if
it is neither (e.g., if it is not a leaf node and some but not all of its
children are selected).
getState
in interface CheckBoxTreeModel
public boolean isModified(java.lang.Object node)
AbstractCheckBoxTreeModel
implementation delegates to AbstractCheckBoxTreeModel.CheckBoxNode.isModified()
.public void stateForPathChanged(javax.swing.tree.TreePath path, boolean newState)
CheckBoxTreeModel
treeNodesChanged
events for
any objects in the tree for which the selection state actually changes.stateForPathChanged
in interface CheckBoxTreeModel
path
- path to the object whose state was changed by the user.newState
- the new state from the user.public void treeChanged(javax.swing.tree.TreePath path)
public void treeChanged()
public void nodeChanged(javax.swing.tree.TreePath path)
stateForPathChanged(javax.swing.tree.TreePath, boolean)
), this is the appropriate method to call
to update the tree to reflect the change.public java.lang.String convertValueToText(java.lang.Object node)
The default AbstractCheckBoxTreeModel
implementation delegates to
the getLabel
method of the CheckBoxNode
object.
convertValueToText
in interface CheckBoxTreeModel