com.nextep.designer.ui.factories.ImageFactory.java Source code

Java tutorial

Introduction

Here is the source code for com.nextep.designer.ui.factories.ImageFactory.java

Source

/*******************************************************************************
 * Copyright (c) 2011 neXtep Software and contributors.
 * All rights reserved.
 *
 * This file is part of neXtep designer.
 *
 * NeXtep designer is free software: you can redistribute it 
 * and/or modify it under the terms of the GNU General Public 
 * License as published by the Free Software Foundation, either 
 * version 3 of the License, or any later version.
 *
 * NeXtep designer is distributed in the hope that it will be 
 * useful, but WITHOUT ANY WARRANTY; without even the implied
 * warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  
 * See the GNU General Public License for more details.
 *
 * You should have received a copy of the GNU General Public License
 * along with Foobar.  If not, see <http://www.gnu.org/licenses/>.
 *
 * Contributors:
 *     neXtep Softwares - initial API and implementation
 *******************************************************************************/
package com.nextep.designer.ui.factories;

import java.util.HashMap;
import java.util.Map;
import org.apache.commons.logging.Log;
import org.apache.commons.logging.LogFactory;
import org.eclipse.jface.resource.ImageDescriptor;
import org.eclipse.swt.graphics.Image;
import org.eclipse.ui.plugin.AbstractUIPlugin;
import com.nextep.designer.core.model.IResourceLocator;
import com.nextep.designer.ui.CoreUiPlugin;

/**
 * This class provides all images / icon needed by the nextep designer application.
 * 
 * @author Christophe Fondacci
 */
public class ImageFactory {

    private static final Log log = LogFactory.getLog(ImageFactory.class);
    public static final int IMAGE_WIDTH = 26;
    public static final int IMAGE_HEIGHT = 26;

    public static final Image ICON_BLANK = getImageDescriptor("/resource/blank.ico").createImage();
    public static final Image ICON_DELETE = getImageDescriptor("/resource/delete.png").createImage();
    public static final Image ICON_CONSOLE = getImageDescriptor("/resource/ConsoleIcon.bmp").createImage();
    public static Image ICON_LOCK = getImageDescriptor("/resource/lock.ico").createImage();
    public static final Image ICON_LOCK_TINY = getImageDescriptor("/resource/LockTiny.ico").createImage();
    public static Image ICON_USER_LOCK = getImageDescriptor("/resource/userLock.ico").createImage();
    public static final Image ICON_USER_LOCK_TINY = getImageDescriptor("/resource/userLockTiny.ico").createImage();
    public static final Image ICON_SYNCH_TINY = getImageDescriptor("/resource/SynchTiny.ico").createImage();
    public static final Image ICON_SYNCH = getImageDescriptor("/resource/SynchSmall.ico").createImage();
    public static final Image ICON_UNSYNCH_TINY = getImageDescriptor("/resource/UnsynchTiny.ico").createImage();
    public static final Image ICON_UNSYNCH = getImageDescriptor("/resource/UnsynchSmall.ico").createImage();
    public static final Image ICON_UP = getImageDescriptor("/resource/UpSmall.ico").createImage();
    public static final Image ICON_UP_TINY = getImageDescriptor("/resource/up.png").createImage();
    public static final Image ICON_DOWN = getImageDescriptor("/resource/DownSmall.ico").createImage();
    public static final Image ICON_DOWN_TINY = getImageDescriptor("/resource/down.png").createImage();
    public static final Image ICON_RIGHT = getImageDescriptor("/resource/RightSmall.ico").createImage();
    public static final Image ICON_RIGHT_TINY = getImageDescriptor("/resource/RightTiny.ico").createImage();
    public static final Image ICON_LEFT = getImageDescriptor("/resource/LeftSmall.ico").createImage();
    public static final Image ICON_LEFT_TINY = getImageDescriptor("/resource/LeftTiny.ico").createImage();
    public static final Image ICON_ERROR = getImageDescriptor("/resource/ErrorIconSmall.ico").createImage();
    public static final Image ICON_ATTRIBUTE = getImageDescriptor("/resource/AttribIconSmall.ico").createImage();
    public static final Image ICON_ATTRIBUTE_TINY = getImageDescriptor("/resource/AttribIconTiny.ico")
            .createImage();
    public static final Image ICON_EDIT_TINY = getImageDescriptor("/resource/EditIconTiny.ico").createImage();
    public static final String RESOURCE_ERROR = "/resource/ErrorTiny.ico"; //$NON-NLS-1$
    public static final Image ICON_ERROR_TINY = getImageDescriptor(RESOURCE_ERROR).createImage();
    public static final Image ICON_ADD_TINY = getImageDescriptor("/resource/plus.png").createImage();
    public static final Image ICON_DESIGNER_TINY = getImageDescriptor("/resource/DesignerIconTiny.ico")
            .createImage();
    public static final Image ICON_ERROR_DECO_TINY = getImageDescriptor("/resource/ErrorDecoratorTiny.ico")
            .createImage();
    public static final Image ICON_WARNING_DECO_TINY = getImageDescriptor("/resource/warning-decoration.png") //$NON-NLS-1$
            .createImage();

