001: /*
002: * uDig - User Friendly Desktop Internet GIS client
003: * http://udig.refractions.net
004: * (C) 2004, Refractions Research Inc.
005: *
006: * This library is free software; you can redistribute it and/or
007: * modify it under the terms of the GNU Lesser General Public
008: * License as published by the Free Software Foundation;
009: * version 2.1 of the License.
010: *
011: * This library is distributed in the hope that it will be useful,
012: * but WITHOUT ANY WARRANTY; without even the implied warranty of
013: * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
014: * Lesser General Public License for more details.
015: *
016: */
017: package net.refractions.udig.validation;
018:
019: import java.net.MalformedURLException;
020: import java.net.URL;
021:
022: import org.eclipse.jface.resource.ImageDescriptor;
023: import org.eclipse.jface.resource.ImageRegistry;
024: import org.eclipse.swt.graphics.Image;
025:
026: /**
027: * The image descrptors for the plugin
028: */
029: public class Images {
030:
031: /** Hashtable of ImageDescriptors */
032: private ImageRegistry imageCache;
033: private URL baseURL;
034:
035: /**
036: * Creates an image descriptor for later use.
037: */
038: synchronized ImageDescriptor create(String id) {
039: URL url = null;
040: try {
041: url = new URL(baseURL, id);
042: } catch (MalformedURLException e) {
043: return null;
044: }
045: ImageDescriptor image = ImageDescriptor.createFromURL(url);
046: imageCache.put(id, image);
047: return image;
048: }
049:
050: /**
051: * Returns the image descriptor for ID, or null if not found.
052: * <p>
053: * Images are from CatalogUIPlugin.getDefault().getImages()
054: * </p>
055: * @param id
056: * @return ImageDescriptor, or null if there is no such image.
057: */
058: public static ImageDescriptor getDescriptor(String id) {
059: Images images = ValidationPlugin.getDefault().getImages();
060: ImageDescriptor found = images.imageCache.getDescriptor(id);
061: if (found != null) {
062: return found;
063: }
064: return images.create(id);
065: }
066:
067: /**
068: * Initializes the table of images used in this plugin.
069: * <p>
070: * The Images from ISharedImages will be registered with
071: * CatalogUIPlugin.getDefault().getImageRegistry().
072: * @param url
073: * @param shared
074: */
075: public synchronized void initializeImages(URL url,
076: ImageRegistry shared) {
077: imageCache = shared;
078: baseURL = url;
079:
080: // objects
081: create(ImageConstants.IMAGE_WIZBAN);
082: }
083:
084: /**
085: * Cleanup image cache.
086: */
087: public void cleanUp() {
088: imageCache = null; // Display shutdown will clear imageCache
089: }
090:
091: public ImageDescriptor getImageDescriptor(String id) {
092: return getDescriptor(id);
093: }
094:
095: /**
096: * Returns the image associated with the given key, or <code>null</code> if none.
097: *
098: * @param id the key
099: * @return the image, or <code>null</code> if none
100: */
101: public Image get(String id) {
102: Image image = imageCache.get(id);
103: if (image != null)
104: return image;
105:
106: create(id);
107: return imageCache.get(id);
108: }
109:
110: }
|