Search in sources :

Example 11 with VType

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

the class CheckBoxEditPart method registerPropertyChangeHandlers.

@Override
protected void registerPropertyChangeHandlers() {
    // value
    IWidgetPropertyChangeHandler handler = new IWidgetPropertyChangeHandler() {

        @Override
        public boolean handleChange(final Object oldValue, final Object newValue, final IFigure refreshableFigure) {
            if (newValue == null)
                return false;
            CheckBoxFigure figure = (CheckBoxFigure) refreshableFigure;
            switch(VTypeHelper.getBasicDataType((VType) newValue)) {
                case SHORT:
                    figure.setTotalBits(TotalBits.BITS_16);
                    break;
                case INT:
                case ENUM:
                    figure.setTotalBits(TotalBits.BITS_32);
                    break;
                default:
                    break;
            }
            figure.setValue(VTypeHelper.getDouble((VType) newValue));
            return true;
        }
    };
    setPropertyChangeHandler(AbstractPVWidgetModel.PROP_PVVALUE, handler);
    // bit
    handler = new IWidgetPropertyChangeHandler() {

        @Override
        public boolean handleChange(final Object oldValue, final Object newValue, final IFigure refreshableFigure) {
            CheckBoxFigure figure = (CheckBoxFigure) refreshableFigure;
            figure.setBit((Integer) newValue);
            return true;
        }
    };
    setPropertyChangeHandler(CheckBoxModel.PROP_BIT, handler);
    // label
    handler = new IWidgetPropertyChangeHandler() {

        @Override
        public boolean handleChange(final Object oldValue, final Object newValue, final IFigure refreshableFigure) {
            CheckBoxFigure figure = (CheckBoxFigure) refreshableFigure;
            figure.setText((String) newValue);
            Display.getCurrent().timerExec(10, new Runnable() {

                @Override
                public void run() {
                    if (getWidgetModel().isAutoSize())
                        performAutoSize(refreshableFigure);
                }
            });
            return true;
        }
    };
    setPropertyChangeHandler(CheckBoxModel.PROP_LABEL, handler);
    handler = new IWidgetPropertyChangeHandler() {

        @Override
        public boolean handleChange(Object oldValue, Object newValue, IFigure figure) {
            if ((Boolean) newValue) {
                performAutoSize(figure);
                figure.revalidate();
            }
            return true;
        }
    };
    setPropertyChangeHandler(CheckBoxModel.PROP_AUTOSIZE, handler);
    handler = new IWidgetPropertyChangeHandler() {

        @Override
        public boolean handleChange(Object oldValue, Object newValue, IFigure figure) {
            ((CheckBoxFigure) figure).setSelectedColor(getWidgetModel().getSelectedColor().getSWTColor());
            return true;
        }
    };
    setPropertyChangeHandler(CheckBoxModel.PROP_SELECTED_COLOR, handler);
    handler = new IWidgetPropertyChangeHandler() {

        @Override
        public boolean handleChange(Object oldValue, Object newValue, final IFigure figure) {
            Display.getCurrent().timerExec(10, new Runnable() {

                @Override
                public void run() {
                    if (getWidgetModel().isAutoSize()) {
                        performAutoSize(figure);
                        figure.revalidate();
                    }
                }
            });
            return true;
        }
    };
    setPropertyChangeHandler(CheckBoxModel.PROP_FONT, handler);
    setPropertyChangeHandler(AbstractWidgetModel.PROP_BORDER_STYLE, handler);
    setPropertyChangeHandler(AbstractWidgetModel.PROP_BORDER_WIDTH, handler);
}
Also used : VType(org.diirt.vtype.VType) IWidgetPropertyChangeHandler(org.csstudio.opibuilder.properties.IWidgetPropertyChangeHandler) CheckBoxFigure(org.csstudio.swt.widgets.figures.CheckBoxFigure) IFigure(org.eclipse.draw2d.IFigure)

Example 12 with VType

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

the class IntensityGraphEditPart method registerPropertyChangeHandlers.

