org.openmaji.implementation.tool.eclipse.images.ImageCache.java Source code

Java tutorial

Introduction

Here is the source code for org.openmaji.implementation.tool.eclipse.images.ImageCache.java

Source

/*
 * @(#)Images.java
 * Created on 30/05/2003
 * Copyright 2003 by EkoLiving Pty Ltd.  All Rights Reserved.
 *
 * This software is the proprietary information of EkoLiving Pty Ltd.
 * Use is subject to license terms.
 */

package org.openmaji.implementation.tool.eclipse.images;

import java.util.HashMap;
import java.util.Map;

import org.eclipse.jface.resource.ImageDescriptor;
import org.eclipse.swt.graphics.Device;
import org.eclipse.swt.graphics.Image;
import org.eclipse.swt.widgets.Display;

class ImageCache {
    private Device device;
    private Map imageMap = new HashMap();

    public ImageCache(Device device) {
        this.device = device;
    }

    public Device getDevice() {
        return device;
    }

    public Image getImage(Class location, String filename) {
        ImageDescriptor descriptor = ImageDescriptor.createFromFile(location, filename);
        Image image = (Image) imageMap.get(descriptor);
        if (image != null) {
            // The image has been previously loaded.
            //System.out.println("Hitting Cache Image: " + filename);
            return image;
        }

        image = descriptor.createImage(getDevice());
        //System.out.println("Creating Image: " + filename);
        imageMap.put(descriptor, image);
        return image;
    }
};

/**
 * <code>Images</code>.
 * <p>
 * @author Kin Wong
 */
public class Images {
    static public ImageDescriptor IMAGE_CONFIGURATION;
    static public ImageDescriptor IMAGE_WORKSHEET;
    static public ImageDescriptor IMAGE_WORKSHEET_HL;

    static public ImageDescriptor ICON_MAJI;
    static public ImageDescriptor ICON_LOGIN;
    static public ImageDescriptor ICON_LOGOUT;

    static public ImageDescriptor ICON_HYPERSPACE;
    static public ImageDescriptor ICON_MEEMSERVER;
    static public ImageDescriptor ICON_MEEMPATTERN;
    static public ImageDescriptor ICON_MEEM;

    static public ImageDescriptor ICON_LAYOUT;
    static public ImageDescriptor ICON_CATEGORY;
    static public ImageDescriptor ICON_WORKSHEET;

    static public ImageDescriptor ICON_DEFINITION;
    static public ImageDescriptor ICON_CONFIGURATION;
    static public ImageDescriptor ICON_PRESENTATION;
    static public ImageDescriptor ICON_FILTER_NONE;

    static public ImageDescriptor ICON_SUBSYSTEM;
    static public ImageDescriptor ICON_START;
    static public ImageDescriptor ICON_STOP;
    static public ImageDescriptor ICON_DELETE;

    static public ImageDescriptor ICON_MEEM_STATE_ABSENT;
    static public ImageDescriptor ICON_MEEM_STATE_DORMANT;
    static public ImageDescriptor ICON_MEEM_STATE_LOADED;
    static public ImageDescriptor ICON_MEEM_STATE_PENDING;
    static public ImageDescriptor ICON_MEEM_STATE_READY;

    static public ImageDescriptor ICON_RENAME;
    static public ImageDescriptor ICON_MEEM_DESTROY;
    static public ImageDescriptor ICON_MEEM_REMOVE;

    static public ImageDescriptor ICON_SORT_ASCENDING;
    static public ImageDescriptor ICON_SORT_DESCENDING;

    static public ImageDescriptor ICON_DETAILED_VIEW;
    static public ImageDescriptor ICON_ICONIC_VIEW;
    static public ImageDescriptor ICON_DEVICE_VIEW;

    static public ImageDescriptor ICON_COLLAPSE;
    static public ImageDescriptor ICON_COLLAPSE_ALL;
    static public ImageDescriptor ICON_EXPAND;
    static public ImageDescriptor ICON_EXPAND_ALL;

    static public ImageDescriptor ICON_ROUTER_STANDARD;
    static public ImageDescriptor ICON_ROUTER_MANHATTAN;

    static public ImageDescriptor ICON_SHOW_SYSTEM_WEDGES;
    static public ImageDescriptor ICON_HIDE_SYSTEM_WEDGES;

    static public ImageDescriptor ICON_VIEW_CONTENT_ONLY;
    static public ImageDescriptor ICON_VIEW_VERITICAL_ORIENTATION;
    static public ImageDescriptor ICON_VIEW_HORIZONTAL_ORIENTATION;

    static public ImageDescriptor ICON_DEPENDENCY_WEAK_SINGLE;
    static public ImageDescriptor ICON_DEPENDENCY_WEAK_MANY;

    static public ImageDescriptor ICON_HIDE_INFO;

