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