Package org.jdesktop.swingx.search
Class SearchFactory
- java.lang.Object
-
- org.jdesktop.swingx.search.SearchFactory
-
- All Implemented Interfaces:
UIDependent
public class SearchFactory extends java.lang.Object implements UIDependent
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- JXFindBar - adds and shows it in the target's toplevel container's toolbar (assuming a JXRootPane)
- JXFindPanel - creates a JXDialog, adds and shows the findPanel in the Dialog
-
-
Nested Class Summary
Nested Classes Modifier and Type Class Description classSearchFactory.FindRemoverprivate static classSearchFactory.LaFListener
-
Field Summary
Fields Modifier and Type Field Description protected JXFindBarfindBarthe shared find widget for incremental-find.protected JXFindPanelfindPanelthe shared find widget for batch-find.private SearchFactory.FindRemoverfindRemoverprotected javax.swing.JComponentlastFindBarTargetthis is a temporary hack: need to remove the useSearchHighlighter property.private java.awt.PointlastFindDialogLocationprivate static SearchFactorysearchFactoryprivate booleanuseFindBar
-
Constructor Summary
Constructors Constructor Description SearchFactory()
-
Method Summary
All Methods Static Methods Instance Methods Concrete Methods Modifier and Type Method Description protected voidconfigureSharedFindBar()Configures the shared FindBar.protected voidconfigureSharedFindPanel()Configures the shared FindPanel.JXFindBarcreateFindBar()Factory method to create a JXFindBar.JXFindPanelcreateFindPanel()Factory method to create a JXFindPanel.private JXDialoggetDialogForSharedFindPanel()private SearchFactory.FindRemovergetFindRemover()static SearchFactorygetInstance()Returns the shared SearchFactory.javax.swing.KeyStrokegetSearchAccelerator()Returns a common Keystroke for triggering a search.JXFindBargetSharedFindBar()Returns the shared JXFindBar.JXFindPanelgetSharedFindPanel()Returns the shared JXFindPanel.protected java.awt.PointhideSharedFindPanel(boolean dispose)Hides the findPanel's toplevel window and returns its location.protected voidinstallFindRemover(java.awt.Container target, java.awt.Container findWidget)booleanisUseFindBar(javax.swing.JComponent target, Searchable searchable)Returns decision about using a batch- vs.protected voidreleaseFindBar()Pre: findbar != null.protected voidremoveFromParent(javax.swing.JComponent component)convenience method to remove a component from its parent and revalidate the parentstatic voidsetInstance(SearchFactory factory)Sets the shared SearchFactory.voidsetUseFindBar(boolean incremental)Sets the default search type to incremental or batch, for a true/false boolean.voidshowFindBar(javax.swing.JComponent target, Searchable searchable)Show a incremental-find widget targeted at the searchable.voidshowFindDialog(javax.swing.JComponent target, Searchable searchable)Show a batch-find widget targeted at the given Searchable.voidshowFindInput(javax.swing.JComponent target, Searchable searchable)Shows an appropriate find widget targeted at the searchable.protected voidstopSearching()voidupdateUI()Updates all internal visuals after changing a UI-delegate.
-
-
-
Field Detail
-
searchFactory
private static SearchFactory searchFactory
-
findPanel
protected JXFindPanel findPanel
the shared find widget for batch-find.
-
findBar
protected JXFindBar findBar
the shared find widget for incremental-find.
-
lastFindBarTarget
protected javax.swing.JComponent lastFindBarTarget
this is a temporary hack: need to remove the useSearchHighlighter property.
-
useFindBar
private boolean useFindBar
-
lastFindDialogLocation
private java.awt.Point lastFindDialogLocation
-
findRemover
private SearchFactory.FindRemover findRemover
-
-
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 searchablesearchable- - 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 ofisUseFindBar.- Parameters:
target- - the component associated with the searchablesearchable- - 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 searchablesearchable- - 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
-
installFindRemover
protected void installFindRemover(java.awt.Container target, java.awt.Container findWidget)
-
getFindRemover
private SearchFactory.FindRemover getFindRemover()
-
removeFromParent
protected void removeFromParent(javax.swing.JComponent component)
convenience method to remove a component from its parent and revalidate the parent
-
stopSearching
protected void stopSearching()
-
releaseFindBar
protected void releaseFindBar()
Pre: findbar != null.
-
configureSharedFindBar
protected void configureSharedFindBar()
Configures the shared FindBar. This method is called once after creation of the shared FindBar. Subclasses can override to add configuration code.Here: registers a custom action to remove the findbar from its ancestor container. PRE: findBar != null.
-
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 searchablesearchable- - 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
-
configureSharedFindPanel
protected void configureSharedFindPanel()
Configures the shared FindPanel. This method is called once after creation of the shared FindPanel. Subclasses can override to add configuration code.Here: no-op PRE: findPanel != null.
-
getDialogForSharedFindPanel
private JXDialog getDialogForSharedFindPanel()
-
hideSharedFindPanel
protected java.awt.Point hideSharedFindPanel(boolean dispose)
Hides the findPanel's toplevel window and returns its location. If the dispose is true, the findPanel is removed from its parent and the toplevel window is disposed.- Parameters:
dispose- boolean to indicate whether the findPanels toplevel window should be disposed.- Returns:
- the location of the window if visible, or the last known location.
-
updateUI
public void updateUI()
Updates all internal visuals after changing a UI-delegate.- Specified by:
updateUIin interfaceUIDependent- See Also:
JComponent.updateUI()
-
-