Search in sources :

Example 6 with IPV

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);
            }
        }
    }
}
Also used : VType(org.diirt.vtype.VType) ScrollBarModel(org.csstudio.opibuilder.widgets.model.ScrollBarModel) IPV(org.csstudio.simplepv.IPV) Display(org.diirt.vtype.Display)

Example 7 with IPV

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);
            }
        }
    }
}
Also used : VType(org.diirt.vtype.VType) TextInputModel(org.csstudio.opibuilder.widgets.model.TextInputModel) IPV(org.csstudio.simplepv.IPV)

Example 8 with IPV

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);
            }
        }
    }
}
Also used : VType(org.diirt.vtype.VType) VEnum(org.diirt.vtype.VEnum) IPV(org.csstudio.simplepv.IPV)

Example 9 with IPV

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);
            }
        }
    }
}
Also used : VType(org.diirt.vtype.VType) AbstractMarkedWidgetModel(org.csstudio.opibuilder.widgets.model.AbstractMarkedWidgetModel) IPV(org.csstudio.simplepv.IPV) Display(org.diirt.vtype.Display)

Example 10 with IPV

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);
        }
    }
}
Also used : VType(org.diirt.vtype.VType) BasicDataType(org.csstudio.simplepv.BasicDataType) ArrayModel(org.csstudio.opibuilder.widgets.model.ArrayModel) IPV(org.csstudio.simplepv.IPV)

Aggregations

IPV (org.csstudio.simplepv.IPV)21 VType (org.diirt.vtype.VType)9 Display (org.diirt.vtype.Display)4 VEnum (org.diirt.vtype.VEnum)3 StringProperty (org.csstudio.opibuilder.properties.StringProperty)2 ScriptData (org.csstudio.opibuilder.script.ScriptData)2 ActionsInput (org.csstudio.opibuilder.widgetActions.ActionsInput)2 PropertyChangeEvent (java.beans.PropertyChangeEvent)1 PropertyChangeListener (java.beans.PropertyChangeListener)1 FileNotFoundException (java.io.FileNotFoundException)1 InputStream (java.io.InputStream)1 AbstractBaseEditPart (org.csstudio.opibuilder.editparts.AbstractBaseEditPart)1 AbstractLinkingContainerModel (org.csstudio.opibuilder.model.AbstractLinkingContainerModel)1 AbstractWidgetModel (org.csstudio.opibuilder.model.AbstractWidgetModel)1 DisplayModel (org.csstudio.opibuilder.model.DisplayModel)1 AbstractWidgetProperty (org.csstudio.opibuilder.properties.AbstractWidgetProperty)1 IWidgetPropertyChangeHandler (org.csstudio.opibuilder.properties.IWidgetPropertyChangeHandler)1 PVValueProperty (org.csstudio.opibuilder.properties.PVValueProperty)1 WidgetPropertyChangeListener (org.csstudio.opibuilder.properties.WidgetPropertyChangeListener)1 PVTuple (org.csstudio.opibuilder.script.PVTuple)1