Mercurial > dive4elements > river
diff flys-client/src/main/java/de/intevation/flys/client/client/ui/TableFilter.java @ 863:9bb8b7a751ec
Added filter for the "description" row of helper input tables.
flys-client/trunk@2670 c6561f87-3c4e-4783-a992-168aeb5c3f6f
author | Raimund Renkert <raimund.renkert@intevation.de> |
---|---|
date | Wed, 07 Sep 2011 17:22:21 +0000 |
parents | |
children | 94d9c8353ca9 |
line wrap: on
line diff
--- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/flys-client/src/main/java/de/intevation/flys/client/client/ui/TableFilter.java Wed Sep 07 17:22:21 2011 +0000 @@ -0,0 +1,104 @@ +package de.intevation.flys.client.client.ui; + +import java.util.ArrayList; +import java.util.List; + +import com.google.gwt.core.client.GWT; + +import com.smartgwt.client.widgets.IButton; +import com.smartgwt.client.widgets.events.ClickEvent; +import com.smartgwt.client.widgets.events.ClickHandler; +import com.smartgwt.client.widgets.form.DynamicForm; +import com.smartgwt.client.widgets.form.fields.TextItem; +import com.smartgwt.client.widgets.form.fields.events.ChangedEvent; +import com.smartgwt.client.widgets.form.fields.events.ChangedHandler; +import com.smartgwt.client.widgets.form.fields.events.KeyPressEvent; +import com.smartgwt.client.widgets.form.fields.events.KeyPressHandler; +import com.smartgwt.client.widgets.layout.HLayout; + +import de.intevation.flys.client.client.event.FilterHandler; +import de.intevation.flys.client.client.event.StringFilterEvent; + + +/** + * @author <a href="mailto:ingo.weinzierl@intevation.de">Ingo Weinzierl</a> + */ +public class TableFilter +extends HLayout +implements ChangedHandler, ClickHandler, KeyPressHandler +{ + public static final String SEARCH_FIELD = "searchfield"; + + + protected List<FilterHandler> handlers; + + protected TextItem searchfield; + + + public TableFilter() { + super(); + searchfield = new TextItem(SEARCH_FIELD); + handlers = new ArrayList<FilterHandler>(); + + searchfield.addChangedHandler(this); + searchfield.addKeyPressHandler(this); + + DynamicForm form = new DynamicForm(); + form.setFields(searchfield); + + IButton clear = new IButton("Clear"); + clear.addClickHandler(this); + + addMember(form); + addMember(clear); + } + + + public void onChanged(ChangedEvent event) { + // This event handler is to slow... +// fireFilterCriteriaChanged(getSearchString()); + } + + + public void onKeyPress(KeyPressEvent event) { + //To deactivate "As you type" filter add + // ' && event.getKeyName().equals("Enter")' + // to the if-clause. + if (event != null) { + // fireFilterCriteriaChanged(getSearchString()); + } + } + + + public void onClick(ClickEvent event) { + searchfield.setValue(""); + fireFilterCriteriaChanged(""); + } + + + public void clearSearch() { + searchfield.setValue(""); + } + + + public String getSearchString() { + return searchfield.getValueAsString(); + } + + + public void addFilterHandler(FilterHandler handler) { + if (handler != null) { + handlers.add(handler); + } + } + + + protected void fireFilterCriteriaChanged(String searchstring) { + StringFilterEvent filter = new StringFilterEvent(searchstring); + + for (FilterHandler handler: handlers) { + handler.onFilterCriteriaChanged(filter); + } + } +} +// vim:set ts=4 sw=4 si et sta sts=4 fenc=utf8 :