001: /**********************************************************************************
002: * $URL: https://source.sakaiproject.org/svn/jsf/tags/sakai_2-4-1/widgets/src/java/org/sakaiproject/jsf/renderer/ProgressBarRenderer.java $
003: * $Id: ProgressBarRenderer.java 9278 2006-05-10 23:29:21Z ray@media.berkeley.edu $
004: ***********************************************************************************
005: *
006: * Copyright (c) 2003, 2004 The Sakai Foundation.
007: *
008: * Licensed under the Educational Community License, Version 1.0 (the "License");
009: * you may not use this file except in compliance with the License.
010: * You may obtain a copy of the License at
011: *
012: * http://www.opensource.org/licenses/ecl1.php
013: *
014: * Unless required by applicable law or agreed to in writing, software
015: * distributed under the License is distributed on an "AS IS" BASIS,
016: * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
017: * See the License for the specific language governing permissions and
018: * limitations under the License.
019: *
020: **********************************************************************************/package org.sakaiproject.jsf.renderer;
021:
022: import java.io.IOException;
023: import java.util.Map;
024: import javax.faces.component.UIComponent;
025: import javax.faces.component.UIOutput;
026: import javax.faces.component.UIViewRoot;
027: import javax.faces.context.FacesContext;
028: import javax.faces.context.ResponseWriter;
029: import javax.faces.render.Renderer;
030: import org.sakaiproject.jsf.util.ConfigurationResource;
031:
032: /**
033: * <p>Description:<br />
034: * This class is the class that renders the <code>timerBar</code>
035: * custom tag.</p>
036: * <p>Copyright: Copyright (c) 2004</p>
037: * <p>Organization: Sakai Project</p>
038: * @author Ed Smiley
039: * @author (JavaScript) Brian Gosselin of http://scriptasylum.com
040: * @version $Id: ProgressBarRenderer.java 9278 2006-05-10 23:29:21Z ray@media.berkeley.edu $
041: */
042:
043: public class ProgressBarRenderer extends Renderer {
044: private static final String SCRIPT_PATH;
045: private static final String RESOURCE_PATH;
046:
047: // we have static resources for our script path
048: static {
049: ConfigurationResource cr = new ConfigurationResource();
050: SCRIPT_PATH = cr.get("timerBarScript");
051: RESOURCE_PATH = cr.get("resources");
052: }
053:
054: public boolean supportsComponentType(UIComponent component) {
055: return (component instanceof UIOutput);
056: }
057:
058: public void decode(FacesContext context, UIComponent component) {
059: }
060:
061: public void encodeChildren(FacesContext context,
062: UIComponent component) throws IOException {
063: ;
064: }
065:
066: /**
067: * <p>Faces render output method .</p>
068: * @param context <code>FacesContext</code> for the current request
069: * @param component <code>UIComponent</code> being rendered
070: *
071: * @throws IOException if an input/output error occurs
072: */
073: public void encodeEnd(FacesContext context, UIComponent component)
074: throws IOException {
075:
076: if (!component.isRendered()) {
077: return;
078: }
079:
080: ResponseWriter writer = context.getResponseWriter();
081:
082: String clientId = null;
083:
084: if (component.getId() != null
085: && !component.getId().startsWith(
086: UIViewRoot.UNIQUE_ID_PREFIX)) {
087: clientId = component.getClientId(context);
088: }
089:
090: if (clientId != null) {
091: writer.startElement("span", component);
092: writer.writeAttribute("id", clientId, "id");
093: }
094:
095: Map attrMap = component.getAttributes();
096:
097: writer.write("\n");
098: writer.write("\n<script language=\"javascript\">");
099: writer.write("\n// Timer Bar - Version 1.0");
100: writer
101: .write("\n// Based on Script by Brian Gosselin of http://scriptasylum.com");
102: writer
103: .write("\n var loadedcolor='blue' ; // PROGRESS BAR COLOR");
104: writer
105: .write("\n var unloadedcolor='white'; // COLOR OF UNLOADED AREA");
106: writer
107: .write("\n var bordercolor='white'; // COLOR OF THE BORDER");
108: writer
109: .write("\n var barheight = 45; // HEIGHT OF PROGRESS BAR IN PIXELS");
110: writer
111: .write("\n var barwidth = 300; // WIDTH OF THE BAR IN PIXELS");
112: writer.write("\n var waitTime = " + attrMap.get("wait")
113: + "; // NUMBER OF SECONDS FOR PROGRESSBAR");
114: writer
115: .write("\n var loaded = 0; // TENTHS OF A SECOND ELAPSED");
116: writer
117: .write("\n// THE FUNCTION BELOW CONTAINS THE ACTION(S) TAKEN ONCE BAR REACHES 100.");
118: writer.write("\n");
119: writer.write("\n var action = function()");
120: writer.write("\n {");
121: writer.write("\n }");
122: writer.write("\n</script>");
123: writer.write("\n<script language=\"javascript\" src=\"" + "/"
124: + RESOURCE_PATH + "/" + SCRIPT_PATH + "\"></script>");
125: writer.write("\n");
126:
127: if (clientId != null) {
128: writer.endElement("span");
129: }
130: }
131:
132: }
|