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.style.sld;
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 descriptors for the plugin
028: */
029: public class Images implements ImageConstants {
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 = SLDPlugin.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(COLORBLIND_ICON);
082: create(CRT_ICON);
083: create(PHOTOCOPY_ICON);
084: create(PRINTER_ICON);
085: create(PROJECTOR_ICON);
086: create(LAPTOP_ICON);
087: }
088:
089: /**
090: * Cleanup image cache.
091: */
092: public void cleanUp() {
093: imageCache = null; // Display shutdown will clear imageCache
094: }
095:
096: public ImageDescriptor getImageDescriptor(String id) {
097: return getDescriptor(id);
098: }
099:
100: /**
101: * Returns the image associated with the given key, or <code>null</code> if none.
102: *
103: * @param id the key
104: * @return the image, or <code>null</code> if none
105: */
106: public Image get(String id) {
107: Image image = imageCache.get(id);
108: if (image != null)
109: return image;
110:
111: create(id);
112: return imageCache.get(id);
113: }
114:
115: }
|