You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@myfaces.apache.org by mm...@apache.org on 2005/06/13 02:30:16 UTC

svn commit: r190329 - in /myfaces/trunk/src: components/org/apache/myfaces/custom/inputTextHelp/ share/org/apache/myfaces/renderkit/html/

Author: mmarinschek
Date: Sun Jun 12 17:30:15 2005
New Revision: 190329

URL: http://svn.apache.org/viewcvs?rev=190329&view=rev
Log:
Patch by Bruno Aranda for MYFACES-267, additionally feature enhancements in HtmlTextHelpRenderer

Modified:
    myfaces/trunk/src/components/org/apache/myfaces/custom/inputTextHelp/HtmlTextHelpRenderer.java
    myfaces/trunk/src/share/org/apache/myfaces/renderkit/html/HTML.java
    myfaces/trunk/src/share/org/apache/myfaces/renderkit/html/HtmlCheckboxRendererBase.java
    myfaces/trunk/src/share/org/apache/myfaces/renderkit/html/HtmlRadioRendererBase.java

Modified: myfaces/trunk/src/components/org/apache/myfaces/custom/inputTextHelp/HtmlTextHelpRenderer.java
URL: http://svn.apache.org/viewcvs/myfaces/trunk/src/components/org/apache/myfaces/custom/inputTextHelp/HtmlTextHelpRenderer.java?rev=190329&r1=190328&r2=190329&view=diff
==============================================================================
--- myfaces/trunk/src/components/org/apache/myfaces/custom/inputTextHelp/HtmlTextHelpRenderer.java (original)
+++ myfaces/trunk/src/components/org/apache/myfaces/custom/inputTextHelp/HtmlTextHelpRenderer.java Sun Jun 12 17:30:15 2005
@@ -63,7 +63,8 @@
 
         writer.startElement(HTML.INPUT_ELEM, input);
 
-        HtmlRendererUtils.writeIdIfNecessary(writer, input, facesContext);
+        //write id in any case, it is needed for the java-script function
+        writer.writeAttribute(HTML.ID_ATTR, input.getClientId(facesContext),null);
 
         renderHelpTextAttributes(input, writer, facesContext);
 
@@ -91,19 +92,26 @@
             if(isSelectText(component))
             {
                 HtmlRendererUtils.renderHTMLAttributes(writer, component,
-                        HTML.COMMON_PASSTROUGH_ATTRIBUTES_WITHOUT_ONCLICK);
+                        HTML.COMMON_FIELD_PASSTROUGH_ATTRIBUTES_WITHOUT_DISABLED_AND_ONFOCUS_AND_ONCLICK);
+                writer.writeAttribute(HTML.ONFOCUS_ATTR,
+                        HtmlInputTextHelp.JS_FUNCTION_SELECT_TEXT + "('" +
+                            getHelpText(component) + "', '" + id +"')", null);
                 writer.writeAttribute(HTML.ONCLICK_ATTR,
                         HtmlInputTextHelp.JS_FUNCTION_SELECT_TEXT + "('" +
                             getHelpText(component) + "', '" + id +"')", null);
+
             }
             else
             {
                 if(getHelpText(component) != null)
                 {
                     HtmlRendererUtils.renderHTMLAttributes(writer, component,
-                            HTML.COMMON_PASSTROUGH_ATTRIBUTES_WITHOUT_ONCLICK);
-                    writer.writeAttribute(HTML.ONCLICK_ATTR,
+                            HTML.COMMON_FIELD_PASSTROUGH_ATTRIBUTES_WITHOUT_DISABLED_AND_ONFOCUS_AND_ONCLICK);
+                    writer.writeAttribute(HTML.ONFOCUS_ATTR,
                             HtmlInputTextHelp.JS_FUNCTION_RESET_HELP + "('" +
+                            getHelpText(component) + "', '" + id +"')", null);
+                writer.writeAttribute(HTML.ONCLICK_ATTR,
+                        HtmlInputTextHelp.JS_FUNCTION_RESET_HELP + "('" +
                             getHelpText(component) + "', '" + id +"')", null);
                 }
                 else

Modified: myfaces/trunk/src/share/org/apache/myfaces/renderkit/html/HTML.java
URL: http://svn.apache.org/viewcvs/myfaces/trunk/src/share/org/apache/myfaces/renderkit/html/HTML.java?rev=190329&r1=190328&r2=190329&view=diff
==============================================================================
--- myfaces/trunk/src/share/org/apache/myfaces/renderkit/html/HTML.java (original)
+++ myfaces/trunk/src/share/org/apache/myfaces/renderkit/html/HTML.java Sun Jun 12 17:30:15 2005
@@ -83,6 +83,13 @@
         ONCHANGE_ATTR
     };
 
