All Downloads are FREE. Search and download functionalities are using the official Maven repository.

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