|
||||||||||
PREV CLASS NEXT CLASS | FRAMES NO FRAMES | |||||||||
SUMMARY: NESTED | FIELD | CONSTR | METHOD | DETAIL: FIELD | CONSTR | METHOD |
java.lang.Objectjava.awt.Component
java.awt.Container
javax.swing.JComponent
javax.swing.JPanel
org.jext.misc.FindAccessory
A threaded file search accessory for JFileChooser.
Presents JFileChooser users with a tabbed panel interface for specifying file search criteria including (1) search by name, (2) search by date of modification, and (3) search by file content. Finded are performed "in the background" with found files displayed dynamically as they are found. Only one search can be active at a time. FindResults are displayed in a scrolling list within a results tab panel.
Findes are performed asynchronously so the user can continue browsing the file system. The user may stop the search at any time. Accepting or cancelling the file chooser or closing the dialog window will automatically stop a search in progress.
The starting folder of the search (the search base) is displayed at the top of the accessory panel. The search base dsiplay will not change while a search is running. Thes search base display will change to reflect the current directory of JFileChooser when a search is not running.
Changing the search options does not affect a search in progress.
Nested Class Summary |
Nested classes inherited from class javax.swing.JPanel |
javax.swing.JPanel.AccessibleJPanel |
Nested classes inherited from class javax.swing.JComponent |
javax.swing.JComponent.AccessibleJComponent |
Nested classes inherited from class java.awt.Container |
java.awt.Container.AccessibleAWTContainer |
Nested classes inherited from class java.awt.Component |
java.awt.Component.AccessibleAWTComponent, java.awt.Component.BltBufferStrategy, java.awt.Component.FlipBufferStrategy |
Field Summary | |
static java.lang.String |
ACCESSORY_NAME
Label for this accessory. |
static java.lang.String |
ACTION_START
Find start action name |
static java.lang.String |
ACTION_STOP
Find stop action name |
protected org.jext.misc.FindAccessory.FindAction |
actionStart
|
protected org.jext.misc.FindAccessory.FindAction |
actionStop
|
protected javax.swing.JFileChooser |
chooser
Parent JFileChooser component |
protected org.jext.misc.FindAccessory.FindControls |
controlPanel
Find controls with progress display |
static int |
DEFAULT_MAX_SEARCH_HITS
Default max number of found items. |
protected boolean |
killFind
Set to true to stop current search |
protected int |
matches
Number of items found by current/last search |
protected int |
maxMatches
Max number of found items to prevent overloading the results list. |
protected org.jext.misc.FindAccessory.FindTabs |
searchTabs
Find options with results list |
protected java.lang.Thread |
searchThread
This version of FindAccesory supports only one active search thread |
protected int |
total
Number of items inspected by current/last search |
Fields inherited from class javax.swing.JComponent |
accessibleContext, 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 |
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 | |
FindAccessory()
Construct a search panel with start and stop actions, option panes and a results list pane that can display up to DEFAULT_MAX_SEARCH_HITS items. |
|
FindAccessory(javax.swing.JFileChooser parent)
Construct a search panel with start and stop actions and "attach" it to the specified JFileChooser component. |
|
FindAccessory(javax.swing.JFileChooser c,
int max)
Construct a search panel with start and stop actions and "attach" it to the specified JFileChooser component. |
Method Summary | |
protected boolean |
accept(java.io.File file,
org.jext.misc.FindFilter[] filters)
|
void |
action(java.lang.String command)
Invoked by FindAction objects to start and stop searches. |
void |
actionPerformed(java.awt.event.ActionEvent e)
Called by JFileChooser when the user provokes an action like "cancel" or "open". |
int |
getMaxFindHits()
Returns maximum capacity of results list. |
void |
goTo(java.io.File f)
Set parent's current directory to the parent folder of the specified file and select the specified file. |
boolean |
isRunning()
|
protected org.jext.misc.FindFilter[] |
newFind()
Begins a new search by resetting the total and matches progress variables and retrieves the search filter array from the options panel. |
void |
quit()
Stop the current search and unregister in preparation for parent shutdown. |
protected void |
register(javax.swing.JFileChooser c)
Add this component to the specified JFileChooser's list of property change listeners and action listeners. |
boolean |
reportProgress(org.jext.misc.FindFilter filter,
java.io.File file,
long current,
long total)
Called by FindFilter to report progress of a search. |
void |
run()
Find thread |
protected void |
runFind(java.io.File base,
org.jext.misc.FindFilter[] filters)
Recursive search beginning at folder base for files and folders matching each filter in the filters array. |
void |
setMaxFindHits(int max)
Sets maximum capacity of the results list. |
void |
startThread()
Start a search. |
void |
stop()
Stop the active search. |
protected void |
unregister(javax.swing.JFileChooser c)
Remove this component from the specified JFileChooser's list of property change listeners and action listeners. |
protected void |
updateProgress()
Display progress of running search. |
Methods inherited from class javax.swing.JPanel |
getAccessibleContext, getUI, getUIClassID, paramString, setUI, updateUI |
Methods inherited from class javax.swing.JComponent |
addAncestorListener, addNotify, addPropertyChangeListener, addPropertyChangeListener, addVetoableChangeListener, computeVisibleRect, contains, createToolTip, disable, enable, firePropertyChange, firePropertyChange, firePropertyChange, firePropertyChange, firePropertyChange, firePropertyChange, firePropertyChange, firePropertyChange, firePropertyChange, fireVetoableChange, getActionForKeyStroke, getActionMap, getAlignmentX, getAlignmentY, getAncestorListeners, getAutoscrolls, getBorder, getBounds, getClientProperty, getComponentGraphics, getConditionForKeyStroke, getDebugGraphicsOptions, getDefaultLocale, getGraphics, getHeight, getInputMap, getInputMap, getInputVerifier, getInsets, getInsets, getListeners, getLocation, getMaximumSize, getMinimumSize, getNextFocusableComponent, getPreferredSize, getPropertyChangeListeners, getPropertyChangeListeners, getRegisteredKeyStrokes, getRootPane, getSize, getToolTipLocation, getToolTipText, getToolTipText, getTopLevelAncestor, getTransferHandler, getVerifyInputWhenFocusTarget, getVetoableChangeListeners, getVisibleRect, getWidth, getX, getY, grabFocus, isDoubleBuffered, isLightweightComponent, isManagingFocus, isMaximumSizeSet, isMinimumSizeSet, isOpaque, isOptimizedDrawingEnabled, isPaintingTile, isPreferredSizeSet, isRequestFocusEnabled, isValidateRoot, paint, paintBorder, paintChildren, paintComponent, paintImmediately, paintImmediately, print, printAll, printBorder, printChildren, printComponent, processComponentKeyEvent, processKeyBinding, processKeyEvent, processMouseMotionEvent, putClientProperty, registerKeyboardAction, registerKeyboardAction, removeAncestorListener, removeNotify, removePropertyChangeListener, removePropertyChangeListener, removeVetoableChangeListener, repaint, repaint, requestDefaultFocus, requestFocus, requestFocus, requestFocusInWindow, requestFocusInWindow, resetKeyboardActions, reshape, revalidate, scrollRectToVisible, setActionMap, setAlignmentX, setAlignmentY, setAutoscrolls, setBackground, setBorder, setDebugGraphicsOptions, setDefaultLocale, setDoubleBuffered, setEnabled, setFont, setForeground, 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, applyComponentOrientation, areFocusTraversalKeysSet, countComponents, deliverEvent, doLayout, findComponentAt, findComponentAt, getComponent, getComponentAt, getComponentAt, getComponentCount, getComponents, getContainerListeners, getFocusTraversalKeys, getFocusTraversalPolicy, getLayout, insets, invalidate, isAncestorOf, isFocusCycleRoot, isFocusCycleRoot, isFocusTraversalPolicySet, layout, list, list, locate, minimumSize, paintComponents, preferredSize, printComponents, processContainerEvent, processEvent, remove, remove, removeAll, removeContainerListener, setFocusCycleRoot, setFocusTraversalKeys, setFocusTraversalPolicy, setLayout, transferFocusBackward, 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, getBackground, getBounds, getColorModel, getComponentListeners, getComponentOrientation, getCursor, getDropTarget, getFocusCycleRootAncestor, getFocusListeners, getFocusTraversalKeysEnabled, getFont, getFontMetrics, getForeground, getGraphicsConfiguration, getHierarchyBoundsListeners, getHierarchyListeners, getIgnoreRepaint, getInputContext, getInputMethodListeners, getInputMethodRequests, getKeyListeners, getLocale, getLocation, getLocationOnScreen, getMouseListeners, getMouseMotionListeners, getMouseWheelListeners, getName, getParent, getPeer, getSize, getToolkit, getTreeLock, gotFocus, handleEvent, hasFocus, hide, imageUpdate, inside, isBackgroundSet, isCursorSet, isDisplayable, isEnabled, isFocusable, isFocusOwner, isFocusTraversable, isFontSet, isForegroundSet, isLightweight, 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, processMouseEvent, processMouseWheelEvent, remove, removeComponentListener, removeFocusListener, removeHierarchyBoundsListener, removeHierarchyListener, removeInputMethodListener, removeKeyListener, removeMouseListener, removeMouseMotionListener, removeMouseWheelListener, repaint, repaint, repaint, resize, resize, setBounds, setBounds, setComponentOrientation, setCursor, setDropTarget, setFocusable, setFocusTraversalKeysEnabled, setIgnoreRepaint, setLocale, setLocation, setLocation, setName, setSize, setSize, show, show, size, toString, transferFocus, transferFocusUpCycle |
Methods inherited from class java.lang.Object |
clone, equals, finalize, getClass, hashCode, notify, notifyAll, wait, wait, wait |
Field Detail |
public static final java.lang.String ACCESSORY_NAME
public static final int DEFAULT_MAX_SEARCH_HITS
public static final java.lang.String ACTION_START
public static final java.lang.String ACTION_STOP
protected javax.swing.JFileChooser chooser
protected org.jext.misc.FindAccessory.FindAction actionStart
protected org.jext.misc.FindAccessory.FindAction actionStop
protected java.lang.Thread searchThread
protected boolean killFind
protected org.jext.misc.FindAccessory.FindTabs searchTabs
protected org.jext.misc.FindAccessory.FindControls controlPanel
protected int total
protected int matches
protected int maxMatches
Constructor Detail |
public FindAccessory()
public FindAccessory(javax.swing.JFileChooser parent)
parent
- JFileChooser containing this accessorypublic FindAccessory(javax.swing.JFileChooser c, int max)
max
- Max number of items for results list. Find stops when max
number of items found.Method Detail |
public void setMaxFindHits(int max)
max
- Max capacity of results list.public int getMaxFindHits()
public void actionPerformed(java.awt.event.ActionEvent e)
actionPerformed
in interface java.awt.event.ActionListener
e
- ActionEvent from parent JFileChooser.public void goTo(java.io.File f)
f
- File to select in parent JFileChooserpublic void startThread()
public void stop()
public boolean isRunning()
public void run()
run
in interface java.lang.Runnable
protected void runFind(java.io.File base, org.jext.misc.FindFilter[] filters) throws java.lang.InterruptedException
Note: Convert this to a nonrecursive search algorithm on systems where stack space might be limited and/or the search hierarchy might be very deep.
base
- starting folder of searchfilters
- matches must pass each filters in array
java.lang.InterruptedException
- if thread is interruptedprotected boolean accept(java.io.File file, org.jext.misc.FindFilter[] filters)
file
- file to pass to each filter's accept methodfilters
- array of selection criteria
public boolean reportProgress(org.jext.misc.FindFilter filter, java.io.File file, long current, long total)
reportProgress
in interface org.jext.misc.FindProgressCallback
filter
- FindFilter reporting progressfile
- file being searchedcurrent
- current "location" of searchtotal
- expected maximum value of current
protected org.jext.misc.FindFilter[] newFind()
protected void updateProgress()
protected void register(javax.swing.JFileChooser c)
c
- parent JFileChooserprotected void unregister(javax.swing.JFileChooser c)
c
- parent JFileChooserpublic void quit()
public void action(java.lang.String command)
|
||||||||||
PREV CLASS NEXT CLASS | FRAMES NO FRAMES | |||||||||
SUMMARY: NESTED | FIELD | CONSTR | METHOD | DETAIL: FIELD | CONSTR | METHOD |