[jboss-cvs] jboss-seam/src/ui/org/jboss/seam/ui ...
Shane Bryzak
sbryzak at redhat.com
Mon Feb 19 12:14:22 EST 2007
User: sbryzak2
Date: 07/02/19 12:14:22
Modified: src/ui/org/jboss/seam/ui SelectDate.java
Log:
JBSEAM-763
Revision Changes Path
1.10 +169 -207 jboss-seam/src/ui/org/jboss/seam/ui/SelectDate.java
(In the diff below, changes in quantity of whitespace are not shown.)
Index: SelectDate.java
===================================================================
RCS file: /cvsroot/jboss/jboss-seam/src/ui/org/jboss/seam/ui/SelectDate.java,v
retrieving revision 1.9
retrieving revision 1.10
diff -u -b -r1.9 -r1.10
--- SelectDate.java 11 Feb 2007 16:31:17 -0000 1.9
+++ SelectDate.java 19 Feb 2007 17:14:22 -0000 1.10
@@ -1,68 +1,61 @@
package org.jboss.seam.ui;
-
import java.io.IOException;
-import java.io.InputStream;
-import java.io.InputStreamReader;
import java.text.DateFormatSymbols;
import java.util.Calendar;
import java.util.Locale;
import java.util.Map;
-
import javax.faces.component.UIComponent;
import javax.faces.component.UIComponentBase;
import javax.faces.context.FacesContext;
import javax.faces.context.ResponseWriter;
import javax.faces.el.ValueBinding;
-
-import org.jboss.seam.core.Messages;
-
+import org.jboss.seam.ui.resource.WebResource;
public class SelectDate extends UIComponentBase
{
public static final String COMPONENT_TYPE = "org.jboss.seam.ui.SelectDate";
public static final String COMPONENT_FAMILY = "org.jboss.seam.ui.SelectDate";
-
- public static final String SELECTDATE_JS = "org/jboss/seam/ui/selectDate.js";
-
private String forField;
-
private String dateFormat = "MM/dd/yyyy";
+ private boolean defaultCss;
public String getDateFormat()
{
ValueBinding vb = getValueBinding("dateFormat");
return (vb != null) ? JSF.getStringValue(getFacesContext(), vb) : dateFormat;
}
-
public void setDateFormat(String dateFormat)
{
this.dateFormat = dateFormat;
}
-
public String getFor()
{
ValueBinding vb = getValueBinding("for");
return (vb != null) ? JSF.getStringValue(getFacesContext(), vb) : forField;
}
-
public void setFor(String forField)
{
this.forField = forField;
}
+ public boolean getDefaultCss()
+ {
+ return defaultCss;
+ }
+ public void setDefaultCss(boolean defaultCss)
+ {
+ this.defaultCss = defaultCss;
+ }
@Override
public String getFamily()
{
return COMPONENT_FAMILY;
}
-
@Override
public boolean getRendersChildren()
{
return false;
}
-
-
@Override
public void restoreState(FacesContext context, Object state)
{
@@ -70,15 +63,16 @@
super.restoreState(context, values[0]);
forField = (String) values[1];
dateFormat = (String) values[2];
+ defaultCss = (Boolean) values[3];
}
-
@Override
public Object saveState(FacesContext context)
{
- Object[] values = new Object[3];
+ Object[] values = new Object[4];
values[0] = super.saveState(context);
values[1] = forField;
values[2] = dateFormat;
+ values[3] = defaultCss;
return values;
}
@@ -86,15 +80,14 @@
public void encodeBegin(FacesContext context) throws IOException
{
UIComponent forComponent = findComponent(getFor());
-
- writeScript(context, SELECTDATE_JS);
+ writeScript(context);
ResponseWriter response = context.getResponseWriter();
response.startElement("span", this);
response.writeAttribute("onclick",
- "displayDatePicker('" + forComponent.getClientId(context) + "');",
+ "__selectDate('" + forComponent.getClientId(context) +
+ "', '" + forComponent.getClientId(context) + "');",
null);
}
-
@Override
public void encodeEnd(FacesContext context) throws IOException
{
@@ -103,10 +96,7 @@
response.flush();
super.encodeEnd(context);
}
-
-
- public void writeScript(FacesContext context,
- String scriptResource)
+ public void writeScript(FacesContext context)
throws IOException
{
Map request = context.getExternalContext().getRequestMap();
@@ -115,42 +105,26 @@
return;
}
- request.put("SELECTDATE_SCRIPT", scriptResource);
+ request.put("SELECTDATE_SCRIPT", null);
ResponseWriter response = context.getResponseWriter();
-
writeLocaleInformation(response, context.getViewRoot().getLocale());
- writeScriptFromResource(response, scriptResource);
- }
- private void writeScriptFromResource(ResponseWriter response,
- String scriptResource)
- throws IOException
- {
response.startElement("script", null);
response.writeAttribute("type", "text/javascript", null);
- InputStream is = this.getClass().getClassLoader().getResourceAsStream(scriptResource);
-
- if (is == null) {
- throw new IOException("resource " + scriptResource + " not found");
- }
+ response.writeAttribute("src", context.getExternalContext().getRequestContextPath() +
+ WebResource.WEB_RESOURCE_PATH + "/date/calendar.js", null);
+ response.endElement("script");
- try {
- InputStreamReader reader = new InputStreamReader(is);
- char[] buf = new char[512];
- int nread;
- while ((nread = reader.read(buf,0,512))!= -1) {
- response.write(buf, 0, nread);
- }
- } finally {
- is.close();
+ if (defaultCss)
+ {
+ response.startElement("link", null);
+ response.writeAttribute("rel", "stylesheet", null);
+ response.writeAttribute("href", context.getExternalContext().getRequestContextPath() +
+ WebResource.WEB_RESOURCE_PATH + "/date/calendar.css", null);
+ response.endElement("link");
}
-
- response.endElement("script");
}
-
-
-
private void writeLocaleInformation(ResponseWriter response,
Locale locale) throws IOException
{
@@ -163,45 +137,33 @@
// Note: Calendar and DateFormatSymbols use 1 for the first day of the week, not 0.
response.write("\r");
- response.write("var dayArrayShort = " + getArray(symbols.getShortWeekdays(), 1) + ";\r");
- response.write("var dayArrayMed = " + getArray(symbols.getShortWeekdays(), 1) + ";\r");
- response.write("var dayArrayLong = " + getArray(symbols.getWeekdays(), 1) + ";\r");
- response.write("var monthArrayShort = " + getArray(symbols.getShortMonths(), 0) + ";\r");
- response.write("var monthArrayMed = " + getArray(symbols.getShortMonths(), 0) + ";\r");
- response.write("var monthArrayLong = " + getArray(symbols.getMonths(), 0) + ";\r");
- response.write("var firstDayInWeek = " + (cal.getFirstDayOfWeek() - 1) + ";\r");
-
- response.write("var dateFormat = '" + getDateFormat() + "';\r");
-
- response.write("var thisMonthButton = '" + messageForKey(COMPONENT_TYPE + ".thisMonth", "this month") + "';\r");
- response.write("var closeButton = '" + messageForKey(COMPONENT_TYPE + ".close", "close") + "';\r");
+ response.write("var CAL_DAYS_SHORT = '" + commaSeparate(symbols.getShortWeekdays(), 2) + "';\r");
+ response.write("var CAL_DAYS_MEDIUM = '" + commaSeparate(symbols.getShortWeekdays()) + "';\r");
+ response.write("var CAL_DAYS_LONG = '" + commaSeparate(symbols.getWeekdays()) + "';\r");
+ response.write("var CAL_MONTHS_MEDIUM = '" + commaSeparate(symbols.getShortMonths()) + "';\r");
+ response.write("var CAL_MONTHS_LONG = '" + commaSeparate(symbols.getMonths()) + "';\r");
+ response.write("var CAL_FIRST_DAY_OF_WEEK = " + (cal.getFirstDayOfWeek() - 1) + ";\r");
+ response.write("var CAL_DATE_FORMAT = '" + getDateFormat() + "';\r");
response.endElement("script");
}
-
- private String messageForKey(String key, String defaultTranslation)
+ private String commaSeparate(String[] values)
{
- String translation = Messages.instance().get(key);
- if ( key.equals(translation) )
- {
- translation = defaultTranslation;
- }
- return translation;
+ return commaSeparate(values, -1);
}
-
- private StringBuilder getArray(String[] values, int start) throws IOException
+ private String commaSeparate(String[] values, int maxLength)
+ {
+ StringBuilder sb = new StringBuilder();
+ for (String val : values)
+ {
+ if (!"".equals(val))
{
- StringBuilder s = new StringBuilder();
- s.append("new Array(");
- for (int i = start; i < values.length; i++) {
- if (i > start) {
- s.append(", ");
+ if (sb.length() > 0) sb.append(',');
+ sb.append(maxLength == -1 ? val : val.substring(0, maxLength));
}
- s.append("'").append(values[i]).append("'");
}
- s.append(")");
- return s;
+ return sb.toString();
}
}
More information about the jboss-cvs-commits
mailing list