org.jdesktop.swingx.search
Class SearchFactory

java.lang.Object
  extended by org.jdesktop.swingx.search.SearchFactory

public class SearchFactory
extends java.lang.Object

Factory to create, configure and show application consistent search and find widgets. Typically a shared JXFindBar is used for incremental search, while a shared JXFindPanel is used for batch search. This implementation

PENDING: JW - update (?) views/wiring on focus change. Started brute force - stop searching. This looks extreme confusing for findBars added to ToolBars which are empty except for the findbar. Weird problem if triggered from menu - find widget disappears after having been shown for an instance. Where's the focus? PENDING: add methods to return JXSearchPanels (for use by PatternMatchers).

Author:
Jeanette Winzenburg

Nested Class Summary
 class SearchFactory.FindRemover
           
 
Constructor Summary
SearchFactory()
           
 
Method Summary
 JXFindBar createFindBar()
          Factory method to create a JXFindBar.
 JXFindPanel createFindPanel()
          Factory method to create a JXFindPanel.
static SearchFactory getInstance()
          Returns the shared SearchFactory.
 javax.swing.KeyStroke getSearchAccelerator()
          Returns a common Keystroke for triggering a search.
 JXFindBar getSharedFindBar()
          Returns the shared JXFindBar.
 JXFindPanel getSharedFindPanel()
          Returns the shared JXFindPanel.
 boolean isUseFindBar(javax.swing.JComponent target, Searchable searchable)
          Returns decision about using a batch- vs. incremental-find for the searchable.
static void setInstance(SearchFactory factory)
          Sets the shared SearchFactory.
 void setUseFindBar(boolean incremental)
          Sets the default search type to incremental or batch, for a true/false boolean.
 void showFindBar(javax.swing.JComponent target, Searchable searchable)
          Show a incremental-find widget targeted at the searchable.
 void showFindDialog(javax.swing.JComponent target, Searchable searchable)
          Show a batch-find widget targeted at the given Searchable.
 void showFindInput(javax.swing.JComponent target, Searchable searchable)
          Shows an appropriate find widget targeted at the searchable.
 
Methods inherited from class java.lang.Object
equals, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait
 

Constructor Detail

SearchFactory

public SearchFactory()
Method Detail

getInstance

public static SearchFactory getInstance()
Returns the shared SearchFactory.

Returns:
the shared SearchFactory

setInstance

public static void setInstance(SearchFactory factory)
Sets the shared SearchFactory.

Parameters:
factory -

getSearchAccelerator

public javax.swing.KeyStroke getSearchAccelerator()
Returns a common Keystroke for triggering a search. Tries to be OS-specific.

PENDING: this should be done in the LF and the keyStroke looked up in the UIManager.

Returns:
the keyStroke to register with a findAction.

isUseFindBar

public boolean isUseFindBar(javax.swing.JComponent target,
                            Searchable searchable)
Returns decision about using a batch- vs. incremental-find for the searchable. This implementation returns the useFindBar property directly.

Parameters:
target - - the component associated with the searchable
searchable - - the object to search.
Returns:
true if a incremental-find should be used, false otherwise.

setUseFindBar

public void setUseFindBar(boolean incremental)
Sets the default search type to incremental or batch, for a true/false boolean. The default value is false (== batch).

Parameters:
incremental - a boolean to indicate the default search type, true for incremental and false for batch.

showFindInput

public void showFindInput(javax.swing.JComponent target,
                          Searchable searchable)
Shows an appropriate find widget targeted at the searchable. Opens a batch-find or incremental-find widget based on the return value of isUseFindBar.

Parameters:
target - - the component associated with the searchable
searchable - - the object to search.
See Also:
isUseFindBar(JComponent, Searchable), setUseFindBar(boolean)

showFindBar

public void showFindBar(javax.swing.JComponent target,
                        Searchable searchable)
Show a incremental-find widget targeted at the searchable. This implementation uses a JXFindBar and inserts it into the target's toplevel container toolbar. PENDING: Nothing shown if there is no toolbar found.

Parameters:
target - - the component associated with the searchable
searchable - - the object to search.

getSharedFindBar

public JXFindBar getSharedFindBar()
Returns the shared JXFindBar. Creates and configures on first call.

Returns:
the shared JXFindBar

createFindBar

public JXFindBar createFindBar()
Factory method to create a JXFindBar.

Returns:
the JXFindBar

showFindDialog

public void showFindDialog(javax.swing.JComponent target,
                           Searchable searchable)
Show a batch-find widget targeted at the given Searchable. This implementation uses a shared JXFindPanel contained JXDialog.

Parameters:
target - - the component associated with the searchable
searchable - - the object to search.

getSharedFindPanel

public JXFindPanel getSharedFindPanel()
Returns the shared JXFindPanel. Lazyly creates and configures on first call.

Returns:
the shared JXFindPanel

createFindPanel

public JXFindPanel createFindPanel()
Factory method to create a JXFindPanel.

Returns:
JXFindPanel