+    public static final String[] COMMON_FIELD_EVENT_ATTRIBUTES_WITHOUT_ONFOCUS =
+    {
+        ONBLUR_ATTR,
+        ONSELECT_ATTR,
+        ONCHANGE_ATTR
+    };
+
     // universal attributes
     public static final String DIR_ATTR   = "dir";
     public static final String LANG_ATTR  = "lang";
@@ -142,6 +149,16 @@
             COMMON_PASSTROUGH_ATTRIBUTES,
             COMMON_FIELD_ATTRIBUTES_WITHOUT_DISABLED,
             COMMON_FIELD_EVENT_ATTRIBUTES);
+    public static final String[] COMMON_FIELD_PASSTROUGH_ATTRIBUTES_WITHOUT_DISABLED_AND_ONFOCUS =
+        (String[]) ArrayUtils.concat(
+            COMMON_PASSTROUGH_ATTRIBUTES,
+            COMMON_FIELD_ATTRIBUTES_WITHOUT_DISABLED,
+            COMMON_FIELD_EVENT_ATTRIBUTES_WITHOUT_ONFOCUS);
+    public static final String[] COMMON_FIELD_PASSTROUGH_ATTRIBUTES_WITHOUT_DISABLED_AND_ONFOCUS_AND_ONCLICK =
+        (String[]) ArrayUtils.concat(
+            COMMON_PASSTROUGH_ATTRIBUTES_WITHOUT_ONCLICK,
+            COMMON_FIELD_ATTRIBUTES_WITHOUT_DISABLED,
+            COMMON_FIELD_EVENT_ATTRIBUTES_WITHOUT_ONFOCUS);
     public static final String[] COMMON_FIELD_PASSTROUGH_ATTRIBUTES_WITHOUT_DISABLED_AND_ONCLICK =
         (String[]) ArrayUtils.concat(
             COMMON_PASSTROUGH_ATTRIBUTES_WITHOUT_ONCLICK,

Modified: myfaces/trunk/src/share/org/apache/myfaces/renderkit/html/HtmlCheckboxRendererBase.java
URL: http://svn.apache.org/viewcvs/myfaces/trunk/src/share/org/apache/myfaces/renderkit/html/HtmlCheckboxRendererBase.java?rev=190329&r1=190328&r2=190329&view=diff
==============================================================================
--- myfaces/trunk/src/share/org/apache/myfaces/renderkit/html/HtmlCheckboxRendererBase.java (original)
+++ myfaces/trunk/src/share/org/apache/myfaces/renderkit/html/HtmlCheckboxRendererBase.java Sun Jun 12 17:30:15 2005
@@ -32,6 +32,8 @@
 import javax.faces.convert.Converter;
 import javax.faces.convert.ConverterException;
 import javax.faces.model.SelectItem;
+import javax.faces.model.SelectItemGroup;
+
 import java.io.IOException;
 import java.util.Iterator;
 import java.util.Set;
@@ -58,7 +60,7 @@
             Boolean value = RendererUtils.getBooleanValue( uiComponent );
             boolean isChecked = value != null ? value.booleanValue() : false;
             renderCheckbox(facesContext, uiComponent, EXTERNAL_TRUE_VALUE,
-                    null, isChecked, true);
+                    null, false,isChecked, true); //TODO: the selectBoolean is never disabled
         } else if (uiComponent instanceof UISelectMany) {
             renderCheckboxList(facesContext, (UISelectMany) uiComponent);
         } else {
@@ -92,7 +94,7 @@
 
         if (!pageDirectionLayout)
             writer.startElement(HTML.TR_ELEM, selectMany);
-
+        
         Converter converter;
         try {
             converter = RendererUtils.findUISelectManyConverter(facesContext,
@@ -113,32 +115,10 @@
         for (Iterator it = RendererUtils.getSelectItemList(selectMany)
                 .iterator(); it.hasNext();) {
             SelectItem selectItem = (SelectItem) it.next();
-            Object itemValue = selectItem.getValue(); // TODO : Check here for getSubmittedValue. Look at RendererUtils.getValue
-
-            String itemStrValue;
-            if (converter == null) {
-                itemStrValue = itemValue.toString();
-            } else {
-                itemStrValue = converter.getAsString(facesContext, selectMany,
-                        itemValue);
-            }
-
-            writer.write("\t\t");
-            if (pageDirectionLayout)
-                writer.startElement(HTML.TR_ELEM, selectMany);
-            writer.startElement(HTML.TD_ELEM, selectMany);
-            writer.startElement(HTML.LABEL_ELEM, selectMany);
-
-            boolean checked = (useSubmittedValues && lookupSet
-                    .contains(itemStrValue))
-                    || (!useSubmittedValues && lookupSet.contains(itemValue));
-
-            renderCheckbox(facesContext, selectMany, itemStrValue, selectItem
-                    .getLabel(), checked, false);
-            writer.endElement(HTML.LABEL_ELEM);
-            writer.endElement(HTML.TD_ELEM);
-            if (pageDirectionLayout)
-                writer.endElement(HTML.TR_ELEM);
+            
+            renderGroupOrItemCheckbox(facesContext, selectMany, 
+            		selectItem, useSubmittedValues, lookupSet, 
+            		converter, pageDirectionLayout);
         }
 
         if (!pageDirectionLayout)
@@ -153,10 +133,86 @@
             return (String) selectMany.getAttributes().get(JSFAttr.LAYOUT_ATTR);
         }
     }
+    
+    protected void renderGroupOrItemCheckbox(FacesContext facesContext,
+    		UIComponent uiComponent, SelectItem selectItem,
+    		boolean useSubmittedValues, Set lookupSet,
+    		Converter converter, boolean pageDirectionLayout) throws IOException{
+    	
+    	ResponseWriter writer = facesContext.getResponseWriter();
+    	
+    	boolean isSelectItemGroup = (selectItem instanceof SelectItemGroup);
+    	
+    	Object itemValue = selectItem.getValue(); // TODO : Check here for getSubmittedValue. Look at RendererUtils.getValue
+
+    	UISelectMany selectMany = (UISelectMany)uiComponent;
+    	
+        String itemStrValue;
+        if (converter == null) {
+            itemStrValue = itemValue.toString();
+        } else {
+            itemStrValue = converter.getAsString(facesContext, selectMany,
+                    itemValue);
+        }
+
+        if (isSelectItemGroup) {
+        	if (pageDirectionLayout)
+                writer.startElement(HTML.TR_ELEM, selectMany);
+        	
+        	writer.startElement(HTML.TD_ELEM, selectMany);
+        	writer.write(selectItem.getLabel());
+        	writer.endElement(HTML.TD_ELEM);
+        	
+        	if (pageDirectionLayout) {
+	        	writer.endElement(HTML.TR_ELEM);
+	        	writer.startElement(HTML.TR_ELEM, selectMany);
+        	}
+        	writer.startElement(HTML.TD_ELEM, selectMany);
+        	
+        	writer.startElement(HTML.TABLE_ELEM, selectMany);
+        	writer.writeAttribute(HTML.BORDER_ATTR, "0", null);
+
+        	SelectItemGroup group = (SelectItemGroup) selectItem;
+        	SelectItem[] selectItems = group.getSelectItems();
+        	
+        	for (int i=0; i<selectItems.length; i++) {
+        		renderGroupOrItemCheckbox(facesContext, selectMany, selectItems[i], useSubmittedValues, lookupSet, converter, pageDirectionLayout);
+        	}
+        	
+        	writer.endElement(HTML.TD_ELEM);
+        	writer.endElement(HTML.TR_ELEM);
+        	writer.endElement(HTML.TABLE_ELEM);
+        	writer.endElement(HTML.TD_ELEM);
+        	
+        	if (pageDirectionLayout)
+                writer.endElement(HTML.TR_ELEM);
+        	
+        } else {
+        
+        writer.write("\t\t");
+        if (pageDirectionLayout)
+            writer.startElement(HTML.TR_ELEM, selectMany);
+        writer.startElement(HTML.TD_ELEM, selectMany);
+        writer.startElement(HTML.LABEL_ELEM, selectMany);
+
+        boolean checked = (useSubmittedValues && lookupSet
+                .contains(itemStrValue))
+                || (!useSubmittedValues && lookupSet.contains(itemValue));
+
+        boolean disabled = selectItem.isDisabled();
+        
+        renderCheckbox(facesContext, selectMany, itemStrValue, selectItem
+                .getLabel(), disabled, checked, false);
+        writer.endElement(HTML.LABEL_ELEM);
+        writer.endElement(HTML.TD_ELEM);
+        if (pageDirectionLayout)
+            writer.endElement(HTML.TR_ELEM);
+        }
+    }
 
     protected void renderCheckbox(FacesContext facesContext,
             UIComponent uiComponent, String value, String label,
-            boolean checked, boolean renderId) throws IOException {
+            boolean disabled, boolean checked, boolean renderId) throws IOException {
         String clientId = uiComponent.getClientId(facesContext);
 
         ResponseWriter writer = facesContext.getResponseWriter();
@@ -164,6 +220,7 @@
         writer.startElement(HTML.INPUT_ELEM, uiComponent);
         writer.writeAttribute(HTML.TYPE_ATTR, HTML.INPUT_TYPE_CHECKBOX, null);
         writer.writeAttribute(HTML.NAME_ATTR, clientId, null);
+        
         if (renderId) {
             HtmlRendererUtils.writeIdIfNecessary(writer, uiComponent, facesContext);
         }
@@ -171,6 +228,10 @@
         if (checked) {
             writer.writeAttribute(HTML.CHECKED_ATTR, HTML.CHECKED_ATTR, null);
         }
+        
+        if (disabled) {
+        	writer.writeAttribute(HTML.DISABLED_ATTR, HTML.DISABLED_ATTR, null);
+        }
 
         if ((value != null) && (value.length() > 0)) {
             writer.writeAttribute(HTML.VALUE_ATTR, value, null);
@@ -228,4 +289,4 @@
                     + component.getClass().getName());
         }
     }
