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