setStyleName(IDateField.CLASSNAME + "-calendarpanel");\r
// buildCalendar(true);\r
addTableListener(new DateClickListener(this));\r
+\r
}\r
\r
private void buildCalendar(boolean forceRedraw) {\r
}\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 (cdate == null) {\r
- cdate = new Date();\r
- }\r
-\r
if (forceRedraw) {\r
if (prevMonth == null) { // Only do once\r
prevYear = new IEventButton();\r
}\r
\r
final String monthName = needsMonth ? datefield.getDateTimeService()\r
- .getMonth(cdate.getMonth()) : "";\r
- final int year = cdate.getYear() + 1900;\r
+ .getMonth(datefield.getShowingDate().getMonth()) : "";\r
+ final int year = datefield.getShowingDate().getYear() + 1900;\r
setHTML(0, 2, "<span class=\"" + IDateField.CLASSNAME\r
+ "-calendarpanel-month\">" + monthName + " " + year\r
+ "</span>");\r
}\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
+ // date actually selected?\r
+ Date currentDate = datefield.getCurrentDate();\r
+ Date showing = datefield.getShowingDate();\r
+ boolean selected = (currentDate != null\r
+ && currentDate.getMonth() == showing.getMonth() && currentDate\r
+ .getYear() == showing.getYear());\r
+\r
final int startWeekDay = datefield.getDateTimeService()\r
- .getStartWeekDay(date);\r
- final int numDays = DateTimeService.getNumberOfDaysInMonth(date);\r
+ .getStartWeekDay(datefield.getShowingDate());\r
+ final int numDays = DateTimeService.getNumberOfDaysInMonth(datefield\r
+ .getShowingDate());\r
int dayCount = 0;\r
final Date today = new Date();\r
- final Date curr = new Date(date.getTime());\r
+ final Date curr = new Date(datefield.getShowingDate().getTime());\r
for (int row = 2; row < 8; row++) {\r
for (int col = 0; col < 7; col++) {\r
if (!(row == 2 && col < startWeekDay)) {\r
if (!isEnabledDate(curr)) {\r
cssClass += " " + baseclass + "-disabled";\r
}\r
- if (selected && date.getDate() == dayCount) {\r
+ if (selected\r
+ && datefield.getShowingDate().getDate() == dayCount) {\r
cssClass += " " + baseclass + "-selected";\r
}\r
if (today.getDate() == dayCount\r
- && today.getMonth() == date.getMonth()\r
- && today.getYear() == date.getYear()) {\r
+ && today.getMonth() == datefield\r
+ .getShowingDate().getMonth()\r
+ && today.getYear() == datefield\r
+ .getShowingDate().getYear()) {\r
cssClass += " " + baseclass + "-today";\r
}\r
if (title.length() > 0) {\r
if (!datefield.isEnabled() || datefield.isReadonly()) {\r
return;\r
}\r
-\r
+ Date showingDate = datefield.getShowingDate();\r
if (sender == prevYear) {\r
- datefield.getCurrentDate().setYear(\r
- datefield.getCurrentDate().getYear() - 1);\r
- datefield.getClient().updateVariable(datefield.getId(), "year",\r
- datefield.getCurrentDate().getYear() + 1900,\r
- datefield.isImmediate());\r
+ showingDate.setYear(showingDate.getYear() - 1);\r
updateCalendar();\r
} else if (sender == nextYear) {\r
- datefield.getCurrentDate().setYear(\r
- datefield.getCurrentDate().getYear() + 1);\r
- datefield.getClient().updateVariable(datefield.getId(), "year",\r
- datefield.getCurrentDate().getYear() + 1900,\r
- datefield.isImmediate());\r
+ showingDate.setYear(showingDate.getYear() + 1);\r
updateCalendar();\r
} else if (sender == prevMonth) {\r
- datefield.getCurrentDate().setMonth(\r
- datefield.getCurrentDate().getMonth() - 1);\r
- datefield.getClient().updateVariable(datefield.getId(), "month",\r
- datefield.getCurrentDate().getMonth() + 1,\r
- datefield.isImmediate());\r
+ showingDate.setMonth(showingDate.getMonth() - 1);\r
updateCalendar();\r
} else if (sender == nextMonth) {\r
- datefield.getCurrentDate().setMonth(\r
- datefield.getCurrentDate().getMonth() + 1);\r
- datefield.getClient().updateVariable(datefield.getId(), "month",\r
- datefield.getCurrentDate().getMonth() + 1,\r
- datefield.isImmediate());\r
+ showingDate.setMonth(showingDate.getMonth() + 1);\r
updateCalendar();\r
}\r
}\r
\r
try {\r
final Integer day = new Integer(text);\r
- final Date newDate = new Date(cal.datefield.getCurrentDate()\r
- .getTime());\r
+ if (cal.datefield.getCurrentDate() == null) {\r
+ cal.datefield.setCurrentDate(new Date());\r
+ }\r
+ final Date newDate = cal.datefield.getShowingDate();\r
newDate.setDate(day.intValue());\r
if (!isEnabledDate(newDate)) {\r
return;\r