Author: abelevich
Date: 2008-04-08 10:16:05 -0400 (Tue, 08 Apr 2008)
New Revision: 7665
Modified:
branches/3.2.x/ui/combobox/src/main/java/org/richfaces/renderkit/ComboBoxBaseRenderer.java
branches/3.2.x/ui/combobox/src/main/templates/combobox.jspx
branches/3.2.x/ui/combobox/src/test/java/org/richfaces/renderkit/ComboBoxRendererTest.java
Log:
merge with trunk
http://jira.jboss.com/jira/browse/RF-2967
Modified:
branches/3.2.x/ui/combobox/src/main/java/org/richfaces/renderkit/ComboBoxBaseRenderer.java
===================================================================
---
branches/3.2.x/ui/combobox/src/main/java/org/richfaces/renderkit/ComboBoxBaseRenderer.java 2008-04-08
13:59:37 UTC (rev 7664)
+++
branches/3.2.x/ui/combobox/src/main/java/org/richfaces/renderkit/ComboBoxBaseRenderer.java 2008-04-08
14:16:05 UTC (rev 7665)
@@ -33,12 +33,11 @@
*/
public class ComboBoxBaseRenderer extends HeaderResourcesRendererBase {
- private List valuesList = null;
- private final String RICH_COMBOBOX_ITEM_CLASSES = "rich-combobox-item
rich-combobox-item-normal";
+ private static final String RICH_COMBOBOX_ITEM_CLASSES = "rich-combobox-item
rich-combobox-item-normal";
private static Log logger = LogFactory.getLog(ComboBoxBaseRenderer.class);
protected Class<? extends UIComponent> getComponentClass() {
- return UIComboBox.class;
+ return UIComboBox.class;
}
protected void doDecode(FacesContext context, UIComponent component) {
@@ -48,14 +47,14 @@
comboBox = (UIComboBox) component;
} else {
if (logger.isDebugEnabled()) {
- logger.debug("No decoding necessary since the component " + component.getId()
+ " is not an instance or a sub class of UIComboBox");
+ logger.debug("No decoding necessary since the component " +
component.getId() + " is not an instance or a sub class of UIComboBox");
}
return;
}
if (InputUtils.isDisabled(comboBox) || InputUtils.isReadOnly(comboBox)) {
if (logger.isDebugEnabled()) {
- logger.debug(("No decoding necessary since the component " +
component.getId() + " is disabled"));
+ logger.debug(("No decoding necessary since the component " +
component.getId() + " is disabled"));
}
}
@@ -71,88 +70,91 @@
comboBox.setSubmittedValue(newValue);
}
}
+
+ public List encodeItems(FacesContext context, UIComponent component) throws
IOException {
+ if (!isAcceptableComponent(component)) {
+ return null;
+ }
+
+ UIComboBox comboBox = (UIComboBox) component;
+ Object suggestionValues = comboBox.getSuggestionValues();
+ ResponseWriter writer = context.getResponseWriter();
- public void encodeItems(FacesContext context, UIComponent component) throws
IOException {
- UIComboBox comboBox = (UIComboBox) component;
- Object suggestionValues = comboBox.getSuggestionValues();
- ResponseWriter writer = context.getResponseWriter();
+ List values = new ArrayList();
- List values = new ArrayList();
+ if (suggestionValues != null) {
+ if (suggestionValues instanceof Collection) {
+ for (Iterator iterator = ((Collection) suggestionValues).iterator();
iterator.hasNext();) {
+ String value = getConvertedStringValue(context, comboBox, iterator.next());
+ values.add(value);
+ encodeSuggestion(writer, comboBox, value, RICH_COMBOBOX_ITEM_CLASSES);
+ }
+ } else if (suggestionValues.getClass().isArray()) {
+ Object[] suggestions = (Object[]) suggestionValues;
+ for (int i = 0; i < suggestions.length; i++) {
+ String value = getConvertedStringValue(context, comboBox, suggestions[i]);
+ values.add(value);
+ encodeSuggestion(writer, comboBox, value, RICH_COMBOBOX_ITEM_CLASSES);
+ }
+ } else {
+ throw new IllegalArgumentException("suggestionValues should be Collection or
array");
+ }
+
+ }
- if (suggestionValues != null) {
- if (suggestionValues instanceof Collection) {
- for (Iterator iterator = ((Collection) suggestionValues).iterator();
iterator.hasNext();) {
- String value = getConvertedStringValue(context, comboBox, iterator.next());
- values.add(value);
- encodeSuggestion(writer, comboBox, value, RICH_COMBOBOX_ITEM_CLASSES);
+ List<SelectItem> selectItems = SelectUtils.getSelectItems(context, component);
+ if (!selectItems.isEmpty()) {
+ for (Iterator<SelectItem> iterator = selectItems.iterator();
iterator.hasNext();) {
+ SelectItem selectItem = iterator.next();
+ String value = getConvertedStringValue(context, comboBox, selectItem.getValue());
+ values.add(value);
+ encodeSuggestion(writer, comboBox, value, RICH_COMBOBOX_ITEM_CLASSES);
+ }
}
- } else if (suggestionValues.getClass().isArray()) {
- Object[] suggestions = (Object[]) suggestionValues;
- for (int i = 0; i < suggestions.length; i++) {
- String value = getConvertedStringValue(context, comboBox, suggestions[i]);
- values.add(value);
- encodeSuggestion(writer, comboBox, value, RICH_COMBOBOX_ITEM_CLASSES);
- }
- } else {
- throw new IllegalArgumentException("suggestionValues should be Collection or
array");
- }
-
- }
-
- List<SelectItem> selectItems = SelectUtils.getSelectItems(context, component);
- if (!selectItems.isEmpty()) {
- for (Iterator<SelectItem> iterator = selectItems.iterator();
iterator.hasNext();) {
- SelectItem selectItem = iterator.next();
- String value = getConvertedStringValue(context, comboBox, selectItem.getValue());
- values.add(value);
- encodeSuggestion(writer, comboBox, value, RICH_COMBOBOX_ITEM_CLASSES);
- }
- }
- setValuesList(values);
+ return values;
}
@Override
public Object getConvertedValue(FacesContext context, UIComponent component, Object
submittedValue) throws ConverterException {
- return InputUtils.getConvertedValue(context, component, submittedValue);
+ return InputUtils.getConvertedValue(context, component, submittedValue);
+ }
- }
protected String getConvertedStringValue(FacesContext context, UIComponent component,
Object value) {
- return InputUtils.getConvertedStringValue(context, component, value);
+ return InputUtils.getConvertedStringValue(context, component, value);
}
public void encodeSuggestion(ResponseWriter writer, UIComponent component, String
value, String classes) throws IOException {
- writer.startElement(HTML.SPAN_ELEM, component);
- writer.writeAttribute(HTML.class_ATTRIBUTE, classes, null);
- writer.write(value);
- writer.endElement(HTML.SPAN_ELEM);
+ writer.startElement(HTML.SPAN_ELEM, component);
+ writer.writeAttribute(HTML.class_ATTRIBUTE, classes, null);
+ writer.writeText(value, null);
+ writer.endElement(HTML.SPAN_ELEM);
}
-
- public String getItemsTextAsJSArray(FacesContext context, UIComponent component) {
- return ScriptUtils.toScript(valuesList);
+
+ protected boolean isAcceptableComponent(UIComponent component) {
+ if (component instanceof UIComboBox) {
+ return true;
+ }
+ return false;
}
+
+ public String getItemsTextAsJSArray(FacesContext context, UIComponent component, List
items) {
+ return ScriptUtils.toScript(items);
+ }
public String getAsEventHandler(FacesContext context, UIComponent component, String
attributeName) {
- String event = (String) component.getAttributes().get(attributeName);
- ScriptString result = JSReference.NULL;
+ String event = (String) component.getAttributes().get(attributeName);
+ ScriptString result = JSReference.NULL;
- if (event != null) {
- event = event.trim();
- if (event.length() != 0) {
- JSFunctionDefinition function = new JSFunctionDefinition();
- function.addParameter("event");
- function.addToBody(event);
- result = function;
- }
- }
+ if (event != null) {
+ event = event.trim();
+ if (event.length() != 0) {
+ JSFunctionDefinition function = new JSFunctionDefinition();
+ function.addParameter("event");
+ function.addToBody(event);
+ result = function;
+ }
+ }
- return ScriptUtils.toScript(result);
+ return ScriptUtils.toScript(result);
}
-
- public List getValuesList() {
- return valuesList;
- }
-
- public void setValuesList(List valuesList) {
- this.valuesList = valuesList;
- }
}
Modified: branches/3.2.x/ui/combobox/src/main/templates/combobox.jspx
===================================================================
--- branches/3.2.x/ui/combobox/src/main/templates/combobox.jspx 2008-04-08 13:59:37 UTC
(rev 7664)
+++ branches/3.2.x/ui/combobox/src/main/templates/combobox.jspx 2008-04-08 14:16:05 UTC
(rev 7665)
@@ -11,6 +11,7 @@
component="org.richfaces.component.UIComboBox">
<jsp:directive.page import="org.richfaces.component.util.HtmlUtil" />
+ <jsp:directive.page import=" java.util.List"/>
<h:styles>css/combobox.xcss</h:styles>
<h:scripts>
@@ -248,7 +249,8 @@
<div id="#{clientId}listPosition"
class="rich-combobox-list-position">
<div id="#{clientId}listDecoration"
class="rich-combobox-list-decoration">
<div id="#{clientId}list"
class="rich-combobox-list-scroll">
- <f:call name="encodeItems"/>
+ <c:object type="java.util.List" var="items"
value="#{this:encodeItems(context,component)}">
+ </c:object>
</div>
</div>
</div>
@@ -306,7 +308,7 @@
"#{clientId}shadow",
Richfaces.ComboBox.CLASSES,
"#{listWidth}", "#{listHeight}",
- #{this:getItemsTextAsJSArray(context, component)},
+ #{this:getItemsTextAsJSArray(context, component,items)},
#{directInputSuggestions},
#{filterNewValues},
#{selectFirstOnUpdate},
Modified:
branches/3.2.x/ui/combobox/src/test/java/org/richfaces/renderkit/ComboBoxRendererTest.java
===================================================================
---
branches/3.2.x/ui/combobox/src/test/java/org/richfaces/renderkit/ComboBoxRendererTest.java 2008-04-08
13:59:37 UTC (rev 7664)
+++
branches/3.2.x/ui/combobox/src/test/java/org/richfaces/renderkit/ComboBoxRendererTest.java 2008-04-08
14:16:05 UTC (rev 7665)
@@ -70,10 +70,10 @@
requestMap.put(id, "Pennsylvania");
}
- public void itemsTextAsJSArrayTest() {
- String script = renderer.getItemsTextAsJSArray(facesContext, comboBox);
- assertNotNull(script);
- }
+// public void itemsTextAsJSArrayTest() {
+// String script = renderer.getItemsTextAsJSArray(facesContext, comboBox);
+// assertNotNull(script);
+// }
public void testRender() throws Exception {