/** * Copyright (C) 2015 Valkyrie RCP * * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. * You may obtain a copy of the License at * * http://www.apache.org/licenses/LICENSE-2.0 * * Unless required by applicable law or agreed to in writing, software * distributed under the License is distributed on an "AS IS" BASIS, * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. * See the License for the specific language governing permissions and * limitations under the License. */ package org.valkyriercp.component; import com.jidesoft.swing.SearchableUtils; import com.jidesoft.swing.TableSearchable; import org.valkyriercp.form.builder.AbstractFormComponentInterceptor; import javax.swing.*; import javax.swing.text.JTextComponent; /** * Interceptor that installs the <code>Searchable</code> functionality provided by Jide OSS. * <p /> * This class implements singleton. * * @author <a href = "mailto:julio.arguello@gmail.com" >Julio Arg????ello (JAF)</a> */ public final class SearchableInterceptor extends AbstractFormComponentInterceptor { /** * The singleton instance. */ private static final SearchableInterceptor INSTANCE = new SearchableInterceptor(); /** * This class implements singleton. */ private SearchableInterceptor() { } /** * Installs a <code>Searchable</code> into the given combobox. * * @param comboBox * the target combobox. * @return the target combobox. */ private JComboBox installSearchable(JComboBox comboBox) { SearchableUtils.installSearchable(comboBox); return comboBox; } /** * Installs a <code>Searchable</code> into the given list. * * @param list * the target list. * @return the target list. */ private JList installSearchable(JList list) { SearchableUtils.installSearchable(list); return list; } /** * Installs a <code>Searchable</code> into the given table. * * @param table * the target table. * @return the target table. */ private JTable installSearchable(JTable table) { final TableSearchable tableSearchable = SearchableUtils.installSearchable(table); // Search for all columns tableSearchable.setMainIndex(-1); return table; } /** * Installs a <code>Searchable</code> into the given text component. * * @param <T> * the type of the text component. * * @param textComponent * the target text component. * @return the text component. */ private <T extends JTextComponent> T installSearchable(T textComponent) { SearchableUtils.installSearchable(textComponent); return textComponent; } /** * Installs a <code>Searchable</code> into the given component. * * @param propertyName * the property name. * @param component * the target component. */ @Override public void processComponent(String propertyName, JComponent component) { if (component instanceof JComboBox) { this.installSearchable((JComboBox) component); } else if (component instanceof JList) { this.installSearchable((JList) component); } else if (component instanceof JTable) { this.installSearchable((JTable) component); } else if (component instanceof JTextComponent) { this.installSearchable((JTextComponent) component); } } /** * Gets the singleton instance. * * @return the singleton instance. */ public static SearchableInterceptor getInstance() { return SearchableInterceptor.INSTANCE; } }