1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19 package org.apache.myfaces.custom.div;
20
21 import java.io.IOException;
22 import java.util.List;
23 import java.util.Map;
24
25 import javax.faces.component.UIComponent;
26 import javax.faces.component.behavior.ClientBehavior;
27 import javax.faces.context.FacesContext;
28 import javax.faces.context.ResponseWriter;
29
30 import org.apache.myfaces.custom.htmlTag.HtmlTagRenderer;
31 import org.apache.myfaces.shared_tomahawk.renderkit.html.HTML;
32 import org.apache.myfaces.shared_tomahawk.renderkit.html.HtmlRendererUtils;
33 import org.apache.myfaces.shared_tomahawk.renderkit.html.util.ResourceUtils;
34
35
36
37
38
39
40
41
42
43
44 public class DivRenderer extends HtmlTagRenderer
45 {
46 public static final String RENDERER_TYPE = "org.apache.myfaces.HtmlTagRenderer";
47
48 @Override
49 public void decode(FacesContext context, UIComponent component)
50 {
51 super.decode(context, component);
52
53 HtmlRendererUtils.decodeClientBehaviors(context, component);
54 }
55
56 public void encodeBegin(FacesContext context, UIComponent component)
57 throws IOException
58 {
59 if ((context == null) || (component == null))
60 {
61 throw new NullPointerException();
62 }
63
64 Div div = (Div) component;
65 Map<String, List<ClientBehavior>> behaviors = div.getClientBehaviors();
66 if (behaviors != null && !behaviors.isEmpty())
67 {
68 ResourceUtils.renderDefaultJsfJsInlineIfNecessary(context, context.getResponseWriter());
69 }
70
71 super.encodeBegin(context, component);
72
73 if (div.isRendered())
74 {
75 ResponseWriter writer = context.getResponseWriter();
76
77
78
79 if (behaviors != null && !behaviors.isEmpty())
80 {
81 HtmlRendererUtils.writeIdAndName(writer, component, context);
82 HtmlRendererUtils.renderHTMLAttributes(writer, component, HTML.UNIVERSAL_ATTRIBUTES_WITHOUT_STYLE);
83 HtmlRendererUtils.renderBehaviorizedEventHandlers(context, writer, component, behaviors);
84 }
85 else
86 {
87 HtmlRendererUtils.renderHTMLAttributes(writer, div,
88 HTML.COMMON_PASSTROUGH_ATTRIBUTES_WITHOUT_STYLE);
89 }
90 }
91 }
92
93 }