Author: musachy
Date: Mon Mar 9 22:22:29 2009
New Revision: 751881
URL: http://svn.apache.org/viewvc?rev=751881&view=rev
Log:
improve datepicker
Modified:
struts/sandbox/trunk/struts2-jquery-plugin/src/main/java/org/apache/struts2/jquery/components/JQueryDatepicker.java
struts/sandbox/trunk/struts2-jquery-plugin/src/main/resources/template/jquery-simple/datepicker.ftl
Modified:
struts/sandbox/trunk/struts2-jquery-plugin/src/main/java/org/apache/struts2/jquery/components/JQueryDatepicker.java
URL:
http://svn.apache.org/viewvc/struts/sandbox/trunk/struts2-jquery-plugin/src/main/java/org/apache/struts2/jquery/components/JQueryDatepicker.java?rev=751881&r1=751880&r2=751881&view=diff
==============================================================================
---
struts/sandbox/trunk/struts2-jquery-plugin/src/main/java/org/apache/struts2/jquery/components/JQueryDatepicker.java
(original)
+++
struts/sandbox/trunk/struts2-jquery-plugin/src/main/java/org/apache/struts2/jquery/components/JQueryDatepicker.java
Mon Mar 9 22:22:29 2009
@@ -44,12 +44,12 @@
description = "Renders a date picker",
allowDynamicAttributes = true)
public class JQueryDatepicker extends JQueryTextField {
- final protected static Logger LOG =
LoggerFactory.getLogger(JQueryDatepicker.class);
+ final protected static Logger LOG =
LoggerFactory.getLogger(JQueryDatepicker.class);
private static final String TEMPLATE = "datepicker";
final private static String RFC3339_FORMAT = "yyyy-MM-dd'T'HH:mm:ss";
final private static String RFC3339_PATTERN = "{0,date," + RFC3339_FORMAT
+ "}";
-
+
//see http://docs.jquery.com/UI/Datepicker/%24.datepicker.formatDate
private String displayFormat;
@@ -63,30 +63,46 @@
if (displayFormat != null)
addParameter("displayFormat", findString(displayFormat));
+ else
+ addParameter("displayFormat", "yy-mm-dd");
- if(parameters.containsKey("value")) {
- addParameter("nameValue", parameters.get("value"));
- } else {
- if(parameters.containsKey("name")) {
- addParameter("nameValue",
format(findValue((String)parameters.get("name"))));
+ Object currentValue = null;
+ if (parameters.containsKey("value")) {
+ addParameter("displayValue", parameters.get("value"));
+ currentValue = parameters.get("value");
+ } else if (parameters.containsKey("name")) {
+ currentValue = findValue((String) parameters.get("name"));
+ }
+
+ if (currentValue != null) {
+ Date date = getDate(currentValue);
+ if (date != null) {
+ Calendar calendar = Calendar.getInstance();
+ calendar.setTime(date);
+ String formattedDate = MessageFormat.format(RFC3339_PATTERN,
date);
+ addParameter("nameValue", formattedDate);
+ addParameter("year", calendar.get(Calendar.YEAR));
+ addParameter("day", calendar.get(Calendar.DAY_OF_MONTH));
+ addParameter("month", calendar.get(Calendar.MONTH));
}
}
}
- private String format(Object obj) {
- if(obj == null)
+ private Date getDate(Object obj) {
+ SimpleDateFormat simpleDisplayFormat = new
SimpleDateFormat(displayFormat);
+ if (obj == null)
return null;
- if(obj instanceof Date) {
- return MessageFormat.format(RFC3339_PATTERN, (Date) obj);
- } else if(obj instanceof Calendar) {
- return MessageFormat.format(RFC3339_PATTERN, ((Calendar)
obj).getTime());
- }
- else {
+ if (obj instanceof Date) {
+ return (Date) obj;
+ } else if (obj instanceof Calendar) {
+ return ((Calendar) obj).getTime();
+ } else {
// try to parse a date
String dateStr = obj.toString();
- if(dateStr.equalsIgnoreCase("today"))
- return MessageFormat.format(RFC3339_PATTERN, new Date());
+ if (dateStr.equalsIgnoreCase("today")) {
+ return new Date();
+ }
Date date = null;
@@ -101,7 +117,7 @@
if (this.displayFormat != null) {
try {
SimpleDateFormat displayFormat = new SimpleDateFormat(
- (String) getParameters().get("displayFormat"));
+ (String) getParameters().get("displayFormat"));
formats.add(displayFormat);
} catch (Exception e) {
}
@@ -111,16 +127,16 @@
try {
date = format.parse(dateStr);
if (date != null)
- return MessageFormat.format(RFC3339_PATTERN, date);
+ return date;
} catch (Exception e) {
//keep going
}
}
- // last resource, assume already in correct/default format
- if (LOG.isDebugEnabled())
- LOG.debug("Unable to parse date " + dateStr);
- return dateStr;
+ // last resource, assume already in correct/default format
+ if (LOG.isDebugEnabled())
+ LOG.debug("Unable to parse date " + dateStr);
+ return null;
}
}
Modified:
struts/sandbox/trunk/struts2-jquery-plugin/src/main/resources/template/jquery-simple/datepicker.ftl
URL:
http://svn.apache.org/viewvc/struts/sandbox/trunk/struts2-jquery-plugin/src/main/resources/template/jquery-simple/datepicker.ftl?rev=751881&r1=751880&r2=751881&view=diff
==============================================================================
---
struts/sandbox/trunk/struts2-jquery-plugin/src/main/resources/template/jquery-simple/datepicker.ftl
(original)
+++
struts/sandbox/trunk/struts2-jquery-plugin/src/main/resources/template/jquery-simple/datepicker.ftl
Mon Mar 9 22:22:29 2009
@@ -28,8 +28,8 @@
<#if parameters.maxlength??>
maxlength="${parameters.maxlength?html}"<#rt/>
</#if>
-<#if parameters.nameValue??>
- value="<@s.property value="parameters.nameValue"/>"<#rt/>
+<#if parameters.displayValue??>
+ value="<@s.property value="parameters.displayValue"/>"<#rt/>
</#if>
<#if parameters.disabled?default(false)>
disabled="disabled"<#rt/>
@@ -51,15 +51,20 @@
<#include "/${parameters.templateDir}/simple/common-attributes.ftl" />
<#include "/${parameters.templateDir}/simple/dynamic-attributes.ftl" />
/>
-<input type="text" name="${parameters.name?default("")?html}"
id="${parameters.id?html}_hidden" />
+<input type="text" name="${parameters.name?default("")?html}"
id="${parameters.id?html}_hidden"
+<#if parameters.nameValue??>
+value="<@s.property value="parameters.nameValue"/>"<#rt/>
+</#if>
+/>
<script type="text/javascript">
$(function() {
$("#${parameters.id?html}").datepicker({
altField: "#${parameters.id?html}_hidden",
- altFormat: "yy-mm-dd'T'00:00:00"
- <#if parameters.displayFormat??>
- ,dateFormat : "${parameters.displayFormat?html}"
- </#if>
+ altFormat: "yy-mm-dd'T'00:00:00",
+ dateFormat : "${parameters.displayFormat?html}"
});
+ <#if parameters.year?? && parameters.month?? && parameters.day??>
+
$("#${parameters.id?html}").val($.datepicker.formatDate("${parameters.displayFormat?html}",
new Date(${parameters.year?c}, ${parameters.month}, ${parameters.day})));
+ </#if>
});
</script>
\ No newline at end of file