Package org.jdesktop.swingx.treetable
Class FileSystemModel
- java.lang.Object
-
- org.jdesktop.swingx.treetable.AbstractTreeTableModel
-
- org.jdesktop.swingx.treetable.FileSystemModel
-
- All Implemented Interfaces:
javax.swing.tree.TreeModel
,TreeTableModel
public class FileSystemModel extends AbstractTreeTableModel
A tree table model to simulate a file system.This tree table model implementation extends
AbstractTreeTableModel
. The file system metaphor demonstrates that it is often easier to directly implement tree structures directly instead of using intermediaries, such asTreeTableNode
.A comparison of this class with
SimpleFileSystemModel
, shows that extendingAbstractTreeTableModel
is often easier than creating a model from scratch.A "full" version of this model might allow editing of file names, the deletion of files, and the movement of files. This simple implementation does not intend to tackle such problems, but this implementation may be extended to handle such details.
-
-
Field Summary
Fields Modifier and Type Field Description private static java.lang.Long
DIRECTORY
-
Fields inherited from class org.jdesktop.swingx.treetable.AbstractTreeTableModel
modelSupport, root
-
-
Constructor Summary
Constructors Constructor Description FileSystemModel()
Creates a file system model using the root directory as the model root.FileSystemModel(java.io.File root)
Creates a file system model using the specifiedroot
.
-
Method Summary
All Methods Instance Methods Concrete Methods Modifier and Type Method Description java.io.File
getChild(java.lang.Object parent, int index)
int
getChildCount(java.lang.Object parent)
java.lang.Class<?>
getColumnClass(int column)
Returns the most specific superclass for all the cell values in the column.int
getColumnCount()
Returns the number of columns in the model.java.lang.String
getColumnName(int column)
Returns the name of the column atcolumnIndex
.int
getIndexOfChild(java.lang.Object parent, java.lang.Object child)
java.io.File
getRoot()
java.lang.Object
getValueAt(java.lang.Object node, int column)
Returns the value for thenode
atcolumnIndex
.boolean
isLeaf(java.lang.Object node)
Returnstrue
ifnode
is a leaf.private boolean
isValidFileNode(java.lang.Object file)
void
setRoot(java.io.File root)
Sets the root for this tree table model.-
Methods inherited from class org.jdesktop.swingx.treetable.AbstractTreeTableModel
addTreeModelListener, getHierarchicalColumn, getTreeModelListeners, isCellEditable, removeTreeModelListener, setValueAt, valueForPathChanged
-
-
-
-
Constructor Detail
-
FileSystemModel
public FileSystemModel()
Creates a file system model using the root directory as the model root.
-
FileSystemModel
public FileSystemModel(java.io.File root)
Creates a file system model using the specifiedroot
.- Parameters:
root
- the root for this model; this may be different than the root directory for a file system.
-
-
Method Detail
-
isValidFileNode
private boolean isValidFileNode(java.lang.Object file)
-
getChild
public java.io.File getChild(java.lang.Object parent, int index)
-
getChildCount
public int getChildCount(java.lang.Object parent)
-
getColumnClass
public java.lang.Class<?> getColumnClass(int column)
Returns the most specific superclass for all the cell values in the column. This is used by theJXTreeTable
to set up a default renderer and editor for the column.- Specified by:
getColumnClass
in interfaceTreeTableModel
- Overrides:
getColumnClass
in classAbstractTreeTableModel
- Parameters:
column
- the index of the column- Returns:
- the common ancestor class of the object values in the model.
- See Also:
TableModel.getColumnClass(int)
-
getColumnCount
public int getColumnCount()
Description copied from interface:TreeTableModel
Returns the number of columns in the model. AJXTreeTable
uses this method to determine how many columns it should create and display by default.- Returns:
- the number of columns in the model
- See Also:
TableModel.getColumnCount()
-
getColumnName
public java.lang.String getColumnName(int column)
Description copied from class:AbstractTreeTableModel
Returns the name of the column atcolumnIndex
. This is used to initialize the table's column header name. Note: this name does not need to be unique; two columns in a table can have the same name.- Specified by:
getColumnName
in interfaceTreeTableModel
- Overrides:
getColumnName
in classAbstractTreeTableModel
- Parameters:
column
- the index of the column- Returns:
- the name of the column
- See Also:
TableModel.getColumnName(int)
-
getValueAt
public java.lang.Object getValueAt(java.lang.Object node, int column)
Description copied from interface:TreeTableModel
Returns the value for thenode
atcolumnIndex
. Thenode
must be managed by this model. Unamanaged nodes should throw anIllegalArgumentException
.- Parameters:
node
- the node whose value is to be queriedcolumn
- the column whose value is to be queried- Returns:
- the value Object at the specified cell
- See Also:
TreeTableModel.setValueAt(java.lang.Object, java.lang.Object, int)
,TableModel.getValueAt(int, int)
-
getIndexOfChild
public int getIndexOfChild(java.lang.Object parent, java.lang.Object child)
-
getRoot
public java.io.File getRoot()
- Specified by:
getRoot
in interfacejavax.swing.tree.TreeModel
- Overrides:
getRoot
in classAbstractTreeTableModel
-
setRoot
public void setRoot(java.io.File root)
Sets the root for this tree table model. This method will notify listeners that a change has taken place.- Parameters:
root
- the new root node to set
-
isLeaf
public boolean isLeaf(java.lang.Object node)
Returnstrue
ifnode
is a leaf.- Specified by:
isLeaf
in interfacejavax.swing.tree.TreeModel
- Overrides:
isLeaf
in classAbstractTreeTableModel
- Parameters:
node
- a node in the tree, obtained from this data source- Returns:
- true if
node
is a leaf
-
-