1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20 package org.apache.myfaces.tobago.internal.renderkit.renderer;
21
22 import org.apache.myfaces.tobago.component.Facets;
23 import org.apache.myfaces.tobago.internal.component.AbstractUILabel;
24 import org.apache.myfaces.tobago.internal.component.AbstractUISeparator;
25 import org.apache.myfaces.tobago.renderkit.RendererBase;
26 import org.apache.myfaces.tobago.renderkit.css.BootstrapClass;
27 import org.apache.myfaces.tobago.renderkit.css.TobagoClass;
28 import org.apache.myfaces.tobago.renderkit.html.HtmlElements;
29 import org.apache.myfaces.tobago.util.ComponentUtils;
30 import org.apache.myfaces.tobago.webapp.TobagoResponseWriter;
31
32 import javax.faces.component.UIComponent;
33 import javax.faces.context.FacesContext;
34 import java.io.IOException;
35
36 public class SeparatorRenderer<T extends AbstractUISeparator> extends RendererBase<T> {
37
38 @Override
39 public void encodeEndInternal(final FacesContext facesContext, final T component) throws IOException {
40
41 final TobagoResponseWriter writer = getResponseWriter(facesContext);
42 final String clientId = component.getClientId(facesContext);
43
44 if (isInside(facesContext, HtmlElements.COMMAND)) {
45 writer.startElement(HtmlElements.TOBAGO_SEPARATOR);
46 writer.writeIdAttribute(clientId);
47 writer.writeClassAttribute(
48 BootstrapClass.DROPDOWN_DIVIDER,
49 component.getCustomClass());
50 writer.endElement(HtmlElements.TOBAGO_SEPARATOR);
51 } else {
52 final String label = getLabel(component);
53 if (label != null) {
54 writer.startElement(HtmlElements.P);
55 writer.writeIdAttribute(clientId);
56 writer.writeClassAttribute(
57 TobagoClass.SEPARATOR,
58 TobagoClass.SEPARATOR.createMarkup(component.getMarkup()),
59 component.getCustomClass());
60 writer.writeText(label);
61 writer.endElement(HtmlElements.P);
62 } else {
63 writer.startElement(HtmlElements.HR);
64 writer.writeIdAttribute(clientId);
65 writer.writeClassAttribute(
66 TobagoClass.SEPARATOR,
67 TobagoClass.SEPARATOR.createMarkup(component.getMarkup()),
68 component.getCustomClass());
69 writer.endElement(HtmlElements.HR);
70 }
71 }
72 }
73
74 private String getLabel(final AbstractUISeparator separator) {
75 String label = separator.getLabel();
76 final UIComponent facet = ComponentUtils.getFacet(separator, Facets.label);
77 if (label == null && facet != null) {
78 label = String.valueOf(((AbstractUILabel) facet).getValue());
79 }
80 return label;
81 }
82 }