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.context.Markup;
23 import org.apache.myfaces.tobago.internal.component.AbstractUIPanel;
24 import org.apache.myfaces.tobago.internal.component.AbstractUIReload;
25 import org.apache.myfaces.tobago.internal.util.HtmlRendererUtils;
26 import org.apache.myfaces.tobago.model.CollapseMode;
27 import org.apache.myfaces.tobago.renderkit.css.TobagoClass;
28 import org.apache.myfaces.tobago.renderkit.html.DataAttributes;
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 PanelRenderer<T extends AbstractUIPanel> extends CollapsiblePanelRendererBase<T> {
38
39 @Override
40 public void encodeBeginInternal(final FacesContext facesContext, final T component) throws IOException {
41
42 final TobagoResponseWriter writer = getResponseWriter(facesContext);
43 final String clientId = component.getClientId(facesContext);
44 final boolean collapsed = component.isCollapsed();
45 final Markup markup = component.getMarkup();
46 final AbstractUIReload reload = ComponentUtils.getReloadFacet(component);
47
48 writer.startElement(HtmlElements.TOBAGO_PANEL);
49 writer.writeIdAttribute(clientId);
50
51 writer.writeClassAttribute(
52 collapsed ? TobagoClass.COLLAPSED : null,
53 TobagoClass.PANEL.createMarkup(markup),
54 component.getCustomClass(),
55 markup != null && markup.contains(Markup.SPREAD) ? TobagoClass.SPREAD : null);
56
57 HtmlRendererUtils.writeDataAttributes(facesContext, writer, component);
58 final String tip = component.getTip();
59 if (tip != null) {
60 writer.writeAttribute(HtmlAttributes.TITLE, tip, true);
61 }
62
63 if (reload != null && reload.isRendered()) {
64 writer.writeAttribute(DataAttributes.RELOAD, reload.getFrequency());
65 }
66
67 if (component.getCollapsedMode() != CollapseMode.none) {
68 encodeHidden(writer, clientId, collapsed);
69 }
70
71 encodeBehavior(writer, facesContext, component);
72 }
73
74 @Override
75 public void encodeEndInternal(final FacesContext facesContext, final T component) throws IOException {
76 final TobagoResponseWriter writer = getResponseWriter(facesContext);
77 writer.endElement(HtmlElements.TOBAGO_PANEL);
78 }
79 }