package com.loomis.jsf.component.utils; import java.io.IOException; import java.util.ArrayList; import java.util.List; import java.util.Map; import javax.faces.context.FacesContext; import javax.faces.context.ResponseWriter; import com.loomis.jsf.servlet.ResourceServlet; public class LSRenderUtil { public static final String RENDER_UTIL_MAP_KEY = "LSRenderUtil"; private List addedJavascriptIncludes; private List addedCSSIncludes; private List addedJavascript; public static LSRenderUtil getCurrentInstance(FacesContext context) { Map requestMap = context.getExternalContext().getRequestMap(); Object utilObj = requestMap.get(RENDER_UTIL_MAP_KEY); LSRenderUtil util = null; if (!(utilObj instanceof LSRenderUtil)) { util = new LSRenderUtil(); requestMap.put(RENDER_UTIL_MAP_KEY, util); } else { util = (LSRenderUtil)utilObj; } return util; } public void writeJavascript(ResponseWriter writer, String javascript) throws IOException { if (!getAddedJavascript().contains(javascript)) { writer.startElement("script", null); writer.writeAttribute("type", "text/javascript", null); writer.writeText(javascript, null); writer.endElement("script"); } } public void writeJavascriptInclude(ResponseWriter writer, String jsLocation) throws IOException { if (!getAddedJavascriptIncludes().contains(jsLocation)) { writer.startElement("script", null); writer.writeAttribute("type", "text/javascript", null); writer.writeAttribute("src", ResourceServlet.generateResourceURL(jsLocation), null); writer.endElement("script"); } } public void writeJavascriptToLinkCSS(ResponseWriter writer, String cssLocation) throws IOException { if (!getAddedJavascriptIncludes().contains("/util.js")) { writeJavascriptInclude(writer, "/util.js"); } if (!getAddedCSSIncludes().contains(cssLocation)) { writer.startElement("script", null); writer.writeAttribute("type", "text/javascript", null); writer.writeText("addCSSLink('" + ResourceServlet.generateResourceURL(cssLocation) + "');", null); writer.endElement("script"); } } public List getAddedCSSIncludes() { if (addedCSSIncludes == null) addedCSSIncludes = new ArrayList(); return addedCSSIncludes; } public void setAddedCSSIncludes(List addedCSSIncludes) { this.addedCSSIncludes = addedCSSIncludes; } public List getAddedJavascript() { if (addedJavascript == null) addedJavascript = new ArrayList(); return addedJavascript; } public void setAddedJavascript(List addedJavascript) { this.addedJavascript = addedJavascript; } public List getAddedJavascriptIncludes() { if (addedJavascriptIncludes == null) addedJavascriptIncludes = new ArrayList(); return addedJavascriptIncludes; } public void setAddedJavascriptIncludes(List addedJavascriptIncludes) { this.addedJavascriptIncludes = addedJavascriptIncludes; } }