package org.csstudio.sds.components.ui.internal.editparts; import org.csstudio.sds.components.model.BooleanSwitchModel; import org.csstudio.sds.components.ui.internal.figures.BoolSwitchFigure; import org.csstudio.sds.ui.editparts.AbstractWidgetEditPart; import org.csstudio.sds.ui.editparts.ExecutionMode; import org.csstudio.sds.ui.editparts.IWidgetPropertyChangeHandler; import org.eclipse.draw2d.IFigure; import org.eclipse.swt.graphics.Color; /** * * @author Kai Meyer (C1 WPS) * */ public class BooleanSwitchEditPart extends AbstractWidgetEditPart { /** * {@inheritDoc} */ @Override protected IFigure doCreateFigure() { final BooleanSwitchModel model = (BooleanSwitchModel) getWidgetModel(); BoolSwitchFigure figure = new BoolSwitchFigure(); figure.setEffect3D(model.get3dEffect()); figure.setBooleanValue(model.getValue()); figure.setOffColor(getModelColor(BooleanSwitchModel.PROP_OFF_COLOR)); figure.setOnColor(getModelColor(BooleanSwitchModel.PROP_ON_COLOR)); figure.setShowBooleanLabel(model.getShowLabels()); figure.setOnLabel(model.getOnLabel()); figure.setOffLabel(model.getOffLabel()); figure.addBoolControlListener(new IBoolControlListener() { @Override public void valueChanged(boolean newValue) { if (getExecutionMode() == ExecutionMode.RUN_MODE) { model.setValue(newValue); } } }); figure.setRunMode(getExecutionMode() == ExecutionMode.RUN_MODE); figure.setToggle(true); return figure; } /** * {@inheritDoc} */ @Override protected void registerPropertyChangeHandlers() { // value IWidgetPropertyChangeHandler valueHandler = new IWidgetPropertyChangeHandler() { @Override public boolean handleChange(final Object oldValue, final Object newValue, final IFigure refreshableFigure) { BoolSwitchFigure switchFigure = (BoolSwitchFigure) refreshableFigure; switchFigure.setBooleanValue((Boolean)newValue); return true; } }; setPropertyChangeHandler(BooleanSwitchModel.PROP_VALUE, valueHandler); // 3d effect IWidgetPropertyChangeHandler effectHandler = new IWidgetPropertyChangeHandler() { @Override public boolean handleChange(final Object oldValue, final Object newValue, final IFigure refreshableFigure) { BoolSwitchFigure switchFigure = (BoolSwitchFigure) refreshableFigure; switchFigure.setEffect3D((Boolean)newValue); return true; } }; setPropertyChangeHandler(BooleanSwitchModel.PROP_3D_EFFECT, effectHandler); // on color setPropertyChangeHandler(BooleanSwitchModel.PROP_ON_COLOR, new ColorChangeHandler<BoolSwitchFigure>(){ @Override protected void doHandle(BoolSwitchFigure figure, Color color) { figure.setOnColor(color); } }); // off color setPropertyChangeHandler(BooleanSwitchModel.PROP_OFF_COLOR, new ColorChangeHandler<BoolSwitchFigure>(){ @Override protected void doHandle(BoolSwitchFigure figure, Color color) { figure.setOffColor(color); } }); // on label IWidgetPropertyChangeHandler onLabelHandler = new IWidgetPropertyChangeHandler() { @Override public boolean handleChange(final Object oldValue, final Object newValue, final IFigure refreshableFigure) { BoolSwitchFigure switchFigure = (BoolSwitchFigure) refreshableFigure; switchFigure.setOnLabel((String) newValue); return true; } }; setPropertyChangeHandler(BooleanSwitchModel.PROP_ON_LABEL, onLabelHandler); // on label IWidgetPropertyChangeHandler offLabelHandler = new IWidgetPropertyChangeHandler() { @Override public boolean handleChange(final Object oldValue, final Object newValue, final IFigure refreshableFigure) { BoolSwitchFigure switchFigure = (BoolSwitchFigure) refreshableFigure; switchFigure.setOffLabel((String) newValue); return true; } }; setPropertyChangeHandler(BooleanSwitchModel.PROP_OFF_LABEL, offLabelHandler); // value IWidgetPropertyChangeHandler showLabelHandler = new IWidgetPropertyChangeHandler() { @Override public boolean handleChange(final Object oldValue, final Object newValue, final IFigure refreshableFigure) { BoolSwitchFigure switchFigure = (BoolSwitchFigure) refreshableFigure; switchFigure.setShowBooleanLabel((Boolean)newValue); return true; } }; setPropertyChangeHandler(BooleanSwitchModel.PROP_LABEL_VISIBLE, showLabelHandler); } }