package bndtools.shared;
import org.bndtools.core.ui.icons.Icons;
import org.eclipse.jface.viewers.StyledCellLabelProvider;
import org.eclipse.jface.viewers.StyledString;
import org.eclipse.jface.viewers.ViewerCell;
import org.eclipse.swt.graphics.Device;
import org.eclipse.swt.graphics.Image;
public class URLLabelProvider extends StyledCellLabelProvider {
private final Image linkImg;
private final Image fileImg;
public URLLabelProvider(Device device) {
linkImg = Icons.desc("link").createImage(device);
fileImg = Icons.desc("file").createImage();
}
@Override
public void update(ViewerCell cell) {
Image img;
String text;
Object element = cell.getElement();
if (element instanceof OBRLink) {
StyledString label = ((OBRLink) element).getLabel();
cell.setStyleRanges(label.getStyleRanges());
text = label.getString();
} else {
text = (element == null ? "null" : element.toString());
}
if (text.startsWith("file:"))
img = fileImg;
else
img = linkImg;
cell.setText(text);
cell.setImage(img);
}
@Override
public void dispose() {
super.dispose();
linkImg.dispose();
fileImg.dispose();
}
}