@Override
protected void registerPropertyChangeHandlers() {
    innerUpdateGraphAreaSizeProperty();
    registerAxisPropertyChangeHandler();
    registerROIPropertyChangeHandlers();
    registerROIAmountChangeHandler();
    IWidgetPropertyChangeHandler handler = new IWidgetPropertyChangeHandler() {

        @Override
        public boolean handleChange(Object oldValue, Object newValue, IFigure figure) {
            if (newValue == null)
                return false;
            VType value = (VType) newValue;
            if (value instanceof VNumberArray) {
                setValue(((VNumberArray) value).getData());
                return false;
            }
            ((IntensityGraphFigure) figure).setDataArray(VTypeHelper.getDoubleArray(value));
            return false;
        }
    };
    setPropertyChangeHandler(AbstractPVWidgetModel.PROP_PVVALUE, handler);
    getWidgetModel().getProperty(IntensityGraphModel.PROP_MIN).addPropertyChangeListener(new PropertyChangeListener() {

        @Override
        public void propertyChange(PropertyChangeEvent evt) {
            ((IntensityGraphFigure) figure).setMin((Double) evt.getNewValue());
            figure.repaint();
            innerUpdateGraphAreaSizeProperty();
        }
    });
    getWidgetModel().getProperty(IntensityGraphModel.PROP_MAX).addPropertyChangeListener(new PropertyChangeListener() {

        @Override
        public void propertyChange(PropertyChangeEvent evt) {
            ((IntensityGraphFigure) figure).setMax((Double) evt.getNewValue());
            figure.repaint();
            innerUpdateGraphAreaSizeProperty();
        }
    });
    getWidgetModel().getProperty(IntensityGraphModel.PROP_BORDER_STYLE).removeAllPropertyChangeListeners();
    getWidgetModel().getProperty(IntensityGraphModel.PROP_BORDER_STYLE).addPropertyChangeListener(new PropertyChangeListener() {

        @Override
        public void propertyChange(PropertyChangeEvent evt) {
            figure.setBorder(BorderFactory.createBorder(BorderStyle.values()[(Integer) evt.getNewValue()], getWidgetModel().getBorderWidth(), getWidgetModel().getBorderColor(), getWidgetModel().getName()));
            innerUpdateGraphAreaSizeProperty();
        }
    });
    getWidgetModel().getProperty(IntensityGraphModel.PROP_BORDER_WIDTH).removeAllPropertyChangeListeners();
    getWidgetModel().getProperty(IntensityGraphModel.PROP_BORDER_WIDTH).addPropertyChangeListener(new PropertyChangeListener() {

        @Override
        public void propertyChange(PropertyChangeEvent evt) {
            figure.setBorder(BorderFactory.createBorder(getWidgetModel().getBorderStyle(), (Integer) evt.getNewValue(), getWidgetModel().getBorderColor(), getWidgetModel().getName()));
            innerUpdateGraphAreaSizeProperty();
        }
    });
    handler = new IWidgetPropertyChangeHandler() {

        @Override
        public boolean handleChange(Object oldValue, Object newValue, IFigure figure) {
            ((IntensityGraphFigure) figure).setDataWidth((Integer) newValue);
            return true;
        }
    };
    setPropertyChangeHandler(IntensityGraphModel.PROP_DATA_WIDTH, handler);
    handler = new IWidgetPropertyChangeHandler() {

        @Override
        public boolean handleChange(Object oldValue, Object newValue, IFigure figure) {
            ((IntensityGraphFigure) figure).setDataHeight((Integer) newValue);
            return true;
        }
    };
    setPropertyChangeHandler(IntensityGraphModel.PROP_DATA_HEIGHT, handler);
    handler = new IWidgetPropertyChangeHandler() {

        @Override
        public boolean handleChange(Object oldValue, Object newValue, IFigure figure) {
            ((IntensityGraphFigure) figure).setColorMap((ColorMap) newValue);
            return true;
        }
    };
    setPropertyChangeHandler(IntensityGraphModel.PROP_COLOR_MAP, handler);
    handler = new IWidgetPropertyChangeHandler() {

        @Override
        public boolean handleChange(Object oldValue, Object newValue, IFigure figure) {
            ((IntensityGraphFigure) figure).setCropLeft((Integer) newValue);
            return true;
        }
    };
    setPropertyChangeHandler(IntensityGraphModel.PROP_CROP_LEFT, handler);
    handler = new IWidgetPropertyChangeHandler() {

        @Override
        public boolean handleChange(Object oldValue, Object newValue, IFigure figure) {
            ((IntensityGraphFigure) figure).setCropRight((Integer) newValue);
            return true;
        }
    };
    setPropertyChangeHandler(IntensityGraphModel.PROP_CROP_RIGHT, handler);
    handler = new IWidgetPropertyChangeHandler() {

        @Override
        public boolean handleChange(Object oldValue, Object newValue, IFigure figure) {
            ((IntensityGraphFigure) figure).setCropTop((Integer) newValue);
            return true;
        }
    };
    setPropertyChangeHandler(IntensityGraphModel.PROP_CROP_TOP, handler);
    handler = new IWidgetPropertyChangeHandler() {

        @Override
        public boolean handleChange(Object oldValue, Object newValue, IFigure figure) {
            ((IntensityGraphFigure) figure).setCropBottom((Integer) newValue);
            return true;
        }
    };
    setPropertyChangeHandler(IntensityGraphModel.PROP_CROP_BOTTOM, handler);
    getWidgetModel().getProperty(IntensityGraphModel.PROP_SHOW_RAMP).addPropertyChangeListener(new PropertyChangeListener() {

        @Override
        public void propertyChange(PropertyChangeEvent evt) {
            ((IntensityGraphFigure) getFigure()).setShowRamp((Boolean) evt.getNewValue());
            Dimension d = ((IntensityGraphFigure) getFigure()).getGraphAreaInsets();
            innerTrig = true;
            getWidgetModel().setPropertyValue(IntensityGraphModel.PROP_GRAPH_AREA_WIDTH, getWidgetModel().getWidth() - d.width);
            innerTrig = false;
        }
    });
    getWidgetModel().getProperty(IntensityGraphModel.PROP_WIDTH).addPropertyChangeListener(new PropertyChangeListener() {

        @Override
        public void propertyChange(PropertyChangeEvent evt) {
            if (!innerTrig) {
                // if it is not triggered from inner
                innerTrig = true;
                Dimension d = ((IntensityGraphFigure) getFigure()).getGraphAreaInsets();
                getWidgetModel().setPropertyValue(IntensityGraphModel.PROP_GRAPH_AREA_WIDTH, ((Integer) evt.getNewValue()) - d.width);
                // reset innerTrig to false after each inner triggering
                innerTrig = false;
            } else
                // if it is triggered from inner, do nothing
                innerTrig = false;
        }
    });
    getWidgetModel().getProperty(IntensityGraphModel.PROP_GRAPH_AREA_WIDTH).addPropertyChangeListener(new PropertyChangeListener() {

        @Override
        public void propertyChange(PropertyChangeEvent evt) {
            if (!innerTrig) {
                innerTrig = true;
                Dimension d = ((IntensityGraphFigure) getFigure()).getGraphAreaInsets();
                getWidgetModel().setPropertyValue(IntensityGraphModel.PROP_WIDTH, ((Integer) evt.getNewValue()) + d.width);
                // reset innerTrig to false after each inner triggering
                innerTrig = false;
            } else
                innerTrig = false;
        }
    });
    getWidgetModel().getProperty(IntensityGraphModel.PROP_HEIGHT).addPropertyChangeListener(new PropertyChangeListener() {

        @Override
        public void propertyChange(PropertyChangeEvent evt) {
            if (!innerTrig) {
                innerTrig = true;
                Dimension d = ((IntensityGraphFigure) getFigure()).getGraphAreaInsets();
                getWidgetModel().setPropertyValue(IntensityGraphModel.PROP_GRAPH_AREA_HEIGHT, ((Integer) evt.getNewValue()) - d.height);
                // reset innerTrig to false after each inner triggering
                innerTrig = false;
            } else
                innerTrig = false;
        }
    });
    getWidgetModel().getProperty(IntensityGraphModel.PROP_GRAPH_AREA_HEIGHT).addPropertyChangeListener(new PropertyChangeListener() {

        @Override
        public void propertyChange(PropertyChangeEvent evt) {
            if (!innerTrig) {
                innerTrig = true;
                Dimension d = ((IntensityGraphFigure) getFigure()).getGraphAreaInsets();
                getWidgetModel().setPropertyValue(IntensityGraphModel.PROP_HEIGHT, ((Integer) evt.getNewValue()) + d.height);
                // reset innerTrig to false after each inner triggering
                innerTrig = false;
            } else
                innerTrig = false;
        }
    });
    getWidgetModel().getProperty(IntensityGraphModel.PROP_RGB_MODE).addPropertyChangeListener(new PropertyChangeListener() {

        @Override
        public void propertyChange(PropertyChangeEvent evt) {
            updatePropSheet();
            ((IntensityGraphFigure) getFigure()).setInRGBMode((Boolean) (evt.getNewValue()));
        }
    });
    handler = new IWidgetPropertyChangeHandler() {

        @Override
        public boolean handleChange(Object oldValue, Object newValue, IFigure figure) {
            ((IntensityGraphFigure) getFigure()).setColorDepth(getWidgetModel().getColorDepth());
            return false;
        }
    };
    setPropertyChangeHandler(IntensityGraphModel.PROP_COLOR_DEPTH, handler);
    handler = new IWidgetPropertyChangeHandler() {

        @Override
        public boolean handleChange(Object oldValue, Object newValue, IFigure figure) {
            ((IntensityGraphFigure) getFigure()).setSingleLineProfiling((Boolean) newValue);
            return false;
        }
    };
    setPropertyChangeHandler(IntensityGraphModel.PROP_SINGLE_LINE_PROFILING, handler);
    handler = new IWidgetPropertyChangeHandler() {

        @Override
        public boolean handleChange(Object oldValue, Object newValue, IFigure figure) {
            ((IntensityGraphFigure) getFigure()).setROIColor(((OPIColor) newValue).getSWTColor());
            return false;
        }
    };
    setPropertyChangeHandler(IntensityGraphModel.PROP_ROI_COLOR, handler);
}
Also used : PropertyChangeEvent(java.beans.PropertyChangeEvent) PropertyChangeListener(java.beans.PropertyChangeListener) ColorMap(org.csstudio.swt.widgets.datadefinition.ColorMap) PredefinedColorMap(org.csstudio.swt.widgets.datadefinition.ColorMap.PredefinedColorMap) Dimension(org.eclipse.draw2d.geometry.Dimension) ArrayDouble(org.diirt.util.array.ArrayDouble) VNumberArray(org.diirt.vtype.VNumberArray) IntensityGraphFigure(org.csstudio.swt.widgets.figures.IntensityGraphFigure) VType(org.diirt.vtype.VType) IWidgetPropertyChangeHandler(org.csstudio.opibuilder.properties.IWidgetPropertyChangeHandler) OPIColor(org.csstudio.opibuilder.util.OPIColor) IFigure(org.eclipse.draw2d.IFigure)

