annotate flys-client/src/main/java/de/intevation/flys/client/client/ui/LocationPicker.java @ 2454:99bd77501188

Issue 514. Remove filter if selection changes from description to range. flys-client/trunk@4139 c6561f87-3c4e-4783-a992-168aeb5c3f6f
author Raimund Renkert <raimund.renkert@intevation.de>
date Tue, 13 Mar 2012 17:24:52 +0000
parents 4b773cfd11b5
children 480de0dbca8e
rev   line source
1590
4b773cfd11b5 Refactoring to ease code-reuse.
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents:
diff changeset
1 package de.intevation.flys.client.client.ui;
4b773cfd11b5 Refactoring to ease code-reuse.
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents:
diff changeset
2
4b773cfd11b5 Refactoring to ease code-reuse.
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents:
diff changeset
3 import java.util.LinkedHashMap;
4b773cfd11b5 Refactoring to ease code-reuse.
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents:
diff changeset
4
4b773cfd11b5 Refactoring to ease code-reuse.
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents:
diff changeset
5 import com.google.gwt.core.client.GWT;
4b773cfd11b5 Refactoring to ease code-reuse.
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents:
diff changeset
6 import com.google.gwt.i18n.client.NumberFormat;
4b773cfd11b5 Refactoring to ease code-reuse.
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents:
diff changeset
7
4b773cfd11b5 Refactoring to ease code-reuse.
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents:
diff changeset
8 import com.smartgwt.client.data.Criteria;
4b773cfd11b5 Refactoring to ease code-reuse.
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents:
diff changeset
9 import com.smartgwt.client.data.Criterion;
4b773cfd11b5 Refactoring to ease code-reuse.
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents:
diff changeset
10 import com.smartgwt.client.data.AdvancedCriteria;
4b773cfd11b5 Refactoring to ease code-reuse.
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents:
diff changeset
11 import com.smartgwt.client.types.OperatorId;
4b773cfd11b5 Refactoring to ease code-reuse.
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents:
diff changeset
12
4b773cfd11b5 Refactoring to ease code-reuse.
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents:
diff changeset
13 import com.smartgwt.client.widgets.form.DynamicForm;
4b773cfd11b5 Refactoring to ease code-reuse.
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents:
diff changeset
14 import com.smartgwt.client.widgets.form.fields.events.ChangedHandler;
4b773cfd11b5 Refactoring to ease code-reuse.
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents:
diff changeset
15 import com.smartgwt.client.widgets.form.fields.events.ChangedEvent;
4b773cfd11b5 Refactoring to ease code-reuse.
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents:
diff changeset
16
4b773cfd11b5 Refactoring to ease code-reuse.
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents:
diff changeset
17 import com.smartgwt.client.widgets.form.fields.SelectItem;
4b773cfd11b5 Refactoring to ease code-reuse.
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents:
diff changeset
18 import com.smartgwt.client.widgets.form.fields.StaticTextItem;
4b773cfd11b5 Refactoring to ease code-reuse.
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents:
diff changeset
19 import com.smartgwt.client.widgets.layout.HLayout;
4b773cfd11b5 Refactoring to ease code-reuse.
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents:
diff changeset
20 import com.smartgwt.client.widgets.grid.ListGrid;
4b773cfd11b5 Refactoring to ease code-reuse.
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents:
diff changeset
21 import com.smartgwt.client.widgets.grid.ListGridField;
4b773cfd11b5 Refactoring to ease code-reuse.
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents:
diff changeset
22 import com.smartgwt.client.widgets.grid.ListGridRecord;
4b773cfd11b5 Refactoring to ease code-reuse.
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents:
diff changeset
23 import com.smartgwt.client.widgets.grid.CellFormatter;
4b773cfd11b5 Refactoring to ease code-reuse.
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents:
diff changeset
24 import com.smartgwt.client.widgets.grid.events.RecordClickHandler;
4b773cfd11b5 Refactoring to ease code-reuse.
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents:
diff changeset
25
4b773cfd11b5 Refactoring to ease code-reuse.
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents:
diff changeset
26 import com.smartgwt.client.types.ListGridFieldType;
4b773cfd11b5 Refactoring to ease code-reuse.
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents:
diff changeset
27 import com.smartgwt.client.types.Alignment;
4b773cfd11b5 Refactoring to ease code-reuse.
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents:
diff changeset
28
4b773cfd11b5 Refactoring to ease code-reuse.
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents:
diff changeset
29 import de.intevation.flys.client.client.FLYSConstants;
4b773cfd11b5 Refactoring to ease code-reuse.
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents:
diff changeset
30 import de.intevation.flys.client.client.event.FilterHandler;
4b773cfd11b5 Refactoring to ease code-reuse.
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents:
diff changeset
31 import de.intevation.flys.client.client.event.StringFilterEvent;
4b773cfd11b5 Refactoring to ease code-reuse.
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents:
diff changeset
32 import de.intevation.flys.client.client.event.RangeFilterEvent;
4b773cfd11b5 Refactoring to ease code-reuse.
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents:
diff changeset
33
4b773cfd11b5 Refactoring to ease code-reuse.
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents:
diff changeset
34 /**
4b773cfd11b5 Refactoring to ease code-reuse.
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents:
diff changeset
35 * Bundle widgets and handler for a lacation input helper.
4b773cfd11b5 Refactoring to ease code-reuse.
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents:
diff changeset
36 *
4b773cfd11b5 Refactoring to ease code-reuse.
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents:
diff changeset
37 * Note that the construction is weird and driven by issues that arose due to
4b773cfd11b5 Refactoring to ease code-reuse.
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents:
diff changeset
38 * reasons not understood.
4b773cfd11b5 Refactoring to ease code-reuse.
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents:
diff changeset
39 */
4b773cfd11b5 Refactoring to ease code-reuse.
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents:
diff changeset
40 public class LocationPicker
4b773cfd11b5 Refactoring to ease code-reuse.
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents:
diff changeset
41 implements FilterHandler
4b773cfd11b5 Refactoring to ease code-reuse.
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents:
diff changeset
42 {
4b773cfd11b5 Refactoring to ease code-reuse.
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents:
diff changeset
43 /** The message class that provides i18n strings.*/
4b773cfd11b5 Refactoring to ease code-reuse.
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents:
diff changeset
44 protected FLYSConstants MSG = GWT.create(FLYSConstants.class);
4b773cfd11b5 Refactoring to ease code-reuse.
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents:
diff changeset
45
4b773cfd11b5 Refactoring to ease code-reuse.
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents:
diff changeset
46 /** The locations table. */
4b773cfd11b5 Refactoring to ease code-reuse.
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents:
diff changeset
47 protected ListGrid locationTable;
4b773cfd11b5 Refactoring to ease code-reuse.
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents:
diff changeset
48
4b773cfd11b5 Refactoring to ease code-reuse.
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents:
diff changeset
49 protected HLayout filterLayout;
4b773cfd11b5 Refactoring to ease code-reuse.
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents:
diff changeset
50
4b773cfd11b5 Refactoring to ease code-reuse.
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents:
diff changeset
51 DynamicForm resultCountForm;
4b773cfd11b5 Refactoring to ease code-reuse.
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents:
diff changeset
52
4b773cfd11b5 Refactoring to ease code-reuse.
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents:
diff changeset
53 RecordClickHandler handler;
4b773cfd11b5 Refactoring to ease code-reuse.
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents:
diff changeset
54
4b773cfd11b5 Refactoring to ease code-reuse.
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents:
diff changeset
55 /** Text to show number of matched items when filtered. */
4b773cfd11b5 Refactoring to ease code-reuse.
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents:
diff changeset
56 protected StaticTextItem filterResultCount;
4b773cfd11b5 Refactoring to ease code-reuse.
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents:
diff changeset
57
4b773cfd11b5 Refactoring to ease code-reuse.
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents:
diff changeset
58
4b773cfd11b5 Refactoring to ease code-reuse.
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents:
diff changeset
59 public LocationPicker(RecordClickHandler handler) {
4b773cfd11b5 Refactoring to ease code-reuse.
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents:
diff changeset
60 locationTable = new ListGrid();
4b773cfd11b5 Refactoring to ease code-reuse.
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents:
diff changeset
61 locationTable.setShowHeaderContextMenu(false);
4b773cfd11b5 Refactoring to ease code-reuse.
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents:
diff changeset
62 this.handler = handler;
4b773cfd11b5 Refactoring to ease code-reuse.
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents:
diff changeset
63 }
4b773cfd11b5 Refactoring to ease code-reuse.
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents:
diff changeset
64
4b773cfd11b5 Refactoring to ease code-reuse.
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents:
diff changeset
65 public void prepareFilter() {
4b773cfd11b5 Refactoring to ease code-reuse.
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents:
diff changeset
66
4b773cfd11b5 Refactoring to ease code-reuse.
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents:
diff changeset
67 filterResultCount = new StaticTextItem(MSG.resultCount());
4b773cfd11b5 Refactoring to ease code-reuse.
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents:
diff changeset
68 filterResultCount.setTitleAlign(Alignment.LEFT);
4b773cfd11b5 Refactoring to ease code-reuse.
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents:
diff changeset
69 filterResultCount.setTitleStyle("color: #000");
4b773cfd11b5 Refactoring to ease code-reuse.
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents:
diff changeset
70
4b773cfd11b5 Refactoring to ease code-reuse.
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents:
diff changeset
71 final TableFilter filter = new TableFilter();
4b773cfd11b5 Refactoring to ease code-reuse.
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents:
diff changeset
72 filter.setHeight("30px");
4b773cfd11b5 Refactoring to ease code-reuse.
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents:
diff changeset
73 filter.addFilterHandler(this);
4b773cfd11b5 Refactoring to ease code-reuse.
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents:
diff changeset
74
4b773cfd11b5 Refactoring to ease code-reuse.
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents:
diff changeset
75 final RangeTableFilter filterRange = new RangeTableFilter();
4b773cfd11b5 Refactoring to ease code-reuse.
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents:
diff changeset
76 filterRange.setHeight("30px");
4b773cfd11b5 Refactoring to ease code-reuse.
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents:
diff changeset
77 filterRange.addFilterHandler(this);
4b773cfd11b5 Refactoring to ease code-reuse.
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents:
diff changeset
78 filterRange.setVisible(false);
4b773cfd11b5 Refactoring to ease code-reuse.
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents:
diff changeset
79
4b773cfd11b5 Refactoring to ease code-reuse.
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents:
diff changeset
80 SelectItem filterCriteria = new SelectItem();
4b773cfd11b5 Refactoring to ease code-reuse.
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents:
diff changeset
81 filterCriteria.setShowTitle(false);
4b773cfd11b5 Refactoring to ease code-reuse.
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents:
diff changeset
82 filterCriteria.setWidth(100);
4b773cfd11b5 Refactoring to ease code-reuse.
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents:
diff changeset
83 filterCriteria.addChangedHandler(new ChangedHandler() {
4b773cfd11b5 Refactoring to ease code-reuse.
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents:
diff changeset
84 public void onChanged(ChangedEvent e) {
4b773cfd11b5 Refactoring to ease code-reuse.
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents:
diff changeset
85 if(e.getValue().toString().equals("range")) {
4b773cfd11b5 Refactoring to ease code-reuse.
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents:
diff changeset
86 filterRange.setVisible(true);
4b773cfd11b5 Refactoring to ease code-reuse.
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents:
diff changeset
87 filter.setVisible(false);
4b773cfd11b5 Refactoring to ease code-reuse.
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents:
diff changeset
88 filter.clear();
4b773cfd11b5 Refactoring to ease code-reuse.
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents:
diff changeset
89 filterResultCount.setValue("");
4b773cfd11b5 Refactoring to ease code-reuse.
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents:
diff changeset
90 }
4b773cfd11b5 Refactoring to ease code-reuse.
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents:
diff changeset
91 else {
4b773cfd11b5 Refactoring to ease code-reuse.
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents:
diff changeset
92 filterRange.setVisible(false);
4b773cfd11b5 Refactoring to ease code-reuse.
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents:
diff changeset
93 filterRange.clear();
4b773cfd11b5 Refactoring to ease code-reuse.
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents:
diff changeset
94 filter.setVisible(true);
4b773cfd11b5 Refactoring to ease code-reuse.
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents:
diff changeset
95 filterResultCount.setValue("");
4b773cfd11b5 Refactoring to ease code-reuse.
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents:
diff changeset
96 }
4b773cfd11b5 Refactoring to ease code-reuse.
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents:
diff changeset
97 }
4b773cfd11b5 Refactoring to ease code-reuse.
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents:
diff changeset
98 });
4b773cfd11b5 Refactoring to ease code-reuse.
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents:
diff changeset
99
4b773cfd11b5 Refactoring to ease code-reuse.
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents:
diff changeset
100 LinkedHashMap<String, String> filterMap =
4b773cfd11b5 Refactoring to ease code-reuse.
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents:
diff changeset
101 new LinkedHashMap<String, String>();
4b773cfd11b5 Refactoring to ease code-reuse.
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents:
diff changeset
102 filterMap.put("description", MSG.description());
4b773cfd11b5 Refactoring to ease code-reuse.
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents:
diff changeset
103 filterMap.put("range", MSG.range());
4b773cfd11b5 Refactoring to ease code-reuse.
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents:
diff changeset
104 filterCriteria.setValueMap(filterMap);
4b773cfd11b5 Refactoring to ease code-reuse.
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents:
diff changeset
105 filterCriteria.setValue("description");
4b773cfd11b5 Refactoring to ease code-reuse.
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents:
diff changeset
106
4b773cfd11b5 Refactoring to ease code-reuse.
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents:
diff changeset
107 DynamicForm form = new DynamicForm();
4b773cfd11b5 Refactoring to ease code-reuse.
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents:
diff changeset
108 form.setFields(filterCriteria);
4b773cfd11b5 Refactoring to ease code-reuse.
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents:
diff changeset
109
4b773cfd11b5 Refactoring to ease code-reuse.
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents:
diff changeset
110 resultCountForm = new DynamicForm();
4b773cfd11b5 Refactoring to ease code-reuse.
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents:
diff changeset
111 resultCountForm.setFields(filterResultCount);
4b773cfd11b5 Refactoring to ease code-reuse.
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents:
diff changeset
112
4b773cfd11b5 Refactoring to ease code-reuse.
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents:
diff changeset
113 filterLayout = new HLayout();
4b773cfd11b5 Refactoring to ease code-reuse.
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents:
diff changeset
114 filterLayout.addMember(form);
4b773cfd11b5 Refactoring to ease code-reuse.
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents:
diff changeset
115 filterLayout.addMember(filter);
4b773cfd11b5 Refactoring to ease code-reuse.
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents:
diff changeset
116 filterLayout.addMember(filterRange);
4b773cfd11b5 Refactoring to ease code-reuse.
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents:
diff changeset
117 }
4b773cfd11b5 Refactoring to ease code-reuse.
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents:
diff changeset
118
4b773cfd11b5 Refactoring to ease code-reuse.
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents:
diff changeset
119
4b773cfd11b5 Refactoring to ease code-reuse.
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents:
diff changeset
120 /** Access the main widget, a table in which locations can be chosen. */
4b773cfd11b5 Refactoring to ease code-reuse.
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents:
diff changeset
121 public ListGrid getLocationTable() {
4b773cfd11b5 Refactoring to ease code-reuse.
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents:
diff changeset
122 return locationTable;
4b773cfd11b5 Refactoring to ease code-reuse.
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents:
diff changeset
123 }
4b773cfd11b5 Refactoring to ease code-reuse.
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents:
diff changeset
124
4b773cfd11b5 Refactoring to ease code-reuse.
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents:
diff changeset
125
4b773cfd11b5 Refactoring to ease code-reuse.
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents:
diff changeset
126 /** Access the 'form' that shows the filter result count. */
4b773cfd11b5 Refactoring to ease code-reuse.
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents:
diff changeset
127 public DynamicForm getResultCountForm() {
4b773cfd11b5 Refactoring to ease code-reuse.
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents:
diff changeset
128 return resultCountForm;
4b773cfd11b5 Refactoring to ease code-reuse.
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents:
diff changeset
129 }
4b773cfd11b5 Refactoring to ease code-reuse.
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents:
diff changeset
130
4b773cfd11b5 Refactoring to ease code-reuse.
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents:
diff changeset
131
4b773cfd11b5 Refactoring to ease code-reuse.
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents:
diff changeset
132 /** Access the layout containing filter stuff. */
4b773cfd11b5 Refactoring to ease code-reuse.
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents:
diff changeset
133 public HLayout getFilterLayout() {
4b773cfd11b5 Refactoring to ease code-reuse.
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents:
diff changeset
134 return filterLayout;
4b773cfd11b5 Refactoring to ease code-reuse.
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents:
diff changeset
135 }
4b773cfd11b5 Refactoring to ease code-reuse.
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents:
diff changeset
136
4b773cfd11b5 Refactoring to ease code-reuse.
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents:
diff changeset
137
4b773cfd11b5 Refactoring to ease code-reuse.
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents:
diff changeset
138 /**
4b773cfd11b5 Refactoring to ease code-reuse.
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents:
diff changeset
139 * This method creates a table that contains the location values.
4b773cfd11b5 Refactoring to ease code-reuse.
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents:
diff changeset
140 */
4b773cfd11b5 Refactoring to ease code-reuse.
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents:
diff changeset
141 protected void createLocationTable(/*RecordClickHandler handler*/) {
4b773cfd11b5 Refactoring to ease code-reuse.
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents:
diff changeset
142 GWT.log("Create Location Table in LocationPicker");
4b773cfd11b5 Refactoring to ease code-reuse.
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents:
diff changeset
143
4b773cfd11b5 Refactoring to ease code-reuse.
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents:
diff changeset
144 String baseUrl = GWT.getHostPageBaseURL();
4b773cfd11b5 Refactoring to ease code-reuse.
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents:
diff changeset
145
4b773cfd11b5 Refactoring to ease code-reuse.
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents:
diff changeset
146 locationTable.setWidth100();
4b773cfd11b5 Refactoring to ease code-reuse.
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents:
diff changeset
147 locationTable.setShowRecordComponents(true);
4b773cfd11b5 Refactoring to ease code-reuse.
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents:
diff changeset
148 locationTable.setShowRecordComponentsByCell(true);
4b773cfd11b5 Refactoring to ease code-reuse.
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents:
diff changeset
149 locationTable.setHeight100();
4b773cfd11b5 Refactoring to ease code-reuse.
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents:
diff changeset
150 locationTable.setEmptyMessage(MSG.empty_filter());
4b773cfd11b5 Refactoring to ease code-reuse.
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents:
diff changeset
151 locationTable.setCanReorderFields(false);
4b773cfd11b5 Refactoring to ease code-reuse.
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents:
diff changeset
152
4b773cfd11b5 Refactoring to ease code-reuse.
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents:
diff changeset
153 ListGridField addLocation = new ListGridField ("", "");
4b773cfd11b5 Refactoring to ease code-reuse.
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents:
diff changeset
154 addLocation.setType (ListGridFieldType.ICON);
4b773cfd11b5 Refactoring to ease code-reuse.
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents:
diff changeset
155 addLocation.setWidth (20);
4b773cfd11b5 Refactoring to ease code-reuse.
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents:
diff changeset
156 addLocation.addRecordClickHandler (handler);
4b773cfd11b5 Refactoring to ease code-reuse.
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents:
diff changeset
157 addLocation.setCellIcon (baseUrl + MSG.markerGreen());
4b773cfd11b5 Refactoring to ease code-reuse.
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents:
diff changeset
158 GWT.log ("i18n: ..... " + MSG.description());
4b773cfd11b5 Refactoring to ease code-reuse.
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents:
diff changeset
159
4b773cfd11b5 Refactoring to ease code-reuse.
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents:
diff changeset
160 ListGridField ldescr = new ListGridField("description",
4b773cfd11b5 Refactoring to ease code-reuse.
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents:
diff changeset
161 MSG.description());
4b773cfd11b5 Refactoring to ease code-reuse.
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents:
diff changeset
162 ldescr.setType(ListGridFieldType.TEXT);
4b773cfd11b5 Refactoring to ease code-reuse.
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents:
diff changeset
163 ldescr.setWidth("*");
4b773cfd11b5 Refactoring to ease code-reuse.
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents:
diff changeset
164 ListGridField lside = new ListGridField("riverside",
4b773cfd11b5 Refactoring to ease code-reuse.
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents:
diff changeset
165 MSG.riverside());
4b773cfd11b5 Refactoring to ease code-reuse.
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents:
diff changeset
166 lside.setType(ListGridFieldType.TEXT);
4b773cfd11b5 Refactoring to ease code-reuse.
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents:
diff changeset
167 lside.setWidth("10%");
4b773cfd11b5 Refactoring to ease code-reuse.
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents:
diff changeset
168
4b773cfd11b5 Refactoring to ease code-reuse.
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents:
diff changeset
169 ListGridField loc = new ListGridField("from", MSG.location());
4b773cfd11b5 Refactoring to ease code-reuse.
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents:
diff changeset
170 loc.setCellFormatter(new CellFormatter() {
4b773cfd11b5 Refactoring to ease code-reuse.
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents:
diff changeset
171 public String format(
4b773cfd11b5 Refactoring to ease code-reuse.
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents:
diff changeset
172 Object value,
4b773cfd11b5 Refactoring to ease code-reuse.
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents:
diff changeset
173 ListGridRecord record,
4b773cfd11b5 Refactoring to ease code-reuse.
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents:
diff changeset
174 int rowNum, int colNum) {
4b773cfd11b5 Refactoring to ease code-reuse.
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents:
diff changeset
175 if (value == null) return null;
4b773cfd11b5 Refactoring to ease code-reuse.
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents:
diff changeset
176 try {
4b773cfd11b5 Refactoring to ease code-reuse.
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents:
diff changeset
177 NumberFormat nf;
4b773cfd11b5 Refactoring to ease code-reuse.
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents:
diff changeset
178 double v = Double.parseDouble((String)value);
4b773cfd11b5 Refactoring to ease code-reuse.
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents:
diff changeset
179 nf = NumberFormat.getFormat("###0.00##");
4b773cfd11b5 Refactoring to ease code-reuse.
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents:
diff changeset
180 return nf.format(v);
4b773cfd11b5 Refactoring to ease code-reuse.
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents:
diff changeset
181 }
4b773cfd11b5 Refactoring to ease code-reuse.
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents:
diff changeset
182 catch (Exception e) {
4b773cfd11b5 Refactoring to ease code-reuse.
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents:
diff changeset
183 return value.toString();
4b773cfd11b5 Refactoring to ease code-reuse.
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents:
diff changeset
184 }
4b773cfd11b5 Refactoring to ease code-reuse.
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents:
diff changeset
185 }
4b773cfd11b5 Refactoring to ease code-reuse.
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents:
diff changeset
186 }
4b773cfd11b5 Refactoring to ease code-reuse.
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents:
diff changeset
187 );
4b773cfd11b5 Refactoring to ease code-reuse.
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents:
diff changeset
188 loc.setType(ListGridFieldType.FLOAT);
4b773cfd11b5 Refactoring to ease code-reuse.
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents:
diff changeset
189
4b773cfd11b5 Refactoring to ease code-reuse.
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents:
diff changeset
190 loc.setWidth("10%");
4b773cfd11b5 Refactoring to ease code-reuse.
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents:
diff changeset
191
4b773cfd11b5 Refactoring to ease code-reuse.
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents:
diff changeset
192 ListGridField bottom =
4b773cfd11b5 Refactoring to ease code-reuse.
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents:
diff changeset
193 new ListGridField("bottom", MSG.bottom_edge());
4b773cfd11b5 Refactoring to ease code-reuse.
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents:
diff changeset
194 bottom.setType(ListGridFieldType.TEXT);
4b773cfd11b5 Refactoring to ease code-reuse.
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents:
diff changeset
195 bottom.setWidth("10%");
4b773cfd11b5 Refactoring to ease code-reuse.
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents:
diff changeset
196
4b773cfd11b5 Refactoring to ease code-reuse.
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents:
diff changeset
197 ListGridField top =
4b773cfd11b5 Refactoring to ease code-reuse.
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents:
diff changeset
198 new ListGridField("top", MSG.top_edge());
4b773cfd11b5 Refactoring to ease code-reuse.
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents:
diff changeset
199 top.setType(ListGridFieldType.TEXT);
4b773cfd11b5 Refactoring to ease code-reuse.
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents:
diff changeset
200 top.setWidth("10%");
4b773cfd11b5 Refactoring to ease code-reuse.
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents:
diff changeset
201
4b773cfd11b5 Refactoring to ease code-reuse.
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents:
diff changeset
202
4b773cfd11b5 Refactoring to ease code-reuse.
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents:
diff changeset
203 locationTable.setFields(
4b773cfd11b5 Refactoring to ease code-reuse.
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents:
diff changeset
204 addLocation, ldescr, loc, lside, bottom, top);
4b773cfd11b5 Refactoring to ease code-reuse.
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents:
diff changeset
205 }
4b773cfd11b5 Refactoring to ease code-reuse.
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents:
diff changeset
206
4b773cfd11b5 Refactoring to ease code-reuse.
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents:
diff changeset
207
4b773cfd11b5 Refactoring to ease code-reuse.
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents:
diff changeset
208 @Override
4b773cfd11b5 Refactoring to ease code-reuse.
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents:
diff changeset
209 public void onFilterCriteriaChanged(StringFilterEvent event) {
4b773cfd11b5 Refactoring to ease code-reuse.
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents:
diff changeset
210 String search = event.getFilter();
4b773cfd11b5 Refactoring to ease code-reuse.
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents:
diff changeset
211
4b773cfd11b5 Refactoring to ease code-reuse.
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents:
diff changeset
212 if (search != null && search.length() > 0) {
4b773cfd11b5 Refactoring to ease code-reuse.
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents:
diff changeset
213 Criteria c = new Criteria("description", search);
4b773cfd11b5 Refactoring to ease code-reuse.
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents:
diff changeset
214 locationTable.filterData(c);
4b773cfd11b5 Refactoring to ease code-reuse.
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents:
diff changeset
215 filterResultCount.setValue(locationTable.getRecords().length);
4b773cfd11b5 Refactoring to ease code-reuse.
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents:
diff changeset
216 }
4b773cfd11b5 Refactoring to ease code-reuse.
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents:
diff changeset
217 else {
2454
99bd77501188 Issue 514.
Raimund Renkert <raimund.renkert@intevation.de>
parents: 1590
diff changeset
218 locationTable.clearCriteria();
99bd77501188 Issue 514.
Raimund Renkert <raimund.renkert@intevation.de>
parents: 1590
diff changeset
219 filterResultCount.setValue("");
1590
4b773cfd11b5 Refactoring to ease code-reuse.
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents:
diff changeset
220 }
4b773cfd11b5 Refactoring to ease code-reuse.
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents:
diff changeset
221 }
4b773cfd11b5 Refactoring to ease code-reuse.
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents:
diff changeset
222
4b773cfd11b5 Refactoring to ease code-reuse.
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents:
diff changeset
223
4b773cfd11b5 Refactoring to ease code-reuse.
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents:
diff changeset
224 @Override
4b773cfd11b5 Refactoring to ease code-reuse.
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents:
diff changeset
225 public void onFilterCriteriaChanged(RangeFilterEvent event) {
4b773cfd11b5 Refactoring to ease code-reuse.
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents:
diff changeset
226 Float from = event.getFrom() - 0.001f;
4b773cfd11b5 Refactoring to ease code-reuse.
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents:
diff changeset
227 Float to = event.getTo() + 0.001f;
4b773cfd11b5 Refactoring to ease code-reuse.
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents:
diff changeset
228
4b773cfd11b5 Refactoring to ease code-reuse.
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents:
diff changeset
229 Criterion combinedFilter = null;
4b773cfd11b5 Refactoring to ease code-reuse.
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents:
diff changeset
230 if (from.equals(Float.NaN) && to.equals(Float.NaN)) {
4b773cfd11b5 Refactoring to ease code-reuse.
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents:
diff changeset
231 locationTable.clearCriteria();
4b773cfd11b5 Refactoring to ease code-reuse.
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents:
diff changeset
232 filterResultCount.setValue("");
4b773cfd11b5 Refactoring to ease code-reuse.
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents:
diff changeset
233 return;
4b773cfd11b5 Refactoring to ease code-reuse.
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents:
diff changeset
234 }
4b773cfd11b5 Refactoring to ease code-reuse.
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents:
diff changeset
235 else if (from.equals(Float.NaN)) {
4b773cfd11b5 Refactoring to ease code-reuse.
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents:
diff changeset
236 combinedFilter =
4b773cfd11b5 Refactoring to ease code-reuse.
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents:
diff changeset
237 new Criterion("from", OperatorId.LESS_OR_EQUAL, to);
4b773cfd11b5 Refactoring to ease code-reuse.
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents:
diff changeset
238 }
4b773cfd11b5 Refactoring to ease code-reuse.
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents:
diff changeset
239 else if (to.equals(Float.NaN)) {
4b773cfd11b5 Refactoring to ease code-reuse.
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents:
diff changeset
240 combinedFilter =
4b773cfd11b5 Refactoring to ease code-reuse.
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents:
diff changeset
241 new Criterion("from", OperatorId.GREATER_OR_EQUAL, from);
4b773cfd11b5 Refactoring to ease code-reuse.
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents:
diff changeset
242 }
4b773cfd11b5 Refactoring to ease code-reuse.
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents:
diff changeset
243 else {
4b773cfd11b5 Refactoring to ease code-reuse.
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents:
diff changeset
244 combinedFilter =
4b773cfd11b5 Refactoring to ease code-reuse.
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents:
diff changeset
245 new AdvancedCriteria(OperatorId.AND, new Criterion[] {
4b773cfd11b5 Refactoring to ease code-reuse.
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents:
diff changeset
246 new Criterion("from", OperatorId.GREATER_OR_EQUAL, from),
4b773cfd11b5 Refactoring to ease code-reuse.
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents:
diff changeset
247 new Criterion("from", OperatorId.LESS_OR_EQUAL, to)
4b773cfd11b5 Refactoring to ease code-reuse.
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents:
diff changeset
248 });
4b773cfd11b5 Refactoring to ease code-reuse.
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents:
diff changeset
249 }
4b773cfd11b5 Refactoring to ease code-reuse.
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents:
diff changeset
250 locationTable.filterData(combinedFilter);
4b773cfd11b5 Refactoring to ease code-reuse.
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents:
diff changeset
251 filterResultCount.setValue(locationTable.getRecords().length);
4b773cfd11b5 Refactoring to ease code-reuse.
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents:
diff changeset
252 }
4b773cfd11b5 Refactoring to ease code-reuse.
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents:
diff changeset
253 }
4b773cfd11b5 Refactoring to ease code-reuse.
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents:
diff changeset
254 // vim:set ts=4 sw=4 si et sta sts=4 fenc=utf8 :

http://dive4elements.wald.intevation.org