]> source.dussan.org Git - vaadin-framework.git/commitdiff
Fixed nasty bug with CalendarField component (used in Reservr). It worked correctly...
authorMatti Tahvonen <matti.tahvonen@itmill.com>
Thu, 17 Apr 2008 14:33:21 +0000 (14:33 +0000)
committerMatti Tahvonen <matti.tahvonen@itmill.com>
Thu, 17 Apr 2008 14:33:21 +0000 (14:33 +0000)
svn changeset:4192/svn branch:trunk

src/com/itmill/toolkit/demo/reservation/CalendarField.java
src/com/itmill/toolkit/demo/reservation/gwt/client/ui/ICalendarField.java

index 565d78a97b20e1b96d6ee391bd953a9d7869535f..b28ae4df1d23be95d48dcac362771dc0f7658ad1 100644 (file)
@@ -4,6 +4,7 @@
 \r
 package com.itmill.toolkit.demo.reservation;\r
 \r
+import java.text.SimpleDateFormat;\r
 import java.util.Collection;\r
 import java.util.Date;\r
 import java.util.Iterator;\r
@@ -68,7 +69,7 @@ public class CalendarField extends DateField implements Container.Viewer {
 \r
     public void init() {\r
         super.setResolution(RESOLUTION_HOUR);\r
-\r
+        \r
     }\r
 \r
     /**\r
@@ -282,15 +283,22 @@ public class CalendarField extends DateField implements Container.Viewer {
                             final String styleName = (String) p.getValue();\r
                             target.addAttribute("styleName", styleName);\r
                         }\r
-                        target.addAttribute("start", "" + start.getTime());\r
+                        SimpleDateFormat sdf = new SimpleDateFormat(\r
+                                "d MMM yyyy HH:mm:ss Z");\r
+\r
+                        target.addAttribute("Z", start.getTimezoneOffset());\r
+\r
+                        target.addAttribute("start", "" + sdf.format(start));\r
+\r
                         if (end != start) {\r
-                            target.addAttribute("end", "" + end.getTime());\r
+                            target.addAttribute("end", "" + sdf.format(end));\r
                         }\r
                         if (itemTitlePropertyId != null) {\r
                             p = item.getItemProperty(itemTitlePropertyId);\r
                             final Object val = p.getValue();\r
                             if (val != null) {\r
                                 target.addAttribute("title", val.toString());\r
+                                System.out.println(val);\r
                             }\r
                         }\r
                         if (itemDescriptionPropertyId != null) {\r
index 70aaf642de635a372683e8bc6385b2e5723862df..2016b53e0f356f2af4fc08e8a0b6e353dba0a308 100644 (file)
@@ -10,6 +10,7 @@ import java.util.HashMap;
 import java.util.Iterator;\r
 import java.util.List;\r
 \r
+import com.google.gwt.i18n.client.DateTimeFormat;\r
 import com.google.gwt.user.client.DOM;\r
 import com.google.gwt.user.client.Element;\r
 import com.google.gwt.user.client.ui.FlexTable;\r
@@ -194,9 +195,10 @@ public class ICalendarField extends IDateField {
 \r
     }\r
 \r
-    private native void setScrollTop(Element el, int scrollTop) /*-{\r
-                                   el.scrollTop = scrollTop;\r
-                                 }-*/;\r
+    private native void setScrollTop(Element el, int scrollTop)\r
+    /*-{\r
+         el.scrollTop = scrollTop;\r
+    }-*/;\r
 \r
     private class HourTableListener implements TableListener {\r
 \r
@@ -217,16 +219,23 @@ public class ICalendarField extends IDateField {
         public void addItem(UIDL item) {\r
             final String styleName = item.getStringAttribute("styleName");\r
             // final Integer id = new Integer(item.getIntAttribute("id"));\r
-            final long start = Long.parseLong(item.getStringAttribute("start"));\r
-            final Date startDate = new Date(start);\r
-            long end = -1;\r
-            try {\r
-                end = Long.parseLong(item.getStringAttribute("end"));\r
-            } catch (final Exception IGNORED) {\r
-                // IGNORED attribute not required\r
+\r
+            DateTimeFormat dtf = DateTimeFormat\r
+                    .getFormat("d MMM yyyy HH:mm:ss Z");\r
+\r
+            Date startDate = dtf.parse(item.getStringAttribute("start"));\r
+\r
+            // fix times with server-client difference\r
+            int diff = (startDate.getTimezoneOffset() - item\r
+                    .getIntAttribute("Z")) * 60000;\r
+            startDate = new Date(startDate.getTime() + diff);\r
+            Date endDate;\r
+            if (item.hasAttribute("end")) {\r
+                endDate = dtf.parse(item.getStringAttribute("end"));\r
+                endDate = new Date(endDate.getTime() + diff);\r
+            } else {\r
+                endDate = (Date) startDate.clone();\r
             }\r
-            final Date endDate = (end > 0 && end != start ? new Date(end)\r
-                    : new Date(start));\r
             final String title = item.getStringAttribute("title");\r
             final String desc = item.getStringAttribute("description");\r
             final boolean notime = item.getBooleanAttribute("notime");\r