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

ca.odell.glazedlists.swt.SearchEngineTextWidgetMatcherEditor Maven / Gradle / Ivy

/* Glazed Lists                                                 (c) 2003-2007 */
/* http://publicobject.com/glazedlists/                      publicobject.com,*/
/*                                                     O'Dell Engineering Ltd.*/

package ca.odell.glazedlists.swt;

import ca.odell.glazedlists.GlazedLists;
import ca.odell.glazedlists.TextFilterator;
import ca.odell.glazedlists.matchers.MatcherEditor;
import ca.odell.glazedlists.matchers.SearchEngineTextMatcherEditor;

import org.eclipse.swt.events.SelectionEvent;
import org.eclipse.swt.events.SelectionListener;
import org.eclipse.swt.widgets.Text;

/**
 * A {@link MatcherEditor} that matches elements that contain the filter text located
 * within a {@link Text} field. This {@link TextWidgetMatcherEditor} is directly
 * coupled with a {@link Text} that is meant to emulate a search engine's text box.
 * This matcher is fully concrete for use in SWT applications that want to present a text
 * filtering interface similiar to that of Google and other search engines.
 *
 * 

If this {@link MatcherEditor} must be garbage collected before the underlying * Text, the listener can be unregistered by calling {@link #dispose()}. * * @author Holger Brands */ public class SearchEngineTextWidgetMatcherEditor extends SearchEngineTextMatcherEditor { /** the filter edit text field. */ private Text text; /** the listener that triggers refiltering when events occur. */ private FilterChangeListener filterChangeListener = new FilterChangeListener(); /** * Creates a TextWidgetMatcherEditor bound to the provided {@link Text} * with the given textFilterator. * * @param text the {@link Text} widget that drives the text-filtering * @param textFilterator an object capable of producing Strings from the * objects being filtered. If textFilterator is * null then all filtered objects are expected to * implement {@link ca.odell.glazedlists.TextFilterable}. * * @see GlazedLists#textFilterator(String[]) */ public SearchEngineTextWidgetMatcherEditor(Text text, TextFilterator textFilterator) { super(textFilterator); this.text = text; this.text.addSelectionListener(filterChangeListener); // if the document is non-empty to begin with! refilter(this.text.getText()); } /** * Gets a SelectionListener that refilters the list when it is fired. This * listener can be used to filter when the user presses a 'Search' button. */ public SelectionListener getFilterSelectionListener() { return filterChangeListener; } /** * A cleanup method which stops this MatcherEditor from listening to * changes on the {@link Text} component, thus freeing the * MatcherEditor to be garbage collected. Garbage collection could be * blocked if you have registered the SelectionListener provided by * {@link #getFilterSelectionListener()} and not removed that listener * (of disposed of the widget it was registered to). */ public void dispose() { text.removeSelectionListener(filterChangeListener); } /** * Implements the SelectionListener interface for text filter updates. When * the user clicks a button (supplied by external code), this * SelectionListener can be used to update the filter in response. */ private class FilterChangeListener implements SelectionListener { @Override public void widgetSelected(SelectionEvent e) { refilter(text.getText()); } @Override public void widgetDefaultSelected(SelectionEvent e) { refilter(text.getText()); } } }





© 2015 - 2025 Weber Informatics LLC | Privacy Policy