[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