You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@myfaces.apache.org by ba...@apache.org on 2005/08/04 00:53:20 UTC

svn commit: r227272 - in /myfaces: share/trunk/src/java/org/apache/myfaces/renderkit/html/ tomahawk/trunk/src/java/org/apache/myfaces/custom/calendar/ tomahawk/trunk/src/java/org/apache/myfaces/custom/date/

Author: baranda
Date: Wed Aug  3 15:53:01 2005
New Revision: 227272

URL: http://svn.apache.org/viewcvs?rev=227272&view=rev
Log:
I've rewritten how the button that popups the popcalendar is rendered for the date and the calendar renderers. Now the style of the date/calendar is applied also to the button and it is easier now to add more attributes to the button... Also fixes MYFACES-282.

Modified:
    myfaces/share/trunk/src/java/org/apache/myfaces/renderkit/html/HTML.java
    myfaces/tomahawk/trunk/src/java/org/apache/myfaces/custom/calendar/HtmlCalendarRenderer.java
    myfaces/tomahawk/trunk/src/java/org/apache/myfaces/custom/date/HtmlDateRenderer.java

Modified: myfaces/share/trunk/src/java/org/apache/myfaces/renderkit/html/HTML.java
URL: http://svn.apache.org/viewcvs/myfaces/share/trunk/src/java/org/apache/myfaces/renderkit/html/HTML.java?rev=227272&r1=227271&r2=227272&view=diff
==============================================================================
--- myfaces/share/trunk/src/java/org/apache/myfaces/renderkit/html/HTML.java (original)
+++ myfaces/share/trunk/src/java/org/apache/myfaces/renderkit/html/HTML.java Wed Aug  3 15:53:01 2005
@@ -284,6 +284,7 @@
     public static final String INPUT_TYPE_PASSWORD = "password";
     public static final String INPUT_TYPE_TEXT = "text";
     public static final String INPUT_TYPE_RADIO = "radio";
+    public static final String INPUT_TYPE_BUTTON = "button";
 
     // <button>
     public static final String[] BUTTON_ATTRIBUTES =

Modified: myfaces/tomahawk/trunk/src/java/org/apache/myfaces/custom/calendar/HtmlCalendarRenderer.java
URL: http://svn.apache.org/viewcvs/myfaces/tomahawk/trunk/src/java/org/apache/myfaces/custom/calendar/HtmlCalendarRenderer.java?rev=227272&r1=227271&r2=227272&view=diff
==============================================================================
--- myfaces/tomahawk/trunk/src/java/org/apache/myfaces/custom/calendar/HtmlCalendarRenderer.java (original)
+++ myfaces/tomahawk/trunk/src/java/org/apache/myfaces/custom/calendar/HtmlCalendarRenderer.java Wed Aug  3 15:53:01 2005
@@ -155,8 +155,10 @@
 	            writer.write("<!--\n");
 	            writer.writeText(getLocalizedLanguageScript(symbols, months,
 	                    timeKeeper.getFirstDayOfWeek(),inputCalendar),null);
-	            writer.writeText(getScriptBtnText(inputCalendar.getClientId(facesContext),
-	                    dateFormat,inputCalendar.getPopupButtonString()),null);
+	            //writer.writeText(getScriptBtnText(inputCalendar.getClientId(facesContext),
+	            //        dateFormat,inputCalendar.getPopupButtonString()),null);
+                writeScriptBtnText(facesContext, inputCalendar,
+                        dateFormat,inputCalendar.getPopupButtonString());
 	            writer.write("\n-->");
 	            writer.endElement(HTML.SCRIPT_ELEM);
 	
@@ -329,25 +331,30 @@
         script.append(");");
     }
 
-    private String getScriptBtnText(String clientId, String dateFormat, String popupButtonString)
+    private void writeScriptBtnText(FacesContext facesContext, UIComponent uiComponent, String dateFormat, String popupButtonString)
+        throws IOException
     {
-
-        StringBuffer script = new StringBuffer();
-        script.append("if (!document.layers) {\n");
-        script.append("document.write(");
-        script.append("\"<input type='button' onclick='jscalendarPopUpCalendar(this,this.form.elements[\\\"");
-        script.append(clientId);
-        script.append("\\\"],\\\"");
-        script.append(dateFormat);
-        script.append("\\\")' value='");
+        String clientId = uiComponent.getClientId(facesContext);
+        
+        ResponseWriter writer = facesContext.getResponseWriter();
+        
+        writer.write("if (!document.layers) {\n");
+        writer.write("document.write('");
+        
+        // render the button
+        writer.startElement(HTML.INPUT_ELEM, null);
+        writer.writeAttribute(HTML.TYPE_ATTR, HTML.INPUT_TYPE_BUTTON, null);
+        
+        String jsCalendarFunctionCall = "jscalendarPopUpCalendar(this,this.form.elements[\\'"+clientId+"\\'],\\'"+dateFormat+"\\')";
+        writer.writeAttribute(HTML.ONCLICK_ATTR, jsCalendarFunctionCall, null);
         if(popupButtonString==null)
             popupButtonString="...";
-        script.append(popupButtonString);
-        script.append("'/>\"");
-        script.append(");");
-        script.append("\n}");
-
-        return script.toString();
+        writer.writeAttribute(HTML.VALUE_ATTR, popupButtonString, null);
+        HtmlRendererUtils.renderHTMLAttributes(writer, uiComponent, HTML.UNIVERSAL_ATTRIBUTES);
+        writer.endElement(HTML.INPUT_ELEM);
+        
+        writer.write("');");
+        writer.write("\n}");
     }
 
     private void writeMonthYearHeader(FacesContext facesContext, ResponseWriter writer, UIInput inputComponent, Calendar timeKeeper,

Modified: myfaces/tomahawk/trunk/src/java/org/apache/myfaces/custom/date/HtmlDateRenderer.java
URL: http://svn.apache.org/viewcvs/myfaces/tomahawk/trunk/src/java/org/apache/myfaces/custom/date/HtmlDateRenderer.java?rev=227272&r1=227271&r2=227272&view=diff
==============================================================================
--- myfaces/tomahawk/trunk/src/java/org/apache/myfaces/custom/date/HtmlDateRenderer.java (original)
+++ myfaces/tomahawk/trunk/src/java/org/apache/myfaces/custom/date/HtmlDateRenderer.java Wed Aug  3 15:53:01 2005
@@ -87,7 +87,7 @@
 	        encodeInputYear(inputDate, writer, clientId, userData, disabled, readonly);
 	        
 	        if( inputDate.isPopupCalendar() && ! disabled && ! readonly )
-	            encodePopupCalendarButton(facesContext, writer, clientId, currentLocale);
+	            encodePopupCalendarButton(facesContext, uiComponent, writer, clientId, currentLocale);
         }
         if( type.equals("both") ){
             writer.write(" ");
@@ -189,7 +189,7 @@
         encodeInputField(uiComponent, writer, clientId + ID_SECONDS_POSTFIX, userData.getSeconds(), 2, disabled, readonly);
     }
     
-    protected void encodePopupCalendarButton(FacesContext facesContext, ResponseWriter writer, String clientId, Locale currentLocale) throws IOException{
+    protected void encodePopupCalendarButton(FacesContext facesContext, UIComponent uiComponent, ResponseWriter writer, String clientId, Locale currentLocale) throws IOException{
         HtmlCalendarRenderer.addScriptAndCSSResources(facesContext);
         
         DateFormatSymbols symbols = new DateFormatSymbols(currentLocale);
@@ -210,7 +210,17 @@
         writer.endElement(HTML.SCRIPT_ELEM);
         
         String dateFormat = CalendarDateTimeConverter.createJSPopupFormat(facesContext, null);
-        writer.write("<input type='button' onclick='jscalendarPopUpCalendarForInputDate(\""+clientId+"\",\""+dateFormat+"\")' value='...'/>");
+        
+        // render the button
+        writer.startElement(HTML.INPUT_ELEM, null);
+        writer.writeAttribute(HTML.TYPE_ATTR, HTML.INPUT_TYPE_BUTTON, null);
+        
+        String jsCalendarFunctionCall = "jscalendarPopUpCalendarForInputDate('"+clientId+"','"+dateFormat+"')";
+        writer.writeAttribute(HTML.ONCLICK_ATTR, jsCalendarFunctionCall, null);
+        writer.writeAttribute(HTML.VALUE_ATTR, "...", null);
+        HtmlRendererUtils.renderHTMLAttributes(writer, uiComponent, HTML.UNIVERSAL_ATTRIBUTES);
+        
+        writer.endElement(HTML.INPUT_ELEM);
     }
 
     public void decode(FacesContext facesContext, UIComponent uiComponent) {