package com.idega.facelets.ui;
import java.io.IOException;
import java.util.logging.Level;
import javax.faces.component.UIComponent;
import javax.faces.context.FacesContext;
import com.idega.presentation.IWBaseComponent;
/**
*
* This component simply renders other component that is specified.
*
*/
public class ClassRenderer extends IWBaseComponent {
private String renderedComponent;
private FacesContext facesContext;
private void addComponent(FacesContext context){
try {
if(renderedComponent == null){
return;
}
Class componentClass = Class.forName(renderedComponent);
UIComponent component = (UIComponent) componentClass.newInstance();
add(component);
} catch (Exception e) {
getLogger().log(Level.WARNING, "Failed creating component by class:" + renderedComponent, e);
// TODO Auto-generated catch block
e.printStackTrace();
}
}
@Override
public void encodeBegin(FacesContext context) throws IOException {
setFacesContext(context);
addComponent(context);
super.encodeBegin(context);
}
public String getRenderedComponent() {
if(renderedComponent != null){
return renderedComponent;
}
renderedComponent = getExpressionValue(getFacesContext(),"renderedComponent");
return renderedComponent;
}
public void setRenderedComponent(String renderedComponent) {
this.renderedComponent = renderedComponent;
}
@Override
public FacesContext getFacesContext() {
return facesContext;
}
public void setFacesContext(FacesContext facesContext) {
this.facesContext = facesContext;
}
}