]> source.dussan.org Git - vaadin-framework.git/commitdiff
DateField nulled as appropriate. Fixes #1228
authorMarc Englund <marc.englund@itmill.com>
Mon, 25 Feb 2008 15:06:41 +0000 (15:06 +0000)
committerMarc Englund <marc.englund@itmill.com>
Mon, 25 Feb 2008 15:06:41 +0000 (15:06 +0000)
svn changeset:3921/svn branch:trunk

src/com/itmill/toolkit/terminal/gwt/client/ui/CalendarPanel.java
src/com/itmill/toolkit/terminal/gwt/client/ui/IDateField.java
src/com/itmill/toolkit/terminal/gwt/client/ui/Time.java

index 5173831811873d3661376b80d780e976b795b244..ee5b6ef1b0f5744976d8859fae2e90dc86f42cf5 100644 (file)
@@ -95,9 +95,10 @@ public class CalendarPanel extends FlexTable implements MouseListener,
     }\r
 \r
     private void buildCalendarHeader(boolean forceRedraw, boolean needsMonth) {\r
+        Date cdate = datefield.getCurrentDate();\r
         // Can't draw a calendar without a date\r
-        if (datefield.getCurrentDate() == null) {\r
-            datefield.setCurrentDate(new Date());\r
+        if (cdate == null) {\r
+            cdate = new Date();\r
         }\r
 \r
         if (forceRedraw) {\r
@@ -164,8 +165,8 @@ public class CalendarPanel extends FlexTable implements MouseListener,
         }\r
 \r
         final String monthName = needsMonth ? datefield.getDateTimeService()\r
-                .getMonth(datefield.getCurrentDate().getMonth()) : "";\r
-        final int year = datefield.getCurrentDate().getYear() + 1900;\r
+                .getMonth(cdate.getMonth()) : "";\r
+        final int year = cdate.getYear() + 1900;\r
         setHTML(0, 2, "<span class=\"" + IDateField.CLASSNAME\r
                 + "-calendarpanel-month\">" + monthName + " " + year\r
                 + "</span>");\r
@@ -173,8 +174,10 @@ public class CalendarPanel extends FlexTable implements MouseListener,
 \r
     private void buildCalendarBody() {\r
         Date date = datefield.getCurrentDate();\r
+        boolean selected = true; // date actually selected?\r
         if (date == null) {\r
             date = new Date();\r
+            selected = false;\r
         }\r
         final int startWeekDay = datefield.getDateTimeService()\r
                 .getStartWeekDay(date);\r
@@ -208,7 +211,7 @@ public class CalendarPanel extends FlexTable implements MouseListener,
                         if (!isEnabledDate(curr)) {\r
                             cssClass += " " + baseclass + "-disabled";\r
                         }\r
-                        if (date.getDate() == dayCount) {\r
+                        if (selected && date.getDate() == dayCount) {\r
                             cssClass += " " + baseclass + "-selected";\r
                         }\r
                         if (today.getDate() == dayCount\r
index 069cd821b4b3bd6c3dfb82f093c833616b83c170..76408cbbd2925347b78d218bc3734199c2583ec8 100644 (file)
@@ -113,6 +113,8 @@ public class IDateField extends FlowPanel implements Paintable {
         if (year > -1) {\r
             date = new Date((long) getTime(year, month, day, hour, min, sec,\r
                     msec));\r
+        } else {\r
+            date = null;\r
         }\r
 \r
     }\r
@@ -122,23 +124,24 @@ public class IDateField extends FlowPanel implements Paintable {
      * have a setMilliseconds method.\r
      */\r
     private static native double getTime(int y, int m, int d, int h, int mi,\r
-            int s, int ms) /*-{\r
-                         try {\r
-                               var date = new Date();\r
-                               if(y && y >= 0) date.setFullYear(y);\r
-                               if(m && m >= 1) date.setMonth(m-1);\r
-                               if(d && d >= 0) date.setDate(d);\r
-                               if(h && h >= 0) date.setHours(h);\r
-                               if(mi && mi >= 0) date.setMinutes(mi);\r
-                               if(s && s >= 0) date.setSeconds(s);\r
-                               if(ms && ms >= 0) date.setMilliseconds(ms);\r
-                               return date.getTime();\r
-                         } catch (e) {\r
-                               // TODO print some error message on the console\r
-                               //console.log(e);\r
-                               return (new Date()).getTime();\r
-                         }\r
-                         }-*/;\r
+            int s, int ms)\r
+    /*-{\r
+       try {\r
+               var date = new Date();\r
+               if(y && y >= 0) date.setFullYear(y);\r
+               if(m && m >= 1) date.setMonth(m-1);\r
+               if(d && d >= 0) date.setDate(d);\r
+               if(h && h >= 0) date.setHours(h);\r
+               if(mi && mi >= 0) date.setMinutes(mi);\r
+               if(s && s >= 0) date.setSeconds(s);\r
+               if(ms && ms >= 0) date.setMilliseconds(ms);\r
+               return date.getTime();\r
+       } catch (e) {\r
+               // TODO print some error message on the console\r
+               //console.log(e);\r
+               return (new Date()).getTime();\r
+       }\r
+    }-*/;\r
 \r
     public int getMilliseconds() {\r
         return (int) (date.getTime() - date.getTime() / 1000 * 1000);\r
index f45b58c3c0aef06752713c3961305f8c59f59647..3de9929a5cd76522b381133fce89bfbea03ced9f 100644 (file)
@@ -4,6 +4,8 @@
 \r
 package com.itmill.toolkit.terminal.gwt.client.ui;\r
 \r
+import java.util.Date;\r
+\r
 import com.google.gwt.user.client.ui.ChangeListener;\r
 import com.google.gwt.user.client.ui.FlowPanel;\r
 import com.google.gwt.user.client.ui.ListBox;\r
@@ -149,27 +151,35 @@ public class Time extends FlowPanel implements ChangeListener {
         }\r
 \r
         // Update times\r
+        Date cdate = datefield.getCurrentDate();\r
+        boolean selected = true;\r
+        if (cdate == null) {\r
+            cdate = new Date();\r
+            selected = false;\r
+        }\r
         if (thc) {\r
-            int h = datefield.getCurrentDate().getHours();\r
+            int h = cdate.getHours();\r
             ampm.setSelectedIndex(h < 12 ? 0 : 1);\r
             h -= ampm.getSelectedIndex() * 12;\r
             hours.setSelectedIndex(h);\r
         } else {\r
-            hours.setSelectedIndex(datefield.getCurrentDate().getHours());\r
+            hours.setSelectedIndex(cdate.getHours());\r
         }\r
         if (datefield.getCurrentResolution() >= IDateField.RESOLUTION_MIN) {\r
-            mins.setSelectedIndex(datefield.getCurrentDate().getMinutes());\r
+            mins.setSelectedIndex(cdate.getMinutes());\r
         }\r
         if (datefield.getCurrentResolution() >= IDateField.RESOLUTION_SEC) {\r
-            sec.setSelectedIndex(datefield.getCurrentDate().getSeconds());\r
+            sec.setSelectedIndex(cdate.getSeconds());\r
         }\r
         if (datefield.getCurrentResolution() == IDateField.RESOLUTION_MSEC) {\r
-            msec.setSelectedIndex(datefield.getMilliseconds());\r
+            if (selected) {\r
+                msec.setSelectedIndex(datefield.getMilliseconds());\r
+            } else {\r
+                msec.setSelectedIndex(0);\r
+            }\r
         }\r
         if (thc) {\r
-            ampm\r
-                    .setSelectedIndex(datefield.getCurrentDate().getHours() < 12 ? 0\r
-                            : 1);\r
+            ampm.setSelectedIndex(cdate.getHours() < 12 ? 0 : 1);\r
         }\r
 \r
         if (datefield.isReadonly() && !redraw) {\r
@@ -178,7 +188,7 @@ public class Time extends FlowPanel implements ChangeListener {
             final String delimiter = datefield.getDateTimeService()\r
                     .getClockDelimeter();\r
 \r
-            int h = datefield.getCurrentDate().getHours();\r
+            int h = cdate.getHours();\r
             if (thc) {\r
                 h -= h < 12 ? 0 : 12;\r
             }\r
@@ -205,8 +215,7 @@ public class Time extends FlowPanel implements ChangeListener {
             }\r
             if (thc) {\r
                 add(new ILabel("&nbsp;"));\r
-                add(new ILabel(ampm.getItemText(datefield.getCurrentDate()\r
-                        .getHours() < 12 ? 0 : 1)));\r
+                add(new ILabel(ampm.getItemText(cdate.getHours() < 12 ? 0 : 1)));\r
             }\r
         }\r
 \r