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

org.primefaces.util.WidgetBuilder Maven / Gradle / Ivy

/*
 * Copyright 2009-2014 PrimeTek.
 *
 * Licensed under the Apache License, Version 2.0 (the "License");
 * you may not use this file except in compliance with the License.
 * You may obtain a copy of the License at
 *
 * http://www.apache.org/licenses/LICENSE-2.0
 *
 * Unless required by applicable law or agreed to in writing, software
 * distributed under the License is distributed on an "AS IS" BASIS,
 * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
 * See the License for the specific language governing permissions and
 * limitations under the License.
 */
package org.primefaces.util;

import java.io.IOException;

import javax.faces.context.FacesContext;

/**
 * Helper to generate javascript code of an ajax call
 */
public class WidgetBuilder {

    protected boolean endFunction = false;
    protected FacesContext context;
        
    public WidgetBuilder(FacesContext context) {
    	this.context = context;
    }
    
    /**
     *
     * @param widgetClass   Constructor name of the widget
     * @param widgetVar     Name of the client side widget
     * @param id            Client id of the component
     * @param endFunction   If the init script is wrapped by a method and if the endFunction parentheses should be rendered.
     * @throws IOException
     * @return              The current instance.
     */
    protected WidgetBuilder init(String widgetClass, String widgetVar, String id, boolean endFunction) throws IOException {
    	this.endFunction = endFunction;
    	
        context.getResponseWriter().write("PrimeFaces.cw(\"");
        context.getResponseWriter().write(widgetClass);
        context.getResponseWriter().write("\",\"");
        context.getResponseWriter().write(widgetVar);
        context.getResponseWriter().write("\",{");
        context.getResponseWriter().write("id:\"");
        context.getResponseWriter().write(id);
        context.getResponseWriter().write("\"");

        return this;
    }

    public WidgetBuilder init(String widgetClass, String widgetVar, String id) throws IOException {
    	this.renderScriptBlock(id);
    	this.init(widgetClass, widgetVar, id,  false);
        
        return this;
    }

    public WidgetBuilder initWithDomReady(String widgetClass, String widgetVar, String id) throws IOException {

    	this.renderScriptBlock(id);
    	context.getResponseWriter().write("$(function(){");
    	this.init(widgetClass, widgetVar, id, true);
        
        return this;
    }

    public WidgetBuilder initWithWindowLoad(String widgetClass, String widgetVar, String id) throws IOException {
    	
    	this.renderScriptBlock(id);
    	context.getResponseWriter().write("$(window).load(function(){");
    	this.init(widgetClass, widgetVar, id, true);
        
        return this;
    }

    public WidgetBuilder initWithComponentLoad(String widgetClass, String widgetVar, String id, String targetId) throws IOException {
    	
    	this.renderScriptBlock(id);
    	context.getResponseWriter().write("$(PrimeFaces.escapeClientId(\"" + targetId + "\")).load(function(){");
    	this.init(widgetClass, widgetVar, id, true);
        
        return this;
    }
    
    private void renderScriptBlock(String id) throws IOException {
        context.getResponseWriter().startElement("script", null);
        context.getResponseWriter().writeAttribute("id", id + "_s", null);
        context.getResponseWriter().writeAttribute("type", "text/javascript", null);
    }

    public WidgetBuilder attr(String name, String value) throws IOException {
        if (value != null) {
            context.getResponseWriter().write(",");
            context.getResponseWriter().write(name);
            context.getResponseWriter().write(":\"");
        	context.getResponseWriter().write(value);
            context.getResponseWriter().write("\"");
        }

        return this;
    }
    
    public WidgetBuilder nativeAttr(String name, String value) throws IOException {
        if (value != null) {
            context.getResponseWriter().write(",");
            context.getResponseWriter().write(name);
            context.getResponseWriter().write(":");
        	context.getResponseWriter().write(value);
        }
        
        return this;
    }
    
    public WidgetBuilder nativeAttr(String name, String value, String defaultValue) throws IOException {
        if(value != null && !value.equals(defaultValue)) {
            context.getResponseWriter().write(",");
            context.getResponseWriter().write(name);
            context.getResponseWriter().write(":");
            context.getResponseWriter().write(value);
        }
        
        return this;
    }

