package org.csstudio.sds.components.ui.internal.editparts;
import org.csstudio.sds.components.model.SixteenBinaryBarModel;
import org.csstudio.sds.components.ui.internal.figures.RefreshableSixteenBinaryBarFigure;
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;
import org.eclipse.swt.graphics.Font;
/**
* Edit Part for Sixteen Binary Bar.
*
* @author Alen Vrecko
*
*/
public class SixteenBinaryBarEditPart extends AbstractWidgetEditPart {
/**
* {@inheritDoc}
*/
@Override
protected IFigure doCreateFigure() {
SixteenBinaryBarModel model = (SixteenBinaryBarModel) getWidgetModel();
final RefreshableSixteenBinaryBarFigure bar = new RefreshableSixteenBinaryBarFigure();
bar.setOnColor(getModelColor(SixteenBinaryBarModel.PROP_ON_COLOR));
bar.setOffColor(getModelColor(SixteenBinaryBarModel.PROP_OFF_COLOR));
bar.setLabelFont(getModelFont(SixteenBinaryBarModel.PROP_LABEL_FONT));
bar.setHorizontal(model.getHorizontal());
bar.setShowLabels(model.getShowLabels());
bar.setValue(model.getValue());
bar.setInternalBorderThickness(model.getInternalFrameThickness());
bar.setInternalBorderColor(getModelColor(SixteenBinaryBarModel.PROP_INTERNAL_FRAME_COLOR));
bar.setLabelColor(getModelColor(SixteenBinaryBarModel.PROP_LABEL_COLOR));
bar.setBitRangeFrom(model.getBitRangeFrom());
bar.setBitRangeTo(model.getBitRangeTo());
return bar;
}
/**
* {@inheritDoc}
*/
@Override
protected void registerPropertyChangeHandlers() {
// orientation
IWidgetPropertyChangeHandler handler = new IWidgetPropertyChangeHandler() {
@Override
public boolean handleChange(final Object oldValue,
final Object newValue, final IFigure refreshableFigure) {
RefreshableSixteenBinaryBarFigure rectangle = (RefreshableSixteenBinaryBarFigure) refreshableFigure;
rectangle.setHorizontal((Boolean) newValue);
return true;
}
};
setPropertyChangeHandler(SixteenBinaryBarModel.PROP_HORIZONTAL, handler);
// labels
handler = new IWidgetPropertyChangeHandler() {
@Override
public boolean handleChange(final Object oldValue,
final Object newValue, final IFigure refreshableFigure) {
RefreshableSixteenBinaryBarFigure rectangle = (RefreshableSixteenBinaryBarFigure) refreshableFigure;
rectangle.setShowLabels((Boolean) newValue);
return true;
}
};
setPropertyChangeHandler(SixteenBinaryBarModel.PROP_SHOW_LABELS,
handler);
// value
handler = new IWidgetPropertyChangeHandler() {
@Override
public boolean handleChange(final Object oldValue,
final Object newValue, final IFigure refreshableFigure) {
RefreshableSixteenBinaryBarFigure rectangle = (RefreshableSixteenBinaryBarFigure) refreshableFigure;
rectangle.setValue((Integer) newValue);
return true;
}
};
setPropertyChangeHandler(SixteenBinaryBarModel.PROP_VALUE, handler);
// font
setPropertyChangeHandler(SixteenBinaryBarModel.PROP_LABEL_FONT, new FontChangeHandler<RefreshableSixteenBinaryBarFigure>(){
@Override
protected void doHandle(RefreshableSixteenBinaryBarFigure figure, Font font) {
figure.setLabelFont(font);
}
});
// on color
setPropertyChangeHandler(SixteenBinaryBarModel.PROP_ON_COLOR, new ColorChangeHandler<RefreshableSixteenBinaryBarFigure>(){
@Override
protected void doHandle(RefreshableSixteenBinaryBarFigure figure, Color color) {
figure.setOnColor(color);
}
});
// off color
setPropertyChangeHandler(SixteenBinaryBarModel.PROP_OFF_COLOR, new ColorChangeHandler<RefreshableSixteenBinaryBarFigure>(){
@Override
protected void doHandle(RefreshableSixteenBinaryBarFigure figure, Color color) {
figure.setOffColor(color);
}
});
// i frame thickness
handler = new IWidgetPropertyChangeHandler() {
@Override
public boolean handleChange(final Object oldValue,
final Object newValue, final IFigure refreshableFigure) {
RefreshableSixteenBinaryBarFigure rectangle = (RefreshableSixteenBinaryBarFigure) refreshableFigure;
rectangle.setInternalBorderThickness((Integer) newValue);
return true;
}
};
setPropertyChangeHandler(
SixteenBinaryBarModel.PROP_INTERNAL_FRAME_THICKNESS, handler);
// label color
setPropertyChangeHandler(SixteenBinaryBarModel.PROP_LABEL_COLOR,
new ColorChangeHandler<RefreshableSixteenBinaryBarFigure>(){
@Override
protected void doHandle(RefreshableSixteenBinaryBarFigure figure, Color color) {
figure.setLabelColor(color);
}
});
// frame color
setPropertyChangeHandler(
SixteenBinaryBarModel.PROP_INTERNAL_FRAME_COLOR, new ColorChangeHandler<RefreshableSixteenBinaryBarFigure>(){
@Override
protected void doHandle(RefreshableSixteenBinaryBarFigure figure, Color color) {
figure.setInternalBorderColor(color);
}
});
// bit range from
handler = new IWidgetPropertyChangeHandler() {
@Override
public boolean handleChange(Object oldValue, Object newValue,
IFigure refreshableFigure) {
RefreshableSixteenBinaryBarFigure figure = (RefreshableSixteenBinaryBarFigure) refreshableFigure;
figure.setBitRangeFrom((Integer) newValue);
return true;
}
};
setPropertyChangeHandler(SixteenBinaryBarModel.PROP_BITS_FROM, handler);
// bit range to
handler = new IWidgetPropertyChangeHandler() {
@Override
public boolean handleChange(Object oldValue, Object newValue,
IFigure refreshableFigure) {
RefreshableSixteenBinaryBarFigure figure = (RefreshableSixteenBinaryBarFigure) refreshableFigure;
figure.setBitRangeTo((Integer) newValue);
return true;
}
};
setPropertyChangeHandler(SixteenBinaryBarModel.PROP_BITS_TO, handler);
}
}