    public static final String RESOURCE_LOCK_LARGE = "/resource/lock-32.png"; //$NON-NLS-1$
    public static final Image LOCK_LARGE = getImageDescriptor(RESOURCE_LOCK_LARGE).createImage();

    private static Map<IResourceLocator, Image> imagesToDispose = new HashMap<IResourceLocator, Image>();

    public static void setSmall() {
        // ICON_VIEW = Activator.getImageDescriptor("/resource/ViewIconTiny.ico").createImage();
        // ICON_LOCK = Activator.getImageDescriptor("/resource/LockTiny.ico").createImage();
    }

    public static void dispose() {
        log.debug("Disposing core resources...");
        ICON_BLANK.dispose();
        ICON_DELETE.dispose();
        ICON_CONSOLE.dispose();
        ICON_LOCK.dispose();
        ICON_LOCK_TINY.dispose();
        ICON_USER_LOCK.dispose();
        ICON_USER_LOCK_TINY.dispose();
        ICON_SYNCH_TINY.dispose();
        ICON_SYNCH.dispose();
        ICON_UNSYNCH.dispose();
        ICON_UNSYNCH_TINY.dispose();

        ICON_UP.dispose();
        ICON_DOWN.dispose();
        ICON_UP_TINY.dispose();
        ICON_DOWN_TINY.dispose();
        ICON_RIGHT.dispose();
        ICON_LEFT.dispose();
        ICON_RIGHT_TINY.dispose();
        ICON_LEFT_TINY.dispose();

        ICON_ERROR.dispose();
        ICON_ATTRIBUTE.dispose();
        ICON_ATTRIBUTE_TINY.dispose();
        ICON_EDIT_TINY.dispose();

        ICON_ADD_TINY.dispose();
        ICON_DESIGNER_TINY.dispose();
        ICON_ERROR_TINY.dispose();
        ICON_ERROR_DECO_TINY.dispose();
        ICON_WARNING_DECO_TINY.dispose();
        LOCK_LARGE.dispose();

        for (Image img : imagesToDispose.values()) {
            if (img != null) {
                img.dispose();
            }
        }
    }

    /**
     * TODO: Images need to be located in a UI plugin
     * 
     * @param file file to get descriptor for
     * @return a {@link ImageDescriptor}
     */
    public static ImageDescriptor getImageDescriptor(String file) {
        return AbstractUIPlugin.imageDescriptorFromPlugin(CoreUiPlugin.PLUGIN_ID, file);
    }

    /**
     * TODO: Images need to be located in a UI plugin
     * 
     * @param file file to get descriptor for
     * @return a {@link ImageDescriptor}
     */
    public static ImageDescriptor getImageDescriptor(String plugin, String file) {
        return AbstractUIPlugin.imageDescriptorFromPlugin(plugin, file);
    }

    public static ImageDescriptor getImageDescriptor(IResourceLocator imageLocator) {
        if (imageLocator == null) {
            return null;
        } else {
            return AbstractUIPlugin.imageDescriptorFromPlugin(imageLocator.getPluginId(), imageLocator.getFile());
        }
    }

    public static Image getImage(IResourceLocator imageLocator) {
        Image img = imagesToDispose.get(imageLocator);
        if (img == null) {
            final ImageDescriptor descriptor = getImageDescriptor(imageLocator);
            if (descriptor != null) {
                img = descriptor.createImage();
            }
            imagesToDispose.put(imageLocator, img);
        }
        return img;
    }
}