Mercurial > dive4elements > river
comparison flys-client/src/main/java/org/dive4elements/river/client/client/ui/minfo/SedLoadDistancePanel.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/minfo/SedLoadDistancePanel.java@651b93c10dc5 |
children | 821a02bbfb4e |
comparison
equal
deleted
inserted
replaced
5833:a2bdc0f524e8 | 5834:f507086aa94b |
---|---|
1 package de.intevation.flys.client.client.ui.minfo; | |
2 | |
3 import java.util.List; | |
4 | |
5 import com.smartgwt.client.data.Record; | |
6 import com.smartgwt.client.util.SC; | |
7 import com.smartgwt.client.widgets.Canvas; | |
8 import com.smartgwt.client.widgets.Label; | |
9 import com.smartgwt.client.widgets.form.fields.events.BlurEvent; | |
10 import com.smartgwt.client.widgets.form.fields.events.BlurHandler; | |
11 import com.smartgwt.client.widgets.grid.events.CellClickEvent; | |
12 import com.smartgwt.client.widgets.grid.events.CellClickHandler; | |
13 import com.smartgwt.client.widgets.layout.HLayout; | |
14 import com.smartgwt.client.widgets.layout.VLayout; | |
15 | |
16 import de.intevation.flys.client.client.Config; | |
17 import de.intevation.flys.client.client.ui.AbstractUIProvider; | |
18 import de.intevation.flys.client.client.ui.DoubleRangeOnlyPanel; | |
19 import de.intevation.flys.client.client.ui.DoubleRangePanel; | |
20 import de.intevation.flys.client.client.ui.LocationPicker; | |
21 import de.intevation.flys.client.client.ui.range.DistanceInfoDataSource; | |
22 import de.intevation.flys.client.shared.model.ArtifactDescription; | |
23 import de.intevation.flys.client.shared.model.Data; | |
24 import de.intevation.flys.client.shared.model.DataItem; | |
25 import de.intevation.flys.client.shared.model.DataList; | |
26 import de.intevation.flys.client.shared.model.DefaultData; | |
27 import de.intevation.flys.client.shared.model.DefaultDataItem; | |
28 | |
29 | |
30 public class SedLoadDistancePanel | |
31 extends AbstractUIProvider | |
32 implements BlurHandler, CellClickHandler | |
33 { | |
34 public static final String FIELD_LOWER = "ld_from"; | |
35 public static final String FIELD_UPPER = "ld_to"; | |
36 | |
37 protected DoubleRangePanel distancePanel; | |
38 protected double min; | |
39 protected double max; | |
40 protected LocationPicker picker; | |
41 | |
42 @Override | |
43 public Canvas createOld(DataList dataList) { | |
44 String s = getOldSelectionString(dataList); | |
45 String l = dataList.getLabel(); | |
46 | |
47 Label label = new Label(l); | |
48 Label selected = new Label(s); | |
49 | |
50 HLayout layout = new HLayout(); | |
51 | |
52 layout.setWidth(400); | |
53 label.setWidth(200); | |
54 selected.setWidth(130); | |
55 | |
56 layout.addMember(label); | |
57 layout.addMember(selected); | |
58 layout.addMember(getBackButton(dataList.getState())); | |
59 | |
60 return layout; | |
61 } | |
62 | |
63 protected String getOldSelectionString(DataList dataList) { | |
64 List<Data> items = dataList.getAll(); | |
65 | |
66 Data dFrom = getData(items, FIELD_LOWER); | |
67 Data dTo = getData(items, FIELD_UPPER); | |
68 | |
69 DataItem[] from = dFrom.getItems(); | |
70 DataItem[] to = dTo.getItems(); | |
71 | |
72 StringBuilder sb = new StringBuilder(); | |
73 sb.append(from[0].getLabel()); | |
74 sb.append(" " + MSG.dpUnitFrom() + " - "); | |
75 sb.append(to[0].getLabel()); | |
76 sb.append(" " + MSG.dpUnitTo()); | |
77 | |
78 return sb.toString(); | |
79 } | |
80 | |
81 @Override | |
82 public Canvas create(DataList data) { | |
83 picker = new LocationPicker(this); | |
84 distancePanel = new DoubleRangeOnlyPanel( | |
85 MSG.dpUnitFrom() + " - ", MSG.dpUnitTo(), 0d, 0d, 250, this, "right"); | |
86 VLayout layout = new VLayout(); | |
87 layout.setMembersMargin(10); | |
88 | |
89 Label label = new Label(MSG.distance_state()); | |
90 | |
91 Canvas submit = getNextButton(); | |
92 | |
93 label.setHeight(25); | |
94 distancePanel.setHeight(50); | |
95 | |
96 layout.addMember(label); | |
97 layout.addMember(distancePanel); | |
98 layout.addMember(submit); | |
99 | |
100 initMinMaxValues(data); | |
101 initDefaultValues(data); | |
102 | |
103 | |
104 picker.setIsDistance(true); | |
105 picker.getLocationTable().setAutoFetchData(true); | |
106 picker.prepareFilter(); | |
107 | |
108 helperContainer.addMember(picker.getLocationTable()); | |
109 helperContainer.addMember(picker.getFilterLayout()); | |
110 helperContainer.addMember(picker.getResultCountForm()); | |
111 | |
112 setPickerDataSource(); | |
113 picker.createLocationTable(); | |
114 | |
115 return layout; | |
116 } | |
117 | |
118 protected void initMinMaxValues(DataList data) { | |
119 Data f = getData(data.getAll(), FIELD_LOWER); | |
120 Data t = getData(data.getAll(), FIELD_UPPER); | |
121 | |
122 DataItem[] fItems = f.getItems(); | |
123 DataItem[] tItems = t.getItems(); | |
124 | |
125 try { | |
126 min = Double.valueOf(fItems[0].getStringValue()); | |
127 max = Double.valueOf(tItems[0].getStringValue()); | |
128 } | |
129 catch (NumberFormatException nfe) { | |
130 min = -Double.MAX_VALUE; | |
131 max = Double.MAX_VALUE; | |
132 } | |
133 } | |
134 | |
135 protected void initDefaultValues(DataList data) { | |
136 initDefaultFrom(data); | |
137 initDefaultTo(data); | |
138 } | |
139 | |
140 protected void initDefaultFrom(DataList data) { | |
141 Data f = getData(data.getAll(), FIELD_LOWER); | |
142 | |
143 double from = getDefaultFrom(); | |
144 | |
145 try { | |
146 from = getDefaultValue(f); | |
147 } | |
148 catch (NumberFormatException nfe) { | |
149 // do nothing | |
150 } | |
151 | |
152 distancePanel.setFrom(from); | |
153 } | |
154 | |
155 | |
156 protected double getDefaultFrom() { | |
157 return min; | |
158 } | |
159 | |
160 | |
161 protected void initDefaultTo(DataList data) { | |
162 Data t = getData(data.getAll(), FIELD_UPPER); | |
163 | |
164 double to = getDefaultTo(); | |
165 | |
166 try { | |
167 to = getDefaultValue(t); | |
168 } | |
169 catch (NumberFormatException nfe) { | |
170 // do nothing | |
171 } | |
172 | |
173 distancePanel.setTo(to); | |
174 } | |
175 | |
176 | |
177 protected double getDefaultTo() { | |
178 return max; | |
179 } | |
180 | |
181 protected double getDefaultValue(Data data) | |
182 throws NumberFormatException | |
183 { | |
184 DataItem def = data.getDefault(); | |
185 String defValue = def != null ? def.getStringValue() : null; | |
186 | |
187 return Double.valueOf(defValue); | |
188 } | |
189 | |
190 /** Hook service to the listgrid with possible input values. */ | |
191 protected void setPickerDataSource() { | |
192 Config config = Config.getInstance(); | |
193 String url = config.getServerUrl(); | |
194 String river = ""; | |
195 | |
196 ArtifactDescription adescr = artifact.getArtifactDescription(); | |
197 DataList[] data = adescr.getOldData(); | |
198 | |
199 // Try to find a "river" data item to set the source for the | |
200 // list grid. | |
201 String dataFilter = "locations"; | |
202 if (data != null && data.length > 0) { | |
203 for (int i = 0; i < data.length; i++) { | |
204 DataList dl = data[i]; | |
205 if (dl.getState().equals("state.minfo.river")) { | |
206 dataFilter = "measuringpoint"; | |
207 } | |
208 if (dl.getState().equals("state.winfo.river") || | |
209 dl.getState().equals("state.chart.river") || | |
210 dl.getState().equals("state.minfo.river")) { | |
211 for (int j = 0; j < dl.size(); j++) { | |
212 Data d = dl.get(j); | |
213 DataItem[] di = d.getItems(); | |
214 if (di != null && di.length == 1) { | |
215 river = d.getItems()[0].getStringValue(); | |
216 break; | |
217 } | |
218 } | |
219 } | |
220 } | |
221 } | |
222 | |
223 picker.getLocationTable().setDataSource(new DistanceInfoDataSource( | |
224 url, river, dataFilter)); | |
225 } | |
226 | |
227 @Override | |
228 protected Data[] getData() { | |
229 Data[] data = new Data[2]; | |
230 | |
231 data[0] = getDataFrom(); | |
232 data[1] = getDataTo(); | |
233 | |
234 return data; | |
235 } | |
236 | |
237 protected Data getDataFrom() { | |
238 String value = String.valueOf(distancePanel.getFrom()); | |
239 String field = FIELD_LOWER; | |
240 | |
241 DataItem item = new DefaultDataItem(field, field, value); | |
242 return new DefaultData( | |
243 field, null, null, new DataItem[] { item }); | |
244 } | |
245 | |
246 protected Data getDataTo() { | |
247 String value = String.valueOf(distancePanel.getTo()); | |
248 String field = FIELD_UPPER; | |
249 | |
250 DataItem item = new DefaultDataItem(field, field, value); | |
251 return new DefaultData( | |
252 field, null, null, new DataItem[] { item }); | |
253 } | |
254 | |
255 @Override | |
256 public void onBlur(BlurEvent event) { | |
257 distancePanel.validateForm(); | |
258 } | |
259 | |
260 @Override | |
261 public void onCellClick(CellClickEvent e) { | |
262 Record record = e.getRecord(); | |
263 int ndx = e.getColNum(); | |
264 String from = record.getAttribute("from"); | |
265 try { | |
266 double value = Double.valueOf(from); | |
267 switch (ndx) { | |
268 case 0: distancePanel.setFrom(value); break; | |
269 case 1: distancePanel.setTo(value); break; | |
270 } | |
271 } | |
272 catch(NumberFormatException nfe) { | |
273 SC.warn(MSG.wrongFormat()); | |
274 } | |
275 } | |
276 } |