-}
\ No newline at end of file
+}

Modified: myfaces/trunk/src/share/org/apache/myfaces/renderkit/html/HtmlRadioRendererBase.java
URL: http://svn.apache.org/viewcvs/myfaces/trunk/src/share/org/apache/myfaces/renderkit/html/HtmlRadioRendererBase.java?rev=190329&r1=190328&r2=190329&view=diff
==============================================================================
--- myfaces/trunk/src/share/org/apache/myfaces/renderkit/html/HtmlRadioRendererBase.java (original)
+++ myfaces/trunk/src/share/org/apache/myfaces/renderkit/html/HtmlRadioRendererBase.java Sun Jun 12 17:30:15 2005
@@ -30,6 +30,7 @@
 import javax.faces.convert.Converter;
 import javax.faces.convert.ConverterException;
 import javax.faces.model.SelectItem;
+import javax.faces.model.SelectItemGroup;
 
 import org.apache.commons.logging.Log;
 import org.apache.commons.logging.LogFactory;
@@ -92,22 +93,11 @@
         for (Iterator it = selectItemList.iterator(); it.hasNext(); )
         {
             SelectItem selectItem = (SelectItem)it.next();
-            String itemStrValue = RendererUtils.getConvertedStringValue(facesContext, selectOne, converter, selectItem.getValue());
-            boolean itemDisabled = selectItem.isDisabled();
-
-            writer.write("\t\t");
-            if (pageDirectionLayout) writer.startElement(HTML.TR_ELEM, selectOne);
-            writer.startElement(HTML.TD_ELEM, selectOne);
-            writer.startElement(HTML.LABEL_ELEM, selectOne);
-            renderRadio(facesContext,
-                        selectOne,
-                        itemStrValue,
-                        selectItem.getLabel(),
-                        itemDisabled,
-                        currentValueStr.equals(itemStrValue),
-                        false);
-            writer.endElement(HTML.LABEL_ELEM);
-            writer.endElement(HTML.TD_ELEM);
+            
+            renderGroupOrItemRadio(facesContext, selectOne, 
+            		selectItem, currentValueStr,
+            		converter, pageDirectionLayout);
+            
             if (pageDirectionLayout) writer.endElement(HTML.TR_ELEM);
         }
 
