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

org.got5.tapestry5.jquery.components.Widget Maven / Gradle / Ivy

There is a newer version: 4.1.1
Show newest version
package org.got5.tapestry5.jquery.components;

import java.util.HashMap;

import org.apache.tapestry5.BindingConstants;
import org.apache.tapestry5.ComponentResources;
import org.apache.tapestry5.MarkupWriter;
import org.apache.tapestry5.annotations.AfterRender;
import org.apache.tapestry5.annotations.BeginRender;
import org.apache.tapestry5.annotations.Parameter;
import org.apache.tapestry5.annotations.SetupRender;
import org.apache.tapestry5.annotations.SupportsInformalParameters;
import org.apache.tapestry5.ioc.annotations.Inject;
import org.apache.tapestry5.ioc.annotations.Symbol;
import org.apache.tapestry5.json.JSONObject;
import org.apache.tapestry5.services.javascript.JavaScriptSupport;
import org.got5.tapestry5.jquery.JQuerySymbolConstants;

/**
 * @tapestrydoc
 */
@SupportsInformalParameters
public class Widget {

	/*
	 * The name of the JavaScriptStack (plugin) to import
	 * May be a list of stack names, separated by ','
	 */
	@Parameter(required=true, defaultPrefix=BindingConstants.LITERAL)
	private String name;

	/*
	 * JavaScript options to pass to the plugin during intialization.
	 * May be a JSONObject or a String when you only have one plugin to insert
	 * Or (if ou have several plugins -> thus several stack names), a HashMap optionsMap;
	
	@SetupRender
	public void addTheJSLibs(){
		stacks = name.split(",");			
		if(resources.isBound("options")){
			if(options!=""){
				Class optionsType = resources.getBoundType("options");
				if(HashMap.class.equals(optionsType)){
					optionsMap = (HashMap) options;
				}
				else if(JSONObject.class.equals(optionsType)){
					optionsMap = new HashMap();
					optionsMap.put(stacks[0], (JSONObject) options);
				}
				else if(String.class.equals(optionsType)){
					optionsMap = new HashMap();
					optionsMap.put(stacks[0], new JSONObject((String) options));
				}
			}
		}
		else optionsMap = new HashMap();
	}
	
	@BeginRender
    void startDiv(MarkupWriter writer)
    {
        writer.element("div", "id", clientId);
    }
	
	@AfterRender
	void afterRender(MarkupWriter writer) {
		resources.renderInformalParameters(writer);
		writer.end();
		for(String stack : stacks){
			javaScriptSupport.importStack(stack);
			JSONObject params = optionsMap.get(stack);
			if (params==null) params = new JSONObject();
			String init = String.format("%s('#%s').%s(%s);", jqueryAlias, clientId,stack,params);
			javaScriptSupport.addScript(init);
		}
	}
}




© 2015 - 2024 Weber Informatics LLC | Privacy Policy