package bndtools.model.resolution; import java.util.Map.Entry; import org.bndtools.core.ui.resource.R5LabelFormatter; import org.bndtools.utils.jface.ImageCachingLabelProvider; import org.eclipse.jface.viewers.StyledString; import org.eclipse.jface.viewers.ViewerCell; import org.eclipse.swt.graphics.Image; import org.osgi.resource.Capability; import bndtools.Plugin; public class CapabilityLabelProvider extends ImageCachingLabelProvider { private final boolean shortenNamespaces; public CapabilityLabelProvider() { this(false); } public CapabilityLabelProvider(boolean shortenNamespaces) { super(Plugin.PLUGIN_ID); this.shortenNamespaces = shortenNamespaces; } @Override public void update(ViewerCell cell) { Capability cap = (Capability) cell.getElement(); StyledString label = new StyledString(); R5LabelFormatter.appendCapability(label, cap, shortenNamespaces); cell.setText(label.toString()); cell.setStyleRanges(label.getStyleRanges()); // Get the icon from the capability namespace Image icon = getImage(R5LabelFormatter.getNamespaceImagePath(cap.getNamespace()), true); if (icon != null) cell.setImage(icon); } @Override public String getToolTipText(Object element) { if (element instanceof Capability) { Capability cap = (Capability) element; StringBuilder buf = new StringBuilder(); buf.append(cap.getNamespace()); for (Entry<String,Object> attribute : cap.getAttributes().entrySet()) buf.append(";\n\t").append(attribute.getKey()).append(" = ").append(attribute.getValue()); for (Entry<String,String> directive : cap.getDirectives().entrySet()) buf.append(";\n\t").append(directive.getKey()).append(" := ").append(directive.getValue()); return buf.toString(); } return null; } }