1 33 34 package com.icesoft.faces.component.outputconnectionstatus; 35 36 import com.icesoft.faces.context.DOMContext; 37 import com.icesoft.faces.renderkit.dom_html_basic.DomBasicRenderer; 38 import com.icesoft.faces.renderkit.dom_html_basic.HTML; 39 import com.icesoft.faces.util.DOMUtils; 40 41 import org.w3c.dom.Element ; 42 import org.w3c.dom.Text ; 43 44 import javax.faces.component.UIComponent; 45 import javax.faces.context.FacesContext; 46 import java.io.IOException ; 47 48 public class OutputConnectionStatusRenderer extends DomBasicRenderer { 49 50 public void encodeBegin(FacesContext facesContext, UIComponent uiComponent) 51 throws IOException { 52 validateParameters(facesContext, uiComponent, null); 53 OutputConnectionStatus component = 54 ((OutputConnectionStatus) uiComponent); 55 DOMContext domContext = 56 DOMContext.attachDOMContext(facesContext, uiComponent); 57 if (!domContext.isInitialized()) { 58 Element root = domContext.createRootElement(HTML.DIV_ELEM); 59 domContext.setRootNode(root); 60 61 root.setAttribute(HTML.ID_ATTR, "connection-status"); 62 root.setAttribute(HTML.CLASS_ATTR, component.getStyleClass()); 63 String style = component.getStyle(); 64 if(style != null && style.length() > 0) 65 root.setAttribute(HTML.STYLE_ATTR, style); 66 else 67 root.removeAttribute(HTML.STYLE_ATTR); 68 69 root.appendChild(getNextNode(domContext, 70 component.getInactiveClass(), 71 component.getInactiveLabel(), 72 "connection-idle", true)); 73 root.appendChild(getNextNode(domContext, component.getActiveClass(), 74 component.getActiveLabel(), 75 "connection-working", false)); 76 root.appendChild(getNextNode(domContext, 77 component.getCautionClass(), 78 component.getCautionLabel(), 79 "connection-trouble", false)); 80 root.appendChild(getNextNode(domContext, 81 component.getDisconnectedClass(), 82 component.getDisconnectedLabel(), 83 "connection-lost", false)); 84 } 85 86 domContext.stepOver(); 87 domContext.streamWrite(facesContext, uiComponent); 88 } 89 90 public Element getNextNode(DOMContext domContext, String classString, 91 String label, String id, boolean visible) { 92 Element div = (Element ) domContext.createElement(HTML.DIV_ELEM); 93 div.setAttribute(HTML.ID_ATTR, id); 94 div.setAttribute(HTML.CLASS_ATTR, classString); 95 if (!visible) { 96 div.setAttribute(HTML.STYLE_ATTR, "visibility: hidden;"); 97 } 98 if (label != null) { 99 label = DOMUtils.escapeAnsi(label); 100 } 101 Text text = (Text ) domContext.createTextNode(label); 102 div.appendChild(text); 103 return div; 104 } 105 } 106 | Popular Tags |