msi.gama.lang.gaml.ui.decorators.GamlImageHelper.java Source code

Java tutorial

Introduction

Here is the source code for msi.gama.lang.gaml.ui.decorators.GamlImageHelper.java

Source

/*********************************************************************************************
 *
 * 'GamlImageHelper.java, in plugin ummisco.gama.ui.modeling, is part of the source code of the GAMA modeling and
 * simulation platform. (c) 2007-2016 UMI 209 UMMISCO IRD/UPMC & Partners
 *
 * Visit https://github.com/gama-platform/gama for license information and developers contact.
 * 
 *
 **********************************************************************************************/
package msi.gama.lang.gaml.ui.decorators;

import java.util.Map;

import org.eclipse.jface.resource.ImageDescriptor;
import org.eclipse.swt.graphics.Image;
import org.eclipse.ui.plugin.AbstractUIPlugin;
import org.eclipse.xtext.ui.IImageHelper;
import org.eclipse.xtext.ui.IImageHelper.IImageDescriptorHelper;

import com.google.common.collect.Maps;
import com.google.inject.Singleton;

import ummisco.gama.ui.resources.GamaIcons;

/**
 * The class GamlImageHelper.
 *
 * @author drogoul
 * @since 5 fvr. 2015
 *
 */
@Singleton
public class GamlImageHelper implements IImageHelper, IImageDescriptorHelper {

    private static final String path = "gaml";
    private final Map<ImageDescriptor, Image> registry = Maps.newHashMapWithExpectedSize(10);

    public boolean exist(final String name) {
        return AbstractUIPlugin.imageDescriptorFromPlugin(GamaIcons.PLUGIN_ID,
                GamaIcons.DEFAULT_PATH + name + ".png") != null;
    }

    /**
     * @see org.eclipse.xtext.ui.IImageHelper.IImageDescriptorHelper#getImageDescriptor(java.lang.String)
     */
    @Override
    public ImageDescriptor getImageDescriptor(final String name) {
        String s = name;
        if (s.endsWith(".png")) {
            s = s.replace(".png", "");
        }
        if (exist(path + "/" + s)) {
            return GamaIcons.create(path + "/" + s).descriptor();
        } else {
            return GamaIcons.create(path + "/_agent").descriptor();
        }

    }

    /**
     * @see org.eclipse.xtext.ui.IImageHelper.IImageDescriptorHelper#getImageDescriptor(org.eclipse.swt.graphics.Image)
     */
    @Override
    public ImageDescriptor getImageDescriptor(final Image image) {
        for (final Map.Entry<ImageDescriptor, Image> entry : registry.entrySet()) {
            if (entry.getValue().equals(image)) {
                return entry.getKey();
            }
        }
        final ImageDescriptor newDescriptor = ImageDescriptor.createFromImage(image);
        registry.put(newDescriptor, image);
        return newDescriptor;

    }

    /**
     * @see org.eclipse.xtext.ui.IImageHelper#getImage(java.lang.String)
     */
    @Override
    public Image getImage(final String name) {
        String s = name;
        if (s.endsWith(".png")) {
            s = s.replace(".png", "");
        }
        if (exist(path + "/" + s)) {
            return GamaIcons.create(path + "/" + s).image();
        } else {
            return GamaIcons.create(path + "/_agent").image();
        }
    }

    /**
     * @see org.eclipse.xtext.ui.IImageHelper#getImage(org.eclipse.jface.resource.ImageDescriptor)
     */
    @Override
    public Image getImage(final ImageDescriptor d) {
        ImageDescriptor descriptor = d;
        if (descriptor == null) {
            descriptor = ImageDescriptor.getMissingImageDescriptor();
        }

        Image result = registry.get(descriptor);
        if (result != null) {
            return result;
        }
        result = descriptor.createImage();
        if (result != null) {
            registry.put(descriptor, result);
        }
        return result;
    }

}