/** * Copyright 2014 - 17 by Riccardo Massera (TheCoder4.Eu) and Stephan Rauh (http://www.beyondjava.net). * * label file is part of BootsFaces. * * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use label 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 net.bootsfaces.component.label; import javax.faces.component.*; import java.io.IOException; import java.util.Map; import javax.faces.context.FacesContext; import javax.faces.context.ResponseWriter; import javax.faces.render.FacesRenderer; import net.bootsfaces.render.A; import net.bootsfaces.render.CoreRenderer; import net.bootsfaces.render.Responsive; import net.bootsfaces.render.Tooltip; /** label class generates the HTML code of <b:label />. */ @FacesRenderer(componentFamily = "net.bootsfaces.component", rendererType = "net.bootsfaces.component.label.Label") public class LabelRenderer extends CoreRenderer { /** * label methods generates the HTML code of the current b:label. * @param context the FacesContext. * @param component the current b:label. * @throws IOException thrown if something goes wrong when writing the HTML code. */ @Override public void encodeBegin(FacesContext context, UIComponent component) throws IOException { if (!component.isRendered()) { return; } Label label = (Label) component; ResponseWriter rw = context.getResponseWriter(); String clientId = label.getClientId(); boolean idHasBeenRendered = false; Map<String, Object> attrs = label.getAttributes(); String sev = label.getSeverity(); String txt = label.getValue(); if (txt == null) { txt = label.getText(); } // add responsive style String clazz = Responsive.getResponsiveStyleClass(label, false).trim(); boolean isResponsive = clazz.length() > 0; if (isResponsive) { rw.startElement("div", label); rw.writeAttribute("class", clazz, null); rw.writeAttribute("id", clientId, "id"); idHasBeenRendered = true; } rw.startElement("span", label); if (!idHasBeenRendered) { rw.writeAttribute("id", clientId, "id"); } Tooltip.generateTooltip(context, label, rw); String sclass = "label" + " " + "label"; if (sev != null) { sclass += "-" + sev; } else { sclass += "-default"; } String styleClass = label.getStyleClass(); sclass += styleClass != null ? " " + styleClass : ""; rw.writeAttribute("class", sclass, "class"); String style = label.getStyle(); if (isResponsive) { if (null == style) { style = "display:block"; } else { style += ";display:block"; } } if (style != null) rw.writeAttribute("style", style, "style"); rw.writeText(txt, null); rw.endElement("span"); if (isResponsive) { rw.endElement("div"); } Tooltip.activateTooltips(context, label); } }