1 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 ; 39 40 import javax.faces.component.UIComponent; 41 import javax.faces.context.FacesContext; 42 import java.io.IOException ; 43 import java.util.Iterator ; 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 { 53 54 String style = (String ) uiComponent.getAttributes().get("style"); 57 String styleClass = 58 (String ) 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 rootSpan = createRootElement(domContext); 67 domContext.setRootNode(rootSpan); 68 setRootElementId(facesContext, rootSpan, uiComponent); 69 } 70 Element rootSpan = (Element ) domContext.getRootNode(); 71 DOMContext.removeChildren(rootSpan); 72 renderStyleAndStyleClass(style, styleClass, rootSpan); 73 } 74 Element rootSpan = (Element ) 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 { 85 validateParameters(facesContext, uiComponent, null); 86 DOMContext domContext = 87 DOMContext.getDOMContext(facesContext, uiComponent); 88 Iterator 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 domContext.stepOver(); 97 domContext.streamWrite(facesContext, uiComponent); 98 } 99 100 public void encodeEnd(FacesContext facesContext, UIComponent uiComponent) 101 throws IOException { 102 validateParameters(facesContext, uiComponent, null); 103 } 104 105 protected Element createRootElement(DOMContext domContext) { 106 return domContext.createElement(HTML.SPAN_ELEM); 107 } 108 109 protected void renderStyleAndStyleClass( 110 String style, String styleClass, Element 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 130 private boolean requiresRootElement(String style, String styleClass, 131 UIComponent uiComponent) { 132 return idNotNull(uiComponent) || style != null || styleClass != null; 133 } 134 135 } | Popular Tags |