FileDocCategorySizeDatePackage
AbstractLayoutCache.javaAPI DocJava SE 5 API16638Fri Aug 26 14:58:20 BST 2005javax.swing.tree

AbstractLayoutCache

public abstract class AbstractLayoutCache extends Object implements RowMapper
Warning: Serialized objects of this class will not be compatible with future Swing releases. The current serialization support is appropriate for short term storage or RMI between applications running the same version of Swing. As of 1.4, support for long term storage of all JavaBeansTM has been added to the java.beans package. Please see {@link java.beans.XMLEncoder}.
version
1.17 05/05/04
author
Scott Violet

Fields Summary
protected NodeDimensions
nodeDimensions
Object responsible for getting the size of a node.
protected TreeModel
treeModel
Model providing information.
protected TreeSelectionModel
treeSelectionModel
Selection model.
protected boolean
rootVisible
True if the root node is displayed, false if its children are the highest visible nodes.
protected int
rowHeight
Height to use for each row. If this is <= 0 the renderer will be used to determine the height for each row.
Constructors Summary
Methods Summary
public abstract java.awt.RectanglegetBounds(javax.swing.tree.TreePath path, java.awt.Rectangle placeIn)
Returns a rectangle giving the bounds needed to draw path.

param
path a TreePath specifying a node
param
placeIn a Rectangle object giving the available space
return
a Rectangle object specifying the space to be used

public abstract booleangetExpandedState(javax.swing.tree.TreePath path)
Returns true if the path is expanded, and visible.

param
path the path being queried
return
true if the path is expanded and visible, false otherwise

public javax.swing.tree.TreeModelgetModel()
Returns the TreeModel that is providing the data.

return
the TreeModel that is providing the data

        return treeModel;
    
public javax.swing.tree.AbstractLayoutCache$NodeDimensionsgetNodeDimensions()
Returns the object that renders nodes in the tree, and which is responsible for calculating the dimensions of individual nodes.

return
the NodeDimensions object

	return nodeDimensions;
    
protected java.awt.RectanglegetNodeDimensions(java.lang.Object value, int row, int depth, boolean expanded, java.awt.Rectangle placeIn)
Returns, by reference in placeIn, the size needed to represent value. If inPlace is null, a newly created Rectangle should be returned, otherwise the value should be placed in inPlace and returned. This will return null if there is no renderer.

param
value the value to be represented
param
row row being queried
param
depth the depth of the row
param
expanded true if row is expanded, false otherwise
param
placeIn a Rectangle containing the size needed to represent value
return
a Rectangle containing the node dimensions, or null if node has no dimension

	NodeDimensions            nd = getNodeDimensions();

	if(nd != null) {
	    return nd.getNodeDimensions(value, row, depth, expanded, placeIn);
	}
	return null;
    
public abstract javax.swing.tree.TreePathgetPathClosestTo(int x, int y)
Returns the path to the node that is closest to x,y. If there is nothing currently visible this will return null, otherwise it'll always return a valid path. If you need to test if the returned object is exactly at x, y you should get the bounds for the returned path and test x, y against that.

param
x the horizontal component of the desired location
param
y the vertical component of the desired location
return
the TreePath closest to the specified point

public abstract javax.swing.tree.TreePathgetPathForRow(int row)
Returns the path for passed in row. If row is not visible null is returned.

param
row the row being queried
return
the TreePath for the given row

public intgetPreferredHeight()
Returns the preferred height.

return
the preferred height

	// Get the height
	int           rowCount = getRowCount();

	if(rowCount > 0) {
	    Rectangle     bounds = getBounds(getPathForRow(rowCount - 1),
					     null);

	    if(bounds != null)
		return bounds.y + bounds.height;
	}
	return 0;
    
public intgetPreferredWidth(java.awt.Rectangle bounds)
Returns the preferred width for the passed in region. The region is defined by the path closest to (bounds.x, bounds.y) and ends at bounds.height + bounds.y. If bounds is null, the preferred width for all the nodes will be returned (and this may be a VERY expensive computation).

param
bounds the region being queried
return
the preferred width for the passed in region

	int           rowCount = getRowCount();

	if(rowCount > 0) {
	    // Get the width
	    TreePath      firstPath;
	    int           endY;

	    if(bounds == null) {
		firstPath = getPathForRow(0);
		endY = Integer.MAX_VALUE;
	    }
	    else {
		firstPath = getPathClosestTo(bounds.x, bounds.y);
		endY = bounds.height + bounds.y;
	    }

	    Enumeration   paths = getVisiblePathsFrom(firstPath);

	    if(paths != null && paths.hasMoreElements()) {
		Rectangle   pBounds = getBounds((TreePath)paths.nextElement(),
						null);
		int         width;

		if(pBounds != null) {
		    width = pBounds.x + pBounds.width;
		    if (pBounds.y >= endY) {
			return width;
		    }
		}
		else
		    width = 0;
		while (pBounds != null && paths.hasMoreElements()) {
		    pBounds = getBounds((TreePath)paths.nextElement(),
					pBounds);
		    if (pBounds != null && pBounds.y < endY) {
			width = Math.max(width, pBounds.x + pBounds.width);
		    }
		    else {
			pBounds = null;
		    }
		}
		return width;
	    }
	}
	return 0;
    
public abstract intgetRowCount()
Number of rows being displayed.

return
the number of rows being displayed

public abstract intgetRowForPath(javax.swing.tree.TreePath path)
Returns the row that the last item identified in path is visible at. Will return -1 if any of the elements in path are not currently visible.

