javax.swing.tree

Class FixedHeightLayoutCache

Implemented Interfaces:
RowMapper

public class FixedHeightLayoutCache
extends VariableHeightLayoutCache

The fixed height tree layout. This class assumes that all cells in the tree have the same fixed height. This may be not the case, for instance, if leaves and branches have different height, of if the tree rows may have arbitrary variable height. This class will also work if the NodeDimensions are not set.

Nested Class Summary

Nested classes/interfaces inherited from class javax.swing.tree.AbstractLayoutCache

AbstractLayoutCache.NodeDimensions

Field Summary

Fields inherited from class javax.swing.tree.AbstractLayoutCache

nodeDimensions, rootVisible, rowHeight, treeModel, treeSelectionModel

Constructor Summary

FixedHeightLayoutCache()
Creates the unitialised instance.

Method Summary

Rectangle
getBounds(TreePath path, Rectangle rect)
Get bounds for the given tree path.
boolean
getExpandedState(TreePath path)
Return the expansion state of the given tree path.
TreePath
getPathClosestTo(int x, int y)
Get the path, closest to the given point.
TreePath
getPathForRow(int row)
Get the path, the last element of that is displayed in the given row.
int
getPreferredHeight()
Get the sum of heights for all rows.
int
getPreferredWidth(Rectangle value)
Get the maximal width.
int
getRowCount()
Get the total number of rows in the tree.
int
getRowForPath(TreePath path)
Get the row, displaying the last node of the given path.
int
getVisibleChildCount(TreePath path)
Get the number of the visible childs for the given tree path.
Enumeration
getVisiblePathsFrom(TreePath parentPath)
Get the enumeration over all visible paths that start from the given parent path.
void
invalidatePathBounds(TreePath path)
Discard the bound information for the given path.
void
invalidateSizes()
Mark all cached information as invalid.
boolean
isExpanded(TreePath path)
Get the expanded state for the given tree path.
protected boolean
isFixedRowHeight()
Returns true if this layout supposes that all rows have the fixed height.
void
setExpandedState(TreePath path, boolean isExpanded)
Set the expanded state of the given path.
void
setModel(TreeModel newModel)
Set the tree model that will provide the data.
void
setRootVisible(boolean visible)
Inform the instance if the tree root node is visible.
void
treeNodesChanged(TreeModelEvent event)
The listener method, called when the tree nodes are changed.
void
treeNodesInserted(TreeModelEvent event)
The listener method, called when the tree nodes are inserted.
void
treeNodesRemoved(TreeModelEvent event)
The listener method, called when the tree nodes are removed.
void
treeStructureChanged(TreeModelEvent event)
Called when the tree structure has been changed.

Methods inherited from class javax.swing.tree.VariableHeightLayoutCache

getBounds, getExpandedState, getPathClosestTo, getPathForRow, getPreferredHeight, getPreferredWidth, getRowCount, getRowForPath, getVisibleChildCount, getVisiblePathsFrom, invalidatePathBounds, invalidateSizes, isExpanded, setExpandedState, setModel, setNodeDimensions, setRootVisible, setRowHeight, treeNodesChanged, treeNodesInserted, treeNodesRemoved, treeStructureChanged

Methods inherited from class javax.swing.tree.AbstractLayoutCache

getBounds, getExpandedState, getModel, getNodeDimensions, getNodeDimensions, getPathClosestTo, getPathForRow, getPreferredHeight, getPreferredWidth, getRowCount, getRowForPath, getRowHeight, getRowsForPaths, getSelectionModel, getVisibleChildCount, getVisiblePathsFrom, invalidatePathBounds, invalidateSizes, isExpanded, isFixedRowHeight, isRootVisible, setExpandedState, setModel, setNodeDimensions, setRootVisible, setRowHeight, setSelectionModel, treeNodesChanged, treeNodesInserted, treeNodesRemoved, treeStructureChanged

Methods inherited from class java.lang.Object

clone, equals, extends Object> getClass, finalize, hashCode, notify, notifyAll, toString, wait, wait, wait

Constructor Details

FixedHeightLayoutCache

public FixedHeightLayoutCache()
Creates the unitialised instance. Before using the class, the row height must be set with the setRowHeight(int) and the model must be set with setModel(TreeModel). The node dimensions may not be set.

Method Details

getBounds

public Rectangle getBounds(TreePath path,
                           Rectangle rect)
Get bounds for the given tree path.
Overrides:
getBounds in interface VariableHeightLayoutCache
Parameters:
path - the tree path
rect - the rectangle that will be reused to return the result.
Returns:
Rectangle the bounds of the last line, defined by the given path.

getExpandedState

public boolean getExpandedState(TreePath path)
Return the expansion state of the given tree path. The expansion state must be previously set with the setExpandedState(TreePath,boolean)
Overrides:
getExpandedState in interface VariableHeightLayoutCache
Parameters:
path - the path being checked
Returns:
true if the last node of the path is expanded, false otherwise.

getPathClosestTo

public TreePath getPathClosestTo(int x,
                                 int y)
Get the path, closest to the given point.
Overrides:
getPathClosestTo in interface VariableHeightLayoutCache
Parameters:
x - the point x coordinate
y - the point y coordinate
Returns:
the tree path, closest to the the given point

getPathForRow

public TreePath getPathForRow(int row)
Get the path, the last element of that is displayed in the given row.
Overrides:
getPathForRow in interface VariableHeightLayoutCache
Parameters:
row - the row
Returns:
TreePath the path

