/*
* Created on 3.8.2004
*
* Copyright (C) 2004 Idega Software hf. All Rights Reserved.
*
* This software is the proprietary information of Idega hf.
* Use is subject to license terms.
*/
package com.idega.faces.renderkit;
import java.io.OutputStream;
import java.io.Writer;
import java.util.HashMap;
import java.util.Map;
import javax.faces.context.ResponseStream;
import javax.faces.context.ResponseWriter;
import javax.faces.render.RenderKit;
import javax.faces.render.Renderer;
import javax.faces.render.ResponseStateManager;
import org.apache.myfaces.renderkit.html.HtmlRenderKitImpl;
/**
* This is a simple base class for new RenderKits
* @author <a href="mailto:tryggvil@idega.com">tryggvil</a>
* @version 1.0
*/
public class BaseRenderKit extends RenderKit {
private static String DOT=".";
//This class delegates all method calls to the real implementation from MyFaces
private RenderKit backingRenderKit = new HtmlRenderKitImpl();
public BaseRenderKit(RenderKit kit){
this.backingRenderKit=kit;
}
private String key(String family,String rendererType){
return family+DOT+rendererType;
}
/**
* @param arg0
* @param arg1
* @param arg2
*/
public void addRenderer(String arg0, String arg1, Renderer arg2) {
//impl.addRenderer(arg0, arg1, arg2);
getRendererMap().put(key(arg0,arg1),arg2);
}
/**
* @param arg0
* @param arg1
* @param arg2
* @return
*/
public ResponseWriter createResponseWriter(Writer arg0, String arg1, String arg2) {
return this.backingRenderKit.createResponseWriter(arg0, arg1, arg2);
}
/* (non-Javadoc)
* @see java.lang.Object#equals(java.lang.Object)
*/
//public boolean equals(Object arg0) {
// return backingRenderKit.equals(arg0);
//}
/**
* @param arg0
* @param arg1
* @return
*/
public Renderer getRenderer(String family,String rendererType) {
//Try first to get the renderer from the backingRenderKit
Renderer renderer = this.backingRenderKit.getRenderer(family,rendererType);
if(renderer==null){
return (Renderer)getRendererMap().get(key(family,rendererType));
}
else{
return renderer;
}
}
/**
* @return
*/
public ResponseStateManager getResponseStateManager() {
return this.backingRenderKit.getResponseStateManager();
}
private Map renderers;
private Map getRendererMap(){
if(this.renderers==null){
this.renderers = new HashMap();
}
return this.renderers;
}
/* (non-Javadoc)
* @see javax.faces.render.RenderKit#createResponseStream(java.io.OutputStream)
*/
public ResponseStream createResponseStream(OutputStream out) {
return this.backingRenderKit.createResponseStream(out);
}
}