KickJava   Java API By Example, From Geeks To Geeks.

Java > Open Source Codes > com > icesoft > faces > component > panelstack > PanelStackRenderer


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.panelstack;
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 import com.icesoft.faces.renderkit.dom_html_basic.HTML;
40 import com.icesoft.faces.renderkit.dom_html_basic.PassThruAttributeRenderer;
41 import com.icesoft.faces.application.D2DViewHandler;
42 import org.w3c.dom.Element JavaDoc;
43
44 import javax.faces.component.UIComponent;
45 import javax.faces.context.FacesContext;
46 import java.io.IOException JavaDoc;
47
48 public class PanelStackRenderer extends DomBasicRenderer {
49     public boolean getRendersChildren() {
50         return true;
51     }
52
53     public void encodeChildren(FacesContext facesContext,
54                                UIComponent uiComponent) throws IOException JavaDoc {
55         validateParameters(facesContext, uiComponent, PanelStack.class);
56         DOMContext domContext =
57                 DOMContext.attachDOMContext(facesContext, uiComponent);
58
59         if (!domContext.isInitialized()) {
60             Element JavaDoc panelStackTable =
61                     domContext.createRootElement(HTML.TABLE_ELEM);
62             setRootElementId(facesContext, panelStackTable, uiComponent);
63             if (PassThruAttributeRenderer
64                     .passThruAttributeExists(uiComponent)) {
65                 PassThruAttributeRenderer
66                         .renderAttributes(facesContext, uiComponent, null);
67             }
68         }
69         Element JavaDoc panelStackTable = (Element JavaDoc) domContext.getRootNode();
70         DOMContext.removeChildren(panelStackTable);
71         panelStackTable.setAttribute(HTML.CLASS_ATTR,
72                                      ((PanelStack) uiComponent).getStyleClass());
73         String JavaDoc style = ((PanelStack) uiComponent).getStyle();
74         if(style != null && style.length() > 0)
75             panelStackTable.setAttribute(HTML.STYLE_ATTR, style);
76         else
77             panelStackTable.removeAttribute(HTML.STYLE_ATTR);
78         Element JavaDoc tr = domContext.createElement(HTML.TR_ELEM);
79         panelStackTable.appendChild(tr);
80         tr.setAttribute(HTML.CLASS_ATTR,
81                         ((PanelStack) uiComponent).getRowClass());
82         Element JavaDoc td = domContext.createElement(HTML.TD_ELEM);
83         tr.appendChild(td);
84         td.setAttribute(HTML.CLASS_ATTR,
85                         ((PanelStack) uiComponent).getColumnClass());
86         domContext.setCursorParent(td);
87         PanelStack panelStack = (PanelStack) uiComponent;
88         String JavaDoc selectedPanel = panelStack.getSelectedPanel();
89         UIComponent childToRender = null;
90
91         if (selectedPanel == null) {
92             // render the first child
93
if (panelStack.getChildCount() > 0) {
94                 childToRender = (UIComponent) panelStack.getChildren().get(0);
95             }
96         } else {
97             // render the selected child
98
//childToRender = panelStack.findComponent(selectedPanel);
99
childToRender = D2DViewHandler.findComponent(selectedPanel, panelStack);
100             if (childToRender == null) {
101                 // if not found, render the first child
102
if (panelStack.getChildCount() > 0) {
103                     childToRender =
104                             (UIComponent) panelStack.getChildren().get(0);
105                 }
106             }
107         }
108
109         if (childToRender != null) {
110             domContext.streamWrite(facesContext, uiComponent,
111                                    domContext.getRootNode(), td);
112             CustomComponentUtils.renderChild(facesContext, childToRender);
113         }
114
115         domContext.stepOver();
116         domContext.streamWrite(facesContext, uiComponent);
117         facesContext.getExternalContext().getRequestMap().put(PanelStack.LAST_SELECTED_PANEL + uiComponent.getClientId(facesContext), selectedPanel);
118     }
119
120
121 }
122
Popular Tags