annotate flys-client/src/main/java/org/dive4elements/river/client/client/ui/LocationPicker.java @ 5834:f507086aa94b

Repaired internal references.
author Sascha L. Teichmann <teichmann@intevation.de>
date Thu, 25 Apr 2013 12:31:32 +0200
parents flys-client/src/main/java/de/intevation/flys/client/client/ui/LocationPicker.java@b195fede1c3b
children 821a02bbfb4e
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());
4736
b195fede1c3b Remove trailing whitespace.
Sascha L. Teichmann <teichmann@intevation.de>
parents: 4221
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