param
path the TreePath being queried
return
the row where the last item in path is visible or -1 if any elements in path aren't currently visible

public intgetRowHeight()
Returns the height of each row. If the returned value is less than or equal to 0 the height for each row is determined by the renderer.

        return rowHeight;
    
public int[]getRowsForPaths(javax.swing.tree.TreePath[] paths)
Returns the rows that the TreePath instances in path are being displayed at. This method should return an array of the same length as that passed in, and if one of the TreePaths in path is not valid its entry in the array should be set to -1.

param
paths the array of TreePaths being queried
return
an array of the same length that is passed in containing the rows that each corresponding where each TreePath is displayed; if paths is null, null is returned

	if(paths == null)
	    return null;

	int               numPaths = paths.length;
	int[]             rows = new int[numPaths];

	for(int counter = 0; counter < numPaths; counter++)
	    rows[counter] = getRowForPath(paths[counter]);
	return rows;
    
public javax.swing.tree.TreeSelectionModelgetSelectionModel()
Returns the model used to maintain the selection.

return
the treeSelectionModel

	return treeSelectionModel;
    
public abstract intgetVisibleChildCount(javax.swing.tree.TreePath path)
Returns the number of visible children for row.

param
path the path being queried
return
the number of visible children for the specified path

public abstract java.util.EnumerationgetVisiblePathsFrom(javax.swing.tree.TreePath path)
Returns an Enumerator that increments over the visible paths starting at the passed in location. The ordering of the enumeration is based on how the paths are displayed. The first element of the returned enumeration will be path, unless it isn't visible, in which case null will be returned.

param
path the starting location for the enumeration
return
the Enumerator starting at the desired location

public abstract voidinvalidatePathBounds(javax.swing.tree.TreePath path)
Instructs the LayoutCache that the bounds for path are invalid, and need to be updated.

param
path the path being updated

public abstract voidinvalidateSizes()
Informs the TreeState that it needs to recalculate all the sizes it is referencing.

public abstract booleanisExpanded(javax.swing.tree.TreePath path)
Returns true if the value identified by row is currently expanded.

protected booleanisFixedRowHeight()
Returns true if the height of each row is a fixed size.

	return (rowHeight > 0);
    
public booleanisRootVisible()
Returns true if the root node of the tree is displayed.

return
true if the root node of the tree is displayed
see
#rootVisible

        return rootVisible;
    
public abstract voidsetExpandedState(javax.swing.tree.TreePath path, boolean isExpanded)
Marks the path path expanded state to isExpanded.

param
path the path being expanded or collapsed
param
isExpanded true if the path should be expanded, false otherwise

public voidsetModel(javax.swing.tree.TreeModel newModel)
Sets the TreeModel that will provide the data.

param
newModel the TreeModel that is to provide the data

        treeModel = newModel;
    
public voidsetNodeDimensions(javax.swing.tree.AbstractLayoutCache$NodeDimensions nd)
Sets the renderer that is responsible for drawing nodes in the tree and which is threfore responsible for calculating the dimensions of individual nodes.

param
nd a NodeDimensions object

	this.nodeDimensions = nd;
    
public voidsetRootVisible(boolean rootVisible)
Determines whether or not the root node from the TreeModel is visible.

param
rootVisible true if the root node of the tree is to be displayed
see
#rootVisible
beaninfo
bound: true description: Whether or not the root node from the TreeModel is visible.

        this.rootVisible = rootVisible;
    
public voidsetRowHeight(int rowHeight)
Sets the height of each cell. If the specified value is less than or equal to zero the current cell renderer is queried for each row's height.

param
rowHeight the height of each cell, in pixels
beaninfo
bound: true description: The height of each cell.

        this.rowHeight = rowHeight;
    
public voidsetSelectionModel(javax.swing.tree.TreeSelectionModel newLSM)
Sets the TreeSelectionModel used to manage the selection to new LSM.

param
newLSM the new TreeSelectionModel

	if(treeSelectionModel != null)
	    treeSelectionModel.setRowMapper(null);
	treeSelectionModel = newLSM;
	if(treeSelectionModel != null)
	    treeSelectionModel.setRowMapper(this);
    
public abstract voidtreeNodesChanged(javax.swing.event.TreeModelEvent e)

Invoked after a node (or a set of siblings) has changed in some way. The node(s) have not changed locations in the tree or altered their children arrays, but other attributes have changed and may affect presentation. Example: the name of a file has changed, but it is in the same location in the file system.

e.path() returns the path the parent of the changed node(s).

e.childIndices() returns the index(es) of the changed node(s).

param
e the TreeModelEvent

public abstract voidtreeNodesInserted(javax.swing.event.TreeModelEvent e)

Invoked after nodes have been inserted into the tree.

e.path() returns the parent of the new nodes

e.childIndices() returns the indices of the new nodes in ascending order.

param
e the TreeModelEvent

public abstract voidtreeNodesRemoved(javax.swing.event.TreeModelEvent e)

Invoked after nodes have been removed from the tree. Note that if a subtree is removed from the tree, this method may only be invoked once for the root of the removed subtree, not once for each individual set of siblings removed.

e.path() returns the former parent of the deleted nodes.

e.childIndices() returns the indices the nodes had before they were deleted in ascending order.

param
e the TreeModelEvent

public abstract voidtreeStructureChanged(javax.swing.event.TreeModelEvent e)

Invoked after the tree has drastically changed structure from a given node down. If the path returned by e.getPath() is of length one and the first element does not identify the current root node the first element should become the new root of the tree.

e.path() holds the path to the node.

e.childIndices() returns null.

param
e the TreeModelEvent