package org.marketcetera.photon.ui.databinding;
import org.eclipse.core.runtime.IStatus;
import org.eclipse.jface.fieldassist.FieldDecoration;
import org.eclipse.jface.fieldassist.FieldDecorationRegistry;
import org.eclipse.swt.graphics.Image;
import org.marketcetera.photon.commons.databinding.TypedConverter;
import org.marketcetera.photon.commons.ui.databinding.RequiredFieldSupport.RequiredStatus;
import org.marketcetera.util.misc.ClassVersion;
/**
* Converts a status to an appropriate image.
*
* @author <a href="mailto:will@marketcetera.com">Will Horn</a>
* @version $Id: StatusToImageConverter.java 16154 2012-07-14 16:34:05Z colin $
* @since 2.0.0
*/
@ClassVersion("$Id: StatusToImageConverter.java 16154 2012-07-14 16:34:05Z colin $")
public class StatusToImageConverter extends TypedConverter<IStatus, Image> {
/**
* Constructor.
*/
public StatusToImageConverter() {
super(IStatus.class, Image.class);
}
@Override
protected Image doConvert(IStatus fromObject) {
if (fromObject == null)
return null;
String fieldDecorationID = null;
switch (fromObject.getSeverity()) {
case IStatus.INFO:
fieldDecorationID = FieldDecorationRegistry.DEC_INFORMATION;
break;
case IStatus.WARNING:
fieldDecorationID = FieldDecorationRegistry.DEC_WARNING;
break;
case IStatus.ERROR:
if (fromObject instanceof RequiredStatus) {
fieldDecorationID = FieldDecorationRegistry.DEC_REQUIRED;
break;
}
case IStatus.CANCEL:
fieldDecorationID = FieldDecorationRegistry.DEC_ERROR;
break;
default:
/*
* No decoration needed.
*/
return null;
}
FieldDecoration fieldDecoration = FieldDecorationRegistry.getDefault()
.getFieldDecoration(fieldDecorationID);
return fieldDecoration == null ? null : fieldDecoration.getImage();
}
}