Search in sources :

Example 41 with VType

use of org.diirt.vtype.VType in project yamcs-studio by yamcs.

the class AbstractScaledWidgetEditPart method registerCommonPropertyChangeHandlers.

/**
 * Registers property change handlers for the properties defined in {@link AbstractScaledWidgetModel}. This method
 * is provided for the convenience of subclasses, which can call this method in their implementation of
 * {@link #registerPropertyChangeHandlers()}.
 */
protected void registerCommonPropertyChangeHandlers() {
    // value
    IWidgetPropertyChangeHandler valueHandler = new IWidgetPropertyChangeHandler() {

        @Override
        public boolean handleChange(final Object oldValue, final Object newValue, final IFigure refreshableFigure) {
            if (newValue == null)
                return false;
            AbstractScaledWidgetFigure figure = (AbstractScaledWidgetFigure) refreshableFigure;
            figure.setValue(VTypeHelper.getDouble((VType) newValue));
            return false;
        }
    };
    setPropertyChangeHandler(AbstractPVWidgetModel.PROP_PVVALUE, valueHandler);
    // minimum
    IWidgetPropertyChangeHandler minimumHandler = new IWidgetPropertyChangeHandler() {

        @Override
        public boolean handleChange(final Object oldValue, final Object newValue, final IFigure refreshableFigure) {
            AbstractScaledWidgetFigure figure = (AbstractScaledWidgetFigure) refreshableFigure;
            figure.setRange((Double) newValue, ((AbstractScaledWidgetModel) getModel()).getMaximum());
            return false;
        }
    };
    setPropertyChangeHandler(AbstractScaledWidgetModel.PROP_MIN, minimumHandler);
    // maximum
    IWidgetPropertyChangeHandler maximumHandler = new IWidgetPropertyChangeHandler() {

        @Override
        public boolean handleChange(final Object oldValue, final Object newValue, final IFigure refreshableFigure) {
            AbstractScaledWidgetFigure figure = (AbstractScaledWidgetFigure) refreshableFigure;
            figure.setRange(((AbstractScaledWidgetModel) getModel()).getMinimum(), (Double) newValue);
            return false;
        }
    };
    setPropertyChangeHandler(AbstractScaledWidgetModel.PROP_MAX, maximumHandler);
    // major tick step hint
    IWidgetPropertyChangeHandler majorTickHandler = new IWidgetPropertyChangeHandler() {

        @Override
        public boolean handleChange(final Object oldValue, final Object newValue, final IFigure refreshableFigure) {
            AbstractScaledWidgetFigure figure = (AbstractScaledWidgetFigure) refreshableFigure;
            figure.setMajorTickMarkStepHint((Integer) newValue);
            return false;
        }
    };
    setPropertyChangeHandler(AbstractScaledWidgetModel.PROP_MAJOR_TICK_STEP_HINT, majorTickHandler);
    // logScale
    IWidgetPropertyChangeHandler logScaleHandler = new IWidgetPropertyChangeHandler() {

        @Override
        public boolean handleChange(final Object oldValue, final Object newValue, final IFigure refreshableFigure) {
            AbstractScaledWidgetFigure figure = (AbstractScaledWidgetFigure) refreshableFigure;
            figure.setLogScale((Boolean) newValue);
            return false;
        }
    };
    setPropertyChangeHandler(AbstractScaledWidgetModel.PROP_LOG_SCALE, logScaleHandler);
    // showScale
    IWidgetPropertyChangeHandler showScaleHandler = new IWidgetPropertyChangeHandler() {

        @Override
        public boolean handleChange(final Object oldValue, final Object newValue, final IFigure refreshableFigure) {
            AbstractScaledWidgetFigure figure = (AbstractScaledWidgetFigure) refreshableFigure;
            figure.setShowScale((Boolean) newValue);
            return false;
        }
    };
    setPropertyChangeHandler(AbstractScaledWidgetModel.PROP_SHOW_SCALE, showScaleHandler);
    // showMinorTicks
    IWidgetPropertyChangeHandler showMinorTicksHandler = new IWidgetPropertyChangeHandler() {

        @Override
        public boolean handleChange(final Object oldValue, final Object newValue, final IFigure refreshableFigure) {
            AbstractScaledWidgetFigure figure = (AbstractScaledWidgetFigure) refreshableFigure;
            figure.setShowMinorTicks((Boolean) newValue);
            return false;
        }
    };
    setPropertyChangeHandler(AbstractScaledWidgetModel.PROP_SHOW_MINOR_TICKS, showMinorTicksHandler);
    // Transparent
    IWidgetPropertyChangeHandler transparentHandler = new IWidgetPropertyChangeHandler() {

        @Override
        public boolean handleChange(final Object oldValue, final Object newValue, final IFigure refreshableFigure) {
            AbstractScaledWidgetFigure figure = (AbstractScaledWidgetFigure) refreshableFigure;
            figure.setTransparent((Boolean) newValue);
            return false;
        }
    };
    setPropertyChangeHandler(AbstractScaledWidgetModel.PROP_TRANSPARENT, transparentHandler);
    IWidgetPropertyChangeHandler scaleFontHandler = new IWidgetPropertyChangeHandler() {

        @Override
        public boolean handleChange(Object oldValue, Object newValue, IFigure refreshableFigure) {
            AbstractScaledWidgetFigure figure = (AbstractScaledWidgetFigure) refreshableFigure;
            figure.getScale().setFont(((OPIFont) newValue).getSWTFont());
            return false;
        }
    };
    setPropertyChangeHandler(AbstractScaledWidgetModel.PROP_SCALE_FONT, scaleFontHandler);
    // scale format
    IWidgetPropertyChangeHandler numericFormatHandler = new IWidgetPropertyChangeHandler() {

        @Override
        public boolean handleChange(Object oldValue, Object newValue, IFigure figure) {
            AbstractScaledWidgetFigure scaleFigure = (AbstractScaledWidgetFigure) figure;
            setScaleFormat(scaleFigure, (String) newValue);
            return false;
        }
    };
    setPropertyChangeHandler(AbstractScaledWidgetModel.PROP_SCALE_FORMAT, numericFormatHandler);
    // value label format
    IWidgetPropertyChangeHandler valueFormatHandler = new IWidgetPropertyChangeHandler() {

        @Override
        public boolean handleChange(Object oldValue, Object newValue, IFigure figure) {
            AbstractScaledWidgetFigure scaleFigure = (AbstractScaledWidgetFigure) figure;
            setValueLabelFormat(scaleFigure, (String) newValue);
            return false;
        }
    };
    setPropertyChangeHandler(AbstractScaledWidgetModel.PROP_VALUE_LABEL_FORMAT, valueFormatHandler);
}
Also used : VType(org.diirt.vtype.VType) AbstractScaledWidgetFigure(org.csstudio.swt.widgets.figures.AbstractScaledWidgetFigure) IWidgetPropertyChangeHandler(org.csstudio.opibuilder.properties.IWidgetPropertyChangeHandler) IFigure(org.eclipse.draw2d.IFigure)

