Class FolderTree

  • All Implemented Interfaces:
    java.awt.image.ImageObserver, java.awt.MenuContainer, java.io.Serializable, javax.accessibility.Accessible, javax.swing.Scrollable

    public class FolderTree
    extends javax.swing.JTree
    A tree that displays the local file system folders, and supports selection of one of these folders.
    Author:
    Chris Jennings
    See Also:
    Serialized Form
    • Nested Class Summary

      Nested Classes 
      Modifier and Type Class Description
      protected class  FolderTree.Node
      Class of nodes in the folder tree.
      • Nested classes/interfaces inherited from class javax.swing.JTree

        javax.swing.JTree.AccessibleJTree, javax.swing.JTree.DropLocation, javax.swing.JTree.DynamicUtilTreeNode, javax.swing.JTree.EmptySelectionModel, javax.swing.JTree.TreeModelHandler, javax.swing.JTree.TreeSelectionRedirector
      • Nested classes/interfaces inherited from class javax.swing.JComponent

        javax.swing.JComponent.AccessibleJComponent
      • Nested classes/interfaces inherited from class java.awt.Container

        java.awt.Container.AccessibleAWTContainer
      • Nested classes/interfaces inherited from class java.awt.Component

        java.awt.Component.AccessibleAWTComponent, java.awt.Component.BaselineResizeBehavior, java.awt.Component.BltBufferStrategy, java.awt.Component.FlipBufferStrategy
    • Field Summary

      Fields 
      Modifier and Type Field Description
      static java.lang.String FOLDER_SELECTED
      Named property that can be listened for to detect selection changes.
      protected static javax.swing.filechooser.FileSystemView fsv  
      • Fields inherited from class javax.swing.JTree

        ANCHOR_SELECTION_PATH_PROPERTY, CELL_EDITOR_PROPERTY, CELL_RENDERER_PROPERTY, cellEditor, cellRenderer, editable, EDITABLE_PROPERTY, EXPANDS_SELECTED_PATHS_PROPERTY, INVOKES_STOP_CELL_EDITING_PROPERTY, invokesStopCellEditing, LARGE_MODEL_PROPERTY, largeModel, LEAD_SELECTION_PATH_PROPERTY, ROOT_VISIBLE_PROPERTY, rootVisible, ROW_HEIGHT_PROPERTY, rowHeight, SCROLLS_ON_EXPAND_PROPERTY, scrollsOnExpand, SELECTION_MODEL_PROPERTY, selectionModel, selectionRedirector, SHOWS_ROOT_HANDLES_PROPERTY, showsRootHandles, TOGGLE_CLICK_COUNT_PROPERTY, toggleClickCount, TREE_MODEL_PROPERTY, treeModel, treeModelListener, VISIBLE_ROW_COUNT_PROPERTY, visibleRowCount
      • Fields inherited from class javax.swing.JComponent

        listenerList, TOOL_TIP_TEXT_KEY, ui, UNDEFINED_CONDITION, WHEN_ANCESTOR_OF_FOCUSED_COMPONENT, WHEN_FOCUSED, WHEN_IN_FOCUSED_WINDOW
      • Fields inherited from class java.awt.Component

        accessibleContext, BOTTOM_ALIGNMENT, CENTER_ALIGNMENT, LEFT_ALIGNMENT, RIGHT_ALIGNMENT, TOP_ALIGNMENT
      • Fields inherited from interface java.awt.image.ImageObserver

        ABORT, ALLBITS, ERROR, FRAMEBITS, HEIGHT, PROPERTIES, SOMEBITS, WIDTH
    • Constructor Summary

      Constructors 
      Constructor Description
      FolderTree()
      Creates a new folder tree starting at the local file system root.
      FolderTree​(java.io.File root)
      Creates a new folder tree starting from the specified root folder.
    • Method Summary

      All Methods Instance Methods Concrete Methods 
      Modifier and Type Method Description
      protected void aboutToAddChildNodes​(FolderTree.Node[] children)
      This is called just before new child nodes appear in the tree, and allows subclasses a chance to set a user object on nodes.
      void addSelectionListener​(java.beans.PropertyChangeListener li)
      Adds a listener for changes to the selected folder.
      protected java.io.File[] filterFolders​(java.io.File[] source)
      Given an array of files, returns an array containing only those that you wish to appear in the tree.
      javax.swing.tree.TreePath findChild​(javax.swing.tree.TreePath path, java.lang.String name)
      Finds the child with the specified name that is a child node of the given tree path.
      javax.swing.filechooser.FileSystemView getFileSystemView()
      Returns the file system view used to obtain platform-specific folder information.
      java.io.File getFolderForTreePath​(javax.swing.tree.TreePath path)
      Given a tree path to a node in the tree, returns the file represented by the node.
      protected javax.swing.Icon getIconForNode​(FolderTree.Node n)
      Returns an icon for the file.
      java.io.File getSelectedFolder()
      Returns the currently selected folder.
      javax.swing.tree.TreePath getTreePathForFolder​(java.io.File f)
      Returns a tree path for the specified file, or null.
      void reloadChildren​(javax.swing.tree.TreePath path)
      Updates the child nodes of the specified tree path.
      void removeSelectionListener​(java.beans.PropertyChangeListener li)
      Removes a listener for changes to the selected folder.
      boolean setSelectedFolder​(java.io.File f)
      Sets the currently selected folder.
      • Methods inherited from class javax.swing.JTree

        addSelectionInterval, addSelectionPath, addSelectionPaths, addSelectionRow, addSelectionRows, addTreeExpansionListener, addTreeSelectionListener, addTreeWillExpandListener, cancelEditing, clearSelection, clearToggledPaths, collapsePath, collapseRow, convertValueToText, createTreeModel, createTreeModelListener, expandPath, expandRow, fireTreeCollapsed, fireTreeExpanded, fireTreeWillCollapse, fireTreeWillExpand, fireValueChanged, getAccessibleContext, getAnchorSelectionPath, getCellEditor, getCellRenderer, getClosestPathForLocation, getClosestRowForLocation, getDefaultTreeModel, getDescendantToggledPaths, getDragEnabled, getDropLocation, getDropMode, getEditingPath, getExpandedDescendants, getExpandsSelectedPaths, getInvokesStopCellEditing, getLastSelectedPathComponent, getLeadSelectionPath, getLeadSelectionRow, getMaxSelectionRow, getMinSelectionRow, getModel, getNextMatch, getPathBetweenRows, getPathBounds, getPathForLocation, getPathForRow, getPreferredScrollableViewportSize, getRowBounds, getRowCount, getRowForLocation, getRowForPath, getRowHeight, getScrollableBlockIncrement, getScrollableTracksViewportHeight, getScrollableTracksViewportWidth, getScrollableUnitIncrement, getScrollsOnExpand, getSelectionCount, getSelectionModel, getSelectionPath, getSelectionPaths, getSelectionRows, getShowsRootHandles, getToggleClickCount, getToolTipText, getTreeExpansionListeners, getTreeSelectionListeners, getTreeWillExpandListeners, getUI, getUIClassID, getVisibleRowCount, hasBeenExpanded, isCollapsed, isCollapsed, isEditable, isEditing, isExpanded, isExpanded, isFixedRowHeight, isLargeModel, isPathEditable, isPathSelected, isRootVisible, isRowSelected, isSelectionEmpty, isVisible, makeVisible, paramString, removeDescendantSelectedPaths, removeDescendantToggledPaths, removeSelectionInterval, removeSelectionPath, removeSelectionPaths, removeSelectionRow, removeSelectionRows, removeTreeExpansionListener, removeTreeSelectionListener, removeTreeWillExpandListener, scrollPathToVisible, scrollRowToVisible, setAnchorSelectionPath, setCellEditor, setCellRenderer, setDragEnabled, setDropMode, setEditable, setExpandedState, setExpandsSelectedPaths, setInvokesStopCellEditing, setLargeModel, setLeadSelectionPath, setModel, setRootVisible, setRowHeight, setScrollsOnExpand, setSelectionInterval, setSelectionModel, setSelectionPath, setSelectionPaths, setSelectionRow, setSelectionRows, setShowsRootHandles, setToggleClickCount, setUI, setVisibleRowCount, startEditingAtPath, stopEditing, treeDidChange, updateUI
      • Methods inherited from class javax.swing.JComponent

        addAncestorListener, addNotify, addVetoableChangeListener, computeVisibleRect, contains, createToolTip, disable, enable, firePropertyChange, firePropertyChange, firePropertyChange, fireVetoableChange, getActionForKeyStroke, getActionMap, getAlignmentX, getAlignmentY, getAncestorListeners, getAutoscrolls, getBaseline, getBaselineResizeBehavior, getBorder, getBounds, getClientProperty, getComponentGraphics, getComponentPopupMenu, getConditionForKeyStroke, getDebugGraphicsOptions, getDefaultLocale, getFontMetrics, getGraphics, getHeight, getInheritsPopupMenu, getInputMap, getInputMap, getInputVerifier, getInsets, getInsets, getListeners, getLocation, getMaximumSize, getMinimumSize, getNextFocusableComponent, getPopupLocation, getPreferredSize, getRegisteredKeyStrokes, getRootPane, getSize, getToolTipLocation, getToolTipText, getTopLevelAncestor, getTransferHandler, getVerifyInputWhenFocusTarget, getVetoableChangeListeners, getVisibleRect, getWidth, getX, getY, grabFocus, hide, isDoubleBuffered, isLightweightComponent, isManagingFocus, isOpaque, isOptimizedDrawingEnabled, isPaintingForPrint, isPaintingOrigin, isPaintingTile, isRequestFocusEnabled, isValidateRoot, paint, paintBorder, paintChildren, paintComponent, paintImmediately, paintImmediately, print, printAll, printBorder, printChildren, printComponent, processComponentKeyEvent, processKeyBinding, processKeyEvent, processMouseEvent, processMouseMotionEvent, putClientProperty, registerKeyboardAction, registerKeyboardAction, removeAncestorListener, removeNotify, removeVetoableChangeListener, repaint, repaint, requestDefaultFocus, requestFocus, requestFocus, requestFocusInWindow, requestFocusInWindow, resetKeyboardActions, reshape, revalidate, scrollRectToVisible, setActionMap, setAlignmentX, setAlignmentY, setAutoscrolls, setBackground, setBorder, setComponentPopupMenu, setDebugGraphicsOptions, setDefaultLocale, setDoubleBuffered, setEnabled, setFocusTraversalKeys, setFont, setForeground, setInheritsPopupMenu, setInputMap, setInputVerifier, setMaximumSize, setMinimumSize, setNextFocusableComponent, setOpaque, setPreferredSize, setRequestFocusEnabled, setToolTipText, setTransferHandler, setUI, setVerifyInputWhenFocusTarget, setVisible, unregisterKeyboardAction, update
      • Methods inherited from class java.awt.Container

        add, add, add, add, add, addContainerListener, addImpl, addPropertyChangeListener, addPropertyChangeListener, applyComponentOrientation, areFocusTraversalKeysSet, countComponents, deliverEvent, doLayout, findComponentAt, findComponentAt, getComponent, getComponentAt, getComponentAt, getComponentCount, getComponents, getComponentZOrder, getContainerListeners, getFocusTraversalKeys, getFocusTraversalPolicy, getLayout, getMousePosition, insets, invalidate, isAncestorOf, isFocusCycleRoot, isFocusCycleRoot, isFocusTraversalPolicyProvider, isFocusTraversalPolicySet, layout, list, list, locate, minimumSize, paintComponents, preferredSize, printComponents, processContainerEvent, processEvent, remove, remove, removeAll, removeContainerListener, setComponentZOrder, setFocusCycleRoot, setFocusTraversalPolicy, setFocusTraversalPolicyProvider, setLayout, transferFocusDownCycle, validate, validateTree
      • Methods inherited from class java.awt.Component

        action, add, addComponentListener, addFocusListener, addHierarchyBoundsListener, addHierarchyListener, addInputMethodListener, addKeyListener, addMouseListener, addMouseMotionListener, addMouseWheelListener, bounds, checkImage, checkImage, coalesceEvents, contains, createImage, createImage, createVolatileImage, createVolatileImage, disableEvents, dispatchEvent, enable, enableEvents, enableInputMethods, firePropertyChange, firePropertyChange, firePropertyChange, firePropertyChange, firePropertyChange, firePropertyChange, getBackground, getBounds, getColorModel, getComponentListeners, getComponentOrientation, getCursor, getDropTarget, getFocusCycleRootAncestor, getFocusListeners, getFocusTraversalKeysEnabled, getFont, getForeground, getGraphicsConfiguration, getHierarchyBoundsListeners, getHierarchyListeners, getIgnoreRepaint, getInputContext, getInputMethodListeners, getInputMethodRequests, getKeyListeners, getLocale, getLocation, getLocationOnScreen, getMouseListeners, getMouseMotionListeners, getMousePosition, getMouseWheelListeners, getName, getParent, getPropertyChangeListeners, getPropertyChangeListeners, getSize, getToolkit, getTreeLock, gotFocus, handleEvent, hasFocus, imageUpdate, inside, isBackgroundSet, isCursorSet, isDisplayable, isEnabled, isFocusable, isFocusOwner, isFocusTraversable, isFontSet, isForegroundSet, isLightweight, isMaximumSizeSet, isMinimumSizeSet, isPreferredSizeSet, isShowing, isValid, isVisible, keyDown, keyUp, list, list, list, location, lostFocus, mouseDown, mouseDrag, mouseEnter, mouseExit, mouseMove, mouseUp, move, nextFocus, paintAll, postEvent, prepareImage, prepareImage, processComponentEvent, processFocusEvent, processHierarchyBoundsEvent, processHierarchyEvent, processInputMethodEvent, processMouseWheelEvent, remove, removeComponentListener, removeFocusListener, removeHierarchyBoundsListener, removeHierarchyListener, removeInputMethodListener, removeKeyListener, removeMouseListener, removeMouseMotionListener, removeMouseWheelListener, removePropertyChangeListener, removePropertyChangeListener, repaint, repaint, repaint, requestFocus, requestFocus, requestFocusInWindow, resize, resize, setBounds, setBounds, setComponentOrientation, setCursor, setDropTarget, setFocusable, setFocusTraversalKeysEnabled, setIgnoreRepaint, setLocale, setLocation, setLocation, setMixingCutoutShape, setName, setSize, setSize, show, show, size, toString, transferFocus, transferFocusBackward, transferFocusUpCycle
      • Methods inherited from class java.lang.Object

        clone, equals, finalize, getClass, hashCode, notify, notifyAll, wait, wait, wait
    • Field Detail

      • FOLDER_SELECTED

        public static final java.lang.String FOLDER_SELECTED
        Named property that can be listened for to detect selection changes.
        See Also:
        Constant Field Values
      • fsv

        protected static final javax.swing.filechooser.FileSystemView fsv
    • Constructor Detail

      • FolderTree

        public FolderTree()
        Creates a new folder tree starting at the local file system root.
      • FolderTree

        public FolderTree​(java.io.File root)
        Creates a new folder tree starting from the specified root folder.
        Parameters:
        root - the file system root
    • Method Detail

      • getFileSystemView

        public javax.swing.filechooser.FileSystemView getFileSystemView()
        Returns the file system view used to obtain platform-specific folder information.
        Returns:
        the file system view used by the tree
      • addSelectionListener

        public void addSelectionListener​(java.beans.PropertyChangeListener li)
        Adds a listener for changes to the selected folder. This is a convenience that adds a property change listener for the selection property.
        Parameters:
        li - adds a selected folder listener
      • removeSelectionListener

        public void removeSelectionListener​(java.beans.PropertyChangeListener li)
        Removes a listener for changes to the selected folder. This is a convenience that removes a property change listener for the selection property.
        Parameters:
        li - adds a selected folder listener
      • getSelectedFolder

        public java.io.File getSelectedFolder()
        Returns the currently selected folder.
        Returns:
        a file representing the selected folder
      • setSelectedFolder

        public boolean setSelectedFolder​(java.io.File f)
        Sets the currently selected folder. If the parameter is null, a default folder is used.
        Parameters:
        f - a file representing the folder to select
        Returns:
        true if a valid folder was selected
        See Also:
        getSelectedFolder()
      • getTreePathForFolder

        public javax.swing.tree.TreePath getTreePathForFolder​(java.io.File f)
        Returns a tree path for the specified file, or null. If there are multiple tree paths that are equivalent to the specified file, there is no guarantee as to which is selected.
        Parameters:
        f - the file to locate in the tree
        Returns:
        the path to the file, or null
      • getFolderForTreePath

        public java.io.File getFolderForTreePath​(javax.swing.tree.TreePath path)
        Given a tree path to a node in the tree, returns the file represented by the node.
        Parameters:
        path - the path to convert to a file
        Returns:
        the file represented by the path, or null
      • reloadChildren

        public void reloadChildren​(javax.swing.tree.TreePath path)
        Updates the child nodes of the specified tree path. This may be called if the file structure changes.
        Parameters:
        path - the tree path to update
      • findChild

        public javax.swing.tree.TreePath findChild​(javax.swing.tree.TreePath path,
                                                   java.lang.String name)
        Finds the child with the specified name that is a child node of the given tree path.
        Parameters:
        path - the path to search
        name - the name to search for
        Returns:
        the node in the path that matches the specified name, or null if it is not found
      • getIconForNode

        protected javax.swing.Icon getIconForNode​(FolderTree.Node n)
        Returns an icon for the file. The default implementation returns the standard system icon.
        Parameters:
        n - the node to locate an icon for
        Returns:
        an icon for the node
      • filterFolders

        protected java.io.File[] filterFolders​(java.io.File[] source)
        Given an array of files, returns an array containing only those that you wish to appear in the tree. The base class filters out hidden and non-traversable files.
        Parameters:
        source - the parent
        Returns:
        the children that should be displayed
      • aboutToAddChildNodes

        protected void aboutToAddChildNodes​(FolderTree.Node[] children)
        This is called just before new child nodes appear in the tree, and allows subclasses a chance to set a user object on nodes. It is called after filterFolders(java.io.File[]).
        Parameters:
        children - the child nodes about to be added