package org.csstudio.sds.components.ui.internal.editparts; import org.csstudio.sds.components.model.ThermometerModel; import org.csstudio.sds.components.ui.internal.figures.RefreshableThermoFigure; import org.csstudio.sds.ui.editparts.IWidgetPropertyChangeHandler; import org.eclipse.draw2d.IFigure; import org.eclipse.swt.graphics.Color; /** * EditPart controller for the Thermometer widget. The controller mediates between * {@link ThermometerModel} and {@link RefreshableThermoFigure}. * * @author Xihui Chen * */ public final class ThermometerEditPart extends AbstractMarkedWidgetEditPart { /** * {@inheritDoc} */ @Override protected IFigure doCreateFigure() { ThermometerModel model = (ThermometerModel) getWidgetModel(); RefreshableThermoFigure thermometer = new RefreshableThermoFigure(); initializeCommonFigureProperties(thermometer, model); thermometer.setFillColor(getModelColor(ThermometerModel.PROP_FILL_COLOR)); thermometer.setFahrenheit(model.isFahrenheit()); thermometer.setShowBulb(model.isShowBulb()); thermometer.setFillBackgroundColor(getModelColor(ThermometerModel.PROP_FILLBACKGROUND_COLOR)); thermometer.setEffect3D(model.isEffect3D()); return thermometer; } /** * {@inheritDoc} */ @Override protected void registerPropertyChangeHandlers() { registerCommonPropertyChangeHandlers(); //fillColor setPropertyChangeHandler(ThermometerModel.PROP_FILL_COLOR, new ColorChangeHandler<RefreshableThermoFigure>(){ @Override protected void doHandle(RefreshableThermoFigure figure, Color color) { figure.setFillColor(color); } }); //fillBackgroundColor setPropertyChangeHandler(ThermometerModel.PROP_FILLBACKGROUND_COLOR, new ColorChangeHandler<RefreshableThermoFigure>(){ @Override protected void doHandle(RefreshableThermoFigure figure, Color color) { figure.setFillBackgroundColor(color); } }); //show bulb IWidgetPropertyChangeHandler showBulbHandler = new IWidgetPropertyChangeHandler() { @Override public boolean handleChange(final Object oldValue, final Object newValue, final IFigure refreshableFigure) { RefreshableThermoFigure thermometer = (RefreshableThermoFigure) refreshableFigure; thermometer.setShowBulb((Boolean) newValue); return true; } }; setPropertyChangeHandler(ThermometerModel.PROP_SHOW_BULB, showBulbHandler); //fahrenheit IWidgetPropertyChangeHandler fahrenheitHandler = new IWidgetPropertyChangeHandler() { @Override public boolean handleChange(final Object oldValue, final Object newValue, final IFigure refreshableFigure) { RefreshableThermoFigure thermometer = (RefreshableThermoFigure) refreshableFigure; thermometer.setFahrenheit((Boolean) newValue); return true; } }; setPropertyChangeHandler(ThermometerModel.PROP_FAHRENHEIT, fahrenheitHandler); //effect 3D IWidgetPropertyChangeHandler effect3DHandler = new IWidgetPropertyChangeHandler() { @Override public boolean handleChange(final Object oldValue, final Object newValue, final IFigure refreshableFigure) { RefreshableThermoFigure thermo = (RefreshableThermoFigure) refreshableFigure; thermo.setEffect3D((Boolean) newValue); return true; } }; setPropertyChangeHandler(ThermometerModel.PROP_EFFECT3D, effect3DHandler); } }