Mercurial > dive4elements > river
diff flys-client/src/main/java/de/intevation/flys/client/client/ui/RangeTableFilter.java @ 1534:98123d34529b
Added UI parts and event for filtering distances and locations.
flys-client/trunk@3749 c6561f87-3c4e-4783-a992-168aeb5c3f6f
author | Raimund Renkert <raimund.renkert@intevation.de> |
---|---|
date | Mon, 23 Jan 2012 11:07:38 +0000 |
parents | |
children | 4f4d29404dba |
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/RangeTableFilter.java Mon Jan 23 11:07:38 2012 +0000 @@ -0,0 +1,119 @@ +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.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.KeyUpEvent; +import com.smartgwt.client.widgets.form.fields.events.KeyUpHandler; +import com.smartgwt.client.widgets.layout.HLayout; + +import de.intevation.flys.client.client.event.FilterHandler; +import de.intevation.flys.client.client.event.RangeFilterEvent; +import de.intevation.flys.client.client.FLYSConstants; + + +/** + * @author <a href="mailto:raimund.renkert@intevation.de">Raimund Renkert</a> + */ +public class RangeTableFilter +extends HLayout +implements ChangedHandler, KeyUpHandler +{ + /** The message class that provides i18n strings. */ + protected FLYSConstants MESSAGES = GWT.create(FLYSConstants.class); + + protected List<FilterHandler> handlers; + + protected TextItem fromField; + protected TextItem toField; + + public RangeTableFilter() { + super(); + fromField = new TextItem(); + fromField.setTitle(MESSAGES.from()); + fromField.setWidth(60); + toField = new TextItem(); + toField.setTitle(MESSAGES.to()); + toField.setWidth(60); + + + handlers = new ArrayList<FilterHandler>(); + + fromField.addChangedHandler(this); + fromField.addKeyUpHandler(this); + toField.addChangedHandler(this); + toField.addKeyUpHandler(this); + + DynamicForm form = new DynamicForm(); + form.setNumCols(4); + form.setFields(fromField, toField); + + addMember(form); + } + + + public void onChanged(ChangedEvent event) { + // This event handler is to slow... +// fireFilterCriteriaChanged(getSearchString()); + } + + + public void onKeyUp(KeyUpEvent event) { + //To deactivate "As you type" filter add + // ' && event.getKeyName().equals("Enter")' + // to the if-clause. + if (event != null) { + fireFilterCriteriaChanged(getFrom(), getTo()); + } + } + + + public String getFrom() { + if (fromField.getValueAsString() == null) { + return ""; + } + else { + return fromField.getValueAsString(); + } + } + + + public String getTo() { + if (toField.getValueAsString() == null) { + return ""; + } + else { + return toField.getValueAsString(); + } + } + + + public void addFilterHandler(FilterHandler handler) { + if (handler != null) { + handlers.add(handler); + } + } + + + protected void fireFilterCriteriaChanged(String from, String to) { + RangeFilterEvent filter = new RangeFilterEvent(from, to); + + for (FilterHandler handler: handlers) { + handler.onFilterCriteriaChanged(filter); + } + } + + + public void clear() { + fromField.clearValue(); + toField.clearValue(); + fireFilterCriteriaChanged("", ""); + } +} +// vim:set ts=4 sw=4 si et sta sts=4 fenc=utf8 :