use of org.csstudio.simplepv.IPV in project yamcs-studio by yamcs.
the class ScrollbarEditPart method registerLoadLimitsListener.
/**
*/
private void registerLoadLimitsListener() {
if (getExecutionMode() == ExecutionMode.RUN_MODE) {
final ScrollBarModel 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();
Display displayInfo = VTypeHelper.getDisplayInfo(value);
if (value != null && displayInfo != null) {
Display new_meta = displayInfo;
if (meta == null || !meta.equals(new_meta)) {
meta = new_meta;
model.setPropertyValue(ScrollBarModel.PROP_MAX, meta.getUpperDisplayLimit());
model.setPropertyValue(ScrollBarModel.PROP_MIN, meta.getLowerDisplayLimit());
}
}
}
};
pv.addListener(pvLoadLimitsListener);
}
}
}
}
use of org.csstudio.simplepv.IPV 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.csstudio.simplepv.IPV in project yamcs-studio by yamcs.
the class AbstractChoiceEditPart method registerLoadItemsListener.
/**
*/
private void registerLoadItemsListener() {
// load items from PV
if (getExecutionMode() == ExecutionMode.RUN_MODE) {
if (getWidgetModel().isItemsFromPV()) {
IPV pv = getPV(AbstractPVWidgetModel.PROP_PVNAME);
if (pv != null) {
if (loadItemsFromPVListener == null)
loadItemsFromPVListener = new IPVListener.Stub() {
@Override
public void valueChanged(IPV pv) {
VType value = pv.getValue();
if (value != null && value instanceof VEnum) {
List<String> new_meta = ((VEnum) value).getLabels();
getWidgetModel().setPropertyValue(AbstractChoiceModel.PROP_ITEMS, new_meta);
}
}
};
pv.addListener(loadItemsFromPVListener);
}
}
}
}
use of org.csstudio.simplepv.IPV in project yamcs-studio by yamcs.
the class AbstractMarkedWidgetEditPart method registerLoadLimitsListener.
/**
*/
private void registerLoadLimitsListener() {
if (getExecutionMode() == ExecutionMode.RUN_MODE) {
final AbstractMarkedWidgetModel model = (AbstractMarkedWidgetModel) getModel();
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) {
Display new_meta = VTypeHelper.getDisplayInfo(value);
if (meta == null || !meta.equals(new_meta)) {
meta = new_meta;
Double upperLimit;
Double lowerLimit;
if (model.isControlWidget()) {
// DRVH / DRVL
upperLimit = meta.getUpperCtrlLimit();
lowerLimit = meta.getLowerCtrlLimit();
} else {
// HOPR / LOPR
upperLimit = meta.getUpperDisplayLimit();
lowerLimit = meta.getLowerDisplayLimit();
}
if (!Double.isNaN(upperLimit)) {
model.setPropertyValue(AbstractMarkedWidgetModel.PROP_MAX, upperLimit);
}
if (!Double.isNaN(lowerLimit)) {
model.setPropertyValue(AbstractMarkedWidgetModel.PROP_MIN, lowerLimit);
}
if (Double.isNaN(meta.getUpperWarningLimit()))
model.setPropertyValue(AbstractMarkedWidgetModel.PROP_SHOW_HI, false);
else {
model.setPropertyValue(AbstractMarkedWidgetModel.PROP_SHOW_HI, true);
model.setPropertyValue(AbstractMarkedWidgetModel.PROP_HI_LEVEL, meta.getUpperWarningLimit());
}
if (Double.isNaN(meta.getUpperAlarmLimit()))
model.setPropertyValue(AbstractMarkedWidgetModel.PROP_SHOW_HIHI, false);
else {
model.setPropertyValue(AbstractMarkedWidgetModel.PROP_SHOW_HIHI, true);
model.setPropertyValue(AbstractMarkedWidgetModel.PROP_HIHI_LEVEL, meta.getUpperAlarmLimit());
}
if (Double.isNaN(meta.getLowerWarningLimit()))
model.setPropertyValue(AbstractMarkedWidgetModel.PROP_SHOW_LO, false);
else {
model.setPropertyValue(AbstractMarkedWidgetModel.PROP_SHOW_LO, true);
model.setPropertyValue(AbstractMarkedWidgetModel.PROP_LO_LEVEL, meta.getLowerWarningLimit());
}
if (Double.isNaN(meta.getLowerAlarmLimit()))
model.setPropertyValue(AbstractMarkedWidgetModel.PROP_SHOW_LOLO, false);
else {
model.setPropertyValue(AbstractMarkedWidgetModel.PROP_SHOW_LOLO, true);
model.setPropertyValue(AbstractMarkedWidgetModel.PROP_LOLO_LEVEL, meta.getLowerAlarmLimit());
}
}
}
}
};
pv.addListener(pvLoadLimitsListener);
}
}
}
}
use of org.csstudio.simplepv.IPV in project yamcs-studio by yamcs.
the class ArrayEditPart method registerLoadPVDataTypeListener.
private void registerLoadPVDataTypeListener() {
if (getExecutionMode() == ExecutionMode.RUN_MODE) {
final ArrayModel model = getWidgetModel();
IPV pv = getPV();
if (pv != null) {
if (pvDataTypeListener == null)
pvDataTypeListener = new IPVListener.Stub() {
@Override
public void valueChanged(IPV pv) {
VType value = pv.getValue();
if (value != null) {
model.setArrayLength(VTypeHelper.getSize(value));
BasicDataType dataType = VTypeHelper.getBasicDataType(value);
model.setPropertyValue(ArrayModel.PROP_DATA_TYPE, mapBasicDataTypeToArrayType(dataType));
}
}
};
pv.addListener(pvDataTypeListener);
}
}
}
Aggregations