Author: Alex.Kolonitsky
Date: 2009-07-17 05:48:42 -0400 (Fri, 17 Jul 2009)
New Revision: 14946
Modified:
branches/community/3.3.X/ui/pickList/src/main/java/org/richfaces/renderkit/ConvertedSelectItem.java
branches/community/3.3.X/ui/pickList/src/main/java/org/richfaces/renderkit/PickListRenderer.java
Log:
rich:pickList does not html encode ampersand
https://jira.jboss.org/jira/browse/RF-7521
Modified:
branches/community/3.3.X/ui/pickList/src/main/java/org/richfaces/renderkit/ConvertedSelectItem.java
===================================================================
---
branches/community/3.3.X/ui/pickList/src/main/java/org/richfaces/renderkit/ConvertedSelectItem.java 2009-07-17
08:33:11 UTC (rev 14945)
+++
branches/community/3.3.X/ui/pickList/src/main/java/org/richfaces/renderkit/ConvertedSelectItem.java 2009-07-17
09:48:42 UTC (rev 14946)
@@ -25,6 +25,7 @@
import javax.faces.model.SelectItem;
import org.richfaces.component.UIPickList;
+import org.richfaces.json.XML;
public class ConvertedSelectItem {
private SelectItem item;
Modified:
branches/community/3.3.X/ui/pickList/src/main/java/org/richfaces/renderkit/PickListRenderer.java
===================================================================
---
branches/community/3.3.X/ui/pickList/src/main/java/org/richfaces/renderkit/PickListRenderer.java 2009-07-17
08:33:11 UTC (rev 14945)
+++
branches/community/3.3.X/ui/pickList/src/main/java/org/richfaces/renderkit/PickListRenderer.java 2009-07-17
09:48:42 UTC (rev 14946)
@@ -54,96 +54,104 @@
import org.apache.commons.logging.LogFactory;
import org.richfaces.component.UIPickList;
import org.richfaces.component.util.HtmlUtil;
+import org.richfaces.json.XML;
public class PickListRenderer extends HeaderResourcesRendererBase {
-
- private static Log logger = LogFactory.getLog(PickListRenderer.class);
-
- private static final String HIDDEN_SUFFIX = "valueKeeper";
-
- private static final String MESSAGE_BUNDLE_NAME =
PickListRenderer.class.getPackage().getName() + ".pickList";
+ private static Log logger = LogFactory.getLog(PickListRenderer.class);
+
+ private static final String HIDDEN_SUFFIX = "valueKeeper";
+
+ private static final String MESSAGE_BUNDLE_NAME = PickListRenderer.class
+ .getPackage().getName()
+ + ".pickList";
+
private static final String SHOW_LABELS_ATTRIBUTE_NAME =
"showButtonsLabel";
private static final OrderingComponentRendererBase.ControlsHelper[] SHUTTLE_HELPERS =
PickListControlsHelper.HELPERS;
protected static final class ListStateFlags {
- public ListStateFlags() {
- super();
- }
-
- protected boolean isSelectedList;
-
- protected boolean isAvailableList;
+ public ListStateFlags() {
+ super();
+ }
+
+ protected boolean isSelectedList;
+
+ protected boolean isAvailableList;
}
- protected List<ConvertedSelectItem>
selectItemsForSelectedList(List<ConvertedSelectItem> selectItems) {
- List<ConvertedSelectItem> result = new
ArrayList<ConvertedSelectItem>();
-
- for (ConvertedSelectItem selectItem: selectItems) {
- if (selectItem.isSelected()) {
- result.add(selectItem);
- }
- }
-
- return result;
+ protected List<ConvertedSelectItem> selectItemsForSelectedList(
+ List<ConvertedSelectItem> selectItems) {
+ List<ConvertedSelectItem> result = new
ArrayList<ConvertedSelectItem>();
+
+ for (ConvertedSelectItem selectItem : selectItems) {
+ if (selectItem.isSelected()) {
+ result.add(selectItem);
+ }
+ }
+
+ return result;
}
protected List<Object> getValuesList(UIPickList pickList) {
- List <Object> valuesList = new ArrayList<Object>();
-
- Object value = getCurrentValue(FacesContext.getCurrentInstance(), pickList);
-
- if(null == value || "".equals(value)) {
- return valuesList;
- }
-
- if(value.getClass().isArray()) {
- int len = Array.getLength(value);
-
- for (int i = 0; i < len; i++) {
-
- Object localValue = Array.get(value, i);
- if(localValue != null) {
- valuesList.add(localValue);
- }
- }
-
- return valuesList;
- } else if(value instanceof List) {
- valuesList.addAll((List<?>)value);
-
- return valuesList;
- } else {
- throw new IllegalArgumentException("Error: value of UIPickList component is not
of type Array or List");
- }
-
+ List<Object> valuesList = new ArrayList<Object>();
+
+ Object value = getCurrentValue(FacesContext.getCurrentInstance(),
+ pickList);
+
+ if (null == value || "".equals(value)) {
+ return valuesList;
+ }
+
+ if (value.getClass().isArray()) {
+ int len = Array.getLength(value);
+
+ for (int i = 0; i < len; i++) {
+
+ Object localValue = Array.get(value, i);
+ if (localValue != null) {
+ valuesList.add(localValue);
+ }
+ }
+
+ return valuesList;
+ } else if (value instanceof List) {
+ valuesList.addAll((List<?>) value);
+
+ return valuesList;
+ } else {
+ throw new IllegalArgumentException(
+ "Error: value of UIPickList component is not of type Array or
List");
+ }
+
}
-
+
/**
- * @param context the FacesContext for the current request
- * @param component the UIComponent whose value we're interested in
- *
+ * @param context
+ * the FacesContext for the current request
+ * @param component
+ * the UIComponent whose value we're interested in
+ *
* @return the value to be rendered and formats it if required. Sets to
- * empty string if value is null.
+ * empty string if value is null.
*/
- protected Object getCurrentValue(FacesContext context,
- UIComponent component) {
-
+ protected Object getCurrentValue(FacesContext context, UIComponent component) {
+
if (component instanceof UIInput) {
Object submittedValue = ((UIInput) component).getSubmittedValue();
if (submittedValue != null) {
return submittedValue;
}
}
-
- return ((UIPickList)component).getValue();
+
+ return ((UIPickList) component).getValue();
}
- protected List<ConvertedSelectItem>
selectItemsForAvailableList(List<ConvertedSelectItem> selectItems) {
+ protected List<ConvertedSelectItem> selectItemsForAvailableList(
+ List<ConvertedSelectItem> selectItems) {
List<ConvertedSelectItem> result = new
ArrayList<ConvertedSelectItem>();
- for (ConvertedSelectItem selectItem: selectItems) {
+ for (ConvertedSelectItem selectItem : selectItems) {
if (!selectItem.isSelected()) {
result.add(selectItem);
}
@@ -151,313 +159,366 @@
return result;
}
-
- protected List <SelectItem> getSelectItemsList(FacesContext context,
UIComponent component) {
- return SelectUtils.getSelectItems(context, component);
+
+ protected List<SelectItem> getSelectItemsList(FacesContext context,
+ UIComponent component) {
+ return SelectUtils.getSelectItems(context, component);
}
-
+
public PickListRenderer() {
- super();
+ super();
}
-
+
public void decode(FacesContext context, UIComponent component) {
-
- UIPickList picklist = (UIPickList) component;
- if (!(picklist instanceof EditableValueHolder)) {
- throw new IllegalArgumentException("Component " +
picklist.getClientId(context) + " is not an EditableValueHolder");
- }
-
- String hiddenClientId = picklist.getClientId(context) + HIDDEN_SUFFIX;
- Map <String, String> paramMap =
context.getExternalContext().getRequestParameterMap();
-
- if (picklist.isDisabled()) {
- return;
- }
-
- String value = paramMap.get(hiddenClientId);
- if (value != null) {
- if (value.trim().equals("")) {
-
- ((EditableValueHolder) picklist).setSubmittedValue(new String[] {});
-
- } else {
- String[] reqValues = value.split(",");
- ((EditableValueHolder) picklist).setSubmittedValue(reqValues);
- }
-
- } else {
- ((EditableValueHolder) picklist).setSubmittedValue(new String[] {});
- }
-
+
+ UIPickList picklist = (UIPickList) component;
+ if (!(picklist instanceof EditableValueHolder)) {
+ throw new IllegalArgumentException("Component "
+ + picklist.getClientId(context)
+ + " is not an EditableValueHolder");
+ }
+
+ String hiddenClientId = picklist.getClientId(context) + HIDDEN_SUFFIX;
+ Map<String, String> paramMap = context.getExternalContext()
+ .getRequestParameterMap();
+
+ if (picklist.isDisabled()) {
+ return;
+ }
+
+ String value = paramMap.get(hiddenClientId);
+ if (value != null) {
+ if (value.trim().equals("")) {
+
+ ((EditableValueHolder) picklist)
+ .setSubmittedValue(new String[] {});
+
+ } else {
+ String[] reqValues = value.split(",");
+ ((EditableValueHolder) picklist).setSubmittedValue(reqValues);
+ }
+
+ } else {
+ ((EditableValueHolder) picklist).setSubmittedValue(new String[] {});
+ }
+
}
-
+
private static boolean isTrue(Object obj) {
- if (!(obj instanceof Boolean)) {
- return false;
- }
-
- return ((Boolean) obj).booleanValue();
-
+ if (!(obj instanceof Boolean)) {
+ return false;
+ }
+
+ return ((Boolean) obj).booleanValue();
+
}
-
+
@Override
- public Object getConvertedValue(FacesContext context, UIComponent component, Object
submittedValue) throws ConverterException {
-
- Object convertedValue = null;
-
- if(component instanceof UIPickList) {
- UIPickList pickList = (UIPickList)component;
- convertedValue = SelectUtils.getConvertedUISelectManyValue(context, pickList,
(String[]) submittedValue);
- }
-
- return convertedValue;
+ public Object getConvertedValue(FacesContext context,
+ UIComponent component, Object submittedValue)
+ throws ConverterException {
+
+ Object convertedValue = null;
+
+ if (component instanceof UIPickList) {
+ UIPickList pickList = (UIPickList) component;
+ convertedValue = SelectUtils.getConvertedUISelectManyValue(context,
+ pickList, (String[]) submittedValue);
+ }
+
+ return convertedValue;
}
- private void encodeRows(FacesContext context, UIPickList pickList, boolean source,
ListStateFlags flags, List<ConvertedSelectItem> selectItemList) throws IOException
{
- for (ConvertedSelectItem item : selectItemList) {
- encodeItem(context, pickList, item, source);
- }
+ private void encodeRows(FacesContext context, UIPickList pickList,
+ boolean source, ListStateFlags flags,
+ List<ConvertedSelectItem> selectItemList) throws IOException {
+ for (ConvertedSelectItem item : selectItemList) {
+ encodeItem(context, pickList, item, source);
+ }
}
-
- public void encodeItem(FacesContext context, UIComponent component,
ConvertedSelectItem selectItem, boolean source)
- throws IOException {
-
- ResponseWriter writer = context.getResponseWriter();
- writer.startElement(HTML.TR_ELEMENT, component);
-
- String clientId = component.getClientId(context);
-
- if (source) {
- clientId += ":source:";
- }
-
- String id = clientId + ":" + selectItem.getSuffix();
- writer.writeAttribute("id", id, null);
-
- StringBuffer rowClassName = new StringBuffer();
- StringBuffer cellClassName = new StringBuffer();
-
- if (source) {
- rowClassName.append("rich-picklist-source-row");
- cellClassName.append("rich-picklist-source-cell");
- } else {
- rowClassName.append("rich-picklist-target-row");
- cellClassName.append("rich-picklist-target-cell");
- }
-
- writer.writeAttribute("class", rowClassName.toString(), null);
- writer.startElement(HTML.td_ELEM, component);
- writer.writeAttribute(HTML.class_ATTRIBUTE, cellClassName, null);
-
- Object width = component.getAttributes().get("width");
- if (width != null) {
- writer.writeAttribute("style", "width: " +
HtmlUtil.qualifySize(width.toString()), null);
- }
-
- encodeSpacer(context, component, writer);
-
- boolean escape = isTrue(component.getAttributes().get("escape"));
- if (escape) {
- writer.writeText(selectItem.getItem().getLabel(), null);
- } else {
- writer.write(selectItem.getItem().getLabel());
- }
- encodeItemValue(context, component, writer, id, selectItem.getConvertedValue());
-
- writer.endElement(HTML.td_ELEM);
- writer.endElement(HTML.TR_ELEMENT);
+
+ public void encodeItem(FacesContext context, UIComponent component,
+ ConvertedSelectItem selectItem, boolean source) throws IOException {
+
+ ResponseWriter writer = context.getResponseWriter();
+ writer.startElement(HTML.TR_ELEMENT, component);
+
+ String clientId = component.getClientId(context);
+
+ if (source) {
+ clientId += ":source:";
+ }
+
+ String id = clientId + ":" + selectItem.getSuffix();
+ writer.writeAttribute("id", id, null);
+
+ StringBuffer rowClassName = new StringBuffer();
+ StringBuffer cellClassName = new StringBuffer();
+
+ if (source) {
+ rowClassName.append("rich-picklist-source-row");
+ cellClassName.append("rich-picklist-source-cell");
+ } else {
+ rowClassName.append("rich-picklist-target-row");
+ cellClassName.append("rich-picklist-target-cell");
+ }
+
+ writer.writeAttribute("class", rowClassName.toString(), null);
+ writer.startElement(HTML.td_ELEM, component);
+ writer.writeAttribute(HTML.class_ATTRIBUTE, cellClassName, null);
+
+ Object width = component.getAttributes().get("width");
+ if (width != null) {
+ writer.writeAttribute("style", "width: "
+ + HtmlUtil.qualifySize(width.toString()), null);
+ }
+
+ encodeSpacer(context, component, writer);
+
+ boolean escape = isTrue(component.getAttributes().get("escape"));
+ if (escape) {
+ writer.writeText(selectItem.getItem().getLabel(), null);
+ } else {
+ writer.write(XML.escape(selectItem.getItem().getLabel()));
+ }
+ encodeItemValue(context, component, writer, id, selectItem
+ .getConvertedValue());
+
+ writer.endElement(HTML.td_ELEM);
+ writer.endElement(HTML.TR_ELEMENT);
}
-
- public void encodeTargetRows(FacesContext context, UIPickList pickList,
ListStateFlags flags, List<ConvertedSelectItem> convertedItems) throws IOException
{
- List<ConvertedSelectItem> selectItemsForSelectedValues =
- selectItemsForSelectedList(convertedItems);
+
+ public void encodeTargetRows(FacesContext context, UIPickList pickList,
+ ListStateFlags flags, List<ConvertedSelectItem> convertedItems)
+ throws IOException {
+ List<ConvertedSelectItem> selectItemsForSelectedValues =
selectItemsForSelectedList(convertedItems);
flags.isSelectedList = !selectItemsForSelectedValues.isEmpty();
- flags.isAvailableList = selectItemsForSelectedValues.size() !=
convertedItems.size();
+ flags.isAvailableList = selectItemsForSelectedValues.size() != convertedItems
+ .size();
- encodeRows(context, pickList, false, flags, selectItemsForSelectedValues);
+ encodeRows(context, pickList, false, flags,
+ selectItemsForSelectedValues);
}
-
- public void encodeSourceRows(FacesContext context, UIPickList pickList,
ListStateFlags flags, List<ConvertedSelectItem> convertedItems) throws IOException
{
- List<ConvertedSelectItem> selectItemsForAvailableList =
- selectItemsForAvailableList(convertedItems);
-
- flags.isSelectedList = selectItemsForAvailableList.size() !=
convertedItems.size();
+
+ public void encodeSourceRows(FacesContext context, UIPickList pickList,
+ ListStateFlags flags, List<ConvertedSelectItem> convertedItems)
+ throws IOException {
+ List<ConvertedSelectItem> selectItemsForAvailableList =
selectItemsForAvailableList(convertedItems);
+
+ flags.isSelectedList = selectItemsForAvailableList.size() != convertedItems
+ .size();
flags.isAvailableList = !selectItemsForAvailableList.isEmpty();
- encodeRows(context, pickList, true, flags, selectItemsForAvailableList);
+ encodeRows(context, pickList, true, flags, selectItemsForAvailableList);
}
-
- private void encodeItemValue(FacesContext context, UIComponent component,
ResponseWriter writer, String id, String itemValue) throws IOException { //rowKey = i
-
- writer.startElement(HTML.INPUT_ELEM, component);
- writer.writeAttribute(HTML.TYPE_ATTR, HTML.INPUT_TYPE_HIDDEN, null);
- writer.writeAttribute(HTML.autocomplete_ATTRIBUTE, "off", null);
- writer.writeAttribute(HTML.NAME_ATTRIBUTE, id, null);
-
- StringBuffer value = new StringBuffer();
-
- value.append(itemValue);
-
- writer.writeAttribute(HTML.value_ATTRIBUTE, value.toString(), null);
- writer.writeAttribute(HTML.id_ATTRIBUTE, id + "StateInput", null);
- writer.endElement(HTML.INPUT_ELEM);
-
+
+ private void encodeItemValue(FacesContext context, UIComponent component,
+ ResponseWriter writer, String id, String itemValue)
+ throws IOException { // rowKey = i
+
+ writer.startElement(HTML.INPUT_ELEM, component);
+ writer.writeAttribute(HTML.TYPE_ATTR, HTML.INPUT_TYPE_HIDDEN, null);
+ writer.writeAttribute(HTML.autocomplete_ATTRIBUTE, "off", null);
+ writer.writeAttribute(HTML.NAME_ATTRIBUTE, id, null);
+
+ StringBuffer value = new StringBuffer();
+
+ value.append(itemValue);
+
+ writer.writeAttribute(HTML.value_ATTRIBUTE, value.toString(), null);
+ writer.writeAttribute(HTML.id_ATTRIBUTE, id + "StateInput", null);
+ writer.endElement(HTML.INPUT_ELEM);
+
}
-
- protected void encodeSpacer(FacesContext context, UIComponent component,
ResponseWriter writer) throws IOException {
- writer.startElement(HTML.IMG_ELEMENT, component);
-
- writer.writeAttribute(HTML.src_ATTRIBUTE,
getResource("/org/richfaces/renderkit/html/images/spacer.gif").getUri(context,
null), null);
- writer.writeAttribute(HTML.alt_ATTRIBUTE, " ", null);
- writer.writeAttribute(HTML.style_ATTRIBUTE, "width:1px;height:1px;", null);
-
- writer.endElement(HTML.IMG_ELEMENT);
+
+ protected void encodeSpacer(FacesContext context, UIComponent component,
+ ResponseWriter writer) throws IOException {
+ writer.startElement(HTML.IMG_ELEMENT, component);
+
+ writer.writeAttribute(HTML.src_ATTRIBUTE, getResource(
+ "/org/richfaces/renderkit/html/images/spacer.gif").getUri(
+ context, null), null);
+ writer.writeAttribute(HTML.alt_ATTRIBUTE, " ", null);
+ writer.writeAttribute(HTML.style_ATTRIBUTE, "width:1px;height:1px;",
+ null);
+
+ writer.endElement(HTML.IMG_ELEMENT);
}
-
- public void encodeHiddenField(FacesContext context, UIPickList component,
List<ConvertedSelectItem> lookupList) throws IOException {
-
- String hiddenFieldCliendId = component.getClientId(context) + HIDDEN_SUFFIX;
-
- ResponseWriter writer = context.getResponseWriter();
-
- writer.startElement(HTML.INPUT_ELEM, component);
- writer.writeAttribute(HTML.TYPE_ATTR, "hidden", "type");
- writer.writeAttribute(HTML.autocomplete_ATTRIBUTE, "off", null);
- writer.writeAttribute(HTML.id_ATTRIBUTE, hiddenFieldCliendId, "id");
- writer.writeAttribute("name", hiddenFieldCliendId, null);
-
- StringBuffer sb = new StringBuffer();
-
- int n = 0;
- for (Iterator<ConvertedSelectItem> i =
selectItemsForSelectedList(lookupList).iterator(); i.hasNext();) {
- if (n > 0) {
- sb.append(",");
- }
-
- ConvertedSelectItem value = i.next();
- sb.append(value.getConvertedValue());
- n++;
- }
-
- writer.writeAttribute(HTML.value_ATTRIBUTE, sb.toString(), null);
- writer.endElement(HTML.INPUT_ELEM);
-
+
+ public void encodeHiddenField(FacesContext context, UIPickList component,
+ List<ConvertedSelectItem> lookupList) throws IOException {
+
+ String hiddenFieldCliendId = component.getClientId(context)
+ + HIDDEN_SUFFIX;
+
+ ResponseWriter writer = context.getResponseWriter();
+
+ writer.startElement(HTML.INPUT_ELEM, component);
+ writer.writeAttribute(HTML.TYPE_ATTR, "hidden", "type");
+ writer.writeAttribute(HTML.autocomplete_ATTRIBUTE, "off", null);
+ writer.writeAttribute(HTML.id_ATTRIBUTE, hiddenFieldCliendId, "id");
+ writer.writeAttribute("name", hiddenFieldCliendId, null);
+
+ StringBuffer sb = new StringBuffer();
+
+ int n = 0;
+ for (Iterator<ConvertedSelectItem> i = selectItemsForSelectedList(
+ lookupList).iterator(); i.hasNext();) {
+ if (n > 0) {
+ sb.append(",");
+ }
+
+ ConvertedSelectItem value = i.next();
+ sb.append(value.getConvertedValue());
+ n++;
+ }
+
+ writer.writeAttribute(HTML.value_ATTRIBUTE, sb.toString(), null);
+ writer.endElement(HTML.INPUT_ELEM);
+
}
-
+
protected Class<? extends UIComponent> getComponentClass() {
- return UIPickList.class;
+ return UIPickList.class;
}
-
- public String getAsEventHandler(FacesContext context, UIComponent component, String
attributeName) {
-
- 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;
- }
-
- }
-
- return ScriptUtils.toScript(result);
-
+
+ public String getAsEventHandler(FacesContext context,
+ UIComponent component, String attributeName) {
+
+ 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;
+ }
+
+ }
+
+ return ScriptUtils.toScript(result);
+
}
-
- public String getColumnClassesAsJSArray(FacesContext context, UIComponent component)
{
- return ScriptUtils.toScript(getClassesAsList(context, component,
"columnClasses"));
+
+ public String getColumnClassesAsJSArray(FacesContext context,
+ UIComponent component) {
+ return ScriptUtils.toScript(getClassesAsList(context, component,
+ "columnClasses"));
}
-
- public String getRowClassesAsJSArray(FacesContext context, UIComponent component) {
- return ScriptUtils.toScript(getClassesAsList(context, component,
"rowClasses"));
+
+ public String getRowClassesAsJSArray(FacesContext context,
+ UIComponent component) {
+ return ScriptUtils.toScript(getClassesAsList(context, component,
+ "rowClasses"));
}
-
- protected List <String> getClassesAsList(FacesContext context, UIComponent
component, String attr) {
- String value = (String) ((UIComponent) component).getAttributes().get(attr);
-
- if (value != null && (value.length() != 0)) {
- return Arrays.asList(value.split(","));
- }
-
- return null;
+
+ protected List<String> getClassesAsList(FacesContext context,
+ UIComponent component, String attr) {
+ String value = (String) ((UIComponent) component).getAttributes().get(
+ attr);
+
+ if (value != null && (value.length() != 0)) {
+ return Arrays.asList(value.split(","));
+ }
+
+ return null;
}
-
- public void encodePickListControlsFacets(FacesContext context, UIComponent component,
ListStateFlags listStateFlags) throws IOException {
- boolean needsStrut = true;
-
- String clientId = component.getClientId(context);
- boolean enable = false;
-
- ResponseWriter writer = context.getResponseWriter();
- boolean componentDisabled = ((UIPickList) component).isDisabled();
-
- for (int i = 0; i < SHUTTLE_HELPERS.length; i++) {
- //Conditionally render the control based on the return value of the control's
corresponding helper.isRendered method
- if (SHUTTLE_HELPERS[i].isRendered(context, component)){
- needsStrut = false;
-
- OrderingComponentRendererBase.ControlsHelper helper = SHUTTLE_HELPERS[i];
-
- boolean isDisabled =
helper.getButtonStyleClass().equals(PickListControlsHelper.DISABLED_STYLE_PREF);
-
- if
(helper.getBundlePropertyName().equals(PickListControlsHelper.BUNDLE_REMOVE_ALL_LABEL)) {
-
- enable = listStateFlags.isSelectedList;
- enable = (enable != isDisabled) || (isDisabled && componentDisabled) ?
true : false;
-
- } else if
(helper.getBundlePropertyName().equals(PickListControlsHelper.BUNDLE_COPY_ALL_LABEL)) {
-
- enable = listStateFlags.isAvailableList;
- enable = (enable != isDisabled) || (isDisabled && componentDisabled) ?
true : false;
-
- } else {
-
- if
(helper.getButtonStyleClass().equals(PickListControlsHelper.DISABLED_STYLE_PREF)) {
- enable = true;
- } else {
- enable = false;
- }
-
- }
-
- encodeControlFacet(context, component, SHUTTLE_HELPERS[i], clientId, writer,
enable, "rich-list-picklist-button", " rich-picklist-control");
- }
- }
-
- if (needsStrut) {
- writer.startElement(HTML.SPAN_ELEM, component);
- writer.endElement(HTML.SPAN_ELEM);
- }
+
+ public void encodePickListControlsFacets(FacesContext context,
+ UIComponent component, ListStateFlags listStateFlags)
+ throws IOException {
+ boolean needsStrut = true;
+
+ String clientId = component.getClientId(context);
+ boolean enable = false;
+
+ ResponseWriter writer = context.getResponseWriter();
+ boolean componentDisabled = ((UIPickList) component).isDisabled();
+
+ for (int i = 0; i < SHUTTLE_HELPERS.length; i++) {
+ // Conditionally render the control based on the return value of the
+ // control's corresponding helper.isRendered method
+ if (SHUTTLE_HELPERS[i].isRendered(context, component)) {
+ needsStrut = false;
+
+ OrderingComponentRendererBase.ControlsHelper helper =
SHUTTLE_HELPERS[i];
+
+ boolean isDisabled = helper.getButtonStyleClass().equals(
+ PickListControlsHelper.DISABLED_STYLE_PREF);
+
+ if (helper.getBundlePropertyName().equals(
+ PickListControlsHelper.BUNDLE_REMOVE_ALL_LABEL)) {
+
+ enable = listStateFlags.isSelectedList;
+ enable = (enable != isDisabled)
+ || (isDisabled && componentDisabled) ? true : false;
+
+ } else if (helper.getBundlePropertyName().equals(
+ PickListControlsHelper.BUNDLE_COPY_ALL_LABEL)) {
+
+ enable = listStateFlags.isAvailableList;
+ enable = (enable != isDisabled)
+ || (isDisabled && componentDisabled) ? true : false;
+
+ } else {
+
+ if (helper.getButtonStyleClass().equals(
+ PickListControlsHelper.DISABLED_STYLE_PREF)) {
+ enable = true;
+ } else {
+ enable = false;
+ }
+
+ }
+
+ encodeControlFacet(context, component, SHUTTLE_HELPERS[i],
+ clientId, writer, enable, "rich-list-picklist-button",
+ " rich-picklist-control");
+ }
+ }
+
+ if (needsStrut) {
+ writer.startElement(HTML.SPAN_ELEM, component);
+ writer.endElement(HTML.SPAN_ELEM);
+ }
}
-
- protected void encodeControlFacet(FacesContext context, UIComponent component,
OrderingComponentRendererBase.ControlsHelper helper, String clientId,
- ResponseWriter writer, boolean enabled, String baseStyle, String baseControlStyle)
throws IOException {
-
- renderDefaultControl(context, component, writer, helper, clientId, enabled,
baseStyle, baseControlStyle);
-
+
+ protected void encodeControlFacet(FacesContext context,
+ UIComponent component,
+ OrderingComponentRendererBase.ControlsHelper helper,
+ String clientId, ResponseWriter writer, boolean enabled,
+ String baseStyle, String baseControlStyle) throws IOException {
+
+ renderDefaultControl(context, component, writer, helper, clientId,
+ enabled, baseStyle, baseControlStyle);
+
}
-
- public List<ConvertedSelectItem> getConvertedItems(FacesContext context,
UIPickList pickList) {
+
+ public List<ConvertedSelectItem> getConvertedItems(FacesContext context,
+ UIPickList pickList) {
List<ConvertedSelectItem> convertedItems = new
ArrayList<ConvertedSelectItem>();
- final List<SelectItem> selectItems = SelectUtils.getSelectItems(context,
pickList);
- for (int i = 0; i < selectItems.size(); i++ ) {
+ final List<SelectItem> selectItems = SelectUtils.getSelectItems(
+ context, pickList);
+ for (int i = 0; i < selectItems.size(); i++) {
SelectItem item = selectItems.get(i);
if (item instanceof SelectItemGroup) {
- SelectItem[] groupItems = ((SelectItemGroup) item).getSelectItems();
+ SelectItem[] groupItems = ((SelectItemGroup) item)
+ .getSelectItems();
for (int j = 0; j < groupItems.length; j++) {
- convertedItems.add(ConvertedSelectItem.get(context, pickList,
groupItems[j], "group:" + j));
- }
+ convertedItems.add(ConvertedSelectItem.get(context,
+ pickList, groupItems[j], "group:" + j));
+ }
} else {
- convertedItems.add(ConvertedSelectItem.get(context, pickList, item,
Integer.toString(i)));
+ convertedItems.add(ConvertedSelectItem.get(context, pickList,
+ item, Integer.toString(i)));
}
}
@@ -476,195 +537,225 @@
protected ClassLoader getCurrentLoader(Object fallbackClass) {
- ClassLoader loader = Thread.currentThread().getContextClassLoader();
+ ClassLoader loader = Thread.currentThread().getContextClassLoader();
- if (loader == null) {
+ if (loader == null) {
loader = fallbackClass.getClass().getClassLoader();
}
-
+
return loader;
}
- protected String findLocalisedLabel(FacesContext context, String propertyId, String
bundleName) {
- String label = null;
- Locale locale = null;
- String userBundleName = null;
- ResourceBundle bundle = null;
-
- UIViewRoot viewRoot = context.getViewRoot();
- if ( viewRoot != null) {
- locale = viewRoot.getLocale();
- } else {
- locale = Locale.getDefault();
- }
-
- if(locale != null) {
-
- try {
-
- if( null != (userBundleName = context.getApplication().getMessageBundle())) {
- bundle = ResourceBundle.getBundle(userBundleName,locale,
getCurrentLoader(userBundleName));
-
- if (bundle != null) {
- label = bundle.getString(propertyId);
- }
- }
-
- } catch (MissingResourceException e) {
-
- if (logger.isDebugEnabled()) {
- logger.debug("Can't find bundle properties file " + userBundleName +
" " + locale.getLanguage() + " " + locale.getCountry()) ;
- }
-
- }
-
- if(label == null && bundleName != null) {
-
- try {
-
- bundle = ResourceBundle.getBundle(bundleName ,locale, getCurrentLoader(bundleName));
- if (bundle != null) {
- label = bundle.getString(propertyId);
- }
-
- } catch (MissingResourceException e) {
-
- if (logger.isDebugEnabled()) {
- logger.debug("Can't find bundle properties file " + bundleName +
" " + locale.getLanguage() + " " + locale.getCountry()) ;
- }
-
- }
- }
-
- }
-
- return label;
+ protected String findLocalisedLabel(FacesContext context,
+ String propertyId, String bundleName) {
+ String label = null;
+ Locale locale = null;
+ String userBundleName = null;
+ ResourceBundle bundle = null;
+
+ UIViewRoot viewRoot = context.getViewRoot();
+ if (viewRoot != null) {
+ locale = viewRoot.getLocale();
+ } else {
+ locale = Locale.getDefault();
+ }
+
+ if (locale != null) {
+
+ try {
+
+ if (null != (userBundleName = context.getApplication()
+ .getMessageBundle())) {
+ bundle = ResourceBundle.getBundle(userBundleName, locale,
+ getCurrentLoader(userBundleName));
+
+ if (bundle != null) {
+ label = bundle.getString(propertyId);
+ }
+ }
+
+ } catch (MissingResourceException e) {
+
+ if (logger.isDebugEnabled()) {
+ logger.debug("Can't find bundle properties file "
+ + userBundleName + " " + locale.getLanguage() +
" "
+ + locale.getCountry());
+ }
+
+ }
+
+ if (label == null && bundleName != null) {
+
+ try {
+
+ bundle = ResourceBundle.getBundle(bundleName, locale,
+ getCurrentLoader(bundleName));
+ if (bundle != null) {
+ label = bundle.getString(propertyId);
+ }
+
+ } catch (MissingResourceException e) {
+
+ if (logger.isDebugEnabled()) {
+ logger.debug("Can't find bundle properties file "
+ + bundleName + " " + locale.getLanguage() +
" "
+ + locale.getCountry());
+ }
+
+ }
+ }
+
+ }
+
+ return label;
}
- protected void renderDefaultControl(FacesContext context, UIComponent component,
ResponseWriter writer,
- OrderingComponentRendererBase.ControlsHelper helper, String clientId, boolean
enabled, String baseStyle,
- String baseControlStyle) throws IOException {
-
- UIComponent facet = component.getFacet(getAltAttribbute(helper));
-
- boolean useFacet = (facet != null && facet.isRendered());
-
- String customEvent = null;
-
- Map<String,Object> attributes = component.getAttributes();
-
- if (helper.customEvent != null) {
- customEvent = (String) attributes.get(helper.customEvent);
- }
-
- String styleFromAttribute = (String) attributes.get(helper.styleFromAttribute);
- String baseStyleLight = baseStyle.concat("-light");
- String baseStylePress = baseStyle.concat("-press");
- String currentStyle = baseControlStyle + helper.getStyleClassName();
-
- if (styleFromAttribute != null) {
- currentStyle = styleFromAttribute.concat(currentStyle);
- }
-
- String controlId = clientId + helper.getIdSuffix();
- writer.startElement(HTML.DIV_ELEM, component);
- writer.writeAttribute(HTML.id_ATTRIBUTE, controlId, null); // FIXME:
- writer.writeAttribute(HTML.class_ATTRIBUTE, currentStyle, null);
-
- String style = enabled ? "display:block;" : "display:none;";
-
- writer.writeAttribute(HTML.style_ATTRIBUTE, style, null);
-
- if (!useFacet) {
-
- writer.startElement(HTML.DIV_ELEM, component);
- writer.writeAttribute(HTML.class_ATTRIBUTE, baseStyle + helper.getButtonStyleClass(),
null);
-
- if (helper.enable) {
- writer.writeAttribute(HTML.onmouseover_ATTRIBUTE, "this.className='" +
baseStyleLight + "'", null);
- writer.writeAttribute(HTML.onmousedown_ATTRIBUTE, "this.className='" +
baseStylePress + "'", null);
- writer.writeAttribute(HTML.onmouseup_ATTRIBUTE, "this.className='" +
baseStyle + "'", null);
- writer.writeAttribute(HTML.onmouseout_ATTRIBUTE, "this.className='" +
baseStyle + "'", null);
- }
-
- if (!helper.enable) {
- //writer.writeAttribute(HTML.DISABLED_ATTR, "disabled", null);
- //writer.writeAttribute(HTML.class_ATTRIBUTE, baseStyle + "-a-disabled",
null);
- //writer.startElement(HTML.a_ELEMENT, component);
- } else {
- writer.startElement(HTML.a_ELEMENT, component);
- writer.writeAttribute(HTML.id_ATTRIBUTE, controlId + "link", null); //
FIXME:
- writer.writeAttribute(HTML.onclick_ATTRIBUTE, "return false;", null);
-
- writer.writeAttribute(HTML.class_ATTRIBUTE, baseStyle + "-selection",
null);
- writer.writeAttribute(HTML.onblur_ATTRIBUTE,
"Richfaces.Control.onblur(this);", null);
- writer.writeAttribute(HTML.onfocus_ATTRIBUTE,
"Richfaces.Control.onfocus(this);", null);
- }
-
- writer.startElement(HTML.DIV_ELEM, component);
- writer.writeAttribute(HTML.class_ATTRIBUTE, baseStyle + "-content", null);
- }
-
- if (customEvent != null) {
- writer.writeAttribute(HTML.onclick_ATTRIBUTE, customEvent, null);
- }
-
- if (useFacet) {
- renderChild(context, facet);
- } else {
-
- writer.startElement(HTML.IMG_ELEMENT, component);
- writer.writeAttribute(HTML.class_ATTRIBUTE, "rich-picklist-control-img",
null);
- writer.writeAttribute(HTML.alt_ATTRIBUTE,
component.getAttributes().get(helper.getTitle()), null);
- writer.writeAttribute(HTML.src_ATTRIBUTE,
getResource(helper.getImageURI()).getUri(context, null), null);
- writer.endElement(HTML.IMG_ELEMENT);
-
- if (getUtils().isBooleanAttribute(component, SHOW_LABELS_ATTRIBUTE_NAME)) {
- String label = (String) attributes.get(helper.getLabelAttributeName());
- if (label == null || label.equals("")) {
- label = findLocalisedLabel(context, helper.getBundlePropertyName(),
MESSAGE_BUNDLE_NAME);
- }
-
- if (label == null || label.equals("")) {
- label = helper.getDefaultText();
- }
-
- writer.write(label);
- }
- }
-
- if (!useFacet) {
- writer.endElement(HTML.DIV_ELEM);
-
- if (helper.enable) {
- writer.endElement(HTML.a_ELEMENT);
- }
-
- writer.endElement(HTML.DIV_ELEM);
- }
-
- writer.endElement(HTML.DIV_ELEM);
- }
-
- private String getAltAttribbute(
- OrderingComponentRendererBase.ControlsHelper helper) {
-
- return helper.getFacetName() != null ? helper.getFacetName() : " ";
-
- }
+ protected void renderDefaultControl(FacesContext context,
+ UIComponent component, ResponseWriter writer,
+ OrderingComponentRendererBase.ControlsHelper helper,
+ String clientId, boolean enabled, String baseStyle,
+ String baseControlStyle) throws IOException {
+
+ UIComponent facet = component.getFacet(getAltAttribbute(helper));
+
+ boolean useFacet = (facet != null && facet.isRendered());
+
+ String customEvent = null;
+
+ Map<String, Object> attributes = component.getAttributes();
+
+ if (helper.customEvent != null) {
+ customEvent = (String) attributes.get(helper.customEvent);
+ }
+
+ String styleFromAttribute = (String) attributes
+ .get(helper.styleFromAttribute);
+ String baseStyleLight = baseStyle.concat("-light");
+ String baseStylePress = baseStyle.concat("-press");
+ String currentStyle = baseControlStyle + helper.getStyleClassName();
+
+ if (styleFromAttribute != null) {
+ currentStyle = styleFromAttribute.concat(currentStyle);
+ }
+
+ String controlId = clientId + helper.getIdSuffix();
+ writer.startElement(HTML.DIV_ELEM, component);
+ writer.writeAttribute(HTML.id_ATTRIBUTE, controlId, null); // FIXME:
+ writer.writeAttribute(HTML.class_ATTRIBUTE, currentStyle, null);
+
+ String style = enabled ? "display:block;" : "display:none;";
+
+ writer.writeAttribute(HTML.style_ATTRIBUTE, style, null);
+
+ if (!useFacet) {
+
+ writer.startElement(HTML.DIV_ELEM, component);
+ writer.writeAttribute(HTML.class_ATTRIBUTE, baseStyle
+ + helper.getButtonStyleClass(), null);
+
+ if (helper.enable) {
+ writer.writeAttribute(HTML.onmouseover_ATTRIBUTE,
+ "this.className='" + baseStyleLight +
"'", null);
+ writer.writeAttribute(HTML.onmousedown_ATTRIBUTE,
+ "this.className='" + baseStylePress +
"'", null);
+ writer.writeAttribute(HTML.onmouseup_ATTRIBUTE,
+ "this.className='" + baseStyle + "'",
null);
+ writer.writeAttribute(HTML.onmouseout_ATTRIBUTE,
+ "this.className='" + baseStyle + "'",
null);
+ }
+
+ if (!helper.enable) {
+ // writer.writeAttribute(HTML.DISABLED_ATTR, "disabled",
null);
+ // writer.writeAttribute(HTML.class_ATTRIBUTE, baseStyle +
+ // "-a-disabled", null);
+ // writer.startElement(HTML.a_ELEMENT, component);
+ } else {
+ writer.startElement(HTML.a_ELEMENT, component);
+ writer.writeAttribute(HTML.id_ATTRIBUTE, controlId + "link",
+ null); // FIXME:
+ writer.writeAttribute(HTML.onclick_ATTRIBUTE, "return false;",
+ null);
+
+ writer.writeAttribute(HTML.class_ATTRIBUTE, baseStyle
+ + "-selection", null);
+ writer.writeAttribute(HTML.onblur_ATTRIBUTE,
+ "Richfaces.Control.onblur(this);", null);
+ writer.writeAttribute(HTML.onfocus_ATTRIBUTE,
+ "Richfaces.Control.onfocus(this);", null);
+ }
+
+ writer.startElement(HTML.DIV_ELEM, component);
+ writer.writeAttribute(HTML.class_ATTRIBUTE, baseStyle +
"-content",
+ null);
+ }
+
+ if (customEvent != null) {
+ writer.writeAttribute(HTML.onclick_ATTRIBUTE, customEvent, null);
+ }
+
+ if (useFacet) {
+ renderChild(context, facet);
+ } else {
+
+ writer.startElement(HTML.IMG_ELEMENT, component);
+ writer.writeAttribute(HTML.class_ATTRIBUTE,
+ "rich-picklist-control-img", null);
+ writer.writeAttribute(HTML.alt_ATTRIBUTE, component.getAttributes()
+ .get(helper.getTitle()), null);
+ writer.writeAttribute(HTML.src_ATTRIBUTE, getResource(
+ helper.getImageURI()).getUri(context, null), null);
+ writer.endElement(HTML.IMG_ELEMENT);
+
+ if (getUtils().isBooleanAttribute(component,
+ SHOW_LABELS_ATTRIBUTE_NAME)) {
+ String label = (String) attributes.get(helper
+ .getLabelAttributeName());
+ if (label == null || label.equals("")) {
+ label = findLocalisedLabel(context, helper
+ .getBundlePropertyName(), MESSAGE_BUNDLE_NAME);
+ }
+
+ if (label == null || label.equals("")) {
+ label = helper.getDefaultText();
+ }
+
+ writer.write(label);
+ }
+ }
+
+ if (!useFacet) {
+ writer.endElement(HTML.DIV_ELEM);
+
+ if (helper.enable) {
+ writer.endElement(HTML.a_ELEMENT);
+ }
+
+ writer.endElement(HTML.DIV_ELEM);
+ }
+
+ writer.endElement(HTML.DIV_ELEM);
+ }
- public void reRenderScript(FacesContext context, UIComponent component) throws
IOException {
-
- AjaxContext ajaxContext = AjaxContext.getCurrentInstance(context);
-
- Set <String> areas = ajaxContext.getAjaxRenderedAreas();
- String clientId = component.getClientId(context);
-
- if (ajaxContext.isAjaxRequest() && areas.contains(clientId)){
- areas.add(clientId + "script");
- }
-
+ private String getAltAttribbute(
+ OrderingComponentRendererBase.ControlsHelper helper) {
+
+ return helper.getFacetName() != null ? helper.getFacetName() : " ";
+
}
+ public void reRenderScript(FacesContext context, UIComponent component)
+ throws IOException {
+
+ AjaxContext ajaxContext = AjaxContext.getCurrentInstance(context);
+
+ Set<String> areas = ajaxContext.getAjaxRenderedAreas();
+ String clientId = component.getClientId(context);
+
+ if (ajaxContext.isAjaxRequest() && areas.contains(clientId)) {
+ areas.add(clientId + "script");
+ }
+
+ }
+
}