package net.certware.verification.checklist.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.ISharedImages;
import org.eclipse.ui.PlatformUI;
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 for checklist item count */
Image itemImage = null;
/** image for yes choice count */
Image yesResultImage = null;
/** image for no choice count */
Image noResultImage = null;
/** image for N/A choice count */
Image naResultImage = null;
/** image for unknown choice count */
Image unknownResultImage = null;
/**
* Constructor creates images.
*/
public LabelProvider() {
// platform images
itemImage = PlatformUI.getWorkbench().getSharedImages().getImage(ISharedImages.IMG_OBJS_INFO_TSK);
//noResultImage = PlatformUI.getWorkbench().getSharedImages().getImage(ISharedImages.IMG_OBJS_ERROR_TSK);
//naResultImage = PlatformUI.getWorkbench().getSharedImages().getImage(ISharedImages.IMG_OBJS_WARN_TSK);
// bundle images
ImageDescriptor id = Activator.getImageDescriptor("icons/obj16/result_yes.gif");
if ( id != null ) {
yesResultImage = id.createImage();
}
id = Activator.getImageDescriptor("icons/obj16/result_no.gif");
if ( id != null ) {
noResultImage = id.createImage();
}
id = Activator.getImageDescriptor("icons/obj16/result_na.gif");
if ( id != null ) {
naResultImage = id.createImage();
}
id = Activator.getImageDescriptor("icons/obj16/result_unknown.gif");
if ( id != null ) {
unknownResultImage = id.createImage();
}
}
/**
* Add a label provider listener. Not used.
* @param listener unused
*/
@Override
public void addListener(ILabelProviderListener listener) {
}
/**
* Dispose of image resources if necessary.
*/
@Override
public void dispose() {
if ( yesResultImage != null) {
yesResultImage.dispose();
}
if ( noResultImage != null ) {
noResultImage.dispose();
}
if ( naResultImage != null ) {
naResultImage.dispose();
}
if ( unknownResultImage != null ) {
unknownResultImage.dispose();
}
}
/**
* Whether the element has the label property.
* Not used.
* @return always returns false
*/
@Override
public boolean isLabelProperty(Object element, String property) {
return false;
}
/**
* Remove a label provider listener.
* Not used.
*/
@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;
}
/**
* Returns the image associated with the tree data element type.
* @param element tree data element
* @return one of the class images or null
*/
@Override
public Image getImage(Object element) {
if ( element instanceof TreeData ) {
TreeData td = (TreeData)element;
if ( td.getType() == TreeData.COUNT_TYPE_ITEM )
return itemImage;
if ( td.getType() == TreeData.COUNT_TYPE_NA_RESULT )
return naResultImage;
if ( td.getType() == TreeData.COUNT_TYPE_NO_RESULT )
return noResultImage;
if ( td.getType() == TreeData.COUNT_TYPE_YES_RESULT )
return yesResultImage;
if ( td.getType() == TreeData.COUNT_TYPE_UNKNOWN_RESULT )
return unknownResultImage;
}
return null;
}
/**
* Returns a text string based on the tree data element count.
* @param element tree data element
* @return tree data item description, or description with count if positive, or null if not tree data.
*/
@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;
}
}