All pastes #93655 Raw Edit

Someone

public text v1 · immutable
#93655 ·published 2006-07-20 17:26 UTC
rendered paste body
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<String> addedJavascriptIncludes;
	private List<String> addedCSSIncludes;
	private List<String> addedJavascript;
	
	
	public static LSRenderUtil getCurrentInstance(FacesContext context) {
		Map<String, Object> 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<String> getAddedCSSIncludes() {
		if (addedCSSIncludes == null) addedCSSIncludes = new ArrayList<String>();
		
		return addedCSSIncludes;
	}

	public void setAddedCSSIncludes(List<String> addedCSSIncludes) {
		this.addedCSSIncludes = addedCSSIncludes;
	}

	public List<String> getAddedJavascript() {
		if (addedJavascript == null) addedJavascript = new ArrayList<String>();
		
		return addedJavascript;
	}

	public void setAddedJavascript(List<String> addedJavascript) {
		this.addedJavascript = addedJavascript;
	}

	public List<String> getAddedJavascriptIncludes() {
		if (addedJavascriptIncludes == null) addedJavascriptIncludes = new ArrayList<String>();
		
		return addedJavascriptIncludes;
	}

	public void setAddedJavascriptIncludes(List<String> addedJavascriptIncludes) {
		this.addedJavascriptIncludes = addedJavascriptIncludes;
	}
}