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

com.googlecode.gwt.charts.client.ChartLoader Maven / Gradle / Ivy

/*
 * Copyright 2012 Rui Afonso
 * 
 * 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 com.googlecode.gwt.charts.client;

import com.google.gwt.core.client.JsArrayString;
import com.google.gwt.i18n.client.LocaleInfo;

import com.googlecode.gwt.charts.client.ajaxloader.AjaxLoader;
import com.googlecode.gwt.charts.client.ajaxloader.AjaxLoader.AjaxLoaderOptions;

/**
 * Utility class for loading the Chart Tools API using the Google Ajax Loader.
 */
public class ChartLoader {
	private static final String API_NAME = "visualization";
	private static final String API_VERSION = "1.0";

	private ChartPackage[] packages;
	private String language;
	private String version;

	/**
	 * Creates a chart loader with the specified packages.
	 * 
	 * @param packages a list of ChartPackage's
	 */
	public ChartLoader(ChartPackage... packages) {
		setPackages(packages);
		setLanguage(LocaleInfo.getCurrentLocale().getLocaleName());
		setVersion(API_VERSION);
	}

	/**
	 * Returns the current language
	 * 
	 * @return the language
	 */
	public String getLanguage() {
		return language;
	}

	/**
	 * Returns the current packages
	 * 
	 * @return the packages
	 */
	public ChartPackage[] getPackages() {
		return packages;
	}

	/**
	 * Returns the current version
	 * 
	 * @return the version
	 */
	public String getVersion() {
		return version;
	}

	/**
	 * Loads requested API libraries and calls an handler after finished.
	 * 
	 * @param callback the handler to be called
	 */
	public void loadApi(Runnable callback) {
		AjaxLoaderOptions options = AjaxLoaderOptions.newInstance();
		JsArrayString packagesArray = JsArrayString.createArray().cast();
		for (int i = 0; i < packages.length; i++) {
			packagesArray.push(packages[i].getName());
		}
		options.setPackages(packagesArray);
		if (language != null) {
			options.setLanguage(language);
		}
		AjaxLoader.loadApi(API_NAME, version, callback, options);
	}

	/**
	 * Sets the display language for the charts.
	 * Must be set before {@link #loadApi(Runnable)} is called.
	 * 
	 * @param language the language to set
	 */
	public void setLanguage(String language) {
		this.language = language;
	}

	/**
	 * Sets the packages for loading
	 * Must be set before {@link #loadApi(Runnable)} is called.
	 * 
	 * @param packages the packages to load
	 */
	public void setPackages(ChartPackage... packages) {
		this.packages = packages;
	}

	/**
	 * Sets the api version for loading
	 * Must be set before {@link #loadApi(Runnable)} is called.
	 * 
	 * @param version the version to use
	 */
	public void setVersion(String version) {
		this.version = version;
	}

}




© 2015 - 2025 Weber Informatics LLC | Privacy Policy