\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
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
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