From: Marc Englund Date: Mon, 9 Jun 2008 09:51:44 +0000 (+0000) Subject: Updates all datefield variables if the value _was_ null, so that the client and sever... X-Git-Tag: 6.7.0.beta1~4643 X-Git-Url: https://source.dussan.org/?a=commitdiff_plain;h=46573e56444ec1423d167e3a8ed0b62ae29da578;p=vaadin-framework.git Updates all datefield variables if the value _was_ null, so that the client and sever agrees on current time. Fixes #1794 svn changeset:4807/svn branch:trunk --- diff --git a/src/com/itmill/toolkit/terminal/gwt/client/ui/CalendarPanel.java b/src/com/itmill/toolkit/terminal/gwt/client/ui/CalendarPanel.java index bd185e7192..b471531e35 100644 --- a/src/com/itmill/toolkit/terminal/gwt/client/ui/CalendarPanel.java +++ b/src/com/itmill/toolkit/terminal/gwt/client/ui/CalendarPanel.java @@ -401,15 +401,26 @@ public class CalendarPanel extends FlexTable implements MouseListener, try { final Integer day = new Integer(text); - if (cal.datefield.getCurrentDate() == null) { - cal.datefield.setCurrentDate(new Date()); - } final Date newDate = cal.datefield.getShowingDate(); newDate.setDate(day.intValue()); if (!isEnabledDate(newDate)) { return; } - cal.datefield.getCurrentDate().setTime(newDate.getTime()); + if (cal.datefield.getCurrentDate() == null) { + cal.datefield.setCurrentDate(new Date(newDate.getTime())); + + // Init variables with current time + datefield.getClient().updateVariable(cal.datefield.getId(), + "hour", newDate.getHours(), false); + datefield.getClient().updateVariable(cal.datefield.getId(), + "min", newDate.getMinutes(), false); + datefield.getClient().updateVariable(cal.datefield.getId(), + "sec", newDate.getSeconds(), false); + datefield.getClient().updateVariable(cal.datefield.getId(), + "msec", datefield.getMilliseconds(), false); + } + + // cal.datefield.getCurrentDate().setTime(newDate.getTime()); cal.datefield.getClient().updateVariable(cal.datefield.getId(), "day", cal.datefield.getCurrentDate().getDate(), false); cal.datefield.getClient().updateVariable(cal.datefield.getId(), diff --git a/src/com/itmill/toolkit/terminal/gwt/client/ui/Time.java b/src/com/itmill/toolkit/terminal/gwt/client/ui/Time.java index 63ddd1343c..ee7b40f2b4 100644 --- a/src/com/itmill/toolkit/terminal/gwt/client/ui/Time.java +++ b/src/com/itmill/toolkit/terminal/gwt/client/ui/Time.java @@ -249,7 +249,28 @@ public class Time extends FlowPanel implements ChangeListener { public void onChange(Widget sender) { if (datefield.getCurrentDate() == null) { // was null on server, need to set - datefield.setCurrentDate(new Date()); + Date now = datefield.getShowingDate(); + if (now == null) { + now = new Date(); + datefield.setShowingDate(now); + } + datefield.setCurrentDate(new Date(now.getTime())); + + // Init variables with current time + datefield.getClient().updateVariable(datefield.getId(), "year", + now.getYear() + 1900, false); + datefield.getClient().updateVariable(datefield.getId(), "month", + now.getMonth() + 1, false); + datefield.getClient().updateVariable(datefield.getId(), "day", + now.getDate(), false); + datefield.getClient().updateVariable(datefield.getId(), "hour", + now.getHours(), false); + datefield.getClient().updateVariable(datefield.getId(), "min", + now.getMinutes(), false); + datefield.getClient().updateVariable(datefield.getId(), "sec", + now.getSeconds(), false); + datefield.getClient().updateVariable(datefield.getId(), "msec", + datefield.getMilliseconds(), false); } if (sender == hours) { int h = hours.getSelectedIndex();