001: /*
002: * Version: MPL 1.1/GPL 2.0/LGPL 2.1
003: *
004: * "The contents of this file are subject to the Mozilla Public License
005: * Version 1.1 (the "License"); you may not use this file except in
006: * compliance with the License. You may obtain a copy of the License at
007: * http://www.mozilla.org/MPL/
008: *
009: * Software distributed under the License is distributed on an "AS IS"
010: * basis, WITHOUT WARRANTY OF ANY KIND, either express or implied. See the
011: * License for the specific language governing rights and limitations under
012: * the License.
013: *
014: * The Original Code is ICEfaces 1.5 open source software code, released
015: * November 5, 2006. The Initial Developer of the Original Code is ICEsoft
016: * Technologies Canada, Corp. Portions created by ICEsoft are Copyright (C)
017: * 2004-2006 ICEsoft Technologies Canada, Corp. All Rights Reserved.
018: *
019: * Contributor(s): _____________________.
020: *
021: * Alternatively, the contents of this file may be used under the terms of
022: * the GNU Lesser General Public License Version 2.1 or later (the "LGPL"
023: * License), in which case the provisions of the LGPL License are
024: * applicable instead of those above. If you wish to allow use of your
025: * version of this file only under the terms of the LGPL License and not to
026: * allow others to use your version of this file under the MPL, indicate
027: * your decision by deleting the provisions above and replace them with
028: * the notice and other provisions required by the LGPL License. If you do
029: * not delete the provisions above, a recipient may use your version of
030: * this file under either the MPL or the LGPL License."
031: *
032: */
033:
034: package com.icesoft.faces.component.outputconnectionstatus;
035:
036: import com.icesoft.faces.context.DOMContext;
037: import com.icesoft.faces.renderkit.dom_html_basic.DomBasicRenderer;
038: import com.icesoft.faces.renderkit.dom_html_basic.HTML;
039: import com.icesoft.faces.util.DOMUtils;
040:
041: import org.w3c.dom.Element;
042: import org.w3c.dom.Text;
043:
044: import javax.faces.component.UIComponent;
045: import javax.faces.context.FacesContext;
046: import java.io.IOException;
047:
048: public class OutputConnectionStatusRenderer extends DomBasicRenderer {
049:
050: public void encodeBegin(FacesContext facesContext,
051: UIComponent uiComponent) throws IOException {
052: validateParameters(facesContext, uiComponent, null);
053: OutputConnectionStatus component = ((OutputConnectionStatus) uiComponent);
054: DOMContext domContext = DOMContext.attachDOMContext(
055: facesContext, uiComponent);
056: if (!domContext.isInitialized()) {
057: Element root = domContext.createRootElement(HTML.DIV_ELEM);
058: domContext.setRootNode(root);
059:
060: root.setAttribute(HTML.ID_ATTR, "connection-status");
061: root.setAttribute(HTML.CLASS_ATTR, component
062: .getStyleClass());
063: String style = component.getStyle();
064: if (style != null && style.length() > 0)
065: root.setAttribute(HTML.STYLE_ATTR, style);
066: else
067: root.removeAttribute(HTML.STYLE_ATTR);
068:
069: root.appendChild(getNextNode(domContext, component
070: .getInactiveClass(), component.getInactiveLabel(),
071: "connection-idle", true));
072: root.appendChild(getNextNode(domContext, component
073: .getActiveClass(), component.getActiveLabel(),
074: "connection-working", false));
075: root.appendChild(getNextNode(domContext, component
076: .getCautionClass(), component.getCautionLabel(),
077: "connection-trouble", false));
078: root.appendChild(getNextNode(domContext, component
079: .getDisconnectedClass(), component
080: .getDisconnectedLabel(), "connection-lost", false));
081: }
082:
083: domContext.stepOver();
084: domContext.streamWrite(facesContext, uiComponent);
085: }
086:
087: public Element getNextNode(DOMContext domContext,
088: String classString, String label, String id, boolean visible) {
089: Element div = (Element) domContext.createElement(HTML.DIV_ELEM);
090: div.setAttribute(HTML.ID_ATTR, id);
091: div.setAttribute(HTML.CLASS_ATTR, classString);
092: if (!visible) {
093: div.setAttribute(HTML.STYLE_ATTR, "visibility: hidden;");
094: }
095: if (label != null) {
096: label = DOMUtils.escapeAnsi(label);
097: }
098: Text text = (Text) domContext.createTextNode(label);
099: div.appendChild(text);
100: return div;
101: }
102: }
|