diff flys-client/src/main/java/de/intevation/flys/client/client/ui/GaugeTimeRangePanel.java @ 2468:6a65694bdcc2

Issue 506. Gauge time range panel now accepts dates. The dates are stored as long values. flys-client/trunk@4176 c6561f87-3c4e-4783-a992-168aeb5c3f6f
author Raimund Renkert <raimund.renkert@intevation.de>
date Tue, 20 Mar 2012 14:53:42 +0000
parents f30919997e57
children 8d27d2d33d70
line wrap: on
line diff
--- a/flys-client/src/main/java/de/intevation/flys/client/client/ui/GaugeTimeRangePanel.java	Tue Mar 20 12:59:25 2012 +0000
+++ b/flys-client/src/main/java/de/intevation/flys/client/client/ui/GaugeTimeRangePanel.java	Tue Mar 20 14:53:42 2012 +0000
@@ -1,10 +1,21 @@
 package de.intevation.flys.client.client.ui;
 
+import java.util.List;
+import java.util.ArrayList;
+import java.util.Date;
+import java.util.Calendar;
+import java.text.ParseException;
+
 import com.google.gwt.core.client.GWT;
+import com.google.gwt.i18n.client.DateTimeFormat;
 
 import com.smartgwt.client.types.ListGridFieldType;
 
 import com.smartgwt.client.data.Record;
+import com.smartgwt.client.widgets.layout.HLayout;
+import com.smartgwt.client.widgets.form.DynamicForm;
+import com.smartgwt.client.widgets.form.fields.DateRangeItem;
+import com.smartgwt.client.widgets.Label;
 
 import com.smartgwt.client.widgets.layout.VLayout;
 import com.smartgwt.client.widgets.Canvas;
@@ -22,19 +33,23 @@
 import de.intevation.flys.client.shared.model.DataItem;
 import de.intevation.flys.client.shared.model.ArtifactDescription;
 import de.intevation.flys.client.shared.model.Data;
+import de.intevation.flys.client.shared.model.RangeData;
+import de.intevation.flys.client.shared.model.LongRangeData;
 
 import de.intevation.flys.client.client.ui.range.DischargeInfoDataSource;
 
 /**
  * @author <a href="mailto:raimund.renkert@intevation.de">Raimund Renkert</a>
  */
-public class GaugeTimeRangePanel extends IntegerRangePanel {
+public class GaugeTimeRangePanel extends RangePanel {
 
     /** The message class that provides i18n strings. */
     protected FLYSConstants MESSAGES = GWT.create(FLYSConstants.class);
 
     protected ListGrid yearTable;
 
+    protected DateRangeItem dateRange;
+
     public GaugeTimeRangePanel() {
         GWT.log("Creating YearInputPanel");
         yearTable = new ListGrid();
@@ -68,6 +83,127 @@
     }
 
 
+    @Override
+    protected void initDefaults(DataList dataList) {
+        RangeData data = findRangeData(dataList);
+
+        if(data != null) {
+            GWT.log("data: " + data);
+        }
+    }
+
+
+    @Override
+    public Canvas createOld(DataList dataList) {
+        GWT.log("create old date.");
+        Data       data  = dataList.get(0);
+        DataItem[] items = data.getItems();
+GWT.log(data.getClass().toString());
+        HLayout layout = new HLayout();
+
+        Label label = new Label(dataList.getLabel());
+        label.setWidth(200);
+        label.setHeight(20);
+
+        Date dl = new Date((Long)((LongRangeData)data).getLower());
+        Date du = new Date((Long)((LongRangeData)data).getUpper());
+        DateTimeFormat dtf = DateTimeFormat.getMediumDateFormat();
+        Label value = new Label(dtf.format(dl) + " - " + dtf.format(du));
+        value.setHeight(20);
+
+        layout.addMember(label);
+        layout.addMember(value);
+        layout.addMember(getBackButton(dataList.getState()));
+
+        return layout;
+    }
+
+
+    @Override
+    protected Data[] getData() {
+        long lo = getLowerAsLong();
+        long up = getUpperAsLong();
+
+        return new Data[] { new LongRangeData(getDataName(), null, lo, up) };
+    }
+
+
+    @Override
+    protected Canvas createForm(DataList dataList) {
+        HLayout layout = new HLayout();
+        DynamicForm form = new DynamicForm();
+        dateRange = new DateRangeItem();
+        dateRange.setToTitle(MESSAGES.to());
+        dateRange.setFromTitle(MESSAGES.from());
+        dateRange.setShowTitle(false);
+        form.setFields(dateRange);
+
+        layout.addMember(form);
+        return layout;
+
+    }
+
+
+    @Override
+    public Object getMaxLower() {
+        Date d = dateRange.getFromDate();
+        return new Long(d.getTime());
+    }
+
+
+    protected long getLowerAsLong() {
+        Date d = dateRange.getFromDate();
+        return d.getTime();
+    }
+
+
+    protected long getUpperAsLong() {
+        Date d = dateRange.getToDate();
+        return d.getTime();
+    }
+
+
+    @Override
+    public Object getMaxUpper() {
+        Date d = dateRange.getToDate();
+        return new Long(d.getTime());
+    }
+
+
+    @Override
+    public void setLower(String lower) {
+        try {
+            DateTimeFormat dtf =
+                DateTimeFormat.getFormat("yyyy");
+            Date dy = dtf.parse(lower);
+            dy.setMonth(0);
+            dy.setDate(1);
+            dateRange.setFromDate(dy);
+        }
+        catch(IllegalArgumentException iae) {
+            GWT.log("could not parse lower date.");
+            //TODO: Messagebox with error.
+        }
+    }
+
+
+    @Override
+    public void setUpper(String upper) {
+        try {
+            DateTimeFormat dtf =
+                DateTimeFormat.getFormat("yyyy");
+            Date dy = dtf.parse(upper);
+            dy.setMonth(0);
+            dy.setDate(1);
+            dateRange.setToDate(dy);
+        }
+        catch(IllegalArgumentException iae) {
+            GWT.log("could not parse upper date.");
+            //TODO: Messagebox with error.
+        }
+    }
+
+
     protected ListGrid initYearTable() {
         String baseUrl = GWT.getHostPageBaseURL();
 
@@ -174,4 +310,18 @@
             return 0;
         }
     }
+
+
+    @Override
+    public List<String> validate() {
+        List<String> errors = new ArrayList<String>();
+        if (dateRange.getFromDate() == null ||
+            dateRange.getToDate() == null ||
+            !dateRange.getFromDate().before(dateRange.getToDate()))
+        {
+            String msg = MSG.error_validate_date_range();
+            errors.add(msg);
+        }
+        return errors;
+    }
 }

http://dive4elements.wald.intevation.org