diff options
author | Marc Englund <marc.englund@itmill.com> | 2008-02-26 07:57:06 +0000 |
---|---|---|
committer | Marc Englund <marc.englund@itmill.com> | 2008-02-26 07:57:06 +0000 |
commit | 9a7cc253c2bee952adfc843eef2e6083ab8b2932 (patch) | |
tree | facbedd876c7c8a0caf1863f3725b8327d938395 | |
parent | 2410c3ee17c3fc6b587718fa72b2148cc6f37f1d (diff) | |
download | vaadin-framework-9a7cc253c2bee952adfc843eef2e6083ab8b2932.tar.gz vaadin-framework-9a7cc253c2bee952adfc843eef2e6083ab8b2932.zip |
Enabled paging (browsing calendar) w/o actually changing selected date.
svn changeset:3925/svn branch:trunk
-rw-r--r-- | src/com/itmill/toolkit/terminal/gwt/client/ui/CalendarPanel.java | 72 | ||||
-rw-r--r-- | src/com/itmill/toolkit/terminal/gwt/client/ui/IDateField.java | 12 |
2 files changed, 41 insertions, 43 deletions
diff --git a/src/com/itmill/toolkit/terminal/gwt/client/ui/CalendarPanel.java b/src/com/itmill/toolkit/terminal/gwt/client/ui/CalendarPanel.java index ee5b6ef1b0..bcf897696e 100644 --- a/src/com/itmill/toolkit/terminal/gwt/client/ui/CalendarPanel.java +++ b/src/com/itmill/toolkit/terminal/gwt/client/ui/CalendarPanel.java @@ -61,6 +61,7 @@ public class CalendarPanel extends FlexTable implements MouseListener, setStyleName(IDateField.CLASSNAME + "-calendarpanel");
// buildCalendar(true);
addTableListener(new DateClickListener(this));
+
}
private void buildCalendar(boolean forceRedraw) {
@@ -95,12 +96,6 @@ public class CalendarPanel extends FlexTable implements MouseListener, }
private void buildCalendarHeader(boolean forceRedraw, boolean needsMonth) {
- Date cdate = datefield.getCurrentDate();
- // Can't draw a calendar without a date
- if (cdate == null) {
- cdate = new Date();
- }
-
if (forceRedraw) {
if (prevMonth == null) { // Only do once
prevYear = new IEventButton();
@@ -165,26 +160,28 @@ public class CalendarPanel extends FlexTable implements MouseListener, }
final String monthName = needsMonth ? datefield.getDateTimeService()
- .getMonth(cdate.getMonth()) : "";
- final int year = cdate.getYear() + 1900;
+ .getMonth(datefield.getShowingDate().getMonth()) : "";
+ final int year = datefield.getShowingDate().getYear() + 1900;
setHTML(0, 2, "<span class=\"" + IDateField.CLASSNAME
+ "-calendarpanel-month\">" + monthName + " " + year
+ "</span>");
}
private void buildCalendarBody() {
- Date date = datefield.getCurrentDate();
- boolean selected = true; // date actually selected?
- if (date == null) {
- date = new Date();
- selected = false;
- }
+ // date actually selected?
+ Date currentDate = datefield.getCurrentDate();
+ Date showing = datefield.getShowingDate();
+ boolean selected = (currentDate != null
+ && currentDate.getMonth() == showing.getMonth() && currentDate
+ .getYear() == showing.getYear());
+
final int startWeekDay = datefield.getDateTimeService()
- .getStartWeekDay(date);
- final int numDays = DateTimeService.getNumberOfDaysInMonth(date);
+ .getStartWeekDay(datefield.getShowingDate());
+ final int numDays = DateTimeService.getNumberOfDaysInMonth(datefield
+ .getShowingDate());
int dayCount = 0;
final Date today = new Date();
- final Date curr = new Date(date.getTime());
+ final Date curr = new Date(datefield.getShowingDate().getTime());
for (int row = 2; row < 8; row++) {
for (int col = 0; col < 7; col++) {
if (!(row == 2 && col < startWeekDay)) {
@@ -211,12 +208,15 @@ public class CalendarPanel extends FlexTable implements MouseListener, if (!isEnabledDate(curr)) {
cssClass += " " + baseclass + "-disabled";
}
- if (selected && date.getDate() == dayCount) {
+ if (selected
+ && datefield.getShowingDate().getDate() == dayCount) {
cssClass += " " + baseclass + "-selected";
}
if (today.getDate() == dayCount
- && today.getMonth() == date.getMonth()
- && today.getYear() == date.getYear()) {
+ && today.getMonth() == datefield
+ .getShowingDate().getMonth()
+ && today.getYear() == datefield
+ .getShowingDate().getYear()) {
cssClass += " " + baseclass + "-today";
}
if (title.length() > 0) {
@@ -276,34 +276,18 @@ public class CalendarPanel extends FlexTable implements MouseListener, if (!datefield.isEnabled() || datefield.isReadonly()) {
return;
}
-
+ Date showingDate = datefield.getShowingDate();
if (sender == prevYear) {
- datefield.getCurrentDate().setYear(
- datefield.getCurrentDate().getYear() - 1);
- datefield.getClient().updateVariable(datefield.getId(), "year",
- datefield.getCurrentDate().getYear() + 1900,
- datefield.isImmediate());
+ showingDate.setYear(showingDate.getYear() - 1);
updateCalendar();
} else if (sender == nextYear) {
- datefield.getCurrentDate().setYear(
- datefield.getCurrentDate().getYear() + 1);
- datefield.getClient().updateVariable(datefield.getId(), "year",
- datefield.getCurrentDate().getYear() + 1900,
- datefield.isImmediate());
+ showingDate.setYear(showingDate.getYear() + 1);
updateCalendar();
} else if (sender == prevMonth) {
- datefield.getCurrentDate().setMonth(
- datefield.getCurrentDate().getMonth() - 1);
- datefield.getClient().updateVariable(datefield.getId(), "month",
- datefield.getCurrentDate().getMonth() + 1,
- datefield.isImmediate());
+ showingDate.setMonth(showingDate.getMonth() - 1);
updateCalendar();
} else if (sender == nextMonth) {
- datefield.getCurrentDate().setMonth(
- datefield.getCurrentDate().getMonth() + 1);
- datefield.getClient().updateVariable(datefield.getId(), "month",
- datefield.getCurrentDate().getMonth() + 1,
- datefield.isImmediate());
+ showingDate.setMonth(showingDate.getMonth() + 1);
updateCalendar();
}
}
@@ -399,8 +383,10 @@ public class CalendarPanel extends FlexTable implements MouseListener, try {
final Integer day = new Integer(text);
- final Date newDate = new Date(cal.datefield.getCurrentDate()
- .getTime());
+ if (cal.datefield.getCurrentDate() == null) {
+ cal.datefield.setCurrentDate(new Date());
+ }
+ final Date newDate = cal.datefield.getShowingDate();
newDate.setDate(day.intValue());
if (!isEnabledDate(newDate)) {
return;
diff --git a/src/com/itmill/toolkit/terminal/gwt/client/ui/IDateField.java b/src/com/itmill/toolkit/terminal/gwt/client/ui/IDateField.java index 76408cbbd2..8396f5bd59 100644 --- a/src/com/itmill/toolkit/terminal/gwt/client/ui/IDateField.java +++ b/src/com/itmill/toolkit/terminal/gwt/client/ui/IDateField.java @@ -40,6 +40,8 @@ public class IDateField extends FlowPanel implements Paintable { protected boolean enabled;
protected Date date = null;
+ // e.g when paging a calendar, before actually selecting
+ protected Date showingDate = new Date();
protected DateTimeService dts;
@@ -113,8 +115,10 @@ public class IDateField extends FlowPanel implements Paintable { if (year > -1) {
date = new Date((long) getTime(year, month, day, hour, min, sec,
msec));
+ showingDate.setTime(date.getTime());
} else {
date = null;
+ showingDate = new Date();
}
}
@@ -175,6 +179,14 @@ public class IDateField extends FlowPanel implements Paintable { this.date = date;
}
+ public Date getShowingDate() {
+ return showingDate;
+ }
+
+ public void setShowingDate(Date date) {
+ showingDate = date;
+ }
+
public boolean isImmediate() {
return immediate;
}
|