All Downloads are FREE. Search and download functionalities are using the official Maven repository.

com.jidesoft.swing.SearchableUtils Maven / Gradle / Ivy

There is a newer version: 3.6.18
Show newest version
/*
 * @(#)SearchableUtils.java
 *
 * Copyright 2002 - 2004 JIDE Software Inc. All rights reserved.
 */
package com.jidesoft.swing;

import javax.swing.*;
import javax.swing.text.JTextComponent;

/**
 * Utility class to make component searchable. It's very easy to use this class. In order to make a component, all you
 * need to do is to call
 * 
 * SearchableUtils.installSearchable(component);
 * 
* The component could be a JList, JTree or JTable. If you need to further customize some attributes of Searchable, you * can assign a variable that returns from installSearchable(). *
 * Searchable searchable = SearchableUtils.installSearchable(component);
 * // further configure it
 * searchable.setCaseSensitive(true);
 * // ...
 * 
* Usually you don't need to uninstall the searchable from the component. But if for some reason, you need to disable * the searchable feature of the component, you can call uninstallSearchable(). *
 * Searchable searchable = SearchableUtils.installSearchable(component);
 * // ...
 * // Now disable it
 * SearchableUtils.uninstallSearchable(searchable);
 * 
*

* There is a small trick that you should know. JTree and JList implemented partially the quick search feature so that * when you type in the first character, it will jump to the first occurrence. This feature sometimes conflicts with the * Searchable we provided. So it'd better if you disable the JTree or JList default feature by creating JTree and JList * with getNextMatch method overridden. See below *

 * JTree tree = new JTree(...) {
 *     public TreePath getNextMatch(String prefix, int startingRow, Position.Bias bias) {
 *         return null;
 *     }
 * };
 * 

* JList list = new JList(...){ * public int getNextMatch(String prefix, int startIndex, Position.Bias bias) { * return -1; * } * }; *

*/ public class SearchableUtils { /** * Installs the searchable function onto a JTree. * * @param tree the JTree to install searchable * @return A TreeSearchable */ public static TreeSearchable installSearchable(JTree tree) { return new TreeSearchable(tree); } /** * Installs the searchable function onto a JTable. * * @param table the JTable to install searchable * @return A TableSearchable */ public static TableSearchable installSearchable(JTable table) { return new TableSearchable(table); } /** * Installs the searchable function onto a JList. * * @param list the JList to install searchable * @return A ListSearchable */ public static ListSearchable installSearchable(JList list) { return new ListSearchable(list); } /** * Installs the searchable function onto a JComboBox. * * @param combobox the combo box to install searchable * @return A ComboBoxSearchable */ public static ComboBoxSearchable installSearchable(JComboBox combobox) { return new ComboBoxSearchable(combobox); } /** * Installs the searchable function onto a JTextComponent. * * @param textComponent the text component to install searchable * @return A TextComponentSearchable */ public static TextComponentSearchable installSearchable(JTextComponent textComponent) { return new TextComponentSearchable(textComponent); } /** * Uninstall the searchable that was installed to a component * * @param searchable the searchable. */ public static void uninstallSearchable(Searchable searchable) { if (searchable != null) { searchable.hidePopup(); searchable.uninstallListeners(); if (searchable.getComponent() instanceof JComponent) { Object clientProperty = ((JComponent) searchable.getComponent()).getClientProperty(Searchable.CLIENT_PROPERTY_SEARCHABLE); if (clientProperty == searchable) { ((JComponent) searchable.getComponent()).putClientProperty(Searchable.CLIENT_PROPERTY_SEARCHABLE, null); } } } } /** * Uninstall the searchable that was installed to a component * * @param component the component that has a searchable installed. */ public static void uninstallSearchable(JComponent component) { if (component != null) { Object clientProperty = component.getClientProperty(Searchable.CLIENT_PROPERTY_SEARCHABLE); if (clientProperty instanceof Searchable) { Searchable searchable = ((Searchable) clientProperty); searchable.hidePopup(); searchable.uninstallListeners(); component.putClientProperty(Searchable.CLIENT_PROPERTY_SEARCHABLE, null); } } } }




© 2015 - 2025 Weber Informatics LLC | Privacy Policy