
org.geojsf.component.JsfRenderUtil Maven / Gradle / Ivy
package org.geojsf.component;
import java.io.IOException;
import java.util.Collection;
import java.util.List;
import javax.faces.component.UIComponent;
import javax.faces.component.behavior.AjaxBehavior;
import javax.faces.component.behavior.ClientBehavior;
import javax.faces.component.behavior.ClientBehaviorHolder;
import javax.faces.context.FacesContext;
import javax.faces.context.ResponseWriter;
import org.geojsf.component.Map;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
public class JsfRenderUtil {
final static Logger logger = LoggerFactory.getLogger(JsfRenderUtil.class);
private ResponseWriter writer;
private UIComponent component;
public JsfRenderUtil(ResponseWriter componentWriter, UIComponent caller){
this.writer = componentWriter;
this.component = caller;
}
public void renderLinebreaks( Integer amount)
{
for (int i=0; i> behaviors = comp.getClientBehaviors();
for (String key : behaviors.keySet())
{
List c = behaviors.get(key);
for (ClientBehavior cl : c)
{
logger.info("Detected " +cl.toString() +" added as ClientBehavior");
if (cl.getClass().getName().equals("javax.faces.component.behavior.AjaxBehavior"))
{
AjaxBehavior ajax = (AjaxBehavior) cl;
Collection renderList = ajax.getRender();
for (String str : renderList)
{
str = str.replaceAll(":", "");
updateOnClick.append(str +" ");
}
logger.info("Adding " +updateOnClick.toString() +" to " +key +" event.");
}
if (cl.getClass().getName().equals("org.primefaces.component.behavior.ajax.AjaxBehavior"))
{
org.primefaces.behavior.ajax.AjaxBehavior ajax = (org.primefaces.behavior.ajax.AjaxBehavior) cl;
updateOnClick.append(ajax.getUpdate().replaceAll(":", ""));
logger.info("Adding " +updateOnClick.toString() +" to " +key +" event.");
}
}
}
return updateOnClick.toString();
}
public static String encodeAjax(ClientBehaviorHolder comp, String eventName)
{
StringBuffer updateOnClick = new StringBuffer();
java.util.Map> behaviors = comp.getClientBehaviors();
for (String key : behaviors.keySet())
{
List c = behaviors.get(key);
for (ClientBehavior cl : c)
{
if (key.equals(eventName))
{
logger.info("Detected " +cl.toString() +" added as ClientBehavior");
if (cl.getClass().getName().equals("javax.faces.component.behavior.AjaxBehavior"))
{
AjaxBehavior ajax = (AjaxBehavior) cl;
if (null!=ajax.getRender())
{
Collection renderList = ajax.getRender();
for (String str : renderList)
{
str = str.replaceAll(":", "");
updateOnClick.append(str +" ");
}
logger.info("Adding " +updateOnClick.toString() +" to " +key +" event.");
}
}
if (cl.getClass().getName().equals("org.primefaces.behavior.ajax.AjaxBehavior"))
{
org.primefaces.behavior.ajax.AjaxBehavior ajax = (org.primefaces.behavior.ajax.AjaxBehavior) cl;
if (null!=ajax.getUpdate())
{
updateOnClick.append(ajax.getUpdate().replaceAll(":", ""));
logger.info("Adding " +updateOnClick.toString() +" to " +key +" event.");
}
}
}
}
}
return updateOnClick.toString();
}
public void renderMapInitialization(FacesContext context) throws IOException
{
renderLinebreaks(1);
Map map = (Map) component;
writer.startElement("script", map);
renderTextWithLB("// GeoJSF: Initializing OpenLayers map");
renderTextWithLB("GeoJSF.setAjaxUpdates('" +encodeAjax(map, "mapClick") +"', '" +encodeAjax(map, "mapMove") +"');");
renderTextWithLB("GeoJSF.initMap('" +map.getClientId() +"','" +map.getBaseMap() +"');");
renderLinebreaks(2);
renderTextWithLB("// GeoJSF: Adding layers");
renderTextWithLB("// GeoJSF: The last given layer will be taken as base layer:");
renderLinebreaks(1);
}
public void renderTextWithLB(String text)
{
try {
writer.writeText(text +System.getProperty("line.separator"), null);
} catch (IOException e) {
logger.info("Problem rendering " +text +" using JsfRenderUtil");
}
}
public void renderPlayerInitialization(ResponseWriter writer)
{
}
}
© 2015 - 2025 Weber Informatics LLC | Privacy Policy