package com.liferay.ide.velocity.vaulttec.ui;
import java.net.MalformedURLException;
import java.net.URL;
import org.eclipse.jface.action.IAction;
import org.eclipse.jface.resource.ImageDescriptor;
import org.eclipse.jface.resource.ImageRegistry;
import org.eclipse.swt.graphics.Image;
import org.eclipse.swt.widgets.Display;
/**
* Bundle of images used by Velocity plugin.
*/
public class VelocityPluginImages
{
private static URL fgIconBaseURL = null;
// Determine display depth. If depth > 4 then we use high color images.
// Otherwise low color images are used
static
{
// Don't consider the default display since accessing it throws an
// SWTException anyway.
Display display = Display.getCurrent();
String pathSuffix;
if ((display != null) && (display.getIconDepth() > 4))
{
pathSuffix = "icons/full/";
} else
{
pathSuffix = "icons/basic/";
}
try
{
fgIconBaseURL = new URL(VelocityPlugin.getInstallURL(), pathSuffix);
}
catch (MalformedURLException e)
{
VelocityPlugin.log(e);
}
}
// The plugin's image registry
private static final ImageRegistry IMAGE_REGISTRY = VelocityPlugin.getDefault().getImageRegistry();
// Set of predefined Image Descriptors
private static final String T_OBJ = "obj16";
// private static final String T_CLCL = "clcl16";
// private static final String T_CTOOL = "ctool16";
// Define image names
public static final String IMG_OBJ_SYSTEM_DIRECTIVE = "system_directive_obj.gif";
public static final String IMG_OBJ_USER_DIRECTIVE = "user_directive_obj.gif";
public static final String IMG_OBJ_MACRO = "macro_obj.gif";
// Define image descriptors
public static final ImageDescriptor DESC_OBJ_SYSTEM_DIRECTIVE = createManaged(T_OBJ, IMG_OBJ_SYSTEM_DIRECTIVE);
public static final ImageDescriptor DESC_OBJ_USER_DIRECTIVE = createManaged(T_OBJ, IMG_OBJ_USER_DIRECTIVE);
public static final ImageDescriptor DESC_OBJ_MACRO = createManaged(T_OBJ, IMG_OBJ_MACRO);
/**
* Returns the image managed under the given key in this registry.
*
* @param aKey
* the image's key
* @return the image managed under the given key
*/
public static Image get(String aKey)
{
return IMAGE_REGISTRY.get(aKey);
}
/**
* Sets the three image descriptors for enabled, disabled, and hovered to an
* action. The actions are retrieved from the *tool16 folders.
*/
public static void setToolImageDescriptors(IAction anAction, String anIconName)
{
setImageDescriptors(anAction, "tool16", anIconName);
}
/**
* Sets the three image descriptors for enabled, disabled, and hovered to an
* action. The actions are retrieved from the *lcl16 folders.
*/
public static void setLocalImageDescriptors(IAction anAction, String anIconName)
{
setImageDescriptors(anAction, "lcl16", anIconName);
}
// ---- Helper methods to access icons on the file system -----------------
private static void setImageDescriptors(IAction anAction, String aType, String aRelPath)
{
try
{
ImageDescriptor id = ImageDescriptor.createFromURL(makeIconFileURL("d" + aType, aRelPath));
if (id != null)
{
anAction.setDisabledImageDescriptor(id);
}
}
catch (MalformedURLException e)
{
}
try
{
ImageDescriptor id = ImageDescriptor.createFromURL(makeIconFileURL("c" + aType, aRelPath));
if (id != null)
{
anAction.setHoverImageDescriptor(id);
}
}
catch (MalformedURLException e)
{
}
anAction.setImageDescriptor(create("e" + aType, aRelPath));
}
private static ImageDescriptor createManaged(String aPrefix, String aName)
{
ImageDescriptor result = create(aPrefix, aName);
IMAGE_REGISTRY.put(aName, result);
return result;
}
private static ImageDescriptor create(String aPrefix, String aName)
{
ImageDescriptor result;
try
{
result = ImageDescriptor.createFromURL(makeIconFileURL(aPrefix, aName));
}
catch (MalformedURLException e)
{
result = ImageDescriptor.getMissingImageDescriptor();
}
return result;
}
private static URL makeIconFileURL(String aPrefix, String aName) throws MalformedURLException
{
if (fgIconBaseURL == null) { throw new MalformedURLException(); }
StringBuffer buffer = new StringBuffer(aPrefix);
buffer.append('/');
buffer.append(aName);
return new URL(fgIconBaseURL, buffer.toString());
}
}