package org.csstudio.sds.components.ui.internal.editparts; import org.csstudio.sds.components.model.GaugeModel; import org.csstudio.sds.components.ui.internal.figures.RefreshableGaugeFigure; 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 GaugeModel} and {@link RefreshableGaugeFigure}. * * @author Xihui Chen * */ public final class GaugeEditPart extends AbstractMarkedWidgetEditPart { /** * {@inheritDoc} */ @Override protected IFigure doCreateFigure() { final GaugeModel model = (GaugeModel) getWidgetModel(); RefreshableGaugeFigure gauge = new RefreshableGaugeFigure(); initializeCommonFigureProperties(gauge, model); gauge.setNeedleColor(getModelColor(GaugeModel.PROP_NEEDLE_COLOR)); gauge.setEffect3D(model.isEffect3D()); gauge.setGradient(model.isRampGradient()); return gauge; } /** * {@inheritDoc} */ @Override protected void registerPropertyChangeHandlers() { registerCommonPropertyChangeHandlers(); //needle Color setPropertyChangeHandler(GaugeModel.PROP_NEEDLE_COLOR, new ColorChangeHandler<RefreshableGaugeFigure>(){ @Override protected void doHandle(RefreshableGaugeFigure figure, Color color) { figure.setNeedleColor(color); } }); //effect 3D IWidgetPropertyChangeHandler effect3DHandler = new IWidgetPropertyChangeHandler() { @Override public boolean handleChange(final Object oldValue, final Object newValue, final IFigure refreshableFigure) { RefreshableGaugeFigure gauge = (RefreshableGaugeFigure) refreshableFigure; gauge.setEffect3D((Boolean) newValue); return true; } }; setPropertyChangeHandler(GaugeModel.PROP_EFFECT3D, effect3DHandler); //Ramp gradient IWidgetPropertyChangeHandler gradientHandler = new IWidgetPropertyChangeHandler() { @Override public boolean handleChange(final Object oldValue, final Object newValue, final IFigure refreshableFigure) { RefreshableGaugeFigure gauge = (RefreshableGaugeFigure) refreshableFigure; gauge.setGradient((Boolean) newValue); return true; } }; setPropertyChangeHandler(GaugeModel.PROP_RAMP_GRADIENT, gradientHandler); } }