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.internal.component.AbstractUIData;
23 import org.apache.myfaces.tobago.internal.component.AbstractUITreeLabel;
24 import org.apache.myfaces.tobago.internal.component.AbstractUITreeListbox;
25 import org.apache.myfaces.tobago.internal.util.HtmlRendererUtils;
26 import org.apache.myfaces.tobago.internal.util.StringUtils;
27 import org.apache.myfaces.tobago.renderkit.RendererBase;
28 import org.apache.myfaces.tobago.renderkit.css.TobagoClass;
29 import org.apache.myfaces.tobago.renderkit.html.HtmlAttributes;
30 import org.apache.myfaces.tobago.renderkit.html.HtmlElements;
31 import org.apache.myfaces.tobago.util.ComponentUtils;
32 import org.apache.myfaces.tobago.webapp.TobagoResponseWriter;
33
34 import javax.faces.context.FacesContext;
35 import java.io.IOException;
36
37 public class TreeLabelRenderer<T extends AbstractUITreeLabel> extends RendererBase<T> {
38
39 @Override
40 public void encodeBeginInternal(final FacesContext facesContext, final T component) throws IOException {
41
42 final AbstractUIData data = ComponentUtils.findAncestor(component, AbstractUIData.class);
43 final boolean listbox = data instanceof AbstractUITreeListbox;
44
45 final TobagoResponseWriter writer = getResponseWriter(facesContext);
46 final String text = StringUtils.defaultString((String) component.getValue());
47
48 if (listbox) {
49 writer.writeText(text);
50 } else {
51 writer.startElement(HtmlElements.LABEL);
52 writer.writeClassAttribute(
53 TobagoClass.TREE_LABEL,
54 TobagoClass.TREE_LABEL.createMarkup(component.getMarkup()),
55 component.getCustomClass());
56 HtmlRendererUtils.writeDataAttributes(facesContext, writer, component);
57 final String title = HtmlRendererUtils.getTitleFromTipAndMessages(facesContext, component);
58 if (title != null) {
59 writer.writeAttribute(HtmlAttributes.TITLE, title, true);
60 }
61
62 writer.writeText(text);
63
64 writer.endElement(HtmlElements.LABEL);
65 }
66 }
67 }