KickJava   Java API By Example, From Geeks To Geeks.

Java > Open Source Codes > com > icesoft > faces > component > tree > TreeNodeRenderer


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.component.tree;
35
36 import com.icesoft.faces.component.util.CustomComponentUtils;
37 import com.icesoft.faces.context.DOMContext;
38 import com.icesoft.faces.renderkit.dom_html_basic.DomBasicRenderer;
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
46 /**
47  * TreeNodeRenderer is an ICEfaces D2D renderer for the TreeNode component.
48  */

49 public class TreeNodeRenderer extends DomBasicRenderer {
50
51
52     /* (non-Javadoc)
53      * @see com.icesoft.faces.renderkit.dom_html_basic.DomBasicRenderer#decode(javax.faces.context.FacesContext, javax.faces.component.UIComponent)
54      */

55     public void decode(FacesContext facesContext, UIComponent uiComponent) {
56     }
57
58     /* (non-Javadoc)
59      * @see com.icesoft.faces.renderkit.dom_html_basic.DomBasicRenderer#encodeEnd(javax.faces.context.FacesContext, javax.faces.component.UIComponent)
60      */

61     public void encodeEnd(FacesContext facesContext, UIComponent uiComponent)
62             throws IOException JavaDoc {
63
64         DOMContext domContext =
65                 DOMContext.attachDOMContext(facesContext, uiComponent);
66
67         validateParameters(facesContext, uiComponent, TreeNode.class);
68         resetDescendentIds(uiComponent);
69         UIComponent iconFacet = ((TreeNode) uiComponent).getIcon();
70         UIComponent contentFacet = ((TreeNode) uiComponent).getContent();
71
72         if (iconFacet != null && iconFacet.isRendered()) {
73             CustomComponentUtils.renderChild(facesContext, iconFacet);
74         }
75         if (contentFacet != null && contentFacet.isRendered()) {
76             CustomComponentUtils.renderChild(facesContext, contentFacet);
77         }
78
79     }
80
81     /**
82      * Reset ids so the client id will be nullified and regenerated when
83      * attachDOMContext is called. This is necessary so that each child
84      * component of the TreeNode has a unique client id instead of using the
85      * cached id. If the cached id is used, the DOMContext from the previous
86      * node is reused which is totally incorrect. the same DOMContext and
87      *
88      * @param uiComponent
89      */

90     public static void resetDescendentIds(UIComponent uiComponent) {
91         uiComponent.setId(uiComponent.getId());
92         Iterator JavaDoc it = uiComponent.getFacetsAndChildren();
93         while (it.hasNext()) {
94             UIComponent next = (UIComponent) it.next();
95             resetDescendentIds(next);
96         }
97     }
98 }
99
Popular Tags