1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19 package org.apache.myfaces.custom.document;
20
21 import java.io.IOException;
22
23 import javax.faces.component.UIComponent;
24 import javax.faces.context.FacesContext;
25 import javax.faces.context.ResponseWriter;
26 import javax.faces.render.Renderer;
27
28 import org.apache.myfaces.shared_tomahawk.renderkit.RendererUtils;
29
30
31
32
33
34
35
36 public abstract class AbstractDocumentRenderer extends Renderer
37 {
38 protected abstract String getHtmlTag();
39 protected abstract Class getDocumentClass();
40
41 public void encodeBegin(FacesContext facesContext, UIComponent uiComponent)
42 throws IOException
43 {
44 RendererUtils.checkParamValidity(facesContext, uiComponent,
45 getDocumentClass());
46
47 AbstractDocument document = (AbstractDocument) uiComponent;
48
49 ResponseWriter writer = facesContext.getResponseWriter();
50
51 if (document.hasState() && document.isEndState())
52 {
53 closeTag(facesContext, writer);
54 }
55 else
56 {
57 openTag(writer, uiComponent);
58 }
59 }
60
61 protected void openTag(ResponseWriter writer, UIComponent uiComponent)
62 throws IOException
63 {
64 writer.startElement(getHtmlTag(), uiComponent);
65 }
66
67 protected void closeTag(FacesContext facesContext, ResponseWriter writer)
68 throws IOException
69 {
70 writeBeforeEnd(facesContext);
71 writer.endElement(getHtmlTag());
72 }
73
74 public void encodeEnd(FacesContext facesContext, UIComponent uiComponent)
75 throws IOException
76 {
77 AbstractDocument document = (AbstractDocument) uiComponent;
78
79 ResponseWriter writer = facesContext.getResponseWriter();
80
81 if (!document.hasState())
82 {
83 closeTag(facesContext, writer);
84 }
85 }
86
87 protected void writeBeforeEnd(FacesContext facesContext) throws IOException
88 {
89 }
90 }