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,