/* * Copyright 2006 FastSearch (http://www.fastsearch.com). * * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. * You may obtain a copy of the License at * * http://www.apache.org/licenses/LICENSE-2.0 * * Unless required by applicable law or agreed to in writing, software * distributed under the License is distributed on an "AS IS" BASIS, * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. * See the License for the specific language governing permissions and * limitations under the License. */ package com.fastsearch.jigsaw.component.checkbox; import java.io.IOException; import javax.faces.component.UIComponent; import javax.faces.context.FacesContext; import javax.faces.context.ResponseWriter; import org.apache.myfaces.shared_impl.renderkit.JSFAttr; import org.apache.myfaces.shared_impl.renderkit.html.HtmlRendererUtils; import org.apache.myfaces.shared_tomahawk.renderkit.html.HTML; public class HtmlCheckboxRenderer extends org.apache.myfaces.renderkit.html.HtmlCheckboxRenderer { protected void renderCheckbox(FacesContext context, UIComponent component, String value, String label, boolean disabled, boolean checked, boolean renderId) throws IOException { String clientId = component.getClientId(context); HtmlCheckbox checkbox = (HtmlCheckbox) component; if (checkbox.getId() != null && checkbox.getId().length()>0){ clientId = checkbox.getId(); } ResponseWriter writer = context.getResponseWriter(); writer.startElement(HTML.INPUT_ELEM, component); writer.writeAttribute(HTML.TYPE_ATTR, HTML.INPUT_TYPE_CHECKBOX, null); writer.writeAttribute(HTML.NAME_ATTR, clientId, null); writer.writeAttribute(HTML.ID_ATTR, clientId, JSFAttr.ID_ATTR); if (checkbox.getOnclick() != null && checkbox.getOnclick().length()>0){ writer.writeAttribute(HTML.ONCLICK_ATTR, checkbox.getOnclick(), null); } if (checked) { writer.writeAttribute(HTML.CHECKED_ATTR, org.apache.myfaces.shared_impl.renderkit.html.HTML.CHECKED_ATTR, null); } if ((value != null) && (value.length() > 0)) { writer.writeAttribute(HTML.VALUE_ATTR, value, null); } HtmlRendererUtils.renderHTMLAttributes(writer, component, HTML.INPUT_PASSTHROUGH_ATTRIBUTES_WITHOUT_DISABLED); if (disabled || isDisabled(context, component)) { writer.writeAttribute(HTML.DISABLED_ATTR, HTML.DISABLED_ATTR, null); } writer.endElement(HTML.INPUT_ELEM); writer.flush(); if(checkbox.getLabelType() == null) checkbox.setLabelType("text"); String labelClass = null; writer.startElement(HTML.LABEL_ELEM, component); writer.writeAttribute(HTML.TITLE_ATTR, checkbox.getTitle(), null); writer.writeAttribute(HTML.FOR_ATTR, clientId, null); if(checkbox.getLabelType().equals("image")) { writer.startElement(HTML.IMG_ELEM, component); labelClass = checkbox.getLabelClass(); if(labelClass != null) writer.writeAttribute(HTML.CLASS_ATTR, labelClass, null); String src = context.getApplication().getViewHandler().getResourceURL(context, checkbox.getLabelValue()); writer.writeAttribute(HTML.SRC_ATTR, context.getExternalContext().encodeResourceURL(src), null); writer.endElement(HTML.IMG_ELEM); } else { labelClass = checkbox.getLabelClass(); if(labelClass != null) writer.writeAttribute(HTML.CLASS_ATTR, labelClass, null); writer.startElement(HTML.SPAN_ELEM, component); writer.write(checkbox.getLabelValue()); writer.endElement(HTML.SPAN_ELEM); } writer.endElement(HTML.LABEL_ELEM); } }