    public WidgetBuilder attr(String name, Boolean value) throws IOException {
        if (value != null) {
            context.getResponseWriter().write(",");
            context.getResponseWriter().write(name);
            context.getResponseWriter().write(":");
            context.getResponseWriter().write(Boolean.toString(value));
        }
        
        return this;
    }
    
    public WidgetBuilder attr(String name, Number value) throws IOException {
        if (value != null) {
            context.getResponseWriter().write(",");
            context.getResponseWriter().write(name);
            context.getResponseWriter().write(":");
        	context.getResponseWriter().write(value.toString());
        }
        
        return this;
    }
        
    public WidgetBuilder attr(String name, String value, String defaultValue) throws IOException {
        if(value != null && !value.equals(defaultValue)) {
            context.getResponseWriter().write(",");
	        context.getResponseWriter().write(name);
	        context.getResponseWriter().write(":\"");
	        context.getResponseWriter().write(value);
	        context.getResponseWriter().write("\"");
        }
        
        return this;
    }
    
    public WidgetBuilder attr(String name, double value, double defaultValue) throws IOException {
        if(value != defaultValue) {
            context.getResponseWriter().write(",");
	        context.getResponseWriter().write(name);
	        context.getResponseWriter().write(":");
	        context.getResponseWriter().write(Double.toString(value));
        }
        
        return this;
    }
    
    public WidgetBuilder attr(String name, int value, int defaultValue) throws IOException {
        if(value != defaultValue) {
            context.getResponseWriter().write(",");
	        context.getResponseWriter().write(name);
	        context.getResponseWriter().write(":");
	        context.getResponseWriter().write(Integer.toString(value));
        }
        
        return this;
    }
        
    public WidgetBuilder attr(String name, boolean value, boolean defaultValue) throws IOException {
        if(value != defaultValue) {
            context.getResponseWriter().write(",");
	        context.getResponseWriter().write(name);
	        context.getResponseWriter().write(":");
	        context.getResponseWriter().write(Boolean.toString(value));
        }
        
        return this;
    }
    
    public WidgetBuilder callback(String name, String signature, String callback) throws IOException {
        if(callback != null) {
            context.getResponseWriter().write(",");
	        context.getResponseWriter().write(name);
	        context.getResponseWriter().write(":");
	        context.getResponseWriter().write(signature);
	        context.getResponseWriter().write("{");
	        context.getResponseWriter().write(callback);
	        context.getResponseWriter().write("}");
        }
        
        return this;
    }
    
    public WidgetBuilder returnCallback(String name, String signature, String callback) throws IOException {
        if(callback != null) {
            context.getResponseWriter().write(",");
	        context.getResponseWriter().write(name);
	        context.getResponseWriter().write(":");
	        context.getResponseWriter().write(signature);
	        context.getResponseWriter().write("{return ");
	        context.getResponseWriter().write(callback);
	        context.getResponseWriter().write("}");
        }
        
        return this;
    }
    
    public WidgetBuilder callback(String name, String callback) throws IOException {
        if(callback != null) {
            context.getResponseWriter().write(",");
	        context.getResponseWriter().write(name);
	        context.getResponseWriter().write(":");
	        context.getResponseWriter().write(callback);
        }
        
        return this;
    }

    public WidgetBuilder append(String str) throws IOException {
    	context.getResponseWriter().write(str);
        
        return this;
    }

    public WidgetBuilder append(char chr) throws IOException {
    	context.getResponseWriter().write(chr);
        
        return this;
    }

    public WidgetBuilder append(Number number) throws IOException {
    	context.getResponseWriter().write(number.toString());
        
        return this;
    }
    
    public void finish() throws IOException {
        context.getResponseWriter().write("}");
        
        context.getResponseWriter().write(");");
        
        if(endFunction) {
            context.getResponseWriter().write("});");
        }
        
        context.getResponseWriter().endElement("script");
    }
}




© 2015 - 2024 Weber Informatics LLC | Privacy Policy