Example 42 with VType

use of org.diirt.vtype.VType 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)

Example 43 with VType

use of org.diirt.vtype.VType in project yamcs-studio by yamcs.

the class ByteMonitorEditPart method registerPropertyChangeHandlers.

/* (non-Javadoc)
     * @see org.csstudio.opibuilder.editparts.AbstractBaseEditPart#registerPropertyChangeHandlers()
     */
@Override
protected void registerPropertyChangeHandlers() {
    super.registerBasePropertyChangeHandlers();
    getFigure().setEnabled(getWidgetModel().isEnabled() && (getExecutionMode() == ExecutionMode.RUN_MODE));
    removeAllPropertyChangeHandlers(AbstractWidgetModel.PROP_ENABLED);
    // enable
    IWidgetPropertyChangeHandler enableHandler = new IWidgetPropertyChangeHandler() {

        public boolean handleChange(Object oldValue, Object newValue, IFigure figure) {
            if (getExecutionMode() == ExecutionMode.RUN_MODE)
                figure.setEnabled((Boolean) newValue);
            return false;
        }
    };
    setPropertyChangeHandler(AbstractWidgetModel.PROP_ENABLED, enableHandler);
    // PV_Value
    IWidgetPropertyChangeHandler pvhandler = new IWidgetPropertyChangeHandler() {

        @Override
        public boolean handleChange(final Object oldValue, final Object newValue, final IFigure refreshableFigure) {
            boolean succeed = true;
            if ((newValue != null) && (newValue instanceof VType)) {
                Number number = VTypeHelper.getNumber(((VType) newValue));
                if (number != null) {
                    setValue(number);
                } else
                    succeed = false;
            } else {
                succeed = false;
            }
            if (!succeed) {
                setValue(0);
                ConsoleUtil.writeError(NLS.bind("{0} does not accept non-numeric value.", getWidgetModel().getName()));
            }
            return false;
        }
    };
    setPropertyChangeHandler(ByteMonitorModel.PROP_PVVALUE, pvhandler);
    // on color
    IWidgetPropertyChangeHandler colorHandler = new IWidgetPropertyChangeHandler() {

        @Override
        public boolean handleChange(final Object oldValue, final Object newValue, final IFigure refreshableFigure) {
            ByteMonitorFigure figure = (ByteMonitorFigure) refreshableFigure;
            figure.setOnColor(((OPIColor) newValue).getSWTColor());
            figure.drawValue();
            return true;
        }
    };
    setPropertyChangeHandler(ByteMonitorModel.PROP_ON_COLOR, colorHandler);
    // off color
    colorHandler = new IWidgetPropertyChangeHandler() {

        @Override
        public boolean handleChange(final Object oldValue, final Object newValue, final IFigure refreshableFigure) {
            ByteMonitorFigure figure = (ByteMonitorFigure) refreshableFigure;
            figure.setOffColor(((OPIColor) newValue).getSWTColor());
            figure.drawValue();
            return true;
        }
    };
    setPropertyChangeHandler(ByteMonitorModel.PROP_OFF_COLOR, colorHandler);
    // change orientation of the bit display
    IWidgetPropertyChangeHandler horizontalHandler = new IWidgetPropertyChangeHandler() {

        @Override
        public boolean handleChange(Object oldValue, Object newValue, IFigure refreshableFigure) {
            ByteMonitorFigure figure = (ByteMonitorFigure) refreshableFigure;
            figure.setHorizontal((Boolean) newValue);
            ByteMonitorModel model = getWidgetModel();
            if (// from vertical to horizontal
            (Boolean) newValue)
                model.setLocation(model.getLocation().x - model.getSize().height / 2 + model.getSize().width / 2, model.getLocation().y + model.getSize().height / 2 - model.getSize().width / 2);
            else
                // from horizontal to vertical
                model.setLocation(model.getLocation().x + model.getSize().width / 2 - model.getSize().height / 2, model.getLocation().y - model.getSize().width / 2 + model.getSize().height / 2);
            model.setSize(model.getSize().height, model.getSize().width);
            figure.drawValue();
            return true;
        }
    };
    setPropertyChangeHandler(ByteMonitorModel.PROP_HORIZONTAL, horizontalHandler);
    // change the display order of the bits
    IWidgetPropertyChangeHandler reverseBitsHandler = new IWidgetPropertyChangeHandler() {

        @Override
        public boolean handleChange(Object oldValue, Object newValue, IFigure refreshableFigure) {
            ByteMonitorFigure figure = (ByteMonitorFigure) refreshableFigure;
            figure.setReverseBits((Boolean) newValue);
            figure.drawValue();
            return true;
        }
    };
    setPropertyChangeHandler(ByteMonitorModel.PROP_BIT_REVERSE, reverseBitsHandler);
    // Set the bit to use as a starting point
    IWidgetPropertyChangeHandler startBitHandler = new IWidgetPropertyChangeHandler() {

        @Override
        public boolean handleChange(Object oldValue, Object newValue, IFigure refreshableFigure) {
            ByteMonitorFigure figure = (ByteMonitorFigure) refreshableFigure;
            figure.setStartBit((Integer) newValue);
            figure.drawValue();
            return true;
        }
    };
    setPropertyChangeHandler(ByteMonitorModel.PROP_START_BIT, startBitHandler);
    // Set the number of bits to display
    IWidgetPropertyChangeHandler numBitsHandler = new IWidgetPropertyChangeHandler() {

        @Override
        public boolean handleChange(Object oldValue, Object newValue, IFigure refreshableFigure) {
            ByteMonitorFigure figure = (ByteMonitorFigure) refreshableFigure;
            figure.setNumBits((Integer) newValue);
            figure.drawValue();
            return true;
        }
    };
    setPropertyChangeHandler(ByteMonitorModel.PROP_NUM_BITS, numBitsHandler);
    // Square LED
    IWidgetPropertyChangeHandler squareLEDHandler = new IWidgetPropertyChangeHandler() {

        @Override
        public boolean handleChange(final Object oldValue, final Object newValue, final IFigure refreshableFigure) {
            ByteMonitorFigure bm = (ByteMonitorFigure) refreshableFigure;
            bm.setSquareLED((Boolean) newValue);
            return true;
        }
    };
    setPropertyChangeHandler(ByteMonitorModel.PROP_SQUARE_LED, squareLEDHandler);
    // LED spacing
    IWidgetPropertyChangeHandler ledBorderWidthHandler = new IWidgetPropertyChangeHandler() {

        @Override
        public boolean handleChange(final Object oldValue, final Object newValue, final IFigure refreshableFigure) {
            ByteMonitorFigure bm = (ByteMonitorFigure) refreshableFigure;
            bm.setLedBorderWidth((int) newValue);
            return true;
        }
    };
    setPropertyChangeHandler(ByteMonitorModel.PROP_LED_BORDER, ledBorderWidthHandler);
    // LED border color
    IWidgetPropertyChangeHandler ledBorderColorHandler = new IWidgetPropertyChangeHandler() {

        @Override
        public boolean handleChange(final Object oldValue, final Object newValue, final IFigure refreshableFigure) {
            ByteMonitorFigure bm = (ByteMonitorFigure) refreshableFigure;
            bm.setLedBorderColor(((OPIColor) newValue).getSWTColor());
            return true;
        }
    };
    setPropertyChangeHandler(ByteMonitorModel.PROP_LED_BORDER_COLOR, ledBorderColorHandler);
    // effect 3D
    IWidgetPropertyChangeHandler effect3DHandler = new IWidgetPropertyChangeHandler() {

        @Override
        public boolean handleChange(final Object oldValue, final Object newValue, final IFigure refreshableFigure) {
            ByteMonitorFigure bmFig = (ByteMonitorFigure) refreshableFigure;
            bmFig.setEffect3D((Boolean) newValue);
            return true;
        }
    };
    setPropertyChangeHandler(ByteMonitorModel.PROP_EFFECT3D, effect3DHandler);
    // labels
    IWidgetPropertyChangeHandler labelsHandler = new IWidgetPropertyChangeHandler() {

        @Override
        public boolean handleChange(final Object oldValue, final Object newValue, final IFigure refreshableFigure) {
            ByteMonitorFigure bmFig = (ByteMonitorFigure) refreshableFigure;
            ByteMonitorModel model = getWidgetModel();
            bmFig.setLabels(model.getLabels());
            return true;
        }
    };
    setPropertyChangeHandler(ByteMonitorModel.PROP_LABELS, labelsHandler);
    // Set the LED rendering style
    IWidgetPropertyChangeHandler packHandler = new IWidgetPropertyChangeHandler() {

        @Override
        public boolean handleChange(Object oldValue, Object newValue, IFigure refreshableFigure) {
            ByteMonitorFigure figure = (ByteMonitorFigure) refreshableFigure;
            figure.setPackedLEDs((Boolean) newValue);
            figure.drawValue();
            return true;
        }
    };
    setPropertyChangeHandler(ByteMonitorModel.PROP_PACK_LEDS, packHandler);
}
Also used : ByteMonitorFigure(org.csstudio.swt.widgets.figures.ByteMonitorFigure) VType(org.diirt.vtype.VType) IWidgetPropertyChangeHandler(org.csstudio.opibuilder.properties.IWidgetPropertyChangeHandler) ByteMonitorModel(org.csstudio.opibuilder.widgets.model.ByteMonitorModel) OPIColor(org.csstudio.opibuilder.util.OPIColor) IFigure(org.eclipse.draw2d.IFigure)

