/**
* Aptana Studio
* Copyright (c) 2005-2011 by Appcelerator, Inc. All Rights Reserved.
* Licensed under the terms of the GNU Public License (GPL) v3 (with exceptions).
* Please see the license.html included with this distribution for details.
* Any modifications to this file must keep this entire header intact.
*/
package com.aptana.editor.php.internal.ui.preferences;
import java.io.IOException;
import java.net.URL;
import java.util.Map;
import org.eclipse.jface.viewers.LabelProvider;
import org.eclipse.swt.graphics.Image;
import org.eclipse.swt.widgets.Display;
import org.eclipse.ui.plugin.AbstractUIPlugin;
import com.aptana.core.logging.IdeLog;
import com.aptana.editor.php.PHPEditorPlugin;
import com.aptana.editor.php.epl.PHPEplPlugin;
import com.aptana.editor.php.internal.builder.IPHPLibrary;
import com.aptana.editor.php.internal.builder.PHPLibrary;
/**
* @author Pavel Petrochenko
*/
public final class LibraryLabelProvider extends LabelProvider
{
static Image uLibraryImage = AbstractUIPlugin.imageDescriptorFromPlugin(PHPEplPlugin.PLUGIN_ID,
"/icons/full/obj16/library_obj.gif").createImage(); //$NON-NLS-1$
private final Map<URL,Image> images;
public LibraryLabelProvider(Map<URL,Image> images)
{
this.images = images;
}
/**
* Returns an {@link Image}.<br>
* The returned library image can be grabbed from an icon attributes that was set on the library extension.
*/
public Image getImage(Object element)
{
if (element instanceof PHPLibrary)
{
PHPLibrary lib = (PHPLibrary) element;
URL icon = lib.getIcon();
if (icon != null)
{
Image toRet = images.get(icon);
if (toRet != null)
{
return toRet;
}
try
{
Image image = new Image(Display.getCurrent(), icon.openStream());
images.put(icon, image);
return image;
}
catch (IOException e)
{
IdeLog.logError(PHPEditorPlugin.getDefault(),
"PHP library label provider - error getting a library image", e); //$NON-NLS-1$
return null;
}
}
}
return uLibraryImage;
}
/*
* (non-Javadoc)
* @see org.eclipse.jface.viewers.BaseLabelProvider#dispose()
*/
@Override
public void dispose()
{
if (images != null)
{
for (Image image : images.values())
{
image.dispose();
}
}
}
public String getText(Object element)
{
IPHPLibrary lib = (IPHPLibrary) element;
String name = lib.getName();
return name;
}
}