Mercurial > dive4elements > river
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; + } }