    static public ImageDescriptor ICON_MEEM_UNAVAILABLE;

    static {
        IMAGE_CONFIGURATION = loadImage("configuration.bmp");
        IMAGE_WORKSHEET = loadImage("worksheet.bmp");
        IMAGE_WORKSHEET_HL = loadImage("worksheet_hl.bmp");

        ICON_MAJI = loadIcon("Maji_System-16.gif");
        ICON_LOGIN = loadIcon("login16.gif");
        ICON_LOGOUT = loadIcon("logout16.gif");

        ICON_HYPERSPACE = loadIcon("hyperspace16.gif");
        ICON_MEEMSERVER = loadIcon("meemserver16.gif");
        ICON_MEEMPATTERN = loadIcon("meempattern16.gif");
        ICON_MEEM = loadIcon("meem16.gif");

        ICON_LAYOUT = loadIcon("layout16.gif");

        ICON_MEEM_UNAVAILABLE = loadIcon("unavailable.gif");

        ICON_MEEM_STATE_ABSENT = loadIcon("state_absent16.gif");
        ICON_MEEM_STATE_DORMANT = loadIcon("state_dormant16.gif");
        ICON_MEEM_STATE_LOADED = loadIcon("state_loaded16.gif");
        ICON_MEEM_STATE_PENDING = loadIcon("state_pending16.gif");
        ICON_MEEM_STATE_READY = loadIcon("state_ready16.gif");

        ICON_CATEGORY = loadIcon("category16.gif");
        ICON_WORKSHEET = loadIcon("worksheet16.gif");

        ICON_RENAME = loadIcon("rename16.gif");
        ICON_MEEM_DESTROY = loadIcon("meem_destroy.gif");
        ICON_MEEM_REMOVE = loadIcon("meem_remove.gif");

        ICON_SORT_ASCENDING = loadIcon("sort_ascending.gif");
        ICON_SORT_DESCENDING = loadIcon("sort_descending.gif");

        ICON_DETAILED_VIEW = loadIcon("detailed_view.gif");
        ICON_ICONIC_VIEW = loadIcon("meem16.gif");
        ICON_DEVICE_VIEW = loadIcon("device_view.gif");

        ICON_COLLAPSE = loadIcon("collapse.gif");
        ICON_COLLAPSE_ALL = loadIcon("collapse_all.gif");
        ICON_EXPAND = loadIcon("expand.gif");
        ICON_EXPAND_ALL = loadIcon("expand_all.gif");

        ICON_ROUTER_STANDARD = loadIcon("router_standard.gif");
        ICON_ROUTER_MANHATTAN = loadIcon("router_manhattan.gif");

        ICON_SHOW_SYSTEM_WEDGES = loadIcon("system_wedges_show.gif");
        ICON_HIDE_SYSTEM_WEDGES = loadIcon("system_wedges_hide.gif");

        ICON_VIEW_CONTENT_ONLY = loadIcon("view_content.gif");
        ICON_VIEW_VERITICAL_ORIENTATION = loadIcon("view_vertical.gif");
        ICON_VIEW_HORIZONTAL_ORIENTATION = loadIcon("view_horizontal.gif");
        ICON_HIDE_INFO = loadIcon("hide_info.gif");

        ICON_DEPENDENCY_WEAK_SINGLE = loadIcon("dependency_weaksingle16.gif");
        ICON_DEPENDENCY_WEAK_MANY = loadIcon("dependency_weakmany16.gif");

        ICON_DEFINITION = loadIcon("definition16.gif");
        ICON_CONFIGURATION = loadIcon("configuration16.gif");
        ICON_PRESENTATION = loadIcon("presentation16.gif");
        ICON_FILTER_NONE = loadIcon("filter_none16.gif");

        ICON_SUBSYSTEM = loadIcon("subsystem16.gif");
        ICON_START = loadIcon("start16.gif");
        ICON_STOP = loadIcon("stop16.gif");
        ICON_DELETE = loadIcon("delete16.gif");
    }

    static private Map deviceToCacheMap = new HashMap(); // Map device to Cache

    static public Image getImage(Device device, Class location, String filename) {
        ImageCache cache = (ImageCache) deviceToCacheMap.get(device);
        if (cache == null) {
            // The image cache for the device doesn't exist yet
            cache = new ImageCache(device);
            deviceToCacheMap.put(device, cache);
        }
        return cache.getImage(location, filename);
    }

    static public Image getIcon(String filename) {
        return getImage(Display.getDefault(), Images.class, "icons/" + filename);
    }

    static public ImageDescriptor loadImage(String filename) {
        return ImageDescriptor.createFromFile(Images.class, filename);
    }

    static public ImageDescriptor loadIcon(String filename) {
        return loadImage("icons/" + filename);
    }
}