getPreferredHeight

public int getPreferredHeight()
Get the sum of heights for all rows.
Overrides:
getPreferredHeight in interface VariableHeightLayoutCache

getPreferredWidth

public int getPreferredWidth(Rectangle value)
Get the maximal width.
Overrides:
getPreferredWidth in interface VariableHeightLayoutCache

getRowCount

public int getRowCount()
Get the total number of rows in the tree. Every displayed node occupies the single row. The root node row is included if the root node is set as visible (false by default).
Overrides:
getRowCount in interface VariableHeightLayoutCache
Returns:
int the number of the displayed rows.

getRowForPath

public int getRowForPath(TreePath path)
Get the row, displaying the last node of the given path.
Overrides:
getRowForPath in interface VariableHeightLayoutCache
Parameters:
path - the path
Returns:
int the row number or -1 if the end of the path is not visible.

getVisibleChildCount

public int getVisibleChildCount(TreePath path)
Get the number of the visible childs for the given tree path. If the node is not expanded, 0 is returned. Otherwise, the number of children is obtained from the model as the number of children for the last path component.
Overrides:
getVisibleChildCount in interface VariableHeightLayoutCache
Parameters:
path - the tree path
Returns:
int the number of the visible childs (for row).

getVisiblePathsFrom

public Enumeration getVisiblePathsFrom(TreePath parentPath)
Get the enumeration over all visible paths that start from the given parent path.
Overrides:
getVisiblePathsFrom in interface VariableHeightLayoutCache
Parameters:
parentPath - the parent path
Returns:
the enumeration over pathes

invalidatePathBounds

public void invalidatePathBounds(TreePath path)
Discard the bound information for the given path.
Overrides:
invalidatePathBounds in interface VariableHeightLayoutCache
Parameters:
path - the path, for that the bound information must be recomputed.

invalidateSizes

public void invalidateSizes()
Mark all cached information as invalid.
Overrides:
invalidateSizes in interface VariableHeightLayoutCache

isExpanded

public boolean isExpanded(TreePath path)
Get the expanded state for the given tree path.
Overrides:
isExpanded in interface VariableHeightLayoutCache
Returns:
true if the given path is expanded, false otherwise.

isFixedRowHeight

protected boolean isFixedRowHeight()
Returns true if this layout supposes that all rows have the fixed height.
Overrides:
isFixedRowHeight in interface AbstractLayoutCache
Returns:
boolean true if all rows in the tree must have the fixed height (true by default).

setExpandedState

public void setExpandedState(TreePath path,
                             boolean isExpanded)
Set the expanded state of the given path. The expansion states must be always updated when expanding and colapsing the tree nodes. Otherwise other methods will not work correctly after the nodes are collapsed or expanded.
Overrides:
setExpandedState in interface VariableHeightLayoutCache
Parameters:
path - the tree path, for that the state is being set.
isExpanded - the expanded state of the given path.

setModel

public void setModel(TreeModel newModel)
Set the tree model that will provide the data.
Overrides:
setModel in interface VariableHeightLayoutCache

setRootVisible

public void setRootVisible(boolean visible)
Inform the instance if the tree root node is visible. If this method is not called, it is assumed that the tree root node is not visible.
Overrides:
setRootVisible in interface VariableHeightLayoutCache
Parameters:
visible - true if the tree root node is visible, false otherwise.

treeNodesChanged

public void treeNodesChanged(TreeModelEvent event)
The listener method, called when the tree nodes are changed.
Overrides:
treeNodesChanged in interface VariableHeightLayoutCache
Parameters:
event - the change event

treeNodesInserted

public void treeNodesInserted(TreeModelEvent event)
The listener method, called when the tree nodes are inserted.
Overrides:
treeNodesInserted in interface VariableHeightLayoutCache
Parameters:
event - the change event

treeNodesRemoved

public void treeNodesRemoved(TreeModelEvent event)
The listener method, called when the tree nodes are removed.
Overrides:
treeNodesRemoved in interface VariableHeightLayoutCache
Parameters:
event - the change event

treeStructureChanged

public void treeStructureChanged(TreeModelEvent event)
Called when the tree structure has been changed.
Overrides:
treeStructureChanged in interface VariableHeightLayoutCache
Parameters:
event - the change event

FixedHeightLayoutCache.java -- Fixed cell height tree layout cache Copyright (C) 2002, 2004, 2006, Free Software Foundation, Inc. This file is part of GNU Classpath. GNU Classpath is free software; you can redistribute it and/or modify it under the terms of the GNU General Public License as published by the Free Software Foundation; either version 2, or (at your option) any later version. GNU Classpath is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License for more details. You should have received a copy of the GNU General Public License along with GNU Classpath; see the file COPYING. If not, write to the Free Software Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA. Linking this library statically or dynamically with other modules is making a combined work based on this library. Thus, the terms and conditions of the GNU General Public License cover the whole combination. As a special exception, the copyright holders of this library give you permission to link this library with independent modules to produce an executable, regardless of the license terms of these independent modules, and to copy and distribute the resulting executable under terms of your choice, provided that you also meet, for each linked independent module, the terms and conditions of the license of that module. An independent module is a module which is not derived from or based on this library. If you modify this library, you may extend this exception to your version of the library, but you are not obligated to do so. If you do not wish to do so, delete this exception statement from your version.