blob: db8b3452688744e88023cf8be20d3a8a306bbe59 [file] [log] [blame]
/*******************************************************************************
* Copyright (c) 2009 STMicroelectronics.
* All rights reserved. This program and the accompanying materials
* are made available under the terms of the Eclipse Public License v1.0
* which accompanies this distribution, and is available at
* http://www.eclipse.org/legal/epl-v10.html
*
* Contributors:
* Marzia Maugeri <marzia.maugeri@st.com> - initial API and implementation
*******************************************************************************/
package org.eclipse.linuxtools.dataviewers.abstractviewers;
import java.net.MalformedURLException;
import java.net.URL;
import java.util.HashMap;
import org.eclipse.jface.resource.ImageDescriptor;
import org.eclipse.jface.resource.ImageRegistry;
import org.eclipse.linuxtools.dataviewers.STDataViewersActivator;
import org.eclipse.ui.ISharedImages;
import org.eclipse.ui.PlatformUI;
/*
* This class handle the registration of all images used into org.eclipse.linuxtools.dataviewers
*/
public class STDataViewersImages {
private static ImageRegistry imageRegistry;
/**
* A table of all the <code>ImageDescriptor</code>s.
*/
private static HashMap<String, ImageDescriptor> imageDescriptors;
/* Declare Common paths */
private static URL ICON_BASE_URL = null;
static {
String pathSuffix = "icons/"; //$NON-NLS-1$
STDataViewersActivator activator = STDataViewersActivator.getDefault();
ICON_BASE_URL = activator.getBundle().getEntry(pathSuffix);
imageRegistry = activator.getImageRegistry();
if (imageRegistry == null) {
imageRegistry = new ImageRegistry(PlatformUI.getWorkbench().getDisplay());
}
}
public static final String IMG_EXPORT = "export.gif";
public static final String IMG_EDIT_PROPERTIES = "prop_edt.gif";
public static final String IMG_EXPANDALL = "expand_all.gif";
public static final String IMG_COLLAPSEALL = "collapse_all.gif";
public static final String IMG_SORT = "sort.gif";
/**
* Declare all images
*/
private static void declareImages() {
declareRegistryImage(IMG_EXPORT, "export.gif");
declareRegistryImage(IMG_EDIT_PROPERTIES, "prop_edt.gif");
declareRegistryImage(ISharedImages.IMG_OBJS_INFO_TSK, "info_obj.gif");
declareRegistryImage(ISharedImages.IMG_TOOL_FORWARD, "forward_nav.gif");
declareRegistryImage(ISharedImages.IMG_TOOL_BACK, "backward_nav.gif");
declareRegistryImage(IMG_EXPANDALL, "expand_all.gif");
declareRegistryImage(IMG_COLLAPSEALL, "collapse_all.gif");
declareRegistryImage(IMG_SORT, "sort.gif");
}
/**
* Declare an Image in the registry table.
*
* @param key
* The key to use when registering the image
* @param path
* The path where the image can be found. This path is relative to where this plugin class is found (i.e.
* typically the packages directory)
*/
private static void declareRegistryImage(String key, URL path) {
ImageDescriptor desc = ImageDescriptor.getMissingImageDescriptor();
desc = ImageDescriptor.createFromURL(path);
imageRegistry.put(key, desc);
imageDescriptors.put(key, desc);
}
/**
* Declare an Image in the registry table.
*
* @param key
* The key to use when registering the image
* @param path
* The path where the image can be found. This path is relative to where this plugin class is found (i.e.
* typically the packages directory)
*/
private static void declareRegistryImage(String key, String path) {
try {
URL url = makeIconFileURL(path);
declareRegistryImage(key, url);
} catch (MalformedURLException me) {
}
}
/**
* Initialize the image registry by declaring all of the required graphics. This involves creating JFace image
* descriptors describing how to create/find the image should it be needed. The image is not actually allocated
* until requested.
*
* Prefix conventions Wizard Banners WIZBAN_ Preference Banners PREF_BAN_ Property Page Banners PROPBAN_ Color
* toolbar CTOOL_ Enable toolbar ETOOL_ Disable toolbar DTOOL_ Local enabled toolbar ELCL_ Local Disable toolbar
* DLCL_ Object large OBJL_ Object small OBJS_ View VIEW_ Product images PROD_ Misc images MISC_
*
* Where are the images? The images (typically gifs) are found in the same location as this plugin class. This may
* mean the same package directory as the package holding this class. The images are declared using this.getClass()
* to ensure they are looked up via this plugin class.
*
* @return The newly initialized ImageRegistry.
*
* @see org.eclipse.jface.resource.ImageRegistry
*/
public static ImageRegistry initializeImageRegistry() {
imageDescriptors = new HashMap<>(30);
declareImages();
return imageRegistry;
}
/**
* Returns the <code>ImageDescriptor</code> identified by the given key, or <code>null</code> if it does not exist.
*
* @param key The name of the image looked.
* @return The ImageDescriptor if found, null otherwise.
*/
public static ImageDescriptor getImageDescriptor(String key) {
if (imageDescriptors == null) {
initializeImageRegistry();
}
return imageDescriptors.get(key);
}
private static URL makeIconFileURL(String iconPath) throws MalformedURLException {
if (ICON_BASE_URL == null) {
throw new MalformedURLException();
}
return new URL(ICON_BASE_URL, iconPath);
}
}