/* * Copyright (c) 2008 Stiftung Deutsches Elektronen-Synchrotron, * Member of the Helmholtz Association, (DESY), HAMBURG, GERMANY. * * THIS SOFTWARE IS PROVIDED UNDER THIS LICENSE ON AN "../AS IS" BASIS. * WITHOUT WARRANTY OF ANY KIND, EXPRESSED OR IMPLIED, INCLUDING BUT NOT LIMITED * TO THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR PARTICULAR PURPOSE AND * NON-INFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE * FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, * TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR * THE USE OR OTHER DEALINGS IN THE SOFTWARE. SHOULD THE SOFTWARE PROVE DEFECTIVE * IN ANY RESPECT, THE USER ASSUMES THE COST OF ANY NECESSARY SERVICING, REPAIR OR * CORRECTION. THIS DISCLAIMER OF WARRANTY CONSTITUTES AN ESSENTIAL PART OF THIS LICENSE. * NO USE OF ANY SOFTWARE IS AUTHORIZED HEREUNDER EXCEPT UNDER THIS DISCLAIMER. * DESY HAS NO OBLIGATION TO PROVIDE MAINTENANCE, SUPPORT, UPDATES, ENHANCEMENTS, * OR MODIFICATIONS. * THE FULL LICENSE SPECIFYING FOR THE SOFTWARE THE REDISTRIBUTION, MODIFICATION, * USAGE AND OTHER RIGHTS AND OBLIGATIONS IS INCLUDED WITH THE DISTRIBUTION OF THIS * PROJECT IN THE FILE LICENSE.HTML. IF THE LICENSE IS NOT INCLUDED YOU MAY FIND A COPY * AT HTTP://WWW.DESY.DE/LEGAL/LICENSE.HTM */ package org.csstudio.sds.components.ui.internal.editparts; import org.csstudio.sds.components.model.AbstractChartModel; import org.csstudio.sds.components.model.BargraphModel; import org.csstudio.sds.components.model.WaveformModel; import org.csstudio.sds.components.ui.internal.figures.AbstractChartFigure; import org.csstudio.sds.model.AbstractWidgetModel; import org.csstudio.sds.ui.editparts.AbstractWidgetEditPart; import org.csstudio.sds.ui.editparts.IWidgetPropertyChangeHandler; import org.eclipse.draw2d.IFigure; import org.eclipse.swt.graphics.Color; /** * Abstract base class for the edit parts of chart widgets (waveform, strip * chart). * * @author Joerg Rathlev */ abstract class AbstractChartEditPart extends AbstractWidgetEditPart { /** * Sets those properties on the figure that are defined in the * {@code AbstractChartModel} base class. This method is provided for the * convenience of subclasses, which can call this method in their * implementation of {@link #doCreateFigure()}. * * @param figure * the figure. * @param model * the model. */ protected final void initializeCommonFigureProperties( final AbstractChartFigure figure, final AbstractChartModel model) { figure.setAliases(model.getAllInheritedAliases()); for (int i = 0; i < model.numberOfDataSeries(); i++) { figure.setPlotColor(i, getModelColor(AbstractChartModel.plotColorPropertyId(i))); } figure.setMin(model.getMin()); figure.setMax(model.getMax()); figure.setAutoScale(model.getAutoscale()); figure.setShowScale(model.getShowAxes()); figure.setShowValues(model.isLabeledTicksEnabled()); figure.setShowGridLines(model.getShowGridLines()); figure.setGridLinesColor(getModelColor(AbstractChartModel.PROP_GRID_LINE_COLOR)); figure.setLineChart(model.isLineChart()); figure.setGraphLineWidth(model.getPlotLineWidth()); figure.setBackgroundColor(getModelColor(AbstractWidgetModel.PROP_COLOR_BACKGROUND)); figure.setForegroundColor(getModelColor(AbstractWidgetModel.PROP_COLOR_FOREGROUND)); figure.setTransparent(model.isTransparent()); figure.setYAxisScaling(model.getYAxisScaling()); figure.setLabel(model.getLabel()); figure.setXAxisLabel(model.getXAxisLabel()); figure.setYAxisLabel(model.getYAxisLabel()); figure.setDataPointDrawingStyle(model.getDataPointDrawingStyle()); } /** * Registers property change handlers for the properties defined in * {@code AbstractChartModel}. This method is provided for the convenience * of subclasses, which can call this method in their implementation of * {@link #registerPropertyChangeHandlers()}. */ protected final void registerCommonPropertyChangeHandlers() { registerPlotColorChangeHandlers(); registerDrawingStyleChangeHandlers(); registerAxesChangeHandlers(); registerLabelChangeHandler(); } /** * Registers a change handler for the label property. */ private void registerLabelChangeHandler() { IWidgetPropertyChangeHandler labelHandler = new IWidgetPropertyChangeHandler() { @Override public boolean handleChange(final Object oldValue, final Object newValue, final IFigure refreshableFigure) { AbstractChartFigure figure = (AbstractChartFigure) refreshableFigure; figure.setLabel((String) newValue); return true; } }; setPropertyChangeHandler(WaveformModel.PROP_LABEL, labelHandler); } /** * Registers change handlers for the axes properties. */ private void registerAxesChangeHandlers() { // max setPropMaxHandler(); // min setPropMinHandler(); // autoscale setPropAutoScaleHandler(); // labeled ticks setPropLabeledTicksHandler(); // grid lines setPropShowGridLinesHandler(); // show axes setPropShowAxesHandler(); // y-axis scaling setPropYAxisScalingHandler(); // x-axis scaling setPropXAxisScalingHandler(); // y-axis label setPropYAxisLabelHandler(); } /** * */ private void setPropYAxisLabelHandler() { IWidgetPropertyChangeHandler yAxisLabelHandler = new IWidgetPropertyChangeHandler() { @Override public boolean handleChange(final Object oldValue, final Object newValue, final IFigure refreshableFigure) { AbstractChartFigure figure = (AbstractChartFigure) refreshableFigure; figure.setYAxisLabel((String) newValue); return true; } }; setPropertyChangeHandler(WaveformModel.PROP_Y_AXIS_LABEL, yAxisLabelHandler); } /** * */ private void setPropXAxisScalingHandler() { // x-axis label IWidgetPropertyChangeHandler xAxisLabelHandler = new IWidgetPropertyChangeHandler() { @Override public boolean handleChange(final Object oldValue, final Object newValue, final IFigure refreshableFigure) { AbstractChartFigure figure = (AbstractChartFigure) refreshableFigure; figure.setXAxisLabel((String) newValue); return true; } }; setPropertyChangeHandler(WaveformModel.PROP_X_AXIS_LABEL, xAxisLabelHandler); } /** * */ private void setPropYAxisScalingHandler() { IWidgetPropertyChangeHandler yAxisScalingHandler = new IWidgetPropertyChangeHandler() { @Override public boolean handleChange(final Object oldValue, final Object newValue, final IFigure refreshableFigure) { AbstractChartFigure figure = (AbstractChartFigure) refreshableFigure; figure.setYAxisScaling((Integer) newValue); return true; } }; setPropertyChangeHandler(WaveformModel.PROP_Y_AXIS_SCALING, yAxisScalingHandler); } /** * */ private void setPropShowAxesHandler() { IWidgetPropertyChangeHandler scaleHandler = new IWidgetPropertyChangeHandler() { @Override public boolean handleChange(final Object oldValue, final Object newValue, final IFigure refreshableFigure) { AbstractChartFigure figure = (AbstractChartFigure) refreshableFigure; figure.setShowScale((Integer) newValue); return true; } }; setPropertyChangeHandler(WaveformModel.PROP_SHOW_AXES, scaleHandler); } /** * */ private void setPropShowGridLinesHandler() { IWidgetPropertyChangeHandler ledgerLinesHandler = new IWidgetPropertyChangeHandler() { @Override public boolean handleChange(final Object oldValue, final Object newValue, final IFigure refreshableFigure) { AbstractChartFigure figure = (AbstractChartFigure) refreshableFigure; figure.setShowGridLines((Integer) newValue); return true; } }; setPropertyChangeHandler(WaveformModel.PROP_SHOW_GRID_LINES, ledgerLinesHandler); } /** * */ private void setPropLabeledTicksHandler() { IWidgetPropertyChangeHandler showValuesHandler = new IWidgetPropertyChangeHandler() { @Override public boolean handleChange(final Object oldValue, final Object newValue, final IFigure refreshableFigure) { AbstractChartFigure figure = (AbstractChartFigure) refreshableFigure; figure.setShowValues((Boolean) newValue); return true; } }; setPropertyChangeHandler(WaveformModel.PROP_LABELED_TICKS, showValuesHandler); } /** */ private void setPropAutoScaleHandler() { IWidgetPropertyChangeHandler handler; handler = new IWidgetPropertyChangeHandler() { @Override public boolean handleChange(final Object oldValue, final Object newValue, final IFigure refreshableFigure) { AbstractChartFigure figure = (AbstractChartFigure) refreshableFigure; figure.setAutoScale((Boolean)newValue); return true; } }; setPropertyChangeHandler(WaveformModel.PROP_AUTOSCALE, handler); } /** */ private void setPropMaxHandler() { IWidgetPropertyChangeHandler handler; handler = new IWidgetPropertyChangeHandler() { @Override public boolean handleChange(final Object oldValue, final Object newValue, final IFigure refreshableFigure) { AbstractChartFigure figure = (AbstractChartFigure) refreshableFigure; figure.setMax((Double)newValue); return true; } }; setPropertyChangeHandler(WaveformModel.PROP_MAX, handler); } /** */ private void setPropMinHandler() { IWidgetPropertyChangeHandler handler; handler = new IWidgetPropertyChangeHandler() { @Override public boolean handleChange(final Object oldValue, final Object newValue, final IFigure refreshableFigure) { AbstractChartFigure figure = (AbstractChartFigure) refreshableFigure; figure.setMin((Double)newValue); return true; } }; setPropertyChangeHandler(WaveformModel.PROP_MIN, handler); } /** * Registers change handlers for the drawing style properties. */ private void registerDrawingStyleChangeHandlers() { setPropLineChartHandler(); setPropLineWidthHandler(); setPropTransparentHandler(); // border width and style IWidgetPropertyChangeHandler borderHandler = new IWidgetPropertyChangeHandler() { @Override public boolean handleChange(final Object oldValue, final Object newValue, final IFigure refreshableFigure) { AbstractChartFigure figure = (AbstractChartFigure) refreshableFigure; figure.refreshConstraints(); return true; } }; setPropertyChangeHandler(BargraphModel.PROP_BORDER_WIDTH, borderHandler); setPropertyChangeHandler(BargraphModel.PROP_BORDER_STYLE, borderHandler); setDataPointDrawingStyleHandler(); setGridLinesColorHandler(); } /** * */ private void setGridLinesColorHandler() { setPropertyChangeHandler(WaveformModel.PROP_GRID_LINE_COLOR, new ColorChangeHandler<AbstractChartFigure>() { @Override protected void doHandle(AbstractChartFigure figure, Color color) { figure.setGridLinesColor(color); } }); } /** * */ private void setDataPointDrawingStyleHandler() { IWidgetPropertyChangeHandler drawingStyleHandler = new IWidgetPropertyChangeHandler() { @Override public boolean handleChange(final Object oldValue, final Object newValue, final IFigure refreshableFigure) { AbstractChartFigure figure = (AbstractChartFigure) refreshableFigure; figure.setDataPointDrawingStyle((Integer) newValue); return true; } }; setPropertyChangeHandler(WaveformModel.PROP_DATA_POINT_DRAWING_STYLE, drawingStyleHandler); } /** * */ private void setPropTransparentHandler() { IWidgetPropertyChangeHandler transparentHandler = new IWidgetPropertyChangeHandler() { @Override public boolean handleChange(final Object oldValue, final Object newValue, final IFigure refreshableFigure) { AbstractChartFigure figure = (AbstractChartFigure) refreshableFigure; figure.setTransparent((Boolean) newValue); return true; } }; setPropertyChangeHandler(WaveformModel.PROP_TRANSPARENT, transparentHandler); } /** * */ private void setPropLineWidthHandler() { IWidgetPropertyChangeHandler lineWidthHandler = new IWidgetPropertyChangeHandler() { @Override public boolean handleChange(final Object oldValue, final Object newValue, final IFigure refreshableFigure) { AbstractChartFigure figure = (AbstractChartFigure) refreshableFigure; figure.setGraphLineWidth((Integer) newValue); return true; } }; setPropertyChangeHandler(WaveformModel.PROP_PLOT_LINE_WIDTH, lineWidthHandler); } /** * */ private void setPropLineChartHandler() { IWidgetPropertyChangeHandler connectionLinesHandler = new IWidgetPropertyChangeHandler() { @Override public boolean handleChange(final Object oldValue, final Object newValue, final IFigure refreshableFigure) { AbstractChartFigure figure = (AbstractChartFigure) refreshableFigure; figure.setLineChart((Boolean) newValue); return true; } }; setPropertyChangeHandler(WaveformModel.PROP_LINE_CHART, connectionLinesHandler); } /** * Registers change handlers for the plot color properties. */ private void registerPlotColorChangeHandlers() { AbstractChartModel model = ((AbstractChartModel) getModel()); for (int i = 0; i < model.numberOfDataSeries(); i++) { final int nr = i; setPropertyChangeHandler(WaveformModel.plotColorPropertyId(i),new ColorChangeHandler<AbstractChartFigure>() { @Override protected void doHandle(AbstractChartFigure figure, Color color) { figure.setPlotColor(nr, color); } }); } } }