]> source.dussan.org Git - vaadin-framework.git/commitdiff
static id for floating calendars (#1260). Also showing popup with callback function...
authorMatti Tahvonen <matti.tahvonen@itmill.com>
Wed, 9 Jan 2008 14:52:31 +0000 (14:52 +0000)
committerMatti Tahvonen <matti.tahvonen@itmill.com>
Wed, 9 Jan 2008 14:52:31 +0000 (14:52 +0000)
svn changeset:3433/svn branch:trunk

src/com/itmill/toolkit/terminal/gwt/client/ui/IPopupCalendar.java

index 8d1495190a84647918f35e22d4dcb39e44fc264f..c90ea2a35cfc69e5b39cbdca1467d05beb933010 100644 (file)
@@ -4,11 +4,13 @@
 \r
 package com.itmill.toolkit.terminal.gwt.client.ui;\r
 \r
+import com.google.gwt.user.client.DOM;\r
 import com.google.gwt.user.client.Window;\r
 import com.google.gwt.user.client.ui.ClickListener;\r
 import com.google.gwt.user.client.ui.PopupListener;\r
 import com.google.gwt.user.client.ui.PopupPanel;\r
 import com.google.gwt.user.client.ui.Widget;\r
+import com.google.gwt.user.client.ui.PopupPanel.PositionCallback;\r
 import com.itmill.toolkit.terminal.gwt.client.ApplicationConnection;\r
 import com.itmill.toolkit.terminal.gwt.client.Paintable;\r
 import com.itmill.toolkit.terminal.gwt.client.UIDL;\r
@@ -36,6 +38,10 @@ public class IPopupCalendar extends ITextualDate implements Paintable,
         popup.setStyleName(IDateField.CLASSNAME + "-popup");\r
         popup.setWidget(calendar);\r
         popup.addPopupListener(this);\r
+\r
+        DOM.setElementProperty(calendar.getElement(), "id",\r
+                "PID_TOOLKIT_POPUPCAL");\r
+\r
     }\r
 \r
     public void updateFromUIDL(UIDL uidl, ApplicationConnection client) {\r
@@ -49,26 +55,36 @@ public class IPopupCalendar extends ITextualDate implements Paintable,
     public void onClick(Widget sender) {\r
         if (sender == calendarToggle && !open) {\r
             calendar.updateCalendar();\r
-            popup.show();\r
             // clear previous values\r
             popup.setWidth("");\r
             popup.setHeight("");\r
-            final int w = calendar.getOffsetWidth();\r
-            final int h = calendar.getOffsetHeight();\r
-            int t = calendarToggle.getAbsoluteTop();\r
-            int l = calendarToggle.getAbsoluteLeft();\r
-            if (l + w > Window.getClientWidth() + Window.getScrollLeft()) {\r
-                l = Window.getClientWidth() + Window.getScrollLeft() - w;\r
-            }\r
-            if (t + h > Window.getClientHeight() + Window.getScrollTop()) {\r
-                t = Window.getClientHeight() + Window.getScrollTop() - h\r
-                        - calendarToggle.getOffsetHeight() - 30;\r
-                l += calendarToggle.getOffsetWidth();\r
-            }\r
-            popup.setPopupPosition(l, t + calendarToggle.getOffsetHeight() + 2);\r
-            popup.setWidth(w + "px");\r
-            popup.setHeight(h + "px");\r
-            open = true;\r
+            popup.setPopupPositionAndShow(new PositionCallback() {\r
+                public void setPosition(int offsetWidth, int offsetHeight) {\r
+                    final int w = offsetWidth;\r
+                    final int h = offsetHeight;\r
+                    int t = calendarToggle.getAbsoluteTop();\r
+                    int l = calendarToggle.getAbsoluteLeft();\r
+                    if (l + w > Window.getClientWidth()\r
+                            + Window.getScrollLeft()) {\r
+                        l = Window.getClientWidth() + Window.getScrollLeft()\r
+                                - w;\r
+                    }\r
+                    if (t + h > Window.getClientHeight()\r
+                            + Window.getScrollTop()) {\r
+                        t = Window.getClientHeight() + Window.getScrollTop()\r
+                                - h - calendarToggle.getOffsetHeight() - 30;\r
+                        l += calendarToggle.getOffsetWidth();\r
+                    }\r
+                    popup.setPopupPosition(l, t\r
+                            + calendarToggle.getOffsetHeight() + 2);\r
+\r
+                    // fix size\r
+                    popup.setWidth(w + "px");\r
+                    popup.setHeight(h + "px");\r
+                    open = true;\r
+\r
+                }\r
+            });\r
         } else {\r
             open = false;\r
         }\r