annotate flys-client/src/main/java/de/intevation/flys/client/client/ui/LocationPicker.java @ 4221:480de0dbca8e

Extended location input helper. The locationpicker has now an attribute whether the input is distance or location to display one or two clickable columns. Replaced the record click handler with cell click handler.
author Raimund Renkert <rrenkert@intevation.de>
date Tue, 23 Oct 2012 13:17:20 +0200
parents 99bd77501188
children b195fede1c3b
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;
4221
480de0dbca8e Extended location input helper.
Raimund Renkert <rrenkert@intevation.de>
parents: 2454
diff changeset
7 import com.smartgwt.client.data.AdvancedCriteria;
1590
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;
4221
480de0dbca8e Extended location input helper.
Raimund Renkert <rrenkert@intevation.de>
parents: 2454
diff changeset
10 import com.smartgwt.client.types.Alignment;
480de0dbca8e Extended location input helper.
Raimund Renkert <rrenkert@intevation.de>
parents: 2454
diff changeset
11 import com.smartgwt.client.types.ListGridFieldType;
1590
4b773cfd11b5 Refactoring to ease code-reuse.
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents:
diff changeset
12 import com.smartgwt.client.types.OperatorId;
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.SelectItem;
4b773cfd11b5 Refactoring to ease code-reuse.
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents:
diff changeset
15 import com.smartgwt.client.widgets.form.fields.StaticTextItem;
4221
480de0dbca8e Extended location input helper.
Raimund Renkert <rrenkert@intevation.de>
parents: 2454
diff changeset
16 import com.smartgwt.client.widgets.form.fields.events.ChangedEvent;
480de0dbca8e Extended location input helper.
Raimund Renkert <rrenkert@intevation.de>
parents: 2454
diff changeset
17 import com.smartgwt.client.widgets.form.fields.events.ChangedHandler;
480de0dbca8e Extended location input helper.
Raimund Renkert <rrenkert@intevation.de>
parents: 2454
diff changeset
18 import com.smartgwt.client.widgets.grid.CellFormatter;
1590
4b773cfd11b5 Refactoring to ease code-reuse.
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents:
diff changeset
19 import com.smartgwt.client.widgets.grid.ListGrid;
4b773cfd11b5 Refactoring to ease code-reuse.
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents:
diff changeset
20 import com.smartgwt.client.widgets.grid.ListGridField;
4b773cfd11b5 Refactoring to ease code-reuse.
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents:
diff changeset
21 import com.smartgwt.client.widgets.grid.ListGridRecord;
4221
480de0dbca8e Extended location input helper.
Raimund Renkert <rrenkert@intevation.de>
parents: 2454
diff changeset
22 import com.smartgwt.client.widgets.grid.events.CellClickHandler;
480de0dbca8e Extended location input helper.
Raimund Renkert <rrenkert@intevation.de>
parents: 2454
diff changeset
23 import com.smartgwt.client.widgets.layout.HLayout;
1590
4b773cfd11b5 Refactoring to ease code-reuse.
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents:
diff changeset
24
4b773cfd11b5 Refactoring to ease code-reuse.
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents:
diff changeset
25 import de.intevation.flys.client.client.FLYSConstants;
4b773cfd11b5 Refactoring to ease code-reuse.
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents:
diff changeset
26 import de.intevation.flys.client.client.event.FilterHandler;
4221
480de0dbca8e Extended location input helper.
Raimund Renkert <rrenkert@intevation.de>
parents: 2454
diff changeset
27 import de.intevation.flys.client.client.event.RangeFilterEvent;
1590
4b773cfd11b5 Refactoring to ease code-reuse.
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents:
diff changeset
28 import de.intevation.flys.client.client.event.StringFilterEvent;
4b773cfd11b5 Refactoring to ease code-reuse.
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents:
diff changeset
29
4b773cfd11b5 Refactoring to ease code-reuse.
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents:
diff changeset
30 /**
4b773cfd11b5 Refactoring to ease code-reuse.
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents:
diff changeset
31 * Bundle widgets and handler for a lacation input helper.
4b773cfd11b5 Refactoring to ease code-reuse.
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents:
diff changeset
32 *
4b773cfd11b5 Refactoring to ease code-reuse.
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents:
diff changeset
33 * 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
34 * reasons not understood.
4b773cfd11b5 Refactoring to ease code-reuse.
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents:
diff changeset
35 */
4b773cfd11b5 Refactoring to ease code-reuse.
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents:
diff changeset
36 public class LocationPicker
4b773cfd11b5 Refactoring to ease code-reuse.
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents:
diff changeset
37 implements FilterHandler
4b773cfd11b5 Refactoring to ease code-reuse.
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents:
diff changeset
38 {
4b773cfd11b5 Refactoring to ease code-reuse.
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents:
diff changeset
39 /** The message class that provides i18n strings.*/
4b773cfd11b5 Refactoring to ease code-reuse.
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents:
diff changeset
40 protected FLYSConstants MSG = GWT.create(FLYSConstants.class);
4b773cfd11b5 Refactoring to ease code-reuse.
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents:
diff changeset
41
4b773cfd11b5 Refactoring to ease code-reuse.
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents:
diff changeset
42 /** The locations table. */
4b773cfd11b5 Refactoring to ease code-reuse.
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents:
diff changeset
43 protected ListGrid locationTable;
4b773cfd11b5 Refactoring to ease code-reuse.
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents:
diff changeset
44
4b773cfd11b5 Refactoring to ease code-reuse.
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents:
diff changeset
45 protected HLayout filterLayout;
4b773cfd11b5 Refactoring to ease code-reuse.
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents:
diff changeset
46
4b773cfd11b5 Refactoring to ease code-reuse.
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents:
diff changeset
47 DynamicForm resultCountForm;
4b773cfd11b5 Refactoring to ease code-reuse.
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents:
diff changeset
48
4221
480de0dbca8e Extended location input helper.
Raimund Renkert <rrenkert@intevation.de>
parents: 2454
diff changeset
49 CellClickHandler handler;
480de0dbca8e Extended location input helper.
Raimund Renkert <rrenkert@intevation.de>
parents: 2454
diff changeset
50
480de0dbca8e Extended location input helper.
Raimund Renkert <rrenkert@intevation.de>
parents: 2454
diff changeset
51 boolean isDistance = false;
1590
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 /** Text to show number of matched items when filtered. */
4b773cfd11b5 Refactoring to ease code-reuse.
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents:
diff changeset
54 protected StaticTextItem filterResultCount;
4b773cfd11b5 Refactoring to ease code-reuse.
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents:
diff changeset
55
4b773cfd11b5 Refactoring to ease code-reuse.
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents:
diff changeset
56
4221
480de0dbca8e Extended location input helper.
Raimund Renkert <rrenkert@intevation.de>
parents: 2454
diff changeset
57 public LocationPicker(CellClickHandler handler) {
1590
4b773cfd11b5 Refactoring to ease code-reuse.
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents:
diff changeset
58 locationTable = new ListGrid();
4b773cfd11b5 Refactoring to ease code-reuse.
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents:
diff changeset
59 locationTable.setShowHeaderContextMenu(false);
4b773cfd11b5 Refactoring to ease code-reuse.
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents:
diff changeset
60 this.handler = handler;
4b773cfd11b5 Refactoring to ease code-reuse.
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents:
diff changeset
61 }
4b773cfd11b5 Refactoring to ease code-reuse.
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents:
diff changeset
62
4b773cfd11b5 Refactoring to ease code-reuse.
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents:
diff changeset
63 public void prepareFilter() {
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 filterResultCount = new StaticTextItem(MSG.resultCount());
4b773cfd11b5 Refactoring to ease code-reuse.
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents:
diff changeset
66 filterResultCount.setTitleAlign(Alignment.LEFT);
4b773cfd11b5 Refactoring to ease code-reuse.
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents:
diff changeset
67 filterResultCount.setTitleStyle("color: #000");
4b773cfd11b5 Refactoring to ease code-reuse.
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents:
diff changeset
68
4b773cfd11b5 Refactoring to ease code-reuse.
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents:
diff changeset
69 final TableFilter filter = new TableFilter();
4b773cfd11b5 Refactoring to ease code-reuse.
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents:
diff changeset
70 filter.setHeight("30px");
4b773cfd11b5 Refactoring to ease code-reuse.
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents:
diff changeset
71 filter.addFilterHandler(this);
4b773cfd11b5 Refactoring to ease code-reuse.
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents:
diff changeset
72
4b773cfd11b5 Refactoring to ease code-reuse.
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents:
diff changeset
73 final RangeTableFilter filterRange = new RangeTableFilter();
4b773cfd11b5 Refactoring to ease code-reuse.
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents:
diff changeset
74 filterRange.setHeight("30px");
4b773cfd11b5 Refactoring to ease code-reuse.
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents:
diff changeset
75 filterRange.addFilterHandler(this);
4b773cfd11b5 Refactoring to ease code-reuse.
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents:
diff changeset
76 filterRange.setVisible(false);
4b773cfd11b5 Refactoring to ease code-reuse.
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents:
diff changeset
77
4b773cfd11b5 Refactoring to ease code-reuse.
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents:
diff changeset
78 SelectItem filterCriteria = new SelectItem();
4b773cfd11b5 Refactoring to ease code-reuse.
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents:
diff changeset
79 filterCriteria.setShowTitle(false);
4b773cfd11b5 Refactoring to ease code-reuse.
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents:
diff changeset
80 filterCriteria.setWidth(100);
4b773cfd11b5 Refactoring to ease code-reuse.
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents:
diff changeset
81 filterCriteria.addChangedHandler(new ChangedHandler() {
4b773cfd11b5 Refactoring to ease code-reuse.
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents:
diff changeset
82 public void onChanged(ChangedEvent e) {
4b773cfd11b5 Refactoring to ease code-reuse.
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents:
diff changeset
83 if(e.getValue().toString().equals("range")) {
4b773cfd11b5 Refactoring to ease code-reuse.
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents:
diff changeset
84 filterRange.setVisible(true);
4b773cfd11b5 Refactoring to ease code-reuse.
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents:
diff changeset
85 filter.setVisible(false);
4b773cfd11b5 Refactoring to ease code-reuse.
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents:
diff changeset
86 filter.clear();
4b773cfd11b5 Refactoring to ease code-reuse.
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents:
diff changeset
87 filterResultCount.setValue("");
4b773cfd11b5 Refactoring to ease code-reuse.
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents:
diff changeset
88 }
4b773cfd11b5 Refactoring to ease code-reuse.
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents:
diff changeset
89 else {
4b773cfd11b5 Refactoring to ease code-reuse.
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents:
diff changeset
90 filterRange.setVisible(false);
4b773cfd11b5 Refactoring to ease code-reuse.
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents:
diff changeset
91 filterRange.clear();
4b773cfd11b5 Refactoring to ease code-reuse.
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents:
diff changeset
92 filter.setVisible(true);
4b773cfd11b5 Refactoring to ease code-reuse.
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents:
diff changeset
93 filterResultCount.setValue("");
4b773cfd11b5 Refactoring to ease code-reuse.
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents:
diff changeset
94 }
4b773cfd11b5 Refactoring to ease code-reuse.
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents:
diff changeset
95 }
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 LinkedHashMap<String, String> filterMap =
4b773cfd11b5 Refactoring to ease code-reuse.
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents:
diff changeset
99 new LinkedHashMap<String, String>();
4b773cfd11b5 Refactoring to ease code-reuse.
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents:
diff changeset
100 filterMap.put("description", MSG.description());
4b773cfd11b5 Refactoring to ease code-reuse.
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents:
diff changeset
101 filterMap.put("range", MSG.range());
4b773cfd11b5 Refactoring to ease code-reuse.
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents:
diff changeset
102 filterCriteria.setValueMap(filterMap);
4b773cfd11b5 Refactoring to ease code-reuse.
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents:
diff changeset
103 filterCriteria.setValue("description");
4b773cfd11b5 Refactoring to ease code-reuse.
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents:
diff changeset
104
4b773cfd11b5 Refactoring to ease code-reuse.
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents:
diff changeset
105 DynamicForm form = new DynamicForm();
4b773cfd11b5 Refactoring to ease code-reuse.
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents:
diff changeset
106 form.setFields(filterCriteria);
4b773cfd11b5 Refactoring to ease code-reuse.
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents:
diff changeset
107
4b773cfd11b5 Refactoring to ease code-reuse.
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents:
diff changeset
108 resultCountForm = new DynamicForm();
4b773cfd11b5 Refactoring to ease code-reuse.
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents:
diff changeset
109 resultCountForm.setFields(filterResultCount);
4b773cfd11b5 Refactoring to ease code-reuse.
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents:
diff changeset
110
4b773cfd11b5 Refactoring to ease code-reuse.
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents:
diff changeset
111 filterLayout = new HLayout();
4b773cfd11b5 Refactoring to ease code-reuse.
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents:
diff changeset
112 filterLayout.addMember(form);
4b773cfd11b5 Refactoring to ease code-reuse.
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents:
diff changeset
113 filterLayout.addMember(filter);
4b773cfd11b5 Refactoring to ease code-reuse.
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents:
diff changeset
114 filterLayout.addMember(filterRange);
4b773cfd11b5 Refactoring to ease code-reuse.
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents:
diff changeset
115 }
4b773cfd11b5 Refactoring to ease code-reuse.
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents:
diff changeset
116
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 /** 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
119 public ListGrid getLocationTable() {
4b773cfd11b5 Refactoring to ease code-reuse.
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents:
diff changeset
120 return locationTable;
4b773cfd11b5 Refactoring to ease code-reuse.
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents:
diff changeset
121 }
4b773cfd11b5 Refactoring to ease code-reuse.
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents:
diff changeset
122
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 /** Access the 'form' that shows the filter result count. */
4b773cfd11b5 Refactoring to ease code-reuse.
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents:
diff changeset
125 public DynamicForm getResultCountForm() {
4b773cfd11b5 Refactoring to ease code-reuse.
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents:
diff changeset
126 return resultCountForm;
4b773cfd11b5 Refactoring to ease code-reuse.
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents:
diff changeset
127 }
4b773cfd11b5 Refactoring to ease code-reuse.
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents:
diff changeset
128
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 /** Access the layout containing filter stuff. */
4b773cfd11b5 Refactoring to ease code-reuse.
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents:
diff changeset
131 public HLayout getFilterLayout() {
4b773cfd11b5 Refactoring to ease code-reuse.
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents:
diff changeset
132 return filterLayout;
4b773cfd11b5 Refactoring to ease code-reuse.
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents:
diff changeset
133 }
4b773cfd11b5 Refactoring to ease code-reuse.
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents:
diff changeset
134
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 * 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
138 */
4221
480de0dbca8e Extended location input helper.
Raimund Renkert <rrenkert@intevation.de>
parents: 2454
diff changeset
139 public void createLocationTable(/*RecordClickHandler handler*/) {
1590
4b773cfd11b5 Refactoring to ease code-reuse.
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents:
diff changeset
140 GWT.log("Create Location Table in LocationPicker");
4b773cfd11b5 Refactoring to ease code-reuse.
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents:
diff changeset
141
4b773cfd11b5 Refactoring to ease code-reuse.
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents:
diff changeset
142 String baseUrl = GWT.getHostPageBaseURL();
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 locationTable.setWidth100();
4b773cfd11b5 Refactoring to ease code-reuse.
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents:
diff changeset
145 locationTable.setShowRecordComponents(true);
4b773cfd11b5 Refactoring to ease code-reuse.
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents:
diff changeset
146 locationTable.setShowRecordComponentsByCell(true);
4b773cfd11b5 Refactoring to ease code-reuse.
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents:
diff changeset
147 locationTable.setHeight100();
4b773cfd11b5 Refactoring to ease code-reuse.
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents:
diff changeset
148 locationTable.setEmptyMessage(MSG.empty_filter());
4b773cfd11b5 Refactoring to ease code-reuse.
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents:
diff changeset
149 locationTable.setCanReorderFields(false);
4b773cfd11b5 Refactoring to ease code-reuse.
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents:
diff changeset
150
4b773cfd11b5 Refactoring to ease code-reuse.
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents:
diff changeset
151 ListGridField addLocation = new ListGridField ("", "");
4b773cfd11b5 Refactoring to ease code-reuse.
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents:
diff changeset
152 addLocation.setType (ListGridFieldType.ICON);
4b773cfd11b5 Refactoring to ease code-reuse.
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents:
diff changeset
153 addLocation.setWidth (20);
4b773cfd11b5 Refactoring to ease code-reuse.
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents:
diff changeset
154 addLocation.setCellIcon (baseUrl + MSG.markerGreen());
4221
480de0dbca8e Extended location input helper.
Raimund Renkert <rrenkert@intevation.de>
parents: 2454
diff changeset
155 ListGridField addTo = new ListGridField ("", "");
480de0dbca8e Extended location input helper.
Raimund Renkert <rrenkert@intevation.de>
parents: 2454
diff changeset
156 addTo.setType (ListGridFieldType.ICON);
480de0dbca8e Extended location input helper.
Raimund Renkert <rrenkert@intevation.de>
parents: 2454
diff changeset
157 addTo.setWidth (20);
480de0dbca8e Extended location input helper.
Raimund Renkert <rrenkert@intevation.de>
parents: 2454
diff changeset
158 addTo.setCellIcon (baseUrl + MSG.markerRed());
480de0dbca8e Extended location input helper.
Raimund Renkert <rrenkert@intevation.de>
parents: 2454
diff changeset
159
1590
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%");
4221
480de0dbca8e Extended location input helper.
Raimund Renkert <rrenkert@intevation.de>
parents: 2454
diff changeset
201 locationTable.addCellClickHandler(handler);
480de0dbca8e Extended location input helper.
Raimund Renkert <rrenkert@intevation.de>
parents: 2454
diff changeset
202 if (isDistance) {
480de0dbca8e Extended location input helper.
Raimund Renkert <rrenkert@intevation.de>
parents: 2454
diff changeset
203 locationTable.setFields(
480de0dbca8e Extended location input helper.
Raimund Renkert <rrenkert@intevation.de>
parents: 2454
diff changeset
204 addLocation, addTo, ldescr, loc, lside, bottom, top);
480de0dbca8e Extended location input helper.
Raimund Renkert <rrenkert@intevation.de>
parents: 2454
diff changeset
205 }
480de0dbca8e Extended location input helper.
Raimund Renkert <rrenkert@intevation.de>
parents: 2454
diff changeset
206 else {
480de0dbca8e Extended location input helper.
Raimund Renkert <rrenkert@intevation.de>
parents: 2454
diff changeset
207 locationTable.setFields(
480de0dbca8e Extended location input helper.
Raimund Renkert <rrenkert@intevation.de>
parents: 2454
diff changeset
208 addLocation, ldescr, loc, lside, bottom, top);
480de0dbca8e Extended location input helper.
Raimund Renkert <rrenkert@intevation.de>
parents: 2454
diff changeset
209 }
1590
4b773cfd11b5 Refactoring to ease code-reuse.
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents:
diff changeset
210 }
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
4b773cfd11b5 Refactoring to ease code-reuse.
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents:
diff changeset
213 @Override
4b773cfd11b5 Refactoring to ease code-reuse.
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents:
diff changeset
214 public void onFilterCriteriaChanged(StringFilterEvent event) {
4b773cfd11b5 Refactoring to ease code-reuse.
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents:
diff changeset
215 String search = event.getFilter();
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 if (search != null && search.length() > 0) {
4b773cfd11b5 Refactoring to ease code-reuse.
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents:
diff changeset
218 Criteria c = new Criteria("description", search);
4b773cfd11b5 Refactoring to ease code-reuse.
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents:
diff changeset
219 locationTable.filterData(c);
4b773cfd11b5 Refactoring to ease code-reuse.
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents:
diff changeset
220 filterResultCount.setValue(locationTable.getRecords().length);
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 else {
2454
99bd77501188 Issue 514.
Raimund Renkert <raimund.renkert@intevation.de>
parents: 1590
diff changeset
223 locationTable.clearCriteria();
99bd77501188 Issue 514.
Raimund Renkert <raimund.renkert@intevation.de>
parents: 1590
diff changeset
224 filterResultCount.setValue("");
1590
4b773cfd11b5 Refactoring to ease code-reuse.
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents:
diff changeset
225 }
4b773cfd11b5 Refactoring to ease code-reuse.
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents:
diff changeset
226 }
4b773cfd11b5 Refactoring to ease code-reuse.
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents:
diff changeset
227
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 @Override
4b773cfd11b5 Refactoring to ease code-reuse.
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents:
diff changeset
230 public void onFilterCriteriaChanged(RangeFilterEvent event) {
4b773cfd11b5 Refactoring to ease code-reuse.
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents:
diff changeset
231 Float from = event.getFrom() - 0.001f;
4b773cfd11b5 Refactoring to ease code-reuse.
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents:
diff changeset
232 Float to = event.getTo() + 0.001f;
4b773cfd11b5 Refactoring to ease code-reuse.
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents:
diff changeset
233
4b773cfd11b5 Refactoring to ease code-reuse.
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents:
diff changeset
234 Criterion combinedFilter = null;
4b773cfd11b5 Refactoring to ease code-reuse.
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents:
diff changeset
235 if (from.equals(Float.NaN) && to.equals(Float.NaN)) {
4b773cfd11b5 Refactoring to ease code-reuse.
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents:
diff changeset
236 locationTable.clearCriteria();
4b773cfd11b5 Refactoring to ease code-reuse.
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents:
diff changeset
237 filterResultCount.setValue("");
4b773cfd11b5 Refactoring to ease code-reuse.
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents:
diff changeset
238 return;
4b773cfd11b5 Refactoring to ease code-reuse.
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents:
diff changeset
239 }
4b773cfd11b5 Refactoring to ease code-reuse.
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents:
diff changeset
240 else if (from.equals(Float.NaN)) {
4b773cfd11b5 Refactoring to ease code-reuse.
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents:
diff changeset
241 combinedFilter =
4b773cfd11b5 Refactoring to ease code-reuse.
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents:
diff changeset
242 new Criterion("from", OperatorId.LESS_OR_EQUAL, to);
4b773cfd11b5 Refactoring to ease code-reuse.
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents:
diff changeset
243 }
4b773cfd11b5 Refactoring to ease code-reuse.
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents:
diff changeset
244 else if (to.equals(Float.NaN)) {
4b773cfd11b5 Refactoring to ease code-reuse.
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents:
diff changeset
245 combinedFilter =
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 }
4b773cfd11b5 Refactoring to ease code-reuse.
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents:
diff changeset
248 else {
4b773cfd11b5 Refactoring to ease code-reuse.
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents:
diff changeset
249 combinedFilter =
4b773cfd11b5 Refactoring to ease code-reuse.
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents:
diff changeset
250 new AdvancedCriteria(OperatorId.AND, new Criterion[] {
4b773cfd11b5 Refactoring to ease code-reuse.
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents:
diff changeset
251 new Criterion("from", OperatorId.GREATER_OR_EQUAL, from),
4b773cfd11b5 Refactoring to ease code-reuse.
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents:
diff changeset
252 new Criterion("from", OperatorId.LESS_OR_EQUAL, to)
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 }
4b773cfd11b5 Refactoring to ease code-reuse.
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents:
diff changeset
255 locationTable.filterData(combinedFilter);
4b773cfd11b5 Refactoring to ease code-reuse.
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents:
diff changeset
256 filterResultCount.setValue(locationTable.getRecords().length);
4b773cfd11b5 Refactoring to ease code-reuse.
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents:
diff changeset
257 }
4221
480de0dbca8e Extended location input helper.
Raimund Renkert <rrenkert@intevation.de>
parents: 2454
diff changeset
258
480de0dbca8e Extended location input helper.
Raimund Renkert <rrenkert@intevation.de>
parents: 2454
diff changeset
259 public void setIsDistance(boolean value) {
480de0dbca8e Extended location input helper.
Raimund Renkert <rrenkert@intevation.de>
parents: 2454
diff changeset
260 this.isDistance = value;
480de0dbca8e Extended location input helper.
Raimund Renkert <rrenkert@intevation.de>
parents: 2454
diff changeset
261 }
480de0dbca8e Extended location input helper.
Raimund Renkert <rrenkert@intevation.de>
parents: 2454
diff changeset
262
480de0dbca8e Extended location input helper.
Raimund Renkert <rrenkert@intevation.de>
parents: 2454
diff changeset
263 public boolean isDistance() {
480de0dbca8e Extended location input helper.
Raimund Renkert <rrenkert@intevation.de>
parents: 2454
diff changeset
264 return this.isDistance;
480de0dbca8e Extended location input helper.
Raimund Renkert <rrenkert@intevation.de>
parents: 2454
diff changeset
265 }
1590
4b773cfd11b5 Refactoring to ease code-reuse.
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents:
diff changeset
266 }
4b773cfd11b5 Refactoring to ease code-reuse.
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents:
diff changeset
267 // vim:set ts=4 sw=4 si et sta sts=4 fenc=utf8 :

http://dive4elements.wald.intevation.org