Example 13 with VType

use of org.diirt.vtype.VType in project org.csstudio.display.builder by kasemir.

the class PVSamplesUnitTest method testPVSamples.

@Test
public void testPVSamples() {
    final AtomicInteger waveform_index = new AtomicInteger(0);
    // Start w/ empty PVSamples
    final PVSamples samples = new PVSamples(waveform_index);
    assertEquals(0, samples.size());
    // Add 'historic' samples
    final List<VType> history = new ArrayList<VType>();
    for (int i = 0; i < 10; ++i) history.add(TestHelper.makeValue(i));
    samples.mergeArchivedData("Test", history);
    // PVSamples include continuation until 'now'
    System.out.println(samples.toString());
    assertEquals(history.size() + 1, samples.size());
    // Add 2 'live' samples
    samples.addLiveSample(TestHelper.makeValue(samples.size()));
    samples.addLiveSample(TestHelper.makeValue(samples.size()));
    // PVSamples include history, live, continuation until 'now'
    System.out.println(samples.toString());
    assertEquals(history.size() + 3, samples.size());
    // Add a non-numeric sample
    samples.addLiveSample(TestHelper.makeError(samples.size(), "Disconnected"));
    // PVSamples include history, live, NO continuation
    System.out.println(samples.toString());
    assertEquals(history.size() + 3, samples.size());
    // Check if the history.setBorderTime() update works
    // Create 'history' data from 0 to 20.
    history.clear();
    for (int i = 0; i < 21; ++i) history.add(TestHelper.makeValue(i));
    samples.mergeArchivedData("Test", history);
    // Since 'live' data starts at 11, history is only visible up to there,
    // i.e. 0..10 = 11 in history plus 3 'live' samples
    assertEquals(11 + 3, samples.size());
    System.out.println(samples.toString());
}
Also used : VType(org.diirt.vtype.VType) AtomicInteger(java.util.concurrent.atomic.AtomicInteger) ArrayList(java.util.ArrayList) Test(org.junit.Test)

