Class 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 as TreeTableNode.

    A comparison of this class with SimpleFileSystemModel, shows that extending AbstractTreeTableModel 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.

    • 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 specified root.
        Parameters:
        root - the root for this model; this may be different than the root directory for a file system.
    • Method Detail

      • 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 the JXTreeTable to set up a default renderer and editor for the column.
        Specified by:
        getColumnClass in interface TreeTableModel
        Overrides:
        getColumnClass in class AbstractTreeTableModel
        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. A JXTreeTable 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 at columnIndex. 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 interface TreeTableModel
        Overrides:
        getColumnName in class AbstractTreeTableModel
        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 the node at columnIndex. The node must be managed by this model. Unamanaged nodes should throw an IllegalArgumentException.
        Parameters:
        node - the node whose value is to be queried
        column - 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 interface javax.swing.tree.TreeModel
        Overrides:
        getRoot in class AbstractTreeTableModel
      • 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)
        Returns true if node is a leaf.
        Specified by:
        isLeaf in interface javax.swing.tree.TreeModel
        Overrides:
        isLeaf in class AbstractTreeTableModel
        Parameters:
        node - a node in the tree, obtained from this data source
        Returns:
        true if node is a leaf