Example 44 with VType

use of org.diirt.vtype.VType in project yamcs-studio by yamcs.

the class ComboEditPart 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> items = ((VEnum) value).getLabels();
                                getWidgetModel().setPropertyValue(ComboModel.PROP_ITEMS, items);
                            }
                        }
                    };
                pv.addListener(loadItemsFromPVListener);
            }
        }
    }
}
Also used : VType(org.diirt.vtype.VType) VEnum(org.diirt.vtype.VEnum) IPV(org.csstudio.simplepv.IPV)

Example 45 with VType

use of org.diirt.vtype.VType in project yamcs-studio by yamcs.

the class ComboEditPart method updateCombo.

/**
 * @param items
 */
private void updateCombo(List<String> items) {
    if (items != null && getExecutionMode() == ExecutionMode.RUN_MODE) {
        combo.removeAll();
        for (String item : items) {
            combo.add(item);
        }
        // write value to pv if pv name is not empty
        if (getWidgetModel().getPVName().trim().length() > 0) {
            if (comboSelectionListener != null)
                combo.removeSelectionListener(comboSelectionListener);
            comboSelectionListener = new SelectionAdapter() {

                @Override
                public void widgetSelected(SelectionEvent e) {
                    // by clicking on an item.
                    if (e.stateMask == SWT.BUTTON1)
                        setPVValue(AbstractPVWidgetModel.PROP_PVNAME, combo.getText());
                    else {
                        // Ignore selections from mouse wheel (stateMask == 0).
                        // Unfortunately this also ignores selections via keyboard,
                        // which has been discussed in
                        // https://github.com/ControlSystemStudio/cs-studio/issues/2276
                        // Restore current value to UI.
                        final String current = VTypeHelper.getString((VType) getPropertyValue(ComboModel.PROP_PVVALUE));
                        final int sel = Arrays.asList(combo.getItems()).indexOf(current);
                        if (sel >= 0)
                            combo.select(sel);
                        else
                            combo.deselectAll();
                    }
                }
            };
            combo.addSelectionListener(comboSelectionListener);
        }
    }
}
Also used : VType(org.diirt.vtype.VType) SelectionAdapter(org.eclipse.swt.events.SelectionAdapter) SelectionEvent(org.eclipse.swt.events.SelectionEvent)

Aggregations

VType (org.diirt.vtype.VType)76 Test (org.junit.Test)17 IWidgetPropertyChangeHandler (org.csstudio.opibuilder.properties.IWidgetPropertyChangeHandler)10 IFigure (org.eclipse.draw2d.IFigure)10 IPV (org.csstudio.simplepv.IPV)9 VEnum (org.diirt.vtype.VEnum)8 ArrayList (java.util.ArrayList)7 Display (org.diirt.vtype.Display)7 ListNumber (org.diirt.util.array.ListNumber)6 VNumberArray (org.diirt.vtype.VNumberArray)6 VString (org.diirt.vtype.VString)6 PropertyChangeEvent (java.beans.PropertyChangeEvent)5 PropertyChangeListener (java.beans.PropertyChangeListener)5 Instant (java.time.Instant)5 List (java.util.List)5 ModelItem (org.csstudio.trends.databrowser3.model.ModelItem)5 RuntimePV (org.csstudio.display.builder.runtime.pv.RuntimePV)4 RuntimePVListener (org.csstudio.display.builder.runtime.pv.RuntimePVListener)4 CopyOnWriteArrayList (java.util.concurrent.CopyOnWriteArrayList)3 ValueIterator (org.csstudio.archive.reader.ValueIterator)3