/*************************************************************************
 * @author Ali Echihabi (ali_echihabi@ieee.org, ali.echihabi@souss.ca)
 *
 * Plugin for PHP unit Testing.
 * www.phpeclipse.de
 * 
 *************************************************************************/

package net.sourceforge.phpeclipse.phpunit;

import java.net.MalformedURLException;
import java.net.URL;

import org.eclipse.jface.resource.ImageDescriptor;
import org.eclipse.jface.resource.ImageRegistry;
import org.eclipse.swt.graphics.Image;


public class PHPUnitImages {

	protected static final String NAME_PREFIX =
		"net.sourceforge.phpeclipse.phpunit";
	protected static final int NAME_PREFIX_LENGTH = NAME_PREFIX.length();

	protected static URL iconBaseURL;

	static {
		String pathSuffix = "icons/";
		try {
			iconBaseURL =
				new URL(
					PHPUnitPlugin.getDefault().getDescriptor().getInstallURL(),
					pathSuffix);
		} catch (MalformedURLException e) {
			//PHPUnitPlugin.log(e);
			e.printStackTrace();
		}
	}

	protected static final ImageRegistry IMAGE_REGISTRY = new ImageRegistry();

	/*
	 * Available cached Images in the Java plugin image registry.
	 */

	public static final String IMG_SELECT_TEST_SUITE =
		NAME_PREFIX + "tsuite.gif";
	public static final String IMG_RUN_TEST_SUITE = NAME_PREFIX + "start.gif";
	public static final String IMG_TEST_ERROR = NAME_PREFIX + "testerr.gif";
	public static final String IMG_TEST_FAILURE = NAME_PREFIX + "testfail.gif";
	public static final String IMG_TEST_PASS = NAME_PREFIX + "testok.gif";
	public static final String IMG_TEST_SUITE_ERROR =
		NAME_PREFIX + "tsuiteerror.gif";
	public static final String IMG_TEST_SUITE_PASS =
		NAME_PREFIX + "tsuiteok.gif";
	public static final String IMG_TEST_SUITE_FAILURE =
		NAME_PREFIX + "tsuitefail.gif";

	public static final String IMG_ERROR = NAME_PREFIX + "error.gif";
	public static final String IMG_FAILURE = NAME_PREFIX + "failure.gif";

	public static final ImageDescriptor DESC_SELECT_TEST_SUITE =
		createManaged(IMG_SELECT_TEST_SUITE);
	public static final ImageDescriptor DESC_RUN_TEST_SUITE =
		createManaged(IMG_RUN_TEST_SUITE);
	public static final ImageDescriptor DESC_TEST_ERROR =
		createManaged(IMG_TEST_ERROR);
	public static final ImageDescriptor DESC_TEST_FAILURE =
		createManaged(IMG_TEST_FAILURE);
	public static final ImageDescriptor DESC_TEST_PASS =
		createManaged(IMG_TEST_PASS);
	public static final ImageDescriptor DESC_TEST_SUITE_ERROR =
		createManaged(IMG_TEST_SUITE_ERROR);
	public static final ImageDescriptor DESC_TEST_SUITE_PASS =
		createManaged(IMG_TEST_SUITE_PASS);
	public static final ImageDescriptor DESC_TEST_SUITE_FAILURE =
		createManaged(IMG_TEST_SUITE_FAILURE);

	public static final ImageDescriptor DESC_ERROR = createManaged(IMG_ERROR);
	public static final ImageDescriptor DESC_FAILURE =
		createManaged(IMG_FAILURE);
	/**
	 * Returns the image managed under the given key in this registry.
	 * 
	 * @param key the image's key
	 * @return the image managed under the given key
	 */
	public static Image get(String key) {
		return IMAGE_REGISTRY.get(key);
	}

	public static ImageRegistry getImageRegistry() {
		return IMAGE_REGISTRY;
	}


	protected static ImageDescriptor createManaged(String name) {
		try {
			ImageDescriptor result =
				ImageDescriptor.createFromURL(
					makeIconFileURL(name.substring(NAME_PREFIX_LENGTH)));
			IMAGE_REGISTRY.put(name, result);
			return result;
		} catch (MalformedURLException e) {
			return ImageDescriptor.getMissingImageDescriptor();
		}
	}

	protected static URL makeIconFileURL(String name)
		throws MalformedURLException {
		if (iconBaseURL == null)
			throw new MalformedURLException();

		return new URL(iconBaseURL, name);
	}
}