comparison 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
comparison
equal deleted inserted replaced
5837:d9901a08d0a6 5838:5aa05a7a34b7
1 package org.dive4elements.river.client.client.ui;
2
3 import com.google.gwt.core.client.GWT;
4
5 import com.smartgwt.client.widgets.form.DynamicForm;
6 import com.smartgwt.client.widgets.form.fields.TextItem;
7 import com.smartgwt.client.widgets.form.fields.events.ChangedEvent;
8 import com.smartgwt.client.widgets.form.fields.events.ChangedHandler;
9 import com.smartgwt.client.widgets.form.fields.events.KeyUpEvent;
10 import com.smartgwt.client.widgets.form.fields.events.KeyUpHandler;
11 import com.smartgwt.client.widgets.layout.HLayout;
12
13 import org.dive4elements.river.client.client.FLYSConstants;
14 import org.dive4elements.river.client.client.event.FilterHandler;
15 import org.dive4elements.river.client.client.event.RangeFilterEvent;
16 import org.dive4elements.river.client.client.utils.DoubleValidator;
17
18 import java.util.ArrayList;
19 import java.util.List;
20 import java.util.Map;
21
22 /**
23 * @author <a href="mailto:raimund.renkert@intevation.de">Raimund Renkert</a>
24 */
25 public class RangeTableFilter
26 extends HLayout
27 implements ChangedHandler, KeyUpHandler
28 {
29 /** The message class that provides i18n strings. */
30 protected FLYSConstants MESSAGES = GWT.create(FLYSConstants.class);
31
32 protected List<FilterHandler> handlers;
33
34 protected TextItem fromField;
35 protected TextItem toField;
36 protected DynamicForm filterForm;
37
38 public RangeTableFilter() {
39 super();
40 fromField = new TextItem();
41 fromField.setTitle(MESSAGES.from());
42 fromField.setWidth(60);
43 toField = new TextItem();
44 toField.setTitle(MESSAGES.to());
45 toField.setWidth(60);
46
47
48 handlers = new ArrayList<FilterHandler>();
49
50 fromField.addChangedHandler(this);
51 fromField.addKeyUpHandler(this);
52 toField.addChangedHandler(this);
53 toField.addKeyUpHandler(this);
54
55 filterForm = new DynamicForm();
56 filterForm.setNumCols(4);
57 filterForm.setFields(fromField, toField);
58
59 addMember(filterForm);
60 }
61
62
63 @Override
64 public void onChanged(ChangedEvent event) {
65 // This event handler is to slow...
66 // fireFilterCriteriaChanged(getSearchString());
67 }
68
69
70 @Override
71 public void onKeyUp(KeyUpEvent event) {
72 DoubleValidator validator = new DoubleValidator();
73 Map<?,?> errors = filterForm.getErrors();
74 if(event.getItem().getValue() != null &&
75 !validator.validate(event.getItem(), errors)) {
76 filterForm.setErrors(errors, true);
77 GWT.log("no valid input!");
78 return;
79 }
80 else {
81 errors.clear();
82 filterForm.setErrors(errors, true);
83 }
84 //To deactivate "As you type" filter add
85 // ' && event.getKeyName().equals("Enter")'
86 // to the if-clause.
87 if (event != null) {
88 fireFilterCriteriaChanged(getFrom(), getTo());
89 }
90 }
91
92
93 public String getFrom() {
94 if (fromField.getValueAsString() == null) {
95 return "";
96 }
97 else {
98 return fromField.getValueAsString();
99 }
100 }
101
102
103 public String getTo() {
104 if (toField.getValueAsString() == null) {
105 return "";
106 }
107 else {
108 return toField.getValueAsString();
109 }
110 }
111
112
113 public void addFilterHandler(FilterHandler handler) {
114 if (handler != null) {
115 handlers.add(handler);
116 }
117 }
118
119
120 protected void fireFilterCriteriaChanged(String from, String to) {
121 RangeFilterEvent filter = new RangeFilterEvent(from, to);
122
123 for (FilterHandler handler: handlers) {
124 handler.onFilterCriteriaChanged(filter);
125 }
126 }
127
128
129 @Override
130 public void clear() {
131 fromField.clearValue();
132 toField.clearValue();
133 fireFilterCriteriaChanged("", "");
134 }
135 }
136 // vim:set ts=4 sw=4 si et sta sts=4 fenc=utf8 :

http://dive4elements.wald.intevation.org