comparison flys-client/src/main/java/de/intevation/flys/client/client/ui/GaugePanel.java @ 3841:5877d6900e34

Refactor GaugeTree folding for different states flys-client/trunk@5556 c6561f87-3c4e-4783-a992-168aeb5c3f6f
author Bjoern Ricks <bjoern.ricks@intevation.de>
date Fri, 21 Sep 2012 13:19:21 +0000
parents cf64f54aa39c
children 44c1beb78ad1
comparison
equal deleted inserted replaced
3840:cf64f54aa39c 3841:5877d6900e34
218 open(); 218 open();
219 } 219 }
220 } 220 }
221 221
222 public void open() { 222 public void open() {
223 ArrayList<Double> curvelocations = new ArrayList<Double>(); 223 ArrayList<Double> locations = new ArrayList<Double>();
224 224
225 if (data != null && data.length > 0) { 225 if (data != null && data.length > 0) {
226 for (int i = 0; i < data.length; i++) { 226 for (int i = 0; i < data.length; i++) {
227 DataList dl = data[i]; 227 DataList dl = data[i];
228 String state = dl.getState(); 228 String state = dl.getState();
229 GWT.log("GaugeTree - setData " + state); 229 GWT.log("GaugeTree - setData " + state);
230 if (state.equals("state.winfo.distance") || 230 if (state.equals("state.winfo.location_distance")) {
231 state.equals("state.winfo.distance_only") ||
232 state.equals("state.winfo.location_distance")) {
233 Double ldfrom = null; 231 Double ldfrom = null;
234 Double ldto = null; 232 Double ldto = null;
235 233
236 for (int j = dl.size()-1; j >= 0; --j) { 234 for (int j = dl.size()-1; j >= 0; --j) {
237 Data d = dl.get(j); 235 Data d = dl.get(j);
241 ldfrom = getDoubleValue(d); 239 ldfrom = getDoubleValue(d);
242 } 240 }
243 else if (label.equals("ld_to")) { 241 else if (label.equals("ld_to")) {
244 ldto = getDoubleValue(d); 242 ldto = getDoubleValue(d);
245 } 243 }
246 else if (label.equals("ld_mode")) { 244 else if (label.equals("ld_locations")) {
247 GWT.log("GaugeTree - setData - ld_mode " + d.getStringValue()); 245 getLocationsFromData(locations, d);
248 } 246 openOnLocations(locations);
249 } 247 return;
250 248 }
249 }
251 if (ldfrom != null) { 250 if (ldfrom != null) {
252 openOnDistance(ldfrom, ldto); 251 openOnDistance(ldfrom, ldto);
253 return; 252 return;
254 } 253 }
255 } 254 }
256 else if (state.equals("state.winfo.location")) { 255 else if(state.equals("state.winfo.distance_only") ||
257 ArrayList<Double> locations = new ArrayList<Double>(); 256 state.equals("state.winfo.distance")) {
257 Double ldfrom = null;
258 Double ldto = null;
259
258 for (int j = dl.size()-1; j >= 0; --j) { 260 for (int j = dl.size()-1; j >= 0; --j) {
259 Data d = dl.get(j); 261 Data d = dl.get(j);
260 String label = d.getLabel(); 262 String label = d.getLabel();
261 GWT.log("GaugeTree - setData - location label " + 263 GWT.log("GaugeTree - setData - label " + label + " " + d.getStringValue());
262 label + " " + d.getStringValue()); 264 if (label.equals("ld_from")) {
263 if (label.equals("ld_locations")) { 265 ldfrom = getDoubleValue(d);
264 getLocations(locations, d.getItems()); 266 }
265 } 267 else if (label.equals("ld_to")) {
266 } 268 ldto = getDoubleValue(d);
269 }
270 }
271
272 if (ldfrom != null) {
273 openOnDistance(ldfrom, ldto);
274 return;
275 }
276 }
277 else if (state.equals("state.winfo.location")) {
278 getLocations("ld_locations", locations, dl);
267 openOnLocations(locations); 279 openOnLocations(locations);
268 return; 280 return;
269 } 281 }
270 else if (state.equals("state.winfo.reference.curve.input.start")) { 282 else if (state.equals("state.winfo.reference.curve.input.start")) {
271 for (int j = dl.size()-1; j >= 0; --j) { 283 getLocations("reference_startpoint", locations, dl);
272 Data d = dl.get(j);
273 String label = d.getLabel();
274 if (label.equals("reference_startpoint")) {
275 getLocations(curvelocations, d.getItems());
276 }
277 }
278 } 284 }
279 else if (state.equals("state.winfo.reference.curve.input.end")) { 285 else if (state.equals("state.winfo.reference.curve.input.end")) {
280 for (int j = dl.size()-1; j >= 0; --j) { 286 getLocations("reference_endpoint", locations, dl);
281 Data d = dl.get(j);
282 String label = d.getLabel();
283 if (label.equals("reference_endpoint")) {
284 getLocations(curvelocations, d.getItems());
285 }
286 }
287 } 287 }
288 else if (state.equals("state.winfo.historicalq.reference_gauge")) { 288 else if (state.equals("state.winfo.historicalq.reference_gauge")) {
289 for (int j = dl.size()-1; j >= 0; --j) { 289 for (int j = dl.size()-1; j >= 0; --j) {
290 Data d = dl.get(j); 290 Data d = dl.get(j);
291 String label = d.getLabel(); 291 String label = d.getLabel();
292 if (label.equals("reference_gauge")) { 292 if (label.equals("reference_gauge")) {
293 String tmp = d.getStringValue(); 293 String tmp = d.getStringValue();
294 if (tmp != null) { 294 if (tmp != null) {
295 Integer gaugereference = Integer.valueOf(tmp); 295 Integer gaugereference = Integer.valueOf(tmp);
296 if (gaugereference != null) { 296 if (gaugereference != null) {
297 //TODO
297 } 298 }
298 } 299 }
299 } 300 }
300 } 301 }
301 } 302 }
302 } 303 }
303 } 304 }
304 if (!curvelocations.isEmpty()) { 305 if (!locations.isEmpty()) {
305 openOnLocations(curvelocations); 306 openOnLocations(locations);
306 } 307 }
307 else { 308 else {
308 openAll(); 309 openAll();
309 } 310 }
310 } 311 }
311 312
312 private void getLocations(List<Double> locations, DataItem[] items) { 313 private void getLocations(String labelname, List<Double> locations, DataList dl) {
314 for (int j = dl.size()-1; j >= 0; --j) {
315 Data d = dl.get(j);
316 String label = d.getLabel();
317 if (label.equals(labelname)) {
318 getLocationsFromData(locations, d);
319 }
320 }
321 }
322
323 private void getLocationsFromData(List<Double> locations, Data data) {
324 DataItem[] items = data.getItems();
313 for (int k = 0; k < items.length; k++) { 325 for (int k = 0; k < items.length; k++) {
314 String tmp = items[k].getStringValue(); 326 String tmp = items[k].getStringValue();
327 GWT.log("GaugeTree - getLocationsFromData " + tmp);
315 if (tmp != null) { 328 if (tmp != null) {
316 Double value = Double.valueOf(tmp); 329 if (tmp.contains(" ")) {
317 if (value != null) { 330 // string contains several values ...
318 locations.add(value); 331 String[] values = tmp.split(" ");
319 } 332 for(int i=0; i < values.length; i++) {
320 } 333 Double value = Double.valueOf(values[i]);
321 } 334 if (value != null) {
322 } 335 locations.add(value);
336 }
337 }
338 }
339 else {
340 Double value = Double.valueOf(tmp);
341 if (value != null) {
342 locations.add(value);
343 }
344 }
345 }
346 }
347 }
348
323 private Double getDoubleValue(Data d) { 349 private Double getDoubleValue(Data d) {
324 String tmp = d.getStringValue(); 350 String tmp = d.getStringValue();
325 if (tmp != null) { 351 if (tmp != null) {
326 return Double.valueOf(tmp); 352 return Double.valueOf(tmp);
327 } 353 }
344 if (gitem.getStart() >= start) { 370 if (gitem.getStart() >= start) {
345 setstate = true; 371 setstate = true;
346 } 372 }
347 } 373 }
348 else { 374 else {
349 if ((gitem.getStart() >= start && gitem.getStart() <= end) || 375 GWT.log("GaugeTree - openOnDistance gitem " + gitem.getStart() + " " + gitem.getEnd());
350 (gitem.getEnd() >= start && gitem.getEnd() <= end)) { 376 if ((start >= gitem.getStart() && start <= gitem.getEnd()) ||
377 (end >= gitem.getStart() && end <= gitem.getEnd()) ||
378 (start <= gitem.getStart() && end >= gitem.getEnd())) {
351 setstate = true; 379 setstate = true;
352 } 380 }
353 } 381 }
354 item.setState(setstate); 382 item.setState(setstate);
355 } 383 }

http://dive4elements.wald.intevation.org