Mercurial > dive4elements > river
comparison gwt-client/src/main/java/org/dive4elements/river/client/client/ui/chart/ChartPropertiesEditor.java @ 8454:7003cf5c19ed
(issue1764) Handle date ranges in chart properties editor
author | Andre Heinecke <andre.heinecke@intevation.de> |
---|---|
date | Wed, 29 Oct 2014 19:49:18 +0100 |
parents | b1ff606f01ee |
children | d2b85c0c35b7 |
comparison
equal
deleted
inserted
replaced
8453:1326fc65638c | 8454:7003cf5c19ed |
---|---|
19 import com.smartgwt.client.widgets.Window; | 19 import com.smartgwt.client.widgets.Window; |
20 import com.smartgwt.client.widgets.events.ClickEvent; | 20 import com.smartgwt.client.widgets.events.ClickEvent; |
21 import com.smartgwt.client.widgets.events.ClickHandler; | 21 import com.smartgwt.client.widgets.events.ClickHandler; |
22 import com.smartgwt.client.widgets.form.DynamicForm; | 22 import com.smartgwt.client.widgets.form.DynamicForm; |
23 import com.smartgwt.client.widgets.form.fields.CheckboxItem; | 23 import com.smartgwt.client.widgets.form.fields.CheckboxItem; |
24 import com.smartgwt.client.widgets.form.fields.DateItem; | |
24 import com.smartgwt.client.widgets.form.fields.FormItem; | 25 import com.smartgwt.client.widgets.form.fields.FormItem; |
25 import com.smartgwt.client.widgets.form.fields.SelectItem; | 26 import com.smartgwt.client.widgets.form.fields.SelectItem; |
26 import com.smartgwt.client.widgets.form.fields.TextItem; | 27 import com.smartgwt.client.widgets.form.fields.TextItem; |
27 import com.smartgwt.client.widgets.form.fields.events.BlurEvent; | 28 import com.smartgwt.client.widgets.form.fields.events.BlurEvent; |
28 import com.smartgwt.client.widgets.form.fields.events.BlurHandler; | 29 import com.smartgwt.client.widgets.form.fields.events.BlurHandler; |
29 import com.smartgwt.client.widgets.form.fields.events.ChangedEvent; | 30 import com.smartgwt.client.widgets.form.fields.events.ChangedEvent; |
30 import com.smartgwt.client.widgets.form.fields.events.ChangedHandler; | 31 import com.smartgwt.client.widgets.form.fields.events.ChangedHandler; |
31 import com.smartgwt.client.widgets.layout.HLayout; | 32 import com.smartgwt.client.widgets.layout.HLayout; |
32 import com.smartgwt.client.widgets.layout.VLayout; | 33 import com.smartgwt.client.widgets.layout.VLayout; |
34 import com.smartgwt.client.widgets.layout.Layout; | |
33 import com.smartgwt.client.widgets.tab.Tab; | 35 import com.smartgwt.client.widgets.tab.Tab; |
34 import com.smartgwt.client.widgets.tab.TabSet; | 36 import com.smartgwt.client.widgets.tab.TabSet; |
35 | 37 |
36 import org.dive4elements.river.client.client.Config; | 38 import org.dive4elements.river.client.client.Config; |
37 import org.dive4elements.river.client.client.FLYSConstants; | 39 import org.dive4elements.river.client.client.FLYSConstants; |
51 import org.dive4elements.river.client.shared.model.StringProperty; | 53 import org.dive4elements.river.client.shared.model.StringProperty; |
52 | 54 |
53 import java.util.LinkedHashMap; | 55 import java.util.LinkedHashMap; |
54 import java.util.List; | 56 import java.util.List; |
55 import java.util.Map; | 57 import java.util.Map; |
58 import java.util.Date; | |
56 | 59 |
57 /** | 60 /** |
58 * Dialog for the Chart-Properties, constructed from respective xml document. | 61 * Dialog for the Chart-Properties, constructed from respective xml document. |
59 * | 62 * |
60 * @author <a href="mailto:raimund.renkert@intevation.de">Raimund Renkert</a> | 63 * @author <a href="mailto:raimund.renkert@intevation.de">Raimund Renkert</a> |
202 Label scale = new Label(MSG.scale() + " :"); | 205 Label scale = new Label(MSG.scale() + " :"); |
203 scale.setHeight(25); | 206 scale.setHeight(25); |
204 scale.setMargin(2); | 207 scale.setMargin(2); |
205 | 208 |
206 DynamicForm form1 = new DynamicForm(); | 209 DynamicForm form1 = new DynamicForm(); |
207 DynamicForm form2 = new DynamicForm(); | |
208 form2.setNumCols(6); | |
209 | 210 |
210 StringProperty label = | 211 StringProperty label = |
211 (StringProperty)pg.getPropertyByName("label"); | 212 (StringProperty)pg.getPropertyByName("label"); |
212 FormItem title = createStringProperty(label); | 213 FormItem title = createStringProperty(label); |
213 title.setValue( | 214 title.setValue( |
230 FormItem fs = createIntegerProperty(fontsize); | 231 FormItem fs = createIntegerProperty(fontsize); |
231 fs.setValue( | 232 fs.setValue( |
232 ((IntegerProperty) | 233 ((IntegerProperty) |
233 origPg.getPropertyByName("font-size")).getValue()); | 234 origPg.getPropertyByName("font-size")).getValue()); |
234 | 235 |
236 form1.setFields(title, fs); | |
237 | |
238 VLayout root = new VLayout(); | |
239 root.addMember(form1); | |
240 root.setHeight(90); | |
241 | |
242 | |
235 DoubleProperty upper = | 243 DoubleProperty upper = |
236 (DoubleProperty)pg.getPropertyByName("upper"); | 244 (DoubleProperty)pg.getPropertyByName("upper"); |
237 final FormItem range1 = createDoubleProperty(upper); | |
238 range1.setName("rangeupper"); | |
239 range1.setWidth(70); | |
240 range1.setValue( | |
241 ((DoubleProperty) | |
242 origPg.getPropertyByName("upper")).toUIString()); | |
243 | |
244 DoubleProperty lower = | 245 DoubleProperty lower = |
245 (DoubleProperty)pg.getPropertyByName("lower"); | 246 (DoubleProperty)pg.getPropertyByName("lower"); |
246 final FormItem range2 = createDoubleProperty(lower); | 247 |
247 range2.setName("rangelower"); | 248 FormItem range1candidate = null; |
248 range2.setWidth(70); | 249 FormItem range2candidate = null; |
249 range2.setValue( | 250 Layout scaleLayout; |
250 ((DoubleProperty) | 251 DynamicForm form2 = new DynamicForm(); |
251 origPg.getPropertyByName("lower")).toUIString()); | 252 |
252 | 253 if (upper != null && lower != null) { |
253 BooleanProperty fixation = | 254 // Normal axis with double values |
254 (BooleanProperty)pg.getPropertyByName("fixation"); | 255 scaleLayout = new HLayout(); |
255 FormItem fix = createBooleanProperty(fixation); | 256 form2.setNumCols(6); |
256 fix.setValue(((BooleanProperty) | 257 range1candidate = createDoubleProperty(upper); |
257 origPg.getPropertyByName("fixation")).getValue().booleanValue()); | 258 range1candidate.setName("rangeupper"); |
258 fix.setWidth(30); | 259 range1candidate.setWidth(70); |
259 | 260 range1candidate.setValue( |
260 fix.addChangedHandler(new ChangedHandler() { | 261 ((DoubleProperty) |
261 @Override | 262 origPg.getPropertyByName("upper")).toUIString()); |
262 public void onChanged(ChangedEvent e) { | 263 |
263 if ((Boolean)e.getValue()) { | 264 range2candidate = createDoubleProperty(lower); |
264 range1.enable(); | 265 range2candidate.setName("rangelower"); |
265 range2.enable(); | 266 range2candidate.setWidth(70); |
266 } | 267 range2candidate.setValue( |
267 else { | 268 ((DoubleProperty) |
268 range1.disable(); | 269 origPg.getPropertyByName("lower")).toUIString()); |
269 range2.disable(); | 270 } else { |
270 } | 271 // Time range axis |
271 } | 272 scaleLayout = new VLayout(); |
272 }); | 273 StringProperty dateUpper = (StringProperty)pg.getPropertyByName("upper-time"); |
273 if (fix.getValue().toString().equals("true")) { | 274 StringProperty dateLower = (StringProperty)pg.getPropertyByName("lower-time"); |
274 range1.enable(); | 275 if (dateUpper != null && dateLower != null) { |
275 range2.enable(); | 276 DateItem lowerDI = createDateProperty(dateLower); |
276 } | 277 DateItem upperDI = createDateProperty(dateUpper); |
277 else { | 278 StringProperty origUp = (StringProperty)origPg.getPropertyByName("upper-time"); |
278 range1.disable(); | 279 StringProperty origLow = (StringProperty)origPg.getPropertyByName("lower-time"); |
279 range2.disable(); | 280 try { |
280 } | 281 lowerDI.setStartDate(new Date(-2208988800000L)); |
281 | 282 lowerDI.setValue(new Date(Long.valueOf(origLow.getValue()))); |
282 form1.setFields(title, fs); | 283 upperDI.setValue(new Date(Long.valueOf(origUp.getValue()))); |
283 form2.setFields(fix, range2, range1); | 284 } catch (NumberFormatException e) { |
284 | 285 // Just leave it at default then. |
285 HLayout scaleLayout = new HLayout(); | 286 } |
286 scaleLayout.setHeight(30); | 287 range1candidate = upperDI; |
287 scaleLayout.addMember(scale); | 288 range2candidate = lowerDI; |
288 scaleLayout.addMember(form2); | 289 } |
289 scaleLayout.setStyleName("property-dialog-axis"); | 290 } |
290 | 291 |
291 VLayout root = new VLayout(); | 292 if (range1candidate != null && range2candidate != null) { |
292 root.addMember(form1); | 293 final FormItem range1 = range1candidate; |
293 root.addMember(scaleLayout); | 294 final FormItem range2 = range2candidate; |
294 root.setHeight(90); | 295 |
296 BooleanProperty fixation = | |
297 (BooleanProperty)pg.getPropertyByName("fixation"); | |
298 FormItem fix = createBooleanProperty(fixation); | |
299 fix.setValue(((BooleanProperty) | |
300 origPg.getPropertyByName("fixation")).getValue().booleanValue()); | |
301 fix.setWidth(30); | |
302 | |
303 fix.addChangedHandler(new ChangedHandler() { | |
304 @Override | |
305 public void onChanged(ChangedEvent e) { | |
306 if ((Boolean)e.getValue()) { | |
307 range1.enable(); | |
308 range2.enable(); | |
309 } | |
310 else { | |
311 range1.disable(); | |
312 range2.disable(); | |
313 } | |
314 } | |
315 }); | |
316 if (fix.getValue().toString().equals("true")) { | |
317 range1.enable(); | |
318 range2.enable(); | |
319 } | |
320 else { | |
321 range1.disable(); | |
322 range2.disable(); | |
323 } | |
324 form2.setFields(fix, range2, range1); | |
325 scaleLayout.setHeight(30); | |
326 scaleLayout.addMember(scale); | |
327 scaleLayout.addMember(form2); | |
328 scaleLayout.setStyleName("property-dialog-axis"); | |
329 root.addMember(scaleLayout); | |
330 } else { | |
331 GWT.log("Invalid settings document. Without upper/lower."); | |
332 } | |
295 | 333 |
296 return root; | 334 return root; |
297 } | 335 } |
298 return null; | 336 return null; |
299 } | 337 } |
456 } | 494 } |
457 }); | 495 }); |
458 return item; | 496 return item; |
459 } | 497 } |
460 | 498 |
499 protected DateItem createDateProperty(final StringProperty sp) { | |
500 String name = sp.getName(); | |
501 if (name.contains("-")) { | |
502 name = name.replace("-", "_"); | |
503 } | |
504 | |
505 DateItem item = new DateItem(name, MSG.getString(name)); | |
506 item.setTitleAlign(Alignment.LEFT); | |
507 item.setTitleStyle("color:#000;"); | |
508 | |
509 item.addBlurHandler(new BlurHandler() { | |
510 @Override | |
511 public void onBlur(BlurEvent e) { | |
512 DateItem di = (DateItem)e.getItem(); | |
513 sp.setValue(Long.toString(di.getValueAsDate().getTime())); | |
514 } | |
515 }); | |
516 return item; | |
517 } | |
461 | 518 |
462 /** | 519 /** |
463 * | 520 * |
464 */ | 521 */ |
465 protected FormItem createBooleanProperty(final BooleanProperty bp) { | 522 protected FormItem createBooleanProperty(final BooleanProperty bp) { |