diff gwt-client/src/main/java/org/dive4elements/river/client/client/ui/RangeTableFilter.java @ 5838:5aa05a7a34b7

Rename modules to more fitting names.
author Sascha L. Teichmann <teichmann@intevation.de>
date Thu, 25 Apr 2013 15:23:37 +0200
parents flys-client/src/main/java/org/dive4elements/river/client/client/ui/RangeTableFilter.java@821a02bbfb4e
children 172338b1407f
line wrap: on
line diff
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/gwt-client/src/main/java/org/dive4elements/river/client/client/ui/RangeTableFilter.java	Thu Apr 25 15:23:37 2013 +0200
@@ -0,0 +1,136 @@
+package org.dive4elements.river.client.client.ui;
+
+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 org.dive4elements.river.client.client.FLYSConstants;
+import org.dive4elements.river.client.client.event.FilterHandler;
+import org.dive4elements.river.client.client.event.RangeFilterEvent;
+import org.dive4elements.river.client.client.utils.DoubleValidator;
+
+import java.util.ArrayList;
+import java.util.List;
+import java.util.Map;
+
+/**
+ * @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;
+    protected DynamicForm filterForm;
+
+    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);
+
+        filterForm = new DynamicForm();
+        filterForm.setNumCols(4);
+        filterForm.setFields(fromField, toField);
+
+        addMember(filterForm);
+    }
+
+
+    @Override
+    public void onChanged(ChangedEvent event) {
+        // This event handler is to slow...
+//        fireFilterCriteriaChanged(getSearchString());
+    }
+
+
+    @Override
+    public void onKeyUp(KeyUpEvent event) {
+        DoubleValidator validator = new DoubleValidator();
+        Map<?,?> errors = filterForm.getErrors();
+        if(event.getItem().getValue() != null &&
+           !validator.validate(event.getItem(), errors)) {
+            filterForm.setErrors(errors, true);
+            GWT.log("no valid input!");
+            return;
+        }
+        else {
+            errors.clear();
+            filterForm.setErrors(errors, true);
+        }
+        //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);
+        }
+    }
+
+
+    @Override
+    public void clear() {
+        fromField.clearValue();
+        toField.clearValue();
+        fireFilterCriteriaChanged("", "");
+    }
+}
+// vim:set ts=4 sw=4 si et sta sts=4 fenc=utf8 :

http://dive4elements.wald.intevation.org