package org.bndtools.core.resolve.ui;
import java.net.URI;
import org.bndtools.utils.resources.ResourceUtils;
import org.eclipse.jface.viewers.StyledCellLabelProvider;
import org.eclipse.jface.viewers.StyledString;
import org.eclipse.jface.viewers.ViewerCell;
import org.eclipse.swt.graphics.Image;
import org.eclipse.ui.plugin.AbstractUIPlugin;
import org.osgi.framework.Version;
import org.osgi.resource.Capability;
import org.osgi.resource.Resource;
import bndtools.Plugin;
public class ResourceLabelProvider extends StyledCellLabelProvider {
private final Image bundleImg = AbstractUIPlugin.imageDescriptorFromPlugin(Plugin.PLUGIN_ID, "icons/brick.png").createImage();
@Override
public void update(ViewerCell cell) {
Resource resource = (Resource) cell.getElement();
StyledString label = new StyledString();
try {
Capability identityCap = ResourceUtils.getIdentityCapability(resource);
String name = ResourceUtils.getIdentity(identityCap);
label.append(name);
Version version = ResourceUtils.getVersion(identityCap);
label.append(" " + version, StyledString.COUNTER_STYLER);
} catch (IllegalArgumentException e) {
label.append("<unknown>");
}
try {
URI uri = ResourceUtils.getURI(ResourceUtils.getContentCapability(resource));
label.append(" [" + uri + "]", StyledString.QUALIFIER_STYLER);
} catch (IllegalArgumentException e) {
// ignore
}
cell.setText(label.getString());
cell.setStyleRanges(label.getStyleRanges());
cell.setImage(bundleImg);
}
@Override
public void dispose() {
super.dispose();
bundleImg.dispose();
}
}