Author: abelevich
Date: 2011-02-16 09:01:57 -0500 (Wed, 16 Feb 2011)
New Revision: 21696
Modified:
trunk/ui/input/ui/src/main/java/org/richfaces/component/AbstractCalendar.java
trunk/ui/input/ui/src/main/java/org/richfaces/renderkit/CalendarRendererBase.java
trunk/ui/input/ui/src/main/java/org/richfaces/utils/CalendarHelper.java
Log:
https://issues.jboss.org/browse/RF-10470 Calendar: cannot switch month when using custom
data model
Modified: trunk/ui/input/ui/src/main/java/org/richfaces/component/AbstractCalendar.java
===================================================================
---
trunk/ui/input/ui/src/main/java/org/richfaces/component/AbstractCalendar.java 2011-02-16
13:46:32 UTC (rev 21695)
+++
trunk/ui/input/ui/src/main/java/org/richfaces/component/AbstractCalendar.java 2011-02-16
14:01:57 UTC (rev 21696)
@@ -342,7 +342,7 @@
// selectedDate
// current date string always has predefined format: m/y
Date currentDate = CalendarHelper.getAsDate(facesContext, this,
getCurrentDate());
- Date submittedCurrentDate =
CalendarHelper.convertCurrentDate(currentDateString);
+ Date submittedCurrentDate =
CalendarHelper.convertCurrentDate(currentDateString, facesContext, this);
currentDateChangeEvent.setCurrentDate(submittedCurrentDate);
if (!submittedCurrentDate.equals(currentDate)) {
@@ -379,7 +379,7 @@
ve.setValue(facesContext.getELContext(),
convert.getAsString(facesContext, this, currentDate));
return;
} else if (ve.getType(elContext).equals(Calendar.class)) {
- Calendar c = Calendar.getInstance();
+ Calendar c = CalendarHelper.getCalendar(facesContext, this);
c.setTime((Date) currentDate);
ve.setValue(elContext, c);
return;
@@ -549,7 +549,9 @@
}
public static Object formatStartDate(Date date) {
- Calendar calendar = Calendar.getInstance();
+ FacesContext facesContext = FacesContext.getCurrentInstance();
+ AbstractCalendar calendarInstance=(AbstractCalendar)
AbstractCalendar.getCurrentComponent(facesContext);
+ Calendar calendar = CalendarHelper.getCalendar(facesContext, calendarInstance);
calendar.setTime(date);
HashMap <String, Object> hashDate = new HashMap<String,Object>();
hashDate.put("month", calendar.get(Calendar.MONTH));
Modified:
trunk/ui/input/ui/src/main/java/org/richfaces/renderkit/CalendarRendererBase.java
===================================================================
---
trunk/ui/input/ui/src/main/java/org/richfaces/renderkit/CalendarRendererBase.java 2011-02-16
13:46:32 UTC (rev 21695)
+++
trunk/ui/input/ui/src/main/java/org/richfaces/renderkit/CalendarRendererBase.java 2011-02-16
14:01:57 UTC (rev 21696)
@@ -278,7 +278,10 @@
}
public static Object formatSelectedDate(TimeZone timeZone, Date date) {
- Calendar calendar = Calendar.getInstance();
+ FacesContext facesContext = FacesContext.getCurrentInstance();
+ AbstractCalendar calendarInstance = (AbstractCalendar)
AbstractCalendar.getCurrentComponent(facesContext);
+ Calendar calendar = CalendarHelper.getCalendar(facesContext, calendarInstance);
+
calendar.setTimeZone(timeZone);
calendar.setTime(date);
@@ -308,7 +311,10 @@
}
public static Object formatDate(Date date) {
- Calendar calendar = Calendar.getInstance();
+ FacesContext facesContext = FacesContext.getCurrentInstance();
+ AbstractCalendar calendarInstance = (AbstractCalendar)
AbstractCalendar.getCurrentComponent(facesContext);
+ Calendar calendar = CalendarHelper.getCalendar(facesContext, calendarInstance);
+
calendar.setTime(date);
JSFunction result = new JSFunction("new Date");
result.addParameter(calendar.get(Calendar.YEAR));
Modified: trunk/ui/input/ui/src/main/java/org/richfaces/utils/CalendarHelper.java
===================================================================
--- trunk/ui/input/ui/src/main/java/org/richfaces/utils/CalendarHelper.java 2011-02-16
13:46:32 UTC (rev 21695)
+++ trunk/ui/input/ui/src/main/java/org/richfaces/utils/CalendarHelper.java 2011-02-16
14:01:57 UTC (rev 21696)
@@ -179,17 +179,17 @@
}
}
- public static Date convertCurrentDate(String currentDateString) {
- Calendar calendar = Calendar.getInstance();
- calendar.clear();
- calendar.set(Calendar.DATE, 1);
+ public static Date convertCurrentDate(String currentDateString, FacesContext
facesContext, AbstractCalendar calendar) {
+ Calendar calendarInner = getCalendar(facesContext, calendar);
+ calendarInner.clear();
+ calendarInner.set(Calendar.DATE, 1);
int idx = currentDateString.indexOf('/');
Date date = null;
if (idx != -1) {
- calendar.set(Calendar.MONTH, Integer.parseInt(currentDateString.substring(0,
idx)) - 1);
- calendar.set(Calendar.YEAR, Integer.parseInt(currentDateString.substring(idx
+ 1)));
- date = calendar.getTime();
+ calendarInner.set(Calendar.MONTH,
Integer.parseInt(currentDateString.substring(0, idx)) - 1);
+ calendarInner.set(Calendar.YEAR,
Integer.parseInt(currentDateString.substring(idx + 1)));
+ date = calendarInner.getTime();
}
return date;
}