/*
* Copyright (c) 2006 Stiftung Deutsches Elektronen-Synchroton,
* 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.BargraphModel;
import org.csstudio.sds.components.ui.internal.figures.RefreshableBargraphFigure;
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;
/**
* EditPart controller for the Bargraph widget. The controller mediates between
* {@link BargraphModel} and {@link RefreshableBargraphFigure}.
*
* @author Kai Meyer
*
*/
public final class BargraphEditPart extends AbstractWidgetEditPart {
/**
* {@inheritDoc}
*/
@Override
protected IFigure doCreateFigure() {
BargraphModel model = (BargraphModel) getWidgetModel();
RefreshableBargraphFigure bargraph = new RefreshableBargraphFigure();
bargraph.setFill(model.getFillLevel());
bargraph.setOrientation(model.getOrientation());
// Colors
bargraph.setDefaultFillColor(getModelColor(BargraphModel.PROP_DEFAULT_FILL_COLOR));
bargraph.setBorderColor(getModelColor(AbstractWidgetModel.PROP_BORDER_COLOR));
bargraph.setFillBackgroundColor(getModelColor(BargraphModel.PROP_FILLBACKGROUND_COLOR));
// Levels
bargraph.setMinimum(model.getMinimum());
bargraph.setLoloLevel(model.getLoloLevel());
bargraph.setLoLevel(model.getLoLevel());
bargraph.setHiLevel(model.getHiLevel());
bargraph.setHihiLevel(model.getHihiLevel());
bargraph.setMaximum(model.getMaximum());
// show_Value
bargraph.setShowValues(model.isShowValues());
bargraph.setShowMarks(model.getShowMarks());
bargraph.setShowScale(model.getShowScale());
bargraph.setScaleSectionCount(model.getScaleSectionCount());
bargraph.setTransparent(model.getTransparent());
bargraph.setShowOnlyValue(model.getShowOnlyValue());
return bargraph;
}
/**
* {@inheritDoc}
*/
@Override
protected void registerPropertyChangeHandlers() {
// fill
IWidgetPropertyChangeHandler fillHandler = new IWidgetPropertyChangeHandler() {
@Override
public boolean handleChange(final Object oldValue,
final Object newValue,
final IFigure refreshableFigure) {
RefreshableBargraphFigure bargraph = (RefreshableBargraphFigure) refreshableFigure;
bargraph.setFill((Double) newValue);
return true;
}
};
setPropertyChangeHandler(BargraphModel.PROP_FILL, fillHandler);
// orientation
IWidgetPropertyChangeHandler orientationHandler = new IWidgetPropertyChangeHandler() {
@Override
public boolean handleChange(final Object oldValue,
final Object newValue,
final IFigure refreshableFigure) {
RefreshableBargraphFigure bargraph = (RefreshableBargraphFigure) refreshableFigure;
bargraph.setOrientation((Boolean) newValue);
return true;
}
};
setPropertyChangeHandler(BargraphModel.PROP_ORIENTATION,
orientationHandler);
this.registerColorPropertyChangeHandler();
this.registerLevelPropertyChangeHandler();
// Show_value
IWidgetPropertyChangeHandler showValuesHandler = new IWidgetPropertyChangeHandler() {
@Override
public boolean handleChange(final Object oldValue,
final Object newValue,
final IFigure refreshableFigure) {
RefreshableBargraphFigure bargraph = (RefreshableBargraphFigure) refreshableFigure;
bargraph.setShowValues((Boolean) newValue);
return true;
}
};
setPropertyChangeHandler(BargraphModel.PROP_SHOW_VALUES,
showValuesHandler);
// Show_marks
IWidgetPropertyChangeHandler showMarksHandler = new IWidgetPropertyChangeHandler() {
@Override
public boolean handleChange(final Object oldValue,
final Object newValue,
final IFigure refreshableFigure) {
RefreshableBargraphFigure bargraph = (RefreshableBargraphFigure) refreshableFigure;
bargraph.setShowMarks((Integer) newValue);
return true;
}
};
setPropertyChangeHandler(BargraphModel.PROP_SHOW_MARKS,
showMarksHandler);
// Show_scale
IWidgetPropertyChangeHandler showScaleHandler = new IWidgetPropertyChangeHandler() {
@Override
public boolean handleChange(final Object oldValue,
final Object newValue,
final IFigure refreshableFigure) {
RefreshableBargraphFigure bargraph = (RefreshableBargraphFigure) refreshableFigure;
bargraph.setShowScale((Integer) newValue);
return true;
}
};
setPropertyChangeHandler(BargraphModel.PROP_SHOW_SCALE,
showScaleHandler);
// Scale_count
IWidgetPropertyChangeHandler scaleCountHandler = new IWidgetPropertyChangeHandler() {
@Override
public boolean handleChange(final Object oldValue,
final Object newValue,
final IFigure refreshableFigure) {
RefreshableBargraphFigure bargraph = (RefreshableBargraphFigure) refreshableFigure;
bargraph.setScaleSectionCount((Integer) newValue);
return true;
}
};
setPropertyChangeHandler(BargraphModel.PROP_SCALE_SECTION_COUNT,
scaleCountHandler);
// Transparent background
IWidgetPropertyChangeHandler transparentHandler = new IWidgetPropertyChangeHandler() {
@Override
public boolean handleChange(final Object oldValue,
final Object newValue,
final IFigure refreshableFigure) {
RefreshableBargraphFigure bargraph = (RefreshableBargraphFigure) refreshableFigure;
bargraph.setTransparent((Boolean) newValue);
return true;
}
};
setPropertyChangeHandler(BargraphModel.PROP_TRANSPARENT, transparentHandler);
// Value Representation
IWidgetPropertyChangeHandler valueRepresentationHandler = new IWidgetPropertyChangeHandler() {
@Override
public boolean handleChange(final Object oldValue,
final Object newValue,
final IFigure refreshableFigure) {
RefreshableBargraphFigure bargraph = (RefreshableBargraphFigure) refreshableFigure;
bargraph.setShowOnlyValue((Boolean) newValue);
return true;
}
};
setPropertyChangeHandler(BargraphModel.PROP_SHOW_ONLY_VALUE, valueRepresentationHandler);
}
/**
* Registers PropertyChangeHandler for the color properties.
*/
private void registerColorPropertyChangeHandler() {
setPropertyChangeHandler(BargraphModel.PROP_DEFAULT_FILL_COLOR,
new ColorChangeHandler<RefreshableBargraphFigure>() {
@Override
protected void doHandle(RefreshableBargraphFigure figure, Color color) {
figure.setDefaultFillColor(color);
}
});
setPropertyChangeHandler(BargraphModel.PROP_FILLBACKGROUND_COLOR,
new ColorChangeHandler<RefreshableBargraphFigure>() {
@Override
protected void doHandle(RefreshableBargraphFigure figure, Color color) {
figure.setFillBackgroundColor(color);
}
});
IWidgetPropertyChangeHandler borderHandler = new IWidgetPropertyChangeHandler() {
@Override
public boolean handleChange(final Object oldValue,
final Object newValue,
final IFigure refreshableFigure) {
RefreshableBargraphFigure bargraph = (RefreshableBargraphFigure) refreshableFigure;
bargraph.refreshConstraints();
return true;
}
};
setPropertyChangeHandler(BargraphModel.PROP_BORDER_WIDTH, borderHandler);
setPropertyChangeHandler(BargraphModel.PROP_BORDER_STYLE, borderHandler);
}
/**
* Registers PropertyChangeHandler for the level properties.
*/
private void registerLevelPropertyChangeHandler() {
IWidgetPropertyChangeHandler minimumHandler = new IWidgetPropertyChangeHandler() {
@Override
public boolean handleChange(final Object oldValue,
final Object newValue,
final IFigure refreshableFigure) {
RefreshableBargraphFigure bargraph = (RefreshableBargraphFigure) refreshableFigure;
bargraph.setMinimum((Double) newValue);
return true;
}
};
setPropertyChangeHandler(BargraphModel.PROP_MIN, minimumHandler);
IWidgetPropertyChangeHandler loloHandler = new IWidgetPropertyChangeHandler() {
@Override
public boolean handleChange(final Object oldValue,
final Object newValue,
final IFigure refreshableFigure) {
RefreshableBargraphFigure bargraph = (RefreshableBargraphFigure) refreshableFigure;
bargraph.setLoloLevel((Double) newValue);
return true;
}
};
setPropertyChangeHandler(BargraphModel.PROP_LOLO_LEVEL, loloHandler);
IWidgetPropertyChangeHandler loHandler = new IWidgetPropertyChangeHandler() {
@Override
public boolean handleChange(final Object oldValue,
final Object newValue,
final IFigure refreshableFigure) {
RefreshableBargraphFigure bargraph = (RefreshableBargraphFigure) refreshableFigure;
bargraph.setLoLevel((Double) newValue);
return true;
}
};
setPropertyChangeHandler(BargraphModel.PROP_LO_LEVEL, loHandler);
IWidgetPropertyChangeHandler hiHandler = new IWidgetPropertyChangeHandler() {
@Override
public boolean handleChange(final Object oldValue,
final Object newValue,
final IFigure refreshableFigure) {
RefreshableBargraphFigure bargraph = (RefreshableBargraphFigure) refreshableFigure;
bargraph.setHiLevel((Double) newValue);
return true;
}
};
setPropertyChangeHandler(BargraphModel.PROP_HI_LEVEL, hiHandler);
IWidgetPropertyChangeHandler hihiHandler = new IWidgetPropertyChangeHandler() {
@Override
public boolean handleChange(final Object oldValue,
final Object newValue,
final IFigure refreshableFigure) {
RefreshableBargraphFigure bargraph = (RefreshableBargraphFigure) refreshableFigure;
bargraph.setHihiLevel((Double) newValue);
return true;
}
};
setPropertyChangeHandler(BargraphModel.PROP_HIHI_LEVEL, hihiHandler);
IWidgetPropertyChangeHandler maximumHandler = new IWidgetPropertyChangeHandler() {
@Override
public boolean handleChange(final Object oldValue,
final Object newValue,
final IFigure refreshableFigure) {
RefreshableBargraphFigure bargraph = (RefreshableBargraphFigure) refreshableFigure;
bargraph.setMaximum((Double) newValue);
return true;
}
};
setPropertyChangeHandler(BargraphModel.PROP_MAX, maximumHandler);
}
}