package com.itmill.toolkit.terminal.gwt.client.ui;\r
\r
-import com.google.gwt.user.client.ui.ChangeListener;\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.itmill.toolkit.terminal.gwt.client.Paintable;\r
import com.itmill.toolkit.terminal.gwt.client.UIDL;\r
\r
-public class IPopupCalendar extends IDateField implements Paintable, ChangeListener, ClickListener {\r
- \r
- private ITextField text;\r
+public class IPopupCalendar extends ITextualDate implements Paintable, ClickListener, PopupListener {\r
\r
private IButton calendarToggle;\r
\r
\r
public IPopupCalendar() {\r
super();\r
- text = new ITextField();\r
- text.addChangeListener(this);\r
+ \r
calendarToggle = new IButton();\r
calendarToggle.setText("...");\r
calendarToggle.addClickListener(this);\r
+ add(calendarToggle);\r
+ \r
calendar = new ICalendarPanel(this);\r
popup = new PopupPanel(true);\r
popup.setStyleName(IDateField.CLASSNAME+"-calendar");\r
popup.setWidget(calendar);\r
- add(text);\r
- add(calendarToggle);\r
+ popup.addPopupListener(this);\r
}\r
\r
public void updateFromUIDL(UIDL uidl, Client client) {\r
super.updateFromUIDL(uidl, client);\r
- \r
- \r
- \r
calendar.updateCalendar();\r
}\r
\r
- public void onChange(Widget sender) {\r
- \r
- }\r
-\r
public void onClick(Widget sender) {\r
if(sender == calendarToggle) {\r
+ calendar.updateCalendar();\r
popup.setPopupPosition(calendarToggle.getAbsoluteLeft(), calendarToggle.getAbsoluteTop() + calendarToggle.getOffsetHeight() + 2);\r
popup.show();\r
popup.setWidth(calendar.getOffsetWidth() + "px");\r
}\r
}\r
\r
+ public void onPopupClosed(PopupPanel sender, boolean autoClosed) {\r
+ if(sender == popup)\r
+ buildTime();\r
+ }\r
+\r
}\r
buildTime();\r
}\r
\r
- private void buildTime() {\r
+ protected void buildTime() {\r
dl = new DateLocale();\r
DateLocale.setLocale(currentLocale);\r
\r
else if(ms<100) text = "0"+text;\r
dateText += "." + text;\r
}\r
- if(dts.isTwelveHourClock())\r
+ if(currentResolution >= IDateField.RESOLUTION_HOUR && dts.isTwelveHourClock())\r
dateText += " " + (date.getHours()<12? dts.getAmPmStrings()[0] : dts.getAmPmStrings()[1]);\r
\r
text.setText(dateText);\r