Package org.bndtools.utils.jface

Source Code of org.bndtools.utils.jface.ImageCachingLabelProvider

package org.bndtools.utils.jface;

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

import org.eclipse.jface.resource.ImageDescriptor;
import org.eclipse.jface.viewers.StyledCellLabelProvider;
import org.eclipse.swt.graphics.Image;
import org.eclipse.ui.plugin.AbstractUIPlugin;

public class ImageCachingLabelProvider extends StyledCellLabelProvider {

    private final Map<String,Image> cache = new HashMap<String,Image>();
    private final String pluginId;
   
    public ImageCachingLabelProvider(String pluginId) {
        this.pluginId = pluginId;
    }

    protected synchronized Image getImage(String path, boolean returnMissingImageOnError) {
        Image image = cache.get(path);
        if (image != null)
            return image;

        ImageDescriptor descriptor = AbstractUIPlugin.imageDescriptorFromPlugin(pluginId, path);
        image = descriptor.createImage(returnMissingImageOnError);
        cache.put(path, image);

        return image;
    }

    @Override
    public void dispose() {
        super.dispose();

        synchronized (this) {
            for (Entry<String,Image> entry : cache.entrySet()) {
                Image image = entry.getValue();
                if (!image.isDisposed())
                    image.dispose();
            }
        }
    }
}
TOP

Related Classes of org.bndtools.utils.jface.ImageCachingLabelProvider

TOP
Copyright © 2018 www.massapi.com. All rights reserved.
All source code are property of their respective owners. Java is a trademark of Sun Microsystems, Inc and owned by ORACLE Inc. Contact coftware#gmail.com.