package bndtools.editor.project;
import java.io.IOException;
import java.io.InputStream;
import java.net.URI;
import java.net.URISyntaxException;
import java.net.URL;
import java.util.HashMap;
import java.util.Map;
import org.eclipse.jface.viewers.LabelProvider;
import org.eclipse.swt.graphics.Image;
import org.eclipse.swt.widgets.Display;
public class OSGiFrameworkLabelProvider extends LabelProvider {
private final Map<URI,Image> images = new HashMap<URI,Image>();
@Override
public String getText(Object element) {
OSGiFramework fwk = (OSGiFramework) element;
return fwk.toString();
}
@Override
public Image getImage(Object element) {
OSGiFramework fwk = (OSGiFramework) element;
URL fwkIcon = fwk.getIcon();
URI fwkIconURI = null;
try {
fwkIconURI = fwkIcon.toURI();
} catch (URISyntaxException e1) {}
Image image = null;
if (fwkIconURI != null) {
image = images.get(fwkIconURI);
if (image == null) {
try (InputStream stream = fwkIcon.openStream()) {
image = new Image(Display.getCurrent(), stream);
} catch (IOException e) {}
if (image != null)
images.put(fwkIconURI, image);
}
}
return image;
}
@Override
public void dispose() {
for (Image image : images.values()) {
image.dispose();
}
super.dispose();
}
}