Example 14 with VType

use of org.diirt.vtype.VType in project org.csstudio.display.builder by kasemir.

the class AdapterFactory method convertToPvWithSamples.

/**
 * Create copy of data array for use outside of the data browser
 *  @param item {@link ModelItem}
 *  @return {@link ProcessVariableWithSamples} for the model item
 */
private ProcessVariableWithSamples convertToPvWithSamples(final ModelItem item) {
    final PlotSamples plot_samples = item.getSamples();
    try {
        if (!plot_samples.getLock().tryLock(10, TimeUnit.SECONDS))
            throw new TimeoutException("Cannot lock data for " + item + ": " + plot_samples);
        try {
            final int size = plot_samples.size();
            final VType[] samples = new VType[size];
            for (int i = 0; i < size; ++i) samples[i] = plot_samples.get(i).getVType();
            return new ProcessVariableWithSamples(new ProcessVariable(item.getName()), samples);
        } finally {
            plot_samples.getLock().unlock();
        }
    } catch (Exception ex) {
        logger.log(Level.WARNING, "AdapterFactory cannot lock data for " + item + ": " + plot_samples);
        return null;
    }
}
Also used : VType(org.diirt.vtype.VType) ProcessVariable(org.csstudio.csdata.ProcessVariable) TimeoutException(java.util.concurrent.TimeoutException) PlotSamples(org.csstudio.trends.databrowser3.model.PlotSamples) TimeoutException(java.util.concurrent.TimeoutException)

