1 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 ; 43 44 import javax.faces.component.UIComponent; 45 import javax.faces.context.FacesContext; 46 import java.io.IOException ; 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 { 55 validateParameters(facesContext, uiComponent, PanelStack.class); 56 DOMContext domContext = 57 DOMContext.attachDOMContext(facesContext, uiComponent); 58 59 if (!domContext.isInitialized()) { 60 Element 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 panelStackTable = (Element ) domContext.getRootNode(); 70 DOMContext.removeChildren(panelStackTable); 71 panelStackTable.setAttribute(HTML.CLASS_ATTR, 72 ((PanelStack) uiComponent).getStyleClass()); 73 String 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 tr = domContext.createElement(HTML.TR_ELEM); 79 panelStackTable.appendChild(tr); 80 tr.setAttribute(HTML.CLASS_ATTR, 81 ((PanelStack) uiComponent).getRowClass()); 82 Element 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 selectedPanel = panelStack.getSelectedPanel(); 89 UIComponent childToRender = null; 90 91 if (selectedPanel == null) { 92 if (panelStack.getChildCount() > 0) { 94 childToRender = (UIComponent) panelStack.getChildren().get(0); 95 } 96 } else { 97 childToRender = D2DViewHandler.findComponent(selectedPanel, panelStack); 100 if (childToRender == null) { 101 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 |