}\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
}\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
\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
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
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
* 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
\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
}\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
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
}\r
if (thc) {\r
add(new ILabel(" "));\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