KickJava   Java API By Example, From Geeks To Geeks.

Java > Open Source Codes > com > icesoft > faces > renderkit > dom_html_basic > GroupRenderer


1 /*
2  * Version: MPL 1.1/GPL 2.0/LGPL 2.1
3  *
4  * "The contents of this file are subject to the Mozilla Public License
5  * Version 1.1 (the "License"); you may not use this file except in
6  * compliance with the License. You may obtain a copy of the License at
7  * http://www.mozilla.org/MPL/
8  *
9  * Software distributed under the License is distributed on an "AS IS"
10  * basis, WITHOUT WARRANTY OF ANY KIND, either express or implied. See the
11  * License for the specific language governing rights and limitations under
12  * the License.
13  *
14  * The Original Code is ICEfaces 1.5 open source software code, released
15  * November 5, 2006. The Initial Developer of the Original Code is ICEsoft
16  * Technologies Canada, Corp. Portions created by ICEsoft are Copyright (C)
17  * 2004-2006 ICEsoft Technologies Canada, Corp. All Rights Reserved.
18  *
19  * Contributor(s): _____________________.
20  *
21  * Alternatively, the contents of this file may be used under the terms of
22  * the GNU Lesser General Public License Version 2.1 or later (the "LGPL"
23  * License), in which case the provisions of the LGPL License are
24  * applicable instead of those above. If you wish to allow use of your
25  * version of this file only under the terms of the LGPL License and not to
26  * allow others to use your version of this file under the MPL, indicate
27  * your decision by deleting the provisions above and replace them with
28  * the notice and other provisions required by the LGPL License. If you do
29  * not delete the provisions above, a recipient may use your version of
30  * this file under either the MPL or the LGPL License."
31  *
32  */

33
34 package com.icesoft.faces.renderkit.dom_html_basic;
35
36 import com.icesoft.faces.context.DOMContext;
37 import com.icesoft.faces.context.effects.LocalEffectEncoder;
38 import org.w3c.dom.Element JavaDoc;
39
40 import javax.faces.component.UIComponent;
41 import javax.faces.context.FacesContext;
42 import java.io.IOException JavaDoc;
43 import java.util.Iterator JavaDoc;
44
45 public class GroupRenderer extends DomBasicRenderer {
46
47     public boolean getRendersChildren() {
48         return true;
49     }
50
51     public void encodeBegin(FacesContext facesContext, UIComponent uiComponent)
52             throws IOException JavaDoc {
53
54         // render a span if either of the style or style class attributes
55
// are present
56
String JavaDoc style = (String JavaDoc) uiComponent.getAttributes().get("style");
57         String JavaDoc styleClass =
58                 (String JavaDoc) uiComponent.getAttributes().get("styleClass");
59         boolean requiresSpan = requiresRootElement(style, styleClass, uiComponent);
60
61         DOMContext domContext =
62                 DOMContext.attachDOMContext(facesContext, uiComponent);
63
64         if (requiresSpan) {
65             if (!domContext.isInitialized()) {
66                 Element JavaDoc rootSpan = createRootElement(domContext);
67                 domContext.setRootNode(rootSpan);
68                 setRootElementId(facesContext, rootSpan, uiComponent);
69             }
70             Element JavaDoc rootSpan = (Element JavaDoc) domContext.getRootNode();
71             DOMContext.removeChildren(rootSpan);
72             renderStyleAndStyleClass(style, styleClass, rootSpan);
73         }
74         Element JavaDoc rootSpan = (Element JavaDoc) domContext.getRootNode();
75         LocalEffectEncoder
76                 .encodeLocalEffects(uiComponent, rootSpan, facesContext);
77         domContext.streamWrite(facesContext, uiComponent,
78                                domContext.getRootNode(), rootSpan);
79         domContext.stepInto(uiComponent);
80     }
81
82     public void encodeChildren(FacesContext facesContext,
83                                UIComponent uiComponent)
84             throws IOException JavaDoc {
85         validateParameters(facesContext, uiComponent, null);
86         DOMContext domContext =
87                 DOMContext.getDOMContext(facesContext, uiComponent);
88         Iterator JavaDoc children = uiComponent.getChildren().iterator();
89         while (children.hasNext()) {
90             UIComponent nextChild = (UIComponent) children.next();
91             if (nextChild.isRendered()) {
92                 encodeParentAndChildren(facesContext, nextChild);
93             }
94         }
95         // set the cursor here since nothing happens in encodeEnd
96
domContext.stepOver();
97         domContext.streamWrite(facesContext, uiComponent);
98     }
99
100     public void encodeEnd(FacesContext facesContext, UIComponent uiComponent)
101             throws IOException JavaDoc {
102         validateParameters(facesContext, uiComponent, null);
103     }
104     
105     protected Element JavaDoc createRootElement(DOMContext domContext) {
106         return domContext.createElement(HTML.SPAN_ELEM);
107     }
108     
109     protected void renderStyleAndStyleClass(
110         String JavaDoc style, String JavaDoc styleClass, Element JavaDoc root)
111     {
112         if (styleClass != null) {
113             root.setAttribute(HTML.CLASS_ATTR, styleClass);
114         }
115         if (style != null && style.length() > 0) {
116             root.setAttribute(HTML.STYLE_ATTR, style);
117         }
118         else {
119             root.removeAttribute(HTML.STYLE_ATTR);
120         }
121     }
122
123
124     /**
125      * @param style
126      * @param styleClass
127      * @param uiComponent
128      * @return boolean
129      */

130     private boolean requiresRootElement(String JavaDoc style, String JavaDoc styleClass,
131                                  UIComponent uiComponent) {
132         return idNotNull(uiComponent) || style != null || styleClass != null;
133     }
134
135 }
Popular Tags