package org.csstudio.sds.components.ui.internal.editparts;
import org.csstudio.sds.components.model.XMeterModel;
import org.csstudio.sds.components.ui.internal.figures.RefreshableXMeterFigure;
import org.csstudio.sds.ui.editparts.IWidgetPropertyChangeHandler;
import org.eclipse.draw2d.IFigure;
import org.eclipse.swt.graphics.Color;
/**
* EditPart controller for the Gauge widget. The controller mediates between
* {@link XMeterModel} and {@link RefreshableXMeterFigure}.
*
* @author Xihui Chen
*
*/
public final class XMeterEditPart extends AbstractMarkedWidgetEditPart {
/**
* {@inheritDoc}
*/
@Override
protected IFigure doCreateFigure() {
final XMeterModel model = (XMeterModel) getWidgetModel();
RefreshableXMeterFigure xMeter = new RefreshableXMeterFigure();
initializeCommonFigureProperties(xMeter, model);
xMeter.setNeedleColor(getModelColor(XMeterModel.PROP_NEEDLE_COLOR));
xMeter.setGradient(model.isRampGradient());
return xMeter;
}
/**
* {@inheritDoc}
*/
@Override
protected void registerPropertyChangeHandlers() {
registerCommonPropertyChangeHandlers();
//needle Color
setPropertyChangeHandler(XMeterModel.PROP_NEEDLE_COLOR, new ColorChangeHandler<RefreshableXMeterFigure>(){
@Override
protected void doHandle(RefreshableXMeterFigure figure, Color color) {
figure.setNeedleColor(color);
}
});
//Ramp gradient
IWidgetPropertyChangeHandler gradientHandler = new IWidgetPropertyChangeHandler() {
@Override
public boolean handleChange(final Object oldValue,
final Object newValue,
final IFigure refreshableFigure) {
RefreshableXMeterFigure xMeter = (RefreshableXMeterFigure) refreshableFigure;
xMeter.setGradient((Boolean) newValue);
return true;
}
};
setPropertyChangeHandler(XMeterModel.PROP_RAMP_GRADIENT, gradientHandler);
}
}