Example 15 with VType

use of org.diirt.vtype.VType in project org.csstudio.display.builder by kasemir.

the class MatlabFileExportJob method performExport.

/**
 * {@inheritDoc}
 */
@Override
protected void performExport(final IProgressMonitor monitor, final PrintStream out) throws Exception {
    // This exporter does its own file handling
    if (out != null)
        throw new IllegalStateException();
    final MatFileIncrementalWriter writer = new MatFileIncrementalWriter(filename);
    int i = 0;
    for (ModelItem item : model.getItems()) {
        // Get data
        monitor.subTask(NLS.bind("Fetching data for {0}", item.getName()));
        final ValueIterator iter = createValueIterator(item);
        final List<Instant> times = new ArrayList<Instant>();
        final List<Double> values = new ArrayList<Double>();
        final List<AlarmSeverity> severities = new ArrayList<AlarmSeverity>();
        while (iter.hasNext() && !monitor.isCanceled()) {
            final VType value = iter.next();
            times.add(VTypeHelper.getTimestamp(value));
            values.add(VTypeHelper.toDouble(value));
            severities.add(VTypeHelper.getSeverity(value));
            if (values.size() % PROGRESS_UPDATE_LINES == 0)
                monitor.subTask(NLS.bind("{0}: Obtained {1} samples", item.getName(), values.size()));
        }
        // Add to Matlab file
        final MLStructure struct = createMLStruct(i++, item.getName(), times, values, severities);
        writer.write(struct);
    }
    writer.close();
}
Also used : AlarmSeverity(org.diirt.vtype.AlarmSeverity) Instant(java.time.Instant) ArrayList(java.util.ArrayList) ModelItem(org.csstudio.trends.databrowser3.model.ModelItem) ValueIterator(org.csstudio.archive.reader.ValueIterator) MatFileIncrementalWriter(com.jmatio.io.MatFileIncrementalWriter) MLDouble(com.jmatio.types.MLDouble) MLStructure(com.jmatio.types.MLStructure) VType(org.diirt.vtype.VType)

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