Package com.jidesoft.swing
Class ListSearchable
java.lang.Object
com.jidesoft.swing.Searchable
com.jidesoft.swing.ListSearchable
- All Implemented Interfaces:
PropertyChangeListener,EventListener,ListDataListener
ListSearchable is an concrete implementation of Searchable that enables the search function in
JList. It's very simple to use it. Assuming you have a JList, all you need to do is to call
Now the JList will have the search function.
JList list = ....;
ListSearchable searchable = new ListSearchable(list);
JList list = ....;
ListSearchable searchable = new ListSearchable(list) {
protected String convertElementToString(Object object) {
...
}
};
Additional customization can be done on the base Searchable class such as background and foreground color,
keystrokes, case sensitivity.
JList actually has a simple searchable feature but has flaws. It will affect our searchable feature. To workaround
it, you can override getNextMatch method and always return -1 when you create your JList.
JList list = new JList(...) {
public int getNextMatch(String prefix, int startIndex, Position.Bias bias) {
return -1;
}
};
-
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 TypeMethodDescriptionvoidprotected StringconvertElementToString(Object object) Converts the element in Jlist to string.protected ObjectgetElementAt(int index) Gets the element at the specified index.protected intGets the total element count in the component.protected intGets the selected index in the component.voidvoidbooleanGet the flag if the ListSearchable should use the renderer in the list as its converter.voidvoidsetSelectedIndex(int index, boolean incremental) Sets the selected index.voidsetUseRendererAsConverter(boolean useRendererAsConverter) Set the flag if the ListSearchable should use the renderer in the list as its converter.voidUninstall 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, installListeners, isActivateKey, isCaseSensitive, isCountMatch, isDeactivateKey, isFindFirstKey, isFindLastKey, isFindNextKey, isFindPreviousKey, 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
-
ListSearchable
-
-
Method Details
-
uninstallListeners
public void uninstallListeners()Description copied from class:SearchableUninstall 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:
uninstallListenersin classSearchable
-
setSelectedIndex
public void setSelectedIndex(int index, boolean incremental) Description copied from class:SearchableSets 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:
setSelectedIndexin 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.
-
getSelectedIndex
protected int getSelectedIndex()Description copied from class:SearchableGets the selected index in the component. The concrete implementation should call methods on the component to retrieve the current selected index. If the component supports multiple selection, it's OK just return the index of the first selection.Here are some examples. In the case of JList, the index is the row index. In the case of JTree, the index is the row index too. In the case of JTable, depending on the selection mode, the index could be row index (in row selection mode), could be column index (in column selection mode) or could the cell index (in cell selection mode).
- Specified by:
getSelectedIndexin classSearchable- Returns:
- the selected index.
-
getElementAt
Description copied from class:SearchableGets 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:
getElementAtin classSearchable- Parameters:
index- the index- Returns:
- the element at the specified index.
-
getElementCount
protected int getElementCount()Description copied from class:SearchableGets 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:
getElementCountin classSearchable- Returns:
- the total element count.
-
convertElementToString
Converts the element in Jlist to string. The returned value will be thetoString()of whatever element that returned fromlist.getModel().getElementAt(i).- Specified by:
convertElementToStringin classSearchable- Parameters:
object- the object to be converted to string- Returns:
- the string representing the element in the JList.
-
contentsChanged
- Specified by:
contentsChangedin interfaceListDataListener
-
intervalAdded
- Specified by:
intervalAddedin interfaceListDataListener
-
intervalRemoved
- Specified by:
intervalRemovedin interfaceListDataListener
-
propertyChange
- Specified by:
propertyChangein interfacePropertyChangeListener
-
isUseRendererAsConverter
public boolean isUseRendererAsConverter()Get the flag if the ListSearchable should use the renderer in the list as its converter. The default value for this field is false so we can get higher performance. For AutoFilterBox, we will set it to false automatically.- Returns:
- true if you want to use the renderer as its converter. Otherwise false.
-
setUseRendererAsConverter
public void setUseRendererAsConverter(boolean useRendererAsConverter) Set the flag if the ListSearchable should use the renderer in the list as its converter.- Parameters:
useRendererAsConverter- the flag- See Also:
-