Package ca.cgjennings.ui
Class FolderTree
- java.lang.Object
-
- java.awt.Component
-
- java.awt.Container
-
- javax.swing.JComponent
-
- javax.swing.JTree
-
- ca.cgjennings.ui.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
-
-
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
-
-
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, ornull
.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
-
-
-
-
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
-
-
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 isnull
, 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, ornull
. 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 searchname
- 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 afterfilterFolders(java.io.File[])
.- Parameters:
children
- the child nodes about to be added
-
-