package net.certware.argument.sfp.navigator;
import org.eclipse.jface.resource.ImageDescriptor;
import org.eclipse.jface.viewers.ILabelProvider;
import org.eclipse.jface.viewers.ILabelProviderListener;
import org.eclipse.swt.graphics.Image;
import org.eclipse.ui.navigator.IDescriptionProvider;
/**
* Label provider for navigator contribution.
* Provides summary data about the model resource.
* @author mrb
* @since 1.0
*/
public class LabelProvider implements ILabelProvider, IDescriptionProvider {
Image statementImage = null;
Image validImage = null;
Image invalidImage = null;
Image unknownImage = null;
/**
* Constructor creates the image references.
*/
public LabelProvider() {
statementImage = getImage("icons/obj16/statement.gif");
validImage = getImage("icons/obj16/valid.png");
invalidImage = getImage("icons/obj16/invalid.png");
unknownImage = getImage("icons/obj16/unknown.gif");
}
/**
* Fetch an image from the plugin given its path.
* @param path image path
* @return image or null
*/
private Image getImage(String path) {
ImageDescriptor id = null;
id = Activator.imageDescriptorFromPlugin(Activator.PLUGIN_ID, path);
if ( id != null )
return id.createImage();
return null;
}
@Override
public void addListener(ILabelProviderListener listener) {
}
@Override
public void dispose() {
if ( statementImage != null ) statementImage.dispose();
if ( validImage != null ) validImage.dispose();
if ( invalidImage != null ) invalidImage.dispose();
if ( unknownImage != null ) unknownImage.dispose();
}
@Override
public boolean isLabelProperty(Object element, String property) {
return false;
}
@Override
public void removeListener(ILabelProviderListener listener) {
}
@Override
public String getDescription(Object anElement) {
if ( anElement instanceof TreeData ) {
TreeData td = (TreeData)anElement;
return "Node count:" + ' ' + getText(td);
}
return null;
}
@Override
public Image getImage(Object element) {
if ( element instanceof TreeData ) {
TreeData td = (TreeData)element;
if ( td.getType() == TreeData.COUNT_TYPE_STATEMENT )
return statementImage;
if ( td.getType() == TreeData.COUNT_TYPE_VALID )
return validImage;
if ( td.getType() == TreeData.COUNT_TYPE_INVALID )
return invalidImage;
if ( td.getType() == TreeData.COUNT_TYPE_UNKNOWN )
return unknownImage;
}
return null;
}
@Override
public String getText(Object element) {
if ( element instanceof TreeData ) {
TreeData td = (TreeData)element;
if ( td.getCount() < 0 )
return td.getDescription();
return td.getDescription() + ' ' + td.getCount();
}
return null;
}
}