/*******************************************************************************
* Copyright 2012 Geoscience Australia
*
* 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 au.gov.ga.earthsci.application;
import java.net.MalformedURLException;
import java.net.URL;
import java.util.Map;
import java.util.concurrent.ConcurrentHashMap;
import org.eclipse.jface.resource.ImageDescriptor;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
/**
* The plugin image registry.
* <p/>
* Provides convenient access to the reusable icon and image elements in the
* application.
*
* @author James Navin (james.navin@ga.gov.au)
*/
public class ImageRegistry extends org.eclipse.jface.resource.ImageRegistry
{
private final static ImageRegistry INSTANCE = new ImageRegistry();
private static final Logger logger = LoggerFactory.getLogger(ImageRegistry.class);
public static final String ICON_INFORMATION = "icon.information"; //$NON-NLS-1$
public static final String ICON_INFORMATION_WHITE = "icon.information.white"; //$NON-NLS-1$
public static final String ICON_LEGEND = "icon.legend"; //$NON-NLS-1$
public static final String ICON_LEGEND_WHITE = "icon.legend.white"; //$NON-NLS-1$
public static final String ICON_ERROR = "icon.error"; //$NON-NLS-1$
public static final String ICON_WARNING = "icon.warning"; //$NON-NLS-1$
public static final String ICON_REPOSITORY = "icon.repo"; //$NON-NLS-1$
public static final String ICON_FOLDER = "icon.folder"; //$NON-NLS-1$
public static final String ICON_LAYER = "icon.layer"; //$NON-NLS-1$
public static final String ICON_FILE = "icon.file"; //$NON-NLS-1$
public static final String ICON_ADD = "icon.add"; //$NON-NLS-1$
public static final String ICON_REMOVE = "icon.remove"; //$NON-NLS-1$
public static final String ICON_TRANSPARENT = "icon.transparent"; //$NON-NLS-1$
public static final String ICON_APPLY = "icon.apply"; //$NON-NLS-1$
public static final String ICON_EDIT = "icon.edit"; //$NON-NLS-1$
public static final String ICON_BOOKMARKS = "icon.bookmarks"; //$NON-NLS-1$
public static final String ICON_CONSOLE = "icon.console"; //$NON-NLS-1$
public static final String DECORATION_INCLUDED = "decoration.included"; //$NON-NLS-1$
private final Map<String, URL> urlMap = new ConcurrentHashMap<String, URL>();
public static ImageRegistry getInstance()
{
return INSTANCE;
}
private ImageRegistry()
{
putResource(ICON_INFORMATION, "/icons/information.gif"); //$NON-NLS-1$
putResource(ICON_INFORMATION_WHITE, "/icons/information_white.gif"); //$NON-NLS-1$
putResource(ICON_LEGEND, "/icons/legend.gif"); //$NON-NLS-1$
putResource(ICON_LEGEND_WHITE, "/icons/legend_white.gif"); //$NON-NLS-1$
putResource(ICON_ERROR, "/icons/error.gif"); //$NON-NLS-1$
putResource(ICON_WARNING, "/icons/warning.gif"); //$NON-NLS-1$
putResource(ICON_REPOSITORY, "/icons/repo.gif"); //$NON-NLS-1$
putResource(ICON_FOLDER, "/icons/folder.gif"); //$NON-NLS-1$
putResource(ICON_FILE, "/icons/file_obj.gif"); //$NON-NLS-1$
putResource(ICON_LAYER, "/icons/layer.png"); //$NON-NLS-1$
putResource(ICON_ADD, "/icons/add.gif"); //$NON-NLS-1$
putResource(ICON_REMOVE, "/icons/remove.gif"); //$NON-NLS-1$
putResource(ICON_APPLY, "/icons/apply.gif"); //$NON-NLS-1$
putResource(ICON_EDIT, "/icons/edit.gif"); //$NON-NLS-1$
putResource(ICON_TRANSPARENT, "/icons/transparent.gif"); //$NON-NLS-1$
putResource(ICON_BOOKMARKS, "/icons/bookmarks.gif"); //$NON-NLS-1$
putResource(ICON_CONSOLE, "/icons/console.gif"); //$NON-NLS-1$
putResource(DECORATION_INCLUDED, "/icons/included_dec.gif"); //$NON-NLS-1$
}
protected void putResource(String key, String resourceName)
{
try
{
URL url = new URL("platform:/plugin/" + Activator.getBundleName() + resourceName); //$NON-NLS-1$
put(key, ImageDescriptor.createFromURL(url));
urlMap.put(key, url);
}
catch (MalformedURLException e)
{
logger.error("Error adding image resource", e); //$NON-NLS-1$
}
}
/**
* Return the URL for the image resource with the given key, if one exists
*
* @param key
* The key for the image URL to load
*
* @return the URL for the image resource with the given key.
* <code>null</code> if no resource exists or no URL is available
* for the resource.
*/
public URL getURL(String key)
{
return urlMap.get(key);
}
}