From 021fd3557b3940b3df7acd3c8ad9f86c7c2dd328 Mon Sep 17 00:00:00 2001 From: Marc Englund Date: Mon, 25 Feb 2008 15:06:41 +0000 Subject: [PATCH] DateField nulled as appropriate. Fixes #1228 svn changeset:3921/svn branch:trunk --- .../terminal/gwt/client/ui/CalendarPanel.java | 13 ++++--- .../terminal/gwt/client/ui/IDateField.java | 37 ++++++++++--------- .../toolkit/terminal/gwt/client/ui/Time.java | 31 ++++++++++------ 3 files changed, 48 insertions(+), 33 deletions(-) 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 5173831811..ee5b6ef1b0 100644 --- a/src/com/itmill/toolkit/terminal/gwt/client/ui/CalendarPanel.java +++ b/src/com/itmill/toolkit/terminal/gwt/client/ui/CalendarPanel.java @@ -95,9 +95,10 @@ public class CalendarPanel extends FlexTable implements MouseListener, } private void buildCalendarHeader(boolean forceRedraw, boolean needsMonth) { + Date cdate = datefield.getCurrentDate(); // Can't draw a calendar without a date - if (datefield.getCurrentDate() == null) { - datefield.setCurrentDate(new Date()); + if (cdate == null) { + cdate = new Date(); } if (forceRedraw) { @@ -164,8 +165,8 @@ public class CalendarPanel extends FlexTable implements MouseListener, } final String monthName = needsMonth ? datefield.getDateTimeService() - .getMonth(datefield.getCurrentDate().getMonth()) : ""; - final int year = datefield.getCurrentDate().getYear() + 1900; + .getMonth(cdate.getMonth()) : ""; + final int year = cdate.getYear() + 1900; setHTML(0, 2, "" + monthName + " " + year + ""); @@ -173,8 +174,10 @@ public class CalendarPanel extends FlexTable implements MouseListener, private void buildCalendarBody() { Date date = datefield.getCurrentDate(); + boolean selected = true; // date actually selected? if (date == null) { date = new Date(); + selected = false; } final int startWeekDay = datefield.getDateTimeService() .getStartWeekDay(date); @@ -208,7 +211,7 @@ public class CalendarPanel extends FlexTable implements MouseListener, if (!isEnabledDate(curr)) { cssClass += " " + baseclass + "-disabled"; } - if (date.getDate() == dayCount) { + if (selected && date.getDate() == dayCount) { cssClass += " " + baseclass + "-selected"; } if (today.getDate() == dayCount diff --git a/src/com/itmill/toolkit/terminal/gwt/client/ui/IDateField.java b/src/com/itmill/toolkit/terminal/gwt/client/ui/IDateField.java index 069cd821b4..76408cbbd2 100644 --- a/src/com/itmill/toolkit/terminal/gwt/client/ui/IDateField.java +++ b/src/com/itmill/toolkit/terminal/gwt/client/ui/IDateField.java @@ -113,6 +113,8 @@ public class IDateField extends FlowPanel implements Paintable { if (year > -1) { date = new Date((long) getTime(year, month, day, hour, min, sec, msec)); + } else { + date = null; } } @@ -122,23 +124,24 @@ public class IDateField extends FlowPanel implements Paintable { * have a setMilliseconds method. */ private static native double getTime(int y, int m, int d, int h, int mi, - int s, int ms) /*-{ - try { - var date = new Date(); - if(y && y >= 0) date.setFullYear(y); - if(m && m >= 1) date.setMonth(m-1); - if(d && d >= 0) date.setDate(d); - if(h && h >= 0) date.setHours(h); - if(mi && mi >= 0) date.setMinutes(mi); - if(s && s >= 0) date.setSeconds(s); - if(ms && ms >= 0) date.setMilliseconds(ms); - return date.getTime(); - } catch (e) { - // TODO print some error message on the console - //console.log(e); - return (new Date()).getTime(); - } - }-*/; + int s, int ms) + /*-{ + try { + var date = new Date(); + if(y && y >= 0) date.setFullYear(y); + if(m && m >= 1) date.setMonth(m-1); + if(d && d >= 0) date.setDate(d); + if(h && h >= 0) date.setHours(h); + if(mi && mi >= 0) date.setMinutes(mi); + if(s && s >= 0) date.setSeconds(s); + if(ms && ms >= 0) date.setMilliseconds(ms); + return date.getTime(); + } catch (e) { + // TODO print some error message on the console + //console.log(e); + return (new Date()).getTime(); + } + }-*/; public int getMilliseconds() { return (int) (date.getTime() - date.getTime() / 1000 * 1000); 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 f45b58c3c0..3de9929a5c 100644 --- a/src/com/itmill/toolkit/terminal/gwt/client/ui/Time.java +++ b/src/com/itmill/toolkit/terminal/gwt/client/ui/Time.java @@ -4,6 +4,8 @@ package com.itmill.toolkit.terminal.gwt.client.ui; +import java.util.Date; + import com.google.gwt.user.client.ui.ChangeListener; import com.google.gwt.user.client.ui.FlowPanel; import com.google.gwt.user.client.ui.ListBox; @@ -149,27 +151,35 @@ public class Time extends FlowPanel implements ChangeListener { } // Update times + Date cdate = datefield.getCurrentDate(); + boolean selected = true; + if (cdate == null) { + cdate = new Date(); + selected = false; + } if (thc) { - int h = datefield.getCurrentDate().getHours(); + int h = cdate.getHours(); ampm.setSelectedIndex(h < 12 ? 0 : 1); h -= ampm.getSelectedIndex() * 12; hours.setSelectedIndex(h); } else { - hours.setSelectedIndex(datefield.getCurrentDate().getHours()); + hours.setSelectedIndex(cdate.getHours()); } if (datefield.getCurrentResolution() >= IDateField.RESOLUTION_MIN) { - mins.setSelectedIndex(datefield.getCurrentDate().getMinutes()); + mins.setSelectedIndex(cdate.getMinutes()); } if (datefield.getCurrentResolution() >= IDateField.RESOLUTION_SEC) { - sec.setSelectedIndex(datefield.getCurrentDate().getSeconds()); + sec.setSelectedIndex(cdate.getSeconds()); } if (datefield.getCurrentResolution() == IDateField.RESOLUTION_MSEC) { - msec.setSelectedIndex(datefield.getMilliseconds()); + if (selected) { + msec.setSelectedIndex(datefield.getMilliseconds()); + } else { + msec.setSelectedIndex(0); + } } if (thc) { - ampm - .setSelectedIndex(datefield.getCurrentDate().getHours() < 12 ? 0 - : 1); + ampm.setSelectedIndex(cdate.getHours() < 12 ? 0 : 1); } if (datefield.isReadonly() && !redraw) { @@ -178,7 +188,7 @@ public class Time extends FlowPanel implements ChangeListener { final String delimiter = datefield.getDateTimeService() .getClockDelimeter(); - int h = datefield.getCurrentDate().getHours(); + int h = cdate.getHours(); if (thc) { h -= h < 12 ? 0 : 12; } @@ -205,8 +215,7 @@ public class Time extends FlowPanel implements ChangeListener { } if (thc) { add(new ILabel(" ")); - add(new ILabel(ampm.getItemText(datefield.getCurrentDate() - .getHours() < 12 ? 0 : 1))); + add(new ILabel(ampm.getItemText(cdate.getHours() < 12 ? 0 : 1))); } } -- 2.39.5