package net.certware.measurement.spm.view;
import net.certware.measurement.smm.Annotation;
import net.certware.measurement.smm.Attribute;
import net.certware.measurement.spm.ProjectCommit;
import net.certware.measurement.spm.ProjectModel;
import org.eclipse.emf.common.util.EList;
import org.eclipse.jface.viewers.ILabelProvider;
import org.eclipse.jface.viewers.ILabelProviderListener;
import org.eclipse.swt.graphics.Image;
/**
* Label provider for view contribution.
* Provides summary data about the model resource.
* @author mrb
* @since 1.0
*/
public class LabelProvider implements ILabelProvider {
/**
* Constructor creates the image references.
*/
public LabelProvider() {
}
@Override
public void addListener(ILabelProviderListener listener) {
}
@Override
public void dispose() {
}
@Override
public boolean isLabelProperty(Object element, String property) {
/*
// changing the annotation in the model should update the label
// TODO not sure if this is the right string to test...
if ( property.equalsIgnoreCase( SmmPackage.Literals.ANNOTATION__TEXT.getName() )) {
return true;
return false
}
*/
return true;
}
@Override
public void removeListener(ILabelProviderListener listener) {
}
@Override
public Image getImage(Object element) {
if ( element instanceof ProjectCommit ) {
return Activator.getDefault().getImageRegistry().get(Activator.COMMIT_IMAGE);
}
if ( element instanceof ProjectModel ) {
return Activator.getDefault().getImageRegistry().get(Activator.FORM_IMAGE);
}
return null;
}
/**
* Gets the text composed of description and value.
* Always uses index zero of the measurement list.
* @param element expects an SPM model element.
* @return formatting string, or null
*/
@Override
public String getText(Object element) {
if ( element instanceof ProjectModel ) {
ProjectModel pm = (ProjectModel)element;
EList<Attribute> attributes = pm.getAttribute();
String versionAttribute = "";
for ( Attribute a : attributes ) {
if ( "version".equals( a.getTag() ))
versionAttribute = a.getValue();
}
// may fetch an annotation later...
return String.format("%s %s","SPM Project Model",versionAttribute);
}
if ( element instanceof ProjectCommit ) {
ProjectCommit pc = (ProjectCommit)element;
EList<Annotation> annotations = pc.getAnnotation();
String firstAnnotation = "N/A";
// get the first annotation as discriminator, if any
if ( annotations != null && annotations.size() > 0 ) {
firstAnnotation = annotations.get(0).getText();
}
return String.format("%s (%s)","Project commit",firstAnnotation);
}
return null;
}
}