Package com.jidesoft.swing
Class TableSearchable
java.lang.Object
com.jidesoft.swing.Searchable
com.jidesoft.swing.TableSearchable
- All Implemented Interfaces:
PropertyChangeListener
,EventListener
,TableModelListener
public class TableSearchable
extends Searchable
implements TableModelListener, PropertyChangeListener
TableSearchable
is an concrete implementation of Searchable
that enables the search function in
JTable. It's very simple to use it. Assuming you have a JTable, all you need to do is to call
Now the JTable will have the search function.
JTable table = ....;
TableSearchable searchable = new TableSearchable(table);
JTable table = ....;
TableSearchable searchable = new TableSearchable(table) {
protected String convertElementToString(Object object) {
...
}
};
Additional customization can be done on the base Searchable class such as background and foreground color,
keystrokes, case sensitivity,-
Nested Class Summary
Nested classes/interfaces inherited from class com.jidesoft.swing.Searchable
Searchable.DefaultSearchPopup, Searchable.SearchField, Searchable.SearchPopup
-
Field Summary
Fields inherited from class com.jidesoft.swing.Searchable
_component, _componentListener, _focusListener, _keyListener, _matchCount, CLIENT_PROPERTY_SEARCHABLE, listenerList, PROPERTY_SEARCH_TEXT
-
Constructor Summary
Constructors -
Method Summary
Modifier and TypeMethodDescriptionprotected void
addTableSelection
(JTable table, int rowIndex, int columnIndex, boolean incremental) Selects the cell at the specified row and column index.protected String
convertElementToString
(Object item) Converts the element that returns from getElementAt() to string.protected Object
getElementAt
(int index) Gets the element at the specified index.protected int
Gets the total element count in the component.int
Gets the index of the column to be searched.int[]
Gets the indexes of the column to be searched.protected int
Gets the selected index.protected Object
getValueAt
(JTable table, int rowIndex, int columnIndex) Get string value of the table.void
Installs necessary listeners to the component.protected boolean
Checks if the key in KeyEvent should activate the search popup.protected boolean
isColumnSelectionAllowed
(JTable table) Is the column selection allowed?protected boolean
Checks if the key is used as a key to find the next occurrence.protected boolean
Checks if the key is used as a key to find the previous occurrence.protected boolean
isRowSelectionAllowed
(JTable table) Is the row selection allowed?protected boolean
Are we trying to search on multi-columns (but NOT all columns)?protected boolean
Checks if the selected cell is editable.void
void
setMainIndex
(int mainIndex) Sets the main index.void
setSearchColumnIndices
(int[] columnIndices) Sets the main indexes.protected void
setSelectedIndex
(int index, boolean incremental) Sets the selected index.void
void
Uninstall the listeners that installed before.Methods inherited from class com.jidesoft.swing.Searchable
addPropertyChangeListener, addSearchableListener, adjustSelectedIndex, cancelHighlightAll, compare, compare, convertToString, createComponentListener, createFocusListener, createKeyListener, createSearchPopup, findAll, findFirst, findFirstExactly, findFromCursor, findLast, findNext, findPrevious, firePropertyChangeEvent, fireSearchableEvent, getBackground, getComponent, getCurrentIndex, getCursor, getElementAtAsString, getForeground, getMismatchForeground, getPopupLocation, getPopupLocationRelativeTo, getPopupTimeout, getResourceString, getSearchable, getSearchableListeners, getSearchableProvider, getSearchingDelay, getSearchingText, getSearchLabel, getWildcardSupport, hidePopup, highlightAll, isCaseSensitive, isCountMatch, isDeactivateKey, isFindFirstKey, isFindLastKey, isFromStart, isHeavyweightComponentEnabled, isHideSearchPopupOnEvent, isIncrementalSelectKey, isNavigationKey, isPopupVisible, isProcessModelChangeEvent, isRepeats, isReverseOrder, isSearchableListenerInstalled, isSelectAllKey, isWildcardEnabled, keyTypedOrPressed, removePropertyChangeListener, removeSearchableListener, reverseFindFromCursor, searchingTextEmpty, select, setBackground, setCaseSensitive, setCountMatch, setCursor, setCursor, setForeground, setFromStart, setHeavyweightComponentEnabled, setHideSearchPopupOnEvent, setMismatchForeground, setPopupLocation, setPopupLocationRelativeTo, setPopupTimeout, setProcessModelChangeEvent, setRepeats, setReverseOrder, setSearchableProvider, setSearchingDelay, setSearchLabel, setWildcardEnabled, setWildcardSupport, showPopup, textChanged
-
Constructor Details
-
TableSearchable
-
-
Method Details
-
installListeners
public void installListeners()Description copied from class:Searchable
Installs necessary listeners to the component. This method will be called automatically when Searchable is created.- Overrides:
installListeners
in classSearchable
-
uninstallListeners
public void uninstallListeners()Description copied from class:Searchable
Uninstall the listeners that installed before. This method is never called because we don't have the control of the life cycle of the component. However you can call this method if you don't want the component to be searchable any more.- Overrides:
uninstallListeners
in classSearchable
-
setSelectedIndex
protected void setSelectedIndex(int index, boolean incremental) Description copied from class:Searchable
Sets the selected index. The concrete implementation should call methods on the component to select the element at the specified index. The incremental flag is used to do multiple select. If the flag is true, the element at the index should be added to current selection. If false, you should clear previous selection and then select the element.- Specified by:
setSelectedIndex
in classSearchable
- Parameters:
index
- the index to be selectedincremental
- a flag to enable multiple selection. If the flag is true, the element at the index should be added to current selection. If false, you should clear previous selection and then select the element.
-
addTableSelection
Selects the cell at the specified row and column index. If incremental is true, the previous selection will not be cleared. This method will useJTable.changeSelection(int,int,boolean,boolean)
method to select the cell if the row and column index is in the range and the cell was not selected. The last two parameters of changeSelection is true and false respectively.- Parameters:
table
- the tablerowIndex
- the row index of the cell.columnIndex
- the column index of the cellincremental
- false to clear all previous selection. True to keep the previous selection.
-
isColumnSelectionAllowed
Is the column selection allowed?- Parameters:
table
- the table.- Returns:
- true if the table is the column selection.
-
isRowSelectionAllowed
Is the row selection allowed?- Parameters:
table
- the table.- Returns:
- true if the table is the row selection.
-
isSearchSelectedRows
protected boolean isSearchSelectedRows()Are we trying to search on multi-columns (but NOT all columns)?- Returns:
- true if the search is set to look at multi-columns (but NOT all columns).
-
getSelectedIndex
protected int getSelectedIndex()Gets the selected index.- Specified by:
getSelectedIndex
in classSearchable
- Returns:
- the selected index.
-
getElementAt
Description copied from class:Searchable
Gets the element at the specified index. The element could be any data structure that internally used in the component. The convertElementToString method will give you a chance to convert the element to string which is used to compare with the string that user types in.- Specified by:
getElementAt
in classSearchable
- Parameters:
index
- the index- Returns:
- the element at the specified index.
-
getValueAt
Get string value of the table.- Parameters:
table
- the JTablerowIndex
- the row indexcolumnIndex
- the column index- Returns:
- the string value of the cell in the table.
-
getElementCount
protected int getElementCount()Description copied from class:Searchable
Gets the total element count in the component. Different concrete implementation could have different interpretation of the count. This is totally OK as long as it's consistent in all the methods. For example, the index parameter in other methods should be always a valid value within the total count.- Specified by:
getElementCount
in classSearchable
- Returns:
- the total element count.
-
convertElementToString
Description copied from class:Searchable
Converts the element that returns from getElementAt() to string.- Specified by:
convertElementToString
in classSearchable
- Parameters:
item
- the element to be converted- Returns:
- the string representing the element in the component.
-
getSearchColumnIndices
public int[] getSearchColumnIndices()Gets the indexes of the column to be searched.- Returns:
- the indexes of the column to be searched.
-
getMainIndex
public int getMainIndex()Gets the index of the column to be searched.- Returns:
- the index of the column to be searched.
-
setSearchColumnIndices
public void setSearchColumnIndices(int[] columnIndices) Sets the main indexes. Main indexes are the columns index which you want to be searched.- Parameters:
columnIndices
- the index of the columns to be searched. If empty, all columns will be searched.
-
setMainIndex
public void setMainIndex(int mainIndex) Sets the main index. Main index is the column index which you want to be searched.- Parameters:
mainIndex
- the index of the column to be searched. If -1, all columns will be searched.
-
isFindNextKey
Description copied from class:Searchable
Checks if the key is used as a key to find the next occurrence.- Overrides:
isFindNextKey
in classSearchable
- Parameters:
e
- the key event- Returns:
- true if the key in KeyEvent is a key to find the next occurrence. By default, down arrow key is used.
-
isFindPreviousKey
Description copied from class:Searchable
Checks if the key is used as a key to find the previous occurrence.- Overrides:
isFindPreviousKey
in classSearchable
- Parameters:
e
- the key event- Returns:
- true if the key in KeyEvent is a key to find the previous occurrence. By default, up arrow key is used.
-
tableChanged
- Specified by:
tableChanged
in interfaceTableModelListener
-
propertyChange
- Specified by:
propertyChange
in interfacePropertyChangeListener
-
isActivateKey
Description copied from class:Searchable
Checks if the key in KeyEvent should activate the search popup.- Overrides:
isActivateKey
in classSearchable
- Parameters:
e
- the key event- Returns:
- true if the keyChar is visible except space and tab.
-
isSelectedCellEditable
protected boolean isSelectedCellEditable()Checks if the selected cell is editable. If yes, we will not activate Searchable when key is typed.- Returns:
- true if the selected cell is editable.
-