@@ -137,6 +127,73 @@
          return (String)selectOne.getAttributes().get(JSFAttr.STYLE_CLASS_ATTR);
      }
 
+    
+    protected void renderGroupOrItemRadio(FacesContext facesContext,
+    		UIComponent uiComponent, SelectItem selectItem,
+    		String currentValueStr,
+    		Converter converter, boolean pageDirectionLayout) throws IOException{
+    	
+    	ResponseWriter writer = facesContext.getResponseWriter();
+    	
+    	boolean isSelectItemGroup = (selectItem instanceof SelectItemGroup);
+    	
+    	Object itemValue = selectItem.getValue(); // TODO : Check here for getSubmittedValue. Look at RendererUtils.getValue
+
+    	UISelectOne selectOne = (UISelectOne)uiComponent;
+    	
+        if (isSelectItemGroup) {
+        	if (pageDirectionLayout)
+                writer.startElement(HTML.TR_ELEM, selectOne);
+        	
+        	writer.startElement(HTML.TD_ELEM, selectOne);
+        	writer.write(selectItem.getLabel());
+        	writer.endElement(HTML.TD_ELEM);
+        	
+        	if (pageDirectionLayout) {
+	        	writer.endElement(HTML.TR_ELEM);
+	        	writer.startElement(HTML.TR_ELEM, selectOne);
+        	}
+        	writer.startElement(HTML.TD_ELEM, selectOne);
+        	
+        	writer.startElement(HTML.TABLE_ELEM, selectOne);
+        	writer.writeAttribute(HTML.BORDER_ATTR, "0", null);
+
+        	SelectItemGroup group = (SelectItemGroup) selectItem;
+        	SelectItem[] selectItems = group.getSelectItems();
+        	
+        	for (int i=0; i<selectItems.length; i++) {
+        		renderGroupOrItemRadio(facesContext, selectOne, selectItems[i], currentValueStr, converter, pageDirectionLayout);
+        	}
+        	
+        	writer.endElement(HTML.TD_ELEM);
+        	writer.endElement(HTML.TR_ELEM);
+        	writer.endElement(HTML.TABLE_ELEM);
+        	writer.endElement(HTML.TD_ELEM);
+        	
+        	if (pageDirectionLayout)
+                writer.endElement(HTML.TR_ELEM);
+        	
+        } else {
+        
+        writer.write("\t\t");
+        if (pageDirectionLayout)
+            writer.startElement(HTML.TR_ELEM, selectOne);
+        writer.startElement(HTML.TD_ELEM, selectOne);
+        writer.startElement(HTML.LABEL_ELEM, selectOne);
+
+        String itemStrValue = RendererUtils.getConvertedStringValue(facesContext, selectOne, converter, selectItem.getValue());
+        boolean itemDisabled = selectItem.isDisabled();
+        
+        boolean itemChecked = currentValueStr.equals(itemStrValue);
+        
+        renderRadio(facesContext, selectOne, itemStrValue, selectItem
+                .getLabel(), itemDisabled, itemChecked, false);
+        writer.endElement(HTML.LABEL_ELEM);
+        writer.endElement(HTML.TD_ELEM);
+        if (pageDirectionLayout)
+            writer.endElement(HTML.TR_ELEM);
+        }
+    }
 
     protected void renderRadio(FacesContext facesContext,
                                UIInput uiComponent,