use of org.diirt.vtype.VType in project yamcs-studio by yamcs.
the class SpinnerEditpart method registerPropertyChangeHandlers.
@Override
protected void registerPropertyChangeHandlers() {
// text
IWidgetPropertyChangeHandler handler = new IWidgetPropertyChangeHandler() {
@Override
public boolean handleChange(Object oldValue, Object newValue, IFigure figure) {
String text = (String) newValue;
try {
// $NON-NLS-1$ //$NON-NLS-2$
text = text.replace("e", "E");
double value = new DecimalFormat().parse(text).doubleValue();
// coerce value in range
value = Math.max(((SpinnerFigure) figure).getMin(), Math.min(((SpinnerFigure) figure).getMax(), value));
((SpinnerFigure) figure).setValue(value);
if (getExecutionMode() == ExecutionMode.RUN_MODE)
setPVValue(AbstractPVWidgetModel.PROP_PVNAME, value);
getWidgetModel().setText(((SpinnerFigure) figure).getLabelFigure().getText(), false);
return false;
} catch (Exception e) {
return false;
}
}
};
setPropertyChangeHandler(SpinnerModel.PROP_TEXT, handler);
IWidgetPropertyChangeHandler pvNameHandler = new IWidgetPropertyChangeHandler() {
@Override
public boolean handleChange(Object oldValue, Object newValue, IFigure figure) {
registerLoadLimitsListener();
return false;
}
};
setPropertyChangeHandler(AbstractPVWidgetModel.PROP_PVNAME, pvNameHandler);
// pv value
handler = new IWidgetPropertyChangeHandler() {
@Override
public boolean handleChange(Object oldValue, Object newValue, IFigure figure) {
if (newValue == null)
return false;
double value = VTypeHelper.getDouble((VType) newValue);
((SpinnerFigure) figure).setDisplayValue(value);
getWidgetModel().setText(((SpinnerFigure) figure).getLabelFigure().getText(), false);
return false;
}
};
setPropertyChangeHandler(SpinnerModel.PROP_PVVALUE, handler);
// min
handler = new IWidgetPropertyChangeHandler() {
@Override
public boolean handleChange(Object oldValue, Object newValue, IFigure figure) {
((SpinnerFigure) figure).setMin((Double) newValue);
return false;
}
};
setPropertyChangeHandler(SpinnerModel.PROP_MIN, handler);
// max
handler = new IWidgetPropertyChangeHandler() {
@Override
public boolean handleChange(Object oldValue, Object newValue, IFigure figure) {
((SpinnerFigure) figure).setMax((Double) newValue);
return false;
}
};
setPropertyChangeHandler(SpinnerModel.PROP_MAX, handler);
// step increment
handler = new IWidgetPropertyChangeHandler() {
@Override
public boolean handleChange(Object oldValue, Object newValue, IFigure figure) {
((SpinnerFigure) figure).setStepIncrement((Double) newValue);
return false;
}
};
setPropertyChangeHandler(SpinnerModel.PROP_STEP_INCREMENT, handler);
// page increment
handler = new IWidgetPropertyChangeHandler() {
@Override
public boolean handleChange(Object oldValue, Object newValue, IFigure figure) {
((SpinnerFigure) figure).setPageIncrement((Double) newValue);
return false;
}
};
setPropertyChangeHandler(SpinnerModel.PROP_PAGE_INCREMENT, handler);
// font
IWidgetPropertyChangeHandler fontHandler = new IWidgetPropertyChangeHandler() {
@Override
public boolean handleChange(Object oldValue, Object newValue, IFigure figure) {
((SpinnerFigure) figure).getLabelFigure().setFont(CustomMediaFactory.getInstance().getFont(((OPIFont) newValue).getFontData()));
return true;
}
};
setPropertyChangeHandler(LabelModel.PROP_FONT, fontHandler);
handler = new IWidgetPropertyChangeHandler() {
@Override
public boolean handleChange(Object oldValue, Object newValue, IFigure figure) {
((SpinnerFigure) figure).getLabelFigure().setHorizontalAlignment(H_ALIGN.values()[(Integer) newValue]);
return true;
}
};
setPropertyChangeHandler(LabelModel.PROP_ALIGN_H, handler);
handler = new IWidgetPropertyChangeHandler() {
@Override
public boolean handleChange(Object oldValue, Object newValue, IFigure figure) {
((SpinnerFigure) figure).getLabelFigure().setVerticalAlignment(V_ALIGN.values()[(Integer) newValue]);
return true;
}
};
setPropertyChangeHandler(LabelModel.PROP_ALIGN_V, handler);
handler = new IWidgetPropertyChangeHandler() {
@Override
public boolean handleChange(Object oldValue, Object newValue, IFigure figure) {
((SpinnerFigure) figure).getLabelFigure().setOpaque(!(Boolean) newValue);
return true;
}
};
setPropertyChangeHandler(LabelModel.PROP_TRANSPARENT, handler);
handler = new IWidgetPropertyChangeHandler() {
@Override
public boolean handleChange(Object oldValue, Object newValue, IFigure figure) {
((SpinnerFigure) figure).setFormatType(NumericFormatType.values()[(Integer) newValue]);
return false;
}
};
setPropertyChangeHandler(SpinnerModel.PROP_FORMAT, handler);
handler = new IWidgetPropertyChangeHandler() {
@Override
public boolean handleChange(Object oldValue, Object newValue, IFigure figure) {
((SpinnerFigure) figure).setPrecision((Integer) newValue);
return false;
}
};
setPropertyChangeHandler(SpinnerModel.PROP_PRECISION, handler);
handler = new IWidgetPropertyChangeHandler() {
@Override
public boolean handleChange(Object oldValue, Object newValue, IFigure figure) {
((SpinnerFigure) figure).setArrowButtonsOnLeft((Boolean) newValue);
return false;
}
};
setPropertyChangeHandler(SpinnerModel.PROP_BUTTONS_ON_LEFT, handler);
handler = new IWidgetPropertyChangeHandler() {
@Override
public boolean handleChange(Object oldValue, Object newValue, IFigure figure) {
((SpinnerFigure) figure).setArrowButtonsHorizontal((Boolean) newValue);
return false;
}
};
setPropertyChangeHandler(SpinnerModel.PROP_HORIZONTAL_BUTTONS_LAYOUT, handler);
handler = new IWidgetPropertyChangeHandler() {
@Override
public boolean handleChange(Object oldValue, Object newValue, IFigure figure) {
((SpinnerFigure) figure).showText((Boolean) newValue);
return false;
}
};
setPropertyChangeHandler(SpinnerModel.PROP_SHOW_TEXT, handler);
}
use of org.diirt.vtype.VType in project yamcs-studio by yamcs.
the class TextInputEditpart method registerLoadLimitsListener.
/**
*/
private void registerLoadLimitsListener() {
if (getExecutionMode() == ExecutionMode.RUN_MODE) {
final TextInputModel model = getWidgetModel();
if (model.isLimitsFromPV()) {
IPV pv = getPV(AbstractPVWidgetModel.PROP_PVNAME);
if (pv != null) {
if (pvLoadLimitsListener == null)
pvLoadLimitsListener = new IPVListener.Stub() {
@Override
public void valueChanged(IPV pv) {
VType value = pv.getValue();
if (value != null && VTypeHelper.getDisplayInfo(value) != null) {
org.diirt.vtype.Display new_meta = VTypeHelper.getDisplayInfo(value);
if (meta == null || !meta.equals(new_meta)) {
meta = new_meta;
// Update min/max from the control range of the PV
model.setPropertyValue(TextInputModel.PROP_MAX, meta.getUpperCtrlLimit());
model.setPropertyValue(TextInputModel.PROP_MIN, meta.getLowerCtrlLimit());
}
}
}
};
pv.addListener(pvLoadLimitsListener);
}
}
}
}
use of org.diirt.vtype.VType in project yamcs-studio by yamcs.
the class TextInputEditpart method parseStringArray.
/**
* If the text has spaces in the string and the PV is numeric array type, it will return an array of numeric values.
*
* @param text
* @return
* @throws ParseException
*/
private Object parseStringArray(final String text) throws ParseException {
// $NON-NLS-1$
String[] texts = text.split(" +");
VType pvValue = getPVValue(AbstractPVWidgetModel.PROP_PVNAME);
if (pvValue instanceof VNumberArray) {
double[] result = new double[texts.length];
for (int i = 0; i < texts.length; i++) {
Object o = parseString(texts[i]);
if (o instanceof Number)
result[i] = ((Number) o).doubleValue();
else
throw new ParseException(texts[i] + " cannot be parsed as a number!", i);
}
return result;
}
return parseString(text);
}
use of org.diirt.vtype.VType in project yamcs-studio by yamcs.
the class TextUpdateEditPart method formatValue.
/**
* @param newValue
* @return
*/
protected String formatValue(Object newValue, String propId) {
if (getExecutionMode() != ExecutionMode.RUN_MODE)
return null;
VType value = null;
int tempPrecision = precision;
if (isPrecisionFromDB)
tempPrecision = -1;
if (propId.equals(AbstractPVWidgetModel.PROP_PVVALUE))
value = (VType) newValue;
else
value = getPVValue(AbstractPVWidgetModel.PROP_PVNAME);
String text = VTypeHelper.formatValue(format, value, tempPrecision);
if (isShowUnits && VTypeHelper.getDisplayInfo(value) != null) {
String units = VTypeHelper.getDisplayInfo(value).getUnits();
if (units != null && units.trim().length() > 0)
// $NON-NLS-1$
text = text + " " + units;
}
// synchronize the property value without fire listeners.
widgetModel.getProperty(TextUpdateModel.PROP_TEXT).setPropertyValue(text, false);
setFigureText(text);
if (isAutoSize)
performAutoSize();
return text;
}
use of org.diirt.vtype.VType in project yamcs-studio by yamcs.
the class ArrayEditPart method registerPropertyChangeHandlers.
@Override
protected void registerPropertyChangeHandlers() {
IWidgetPropertyChangeHandler handler = new IWidgetPropertyChangeHandler() {
@Override
public boolean handleChange(Object oldValue, Object newValue, IFigure figure) {
for (AbstractWidgetModel child : getWidgetModel().getAllChildren()) {
child.setEnabled((Boolean) newValue);
}
return true;
}
};
setPropertyChangeHandler(AbstractWidgetModel.PROP_ENABLED, handler);
handler = new IWidgetPropertyChangeHandler() {
@Override
public boolean handleChange(Object oldValue, Object newValue, IFigure figure) {
VType value = (VType) newValue;
if (value instanceof VNumberArray) {
Object wrappedArray = VTypeHelper.getWrappedArray(((VNumberArray) value));
if (wrappedArray != null)
setValue(wrappedArray);
else
setValue(VTypeHelper.getDoubleArray(value));
} else {
if (value instanceof VEnum)
setValue(new String[] { ((VEnum) value).getValue() });
else if (value instanceof VString)
setValue(new String[] { ((VString) value).getValue() });
else if (value instanceof VStringArray)
setValue(((VStringArray) value).getData().toArray());
else
setValue(VTypeHelper.getDoubleArray(value));
}
return false;
}
};
setPropertyChangeHandler(ArrayModel.PROP_PVVALUE, handler);
getWidgetModel().getProperty(ArrayModel.PROP_PVNAME).addPropertyChangeListener(new PropertyChangeListener() {
@Override
public void propertyChange(PropertyChangeEvent evt) {
updatePropSheet();
}
});
handler = new IWidgetPropertyChangeHandler() {
@Override
public boolean handleChange(Object oldValue, Object newValue, IFigure figure) {
registerLoadPVDataTypeListener();
return false;
}
};
setPropertyChangeHandler(ArrayModel.PROP_PVNAME, handler);
getWidgetModel().getProperty(ArrayModel.PROP_DATA_TYPE).addPropertyChangeListener(new PropertyChangeListener() {
@Override
public void propertyChange(PropertyChangeEvent evt) {
initValueArray();
}
});
handler = new IWidgetPropertyChangeHandler() {
@Override
public boolean handleChange(Object oldValue, Object newValue, IFigure figure) {
updateWidgetSize();
return false;
}
};
setPropertyChangeHandler(ArrayModel.PROP_BORDER_STYLE, handler);
setPropertyChangeHandler(ArrayModel.PROP_BORDER_WIDTH, handler);
handler = new IWidgetPropertyChangeHandler() {
@Override
public boolean handleChange(Object oldValue, Object newValue, IFigure figure) {
getArrayFigure().setArrayLength((Integer) newValue);
return false;
}
};
setPropertyChangeHandler(ArrayModel.PROP_ARRAY_LENGTH, handler);
handler = new IWidgetPropertyChangeHandler() {
@Override
public boolean handleChange(Object oldValue, Object newValue, IFigure figure) {
((ArrayFigure) figure).setSpinnerWidth((Integer) newValue);
keepElementSize = true;
getWidgetModel().setSize(((ArrayFigure) figure).getPreferredSize());
keepElementSize = false;
return false;
}
};
setPropertyChangeHandler(ArrayModel.PROP_SPINNER_WIDTH, handler);
handler = new IWidgetPropertyChangeHandler() {
@Override
public boolean handleChange(Object oldValue, Object newValue, IFigure figure) {
((ArrayFigure) figure).setHorizontal((Boolean) newValue);
keepElementSize = true;
getWidgetModel().setSize(((ArrayFigure) figure).getPreferredSize());
keepElementSize = false;
return false;
}
};
setPropertyChangeHandler(ArrayModel.PROP_HORIZONTAL, handler);
handler = new IWidgetPropertyChangeHandler() {
@Override
public boolean handleChange(Object oldValue, Object newValue, IFigure figure) {
((ArrayFigure) figure).setShowScrollbar((Boolean) newValue);
keepElementSize = true;
getWidgetModel().setSize(((ArrayFigure) figure).getPreferredSize());
keepElementSize = false;
return false;
}
};
setPropertyChangeHandler(ArrayModel.PROP_SHOW_SCROLLBAR, handler);
handler = new IWidgetPropertyChangeHandler() {
@Override
public boolean handleChange(Object oldValue, Object newValue, IFigure figure) {
((ArrayFigure) figure).setShowSpinner((Boolean) newValue);
keepElementSize = true;
getWidgetModel().setSize(((ArrayFigure) figure).getPreferredSize());
keepElementSize = false;
return false;
}
};
setPropertyChangeHandler(ArrayModel.PROP_SHOW_SPINNER, handler);
PropertyChangeListener sizePropertyChangeListener = new PropertyChangeListener() {
@Override
public void propertyChange(PropertyChangeEvent evt) {
if (getWidgetModel().getChildren().size() == 0 || inSync || keepElementSize)
return;
Dimension elementSize = getArrayFigure().getElementSize();
int delta = (Integer) evt.getNewValue() - (Integer) evt.getOldValue();
int elementWH = elementSize.height;
String propID = evt.getPropertyName();
boolean elementCountDirection = false;
if (getWidgetModel().isHorizontal() && propID.equals(AbstractWidgetModel.PROP_WIDTH)) {
elementWH = elementSize.width;
elementCountDirection = true;
} else if (!getWidgetModel().isHorizontal() && propID.equals(AbstractWidgetModel.PROP_HEIGHT)) {
elementWH = elementSize.height;
elementCountDirection = true;
}
if (elementCountDirection) {
int deltaElementsCount = Math.round((float) delta / elementWH);
int idelta = (Math.round((float) delta / elementWH) * elementWH);
setPropertyValue(propID, (Integer) evt.getOldValue() + idelta, false);
int visibleElementsCount = getArrayFigure().getVisibleElementsCount() + deltaElementsCount;
setPropertyValue(ArrayModel.PROP_VISIBLE_ELEMENTS_COUNT, visibleElementsCount);
setValue(getValue());
} else {
int wh;
if (propID.equals(AbstractWidgetModel.PROP_WIDTH))
wh = getArrayFigure().getElementSize().width;
else
wh = getArrayFigure().getElementSize().height;
syncAllChildrenProperties(propID, wh + delta);
}
}
};
getWidgetModel().getProperty(AbstractWidgetModel.PROP_WIDTH).addPropertyChangeListener(sizePropertyChangeListener);
getWidgetModel().getProperty(AbstractWidgetModel.PROP_HEIGHT).addPropertyChangeListener(sizePropertyChangeListener);
}
Aggregations