Search in sources :

Example 26 with Model

use of org.csstudio.trends.databrowser3.model.Model in project org.csstudio.display.builder by kasemir.

the class TraceTableHandler method createColumns.

/**
 * Create table columns: Auto-sizable, with label provider and editor
 *  @param table_layout
 *  @param operations_manager
 *  @param table_viewer
 */
public void createColumns(final TableColumnLayout table_layout, final UndoableActionManager operations_manager, final TableViewer table_viewer) {
    color_registry = new LocalResourceManager(JFaceResources.getResources(), table_viewer.getTable());
    final Shell shell = table_viewer.getTable().getShell();
    // Visible Column ----------
    TableViewerColumn view_col = TableHelper.createColumn(table_layout, table_viewer, Messages.TraceVisibility, 45, 1);
    view_col.setLabelProvider(new CellLabelProvider() {

        @Override
        public void update(final ViewerCell cell) {
            final ModelItem item = (ModelItem) cell.getElement();
            cell.setImage(item.isVisible() ? Activator.getDefault().getImage(Activator.ICON_CHECKED) : Activator.getDefault().getImage(Activator.ICON_UNCHECKED));
        }

        @Override
        public String getToolTipText(Object element) {
            return Messages.TraceVisibilityTT;
        }
    });
    new TableColumnSortHelper<ModelItem>(table_viewer, view_col) {

        @Override
        public int compare(final ModelItem item1, final ModelItem item2) {
            final int v1 = item1.isVisible() ? 1 : 0;
            final int v2 = item2.isVisible() ? 1 : 0;
            final int cmp = v1 - v2;
            if (cmp != 0)
                return cmp;
            return item1.getName().compareTo(item2.getName());
        }
    };
    view_col.setEditingSupport(new EditSupportBase(table_viewer) {

        @Override
        protected CellEditor getCellEditor(final Object element) {
            editing = true;
            return new CheckboxCellEditor(((TableViewer) getViewer()).getTable());
        }

        @Override
        protected Object getValue(final Object element) {
            return ((ModelItem) element).isVisible();
        }

        @Override
        protected void setValue(final Object element, final Object value) {
            final ModelItem item = (ModelItem) element;
            final boolean visible = ((Boolean) value).booleanValue();
            if (!visible && prompt_for_not_visible) {
                if (!MessageDialog.openQuestion(shell, Messages.HideTraceWarning, Messages.HideTraceWarningDetail))
                    return;
                prompt_for_not_visible = false;
            }
            new ChangeVisibilityCommand(operations_manager, item, visible);
            editing = false;
        }
    });
    // Trace PV/Formula Column ----------
    view_col = TableHelper.createColumn(table_layout, table_viewer, Messages.ItemName, 70, 70);
    view_col.setLabelProvider(new CellLabelProvider() {

        @Override
        public void update(final ViewerCell cell) {
            final ModelItem item = (ModelItem) cell.getElement();
            cell.setText(item.getName());
        }

        @Override
        public String getToolTipText(Object element) {
            return Messages.ItemNameTT;
        }
    });
    new TableColumnSortHelper<ModelItem>(table_viewer, view_col) {

        @Override
        public int compare(final ModelItem item1, final ModelItem item2) {
            return item1.getName().compareTo(item2.getName());
        }
    };
    view_col.setEditingSupport(new EditSupportBase(table_viewer) {

        @Override
        protected Object getValue(final Object element) {
            return ((ModelItem) element).getName();
        }

        @Override
        protected CellEditor getCellEditor(Object element) {
            editing = true;
            return super.getCellEditor(element);
        }

        @Override
        protected void setValue(final Object element, final Object value) {
            final String new_name = value.toString().trim();
            final ModelItem item = (ModelItem) element;
            if (new_name.equals(item.getName()))
                return;
            new ChangeNameCommand(shell, operations_manager, item, new_name);
            editing = false;
        }
    });
    // Display Name Column ----------
    view_col = TableHelper.createColumn(table_layout, table_viewer, Messages.TraceDisplayName, 70, 70);
    view_col.setLabelProvider(new CellLabelProvider() {

        @Override
        public void update(final ViewerCell cell) {
            final ModelItem item = (ModelItem) cell.getElement();
            cell.setText(item.getDisplayName());
        }

        @Override
        public String getToolTipText(Object element) {
            return Messages.TraceDisplayNameTT;
        }
    });
    new TableColumnSortHelper<ModelItem>(table_viewer, view_col) {

        @Override
        public int compare(final ModelItem item1, final ModelItem item2) {
            return item1.getDisplayName().compareTo(item2.getDisplayName());
        }
    };
    view_col.setEditingSupport(new EditSupportBase(table_viewer) {

        @Override
        protected Object getValue(final Object element) {
            return ((ModelItem) element).getDisplayName();
        }

        @Override
        protected CellEditor getCellEditor(Object element) {
            editing = true;
            return super.getCellEditor(element);
        }

        @Override
        protected void setValue(final Object element, final Object value) {
            final String new_name = value.toString().trim();
            final ModelItem item = (ModelItem) element;
            if (new_name.equals(item.getDisplayName()))
                return;
            new ChangeDisplayNameCommand(operations_manager, item, new_name);
            editing = false;
        }
    });
    // Color Column ----------
    view_col = TableHelper.createColumn(table_layout, table_viewer, Messages.Color, 40, 10);
    view_col.setLabelProvider(new ColorCellLabelProvider<ModelItem>() {

        @Override
        protected Color getColor(ModelItem item) {
            return color_registry.createColor(SWTMediaPool.getRGB(item.getPaintColor()));
        }
    });
    view_col.setEditingSupport(new EditSupportBase(table_viewer) {

        @Override
        protected CellEditor getCellEditor(final Object element) {
            editing = true;
            return new RGBCellEditor(table_viewer.getTable());
        }

        @Override
        protected Object getValue(final Object element) {
            return ((ModelItem) element).getRGBColor();
        }

        @Override
        protected void setValue(final Object element, final Object value) {
            new ChangeColorCommand(operations_manager, (ModelItem) element, SWTMediaPool.getJFX((RGB) value));
            editing = false;
        }
    });
    // Selected sample time stamp and value
    view_col = TableHelper.createColumn(table_layout, table_viewer, Messages.CursorTimestamp, 150, 30);
    view_col.setLabelProvider(new CellLabelProvider() {

        @Override
        public void update(final ViewerCell cell) {
            final ModelItem item = (ModelItem) cell.getElement();
            final Optional<PlotDataItem<Instant>> sample = item.getSelectedSample();
            if (sample.isPresent())
                cell.setText(TimeHelper.format(sample.get().getPosition()));
            else
                cell.setText(Messages.NotApplicable);
        }

        @Override
        public String getToolTipText(Object element) {
            return Messages.CursorTimestampTT;
        }
    });
    view_col = TableHelper.createColumn(table_layout, table_viewer, Messages.CursorValue, 40, 30);
    view_col.setLabelProvider(new CellLabelProvider() {

        @Override
        public void update(final ViewerCell cell) {
            final ModelItem item = (ModelItem) cell.getElement();
            final Optional<PlotDataItem<Instant>> sample = item.getSelectedSample();
            if (sample.isPresent()) {
                final PlotSample plot_sample = (PlotSample) sample.get();
                String text = DefaultVTypeFormat.get().format(plot_sample.getVType());
                final String units = item.getUnits();
                if (units != null)
                    // $NON-NLS-1$
                    text += " " + units;
                cell.setText(text);
            } else
                cell.setText(Messages.NotApplicable);
        }

        @Override
        public String getToolTipText(Object element) {
            return Messages.CursorValueTT;
        }
    });
    // Scan Period Column (only applies to PVItems) ----------
    view_col = TableHelper.createColumn(table_layout, table_viewer, Messages.ScanPeriod, 70, 10);
    view_col.setLabelProvider(new CellLabelProvider() {

        @Override
        public void update(final ViewerCell cell) {
            final ModelItem item = (ModelItem) cell.getElement();
            if (item instanceof PVItem)
                cell.setText(Double.toString(((PVItem) item).getScanPeriod()));
            else
                cell.setText(Messages.NotApplicable);
        }

        @Override
        public String getToolTipText(final Object element) {
            if (!(element instanceof PVItem))
                return null;
            return Messages.ScanPeriodTT;
        }
    });
    view_col.setEditingSupport(new EditSupportBase(table_viewer) {

        @Override
        protected boolean canEdit(Object element) {
            return element instanceof PVItem;
        }

        @Override
        protected CellEditor getCellEditor(Object element) {
            editing = true;
            return super.getCellEditor(element);
        }

        @Override
        protected Object getValue(final Object element) {
            if (element instanceof PVItem)
                return Double.toString(((PVItem) element).getScanPeriod());
            else
                return Messages.NotApplicable;
        }

        @Override
        protected void setValue(final Object element, final Object value) {
            if (!(element instanceof PVItem))
                return;
            final PVItem pv = (PVItem) element;
            try {
                final double period = Double.parseDouble(value.toString().trim());
                if (period != pv.getScanPeriod())
                    new ChangeSamplePeriodCommand(shell, operations_manager, pv, period);
                editing = false;
            } catch (NumberFormatException ex) {
                // Display will revert to original value
                return;
            }
        }
    });
    // Buffer size Column (only applies to PVItems) ----------
    view_col = TableHelper.createColumn(table_layout, table_viewer, Messages.LiveSampleBufferSize, 70, 10);
    view_col.setLabelProvider(new CellLabelProvider() {

        @Override
        public void update(final ViewerCell cell) {
            final ModelItem item = (ModelItem) cell.getElement();
            if (item instanceof PVItem)
                cell.setText(Integer.toString(((PVItem) item).getLiveCapacity()));
            else
                cell.setText(Messages.NotApplicable);
        }

        @Override
        public String getToolTipText(final Object element) {
            if (!(element instanceof PVItem))
                return null;
            final PVItem pv = (PVItem) element;
            return NLS.bind(Messages.LiveBufferSizeInfoFmt, pv.getLiveCapacity(), new RelativeTime(pv.getLiveCapacity()).toString());
        }
    });
    view_col.setEditingSupport(new EditSupportBase(table_viewer) {

        @Override
        protected boolean canEdit(Object element) {
            return element instanceof PVItem;
        }

        @Override
        protected Object getValue(final Object element) {
            if (element instanceof PVItem)
                return Integer.toString(((PVItem) element).getLiveCapacity());
            else
                return Messages.NotApplicable;
        }

        @Override
        protected CellEditor getCellEditor(Object element) {
            editing = true;
            return super.getCellEditor(element);
        }

        @Override
        protected void setValue(final Object element, final Object value) {
            if (!(element instanceof PVItem))
                return;
            final PVItem pv = (PVItem) element;
            try {
                final int size = Integer.parseInt(value.toString().trim());
                if (size != pv.getLiveCapacity())
                    new ChangeLiveCapacityCommand(shell, operations_manager, pv, size);
                editing = false;
            } catch (NumberFormatException ex) {
                // Display will revert to original value
                return;
            }
        }
    });
    // Axis Column ----------
    view_col = TableHelper.createColumn(table_layout, table_viewer, Messages.Axis, 60, 30);
    view_col.setLabelProvider(new CellLabelProvider() {

        @Override
        public void update(final ViewerCell cell) {
            final ModelItem item = (ModelItem) cell.getElement();
            cell.setText(item.getAxis().getName());
        }

        @Override
        public String getToolTipText(Object element) {
            return Messages.AxisTT;
        }
    });
    new TableColumnSortHelper<ModelItem>(table_viewer, view_col) {

        @Override
        public int compare(final ModelItem item1, final ModelItem item2) {
            final int cmp = item1.getAxis().getName().compareTo(item2.getAxis().getName());
            if (cmp != 0)
                return cmp;
            return item1.getDisplayName().compareTo(item2.getDisplayName());
        }
    };
    view_col.setEditingSupport(new EditSupportBase(table_viewer) {

        // Thread-safe copy of model axes as this editor is invoked
        final List<AxisConfig> axes = new ArrayList<>();

        @Override
        protected CellEditor getCellEditor(final Object element) {
            editing = true;
            final List<String> axis_names = new ArrayList<>();
            axes.clear();
            for (AxisConfig axis : model.getAxes()) {
                axes.add(axis);
                axis_names.add(axis.getName());
            }
            final ComboBoxCellEditor combo = new ComboBoxCellEditor(table_viewer.getTable(), axis_names.toArray(new String[axis_names.size()]), SWT.READ_ONLY);
            combo.setValue(getValue(element));
            return combo;
        }

        @Override
        protected Object getValue(final Object element) {
            return model.getAxisIndex(((ModelItem) element).getAxis());
        }

        @Override
        protected void setValue(final Object element, final Object value) {
            final int axis_index = ((Integer) value).intValue();
            final AxisConfig axis = axes.get(axis_index);
            final ModelItem item = (ModelItem) element;
            if (axis != item.getAxis())
                new ChangeAxisCommand(operations_manager, item, axis);
            editing = false;
        }
    });
    // Trace Type Column ----------
    view_col = TableHelper.createColumn(table_layout, table_viewer, Messages.TraceType, 75, 10);
    view_col.setLabelProvider(new CellLabelProvider() {

        @Override
        public void update(final ViewerCell cell) {
            final ModelItem item = (ModelItem) cell.getElement();
            cell.setText(item.getTraceType().toString());
        }

        @Override
        public String getToolTipText(Object element) {
            return Messages.TraceTypeTT;
        }
    });
    view_col.setEditingSupport(new EditSupportBase(table_viewer) {

        @Override
        protected CellEditor getCellEditor(final Object element) {
            editing = true;
            final ComboBoxCellEditor combo = new ComboBoxCellEditor(table_viewer.getTable(), TraceType.getDisplayNames(), SWT.READ_ONLY);
            combo.setValue(getValue(element));
            return combo;
        }

        @Override
        protected Object getValue(final Object element) {
            return ((ModelItem) element).getTraceType().ordinal();
        }

        @Override
        protected void setValue(final Object element, final Object value) {
            final TraceType trace_type = TraceType.values()[(((Integer) value).intValue())];
            final ModelItem item = (ModelItem) element;
            if (trace_type != item.getTraceType())
                new ChangeTraceTypeCommand(operations_manager, item, trace_type);
            editing = false;
        }
    });
    // Line Width Column ----------
    view_col = TableHelper.createColumn(table_layout, table_viewer, Messages.TraceLineWidth, 40, 10);
    view_col.setLabelProvider(new CellLabelProvider() {

        @Override
        public void update(final ViewerCell cell) {
            final ModelItem item = (ModelItem) cell.getElement();
            cell.setText(Integer.toString(item.getLineWidth()));
        }

        @Override
        public String getToolTipText(Object element) {
            return Messages.TraceLineWidthTT;
        }
    });
    view_col.setEditingSupport(new EditSupportBase(table_viewer) {

        @Override
        protected Object getValue(final Object element) {
            return Integer.toString(((ModelItem) element).getLineWidth());
        }

        @Override
        protected CellEditor getCellEditor(Object element) {
            editing = true;
            return super.getCellEditor(element);
        }

        @Override
        protected void setValue(final Object element, final Object value) {
            int width;
            try {
                width = Integer.parseInt(value.toString().trim());
            } catch (NumberFormatException ex) {
                width = 0;
            }
            final ModelItem item = (ModelItem) element;
            if (width != item.getLineWidth())
                new ChangeLineWidthCommand(operations_manager, item, width);
            editing = false;
        }
    });
    // Point Type Column ----------
    view_col = TableHelper.createColumn(table_layout, table_viewer, Messages.PointType, 75, 10);
    view_col.setLabelProvider(new CellLabelProvider() {

        @Override
        public void update(final ViewerCell cell) {
            final ModelItem item = (ModelItem) cell.getElement();
            cell.setText(item.getPointType().toString());
        }

        @Override
        public String getToolTipText(Object element) {
            return Messages.PointTypeTT;
        }
    });
    view_col.setEditingSupport(new EditSupportBase(table_viewer) {

        @Override
        protected CellEditor getCellEditor(final Object element) {
            editing = true;
            final ComboBoxCellEditor combo = new ComboBoxCellEditor(table_viewer.getTable(), PointType.getDisplayNames(), SWT.READ_ONLY);
            combo.setValue(getValue(element));
            return combo;
        }

        @Override
        protected Object getValue(final Object element) {
            return ((ModelItem) element).getPointType().ordinal();
        }

        @Override
        protected void setValue(final Object element, final Object value) {
            final PointType point_type = PointType.values()[((Integer) value).intValue()];
            final ModelItem item = (ModelItem) element;
            if (point_type != item.getPointType())
                new ChangePointTypeCommand(operations_manager, item, point_type);
            editing = false;
        }
    });
    // Point Size Column ----------
    view_col = TableHelper.createColumn(table_layout, table_viewer, Messages.PointSize, 40, 10);
    view_col.setLabelProvider(new CellLabelProvider() {

        @Override
        public void update(final ViewerCell cell) {
            final ModelItem item = (ModelItem) cell.getElement();
            cell.setText(Integer.toString(item.getPointSize()));
        }

        @Override
        public String getToolTipText(Object element) {
            return Messages.PointSizeTT;
        }
    });
    view_col.setEditingSupport(new EditSupportBase(table_viewer) {

        @Override
        protected Object getValue(final Object element) {
            return Integer.toString(((ModelItem) element).getPointSize());
        }

        @Override
        protected CellEditor getCellEditor(Object element) {
            editing = true;
            return super.getCellEditor(element);
        }

        @Override
        protected void setValue(final Object element, final Object value) {
            int size;
            try {
                size = Integer.parseInt(value.toString().trim());
            } catch (NumberFormatException ex) {
                size = 0;
            }
            final ModelItem item = (ModelItem) element;
            if (size != item.getPointSize())
                new ChangePointSizeCommand(operations_manager, item, size);
            editing = false;
        }
    });
    // Request Type Column ----------
    view_col = TableHelper.createColumn(table_layout, table_viewer, Messages.RequestType, 75, 10);
    view_col.setLabelProvider(new CellLabelProvider() {

        @Override
        public void update(final ViewerCell cell) {
            final ModelItem item = (ModelItem) cell.getElement();
            if (item instanceof PVItem)
                cell.setText(((PVItem) item).getRequestType().toString());
            else
                cell.setText(Messages.NotApplicable);
        }

        @Override
        public String getToolTipText(Object element) {
            return Messages.RequestTypeTT;
        }
    });
    // Edit as boolean: Raw == false,  Optimized == true
    view_col.setEditingSupport(new EditSupportBase(table_viewer) {

        @Override
        protected boolean canEdit(final Object element) {
            return element instanceof PVItem;
        }

        @Override
        protected CellEditor getCellEditor(final Object element) {
            editing = true;
            return new CheckboxCellEditor(((TableViewer) getViewer()).getTable());
        }

        @Override
        protected Object getValue(final Object element) {
            return ((PVItem) element).getRequestType() == RequestType.OPTIMIZED;
        }

        @Override
        protected void setValue(final Object element, final Object value) {
            final PVItem item = (PVItem) element;
            final RequestType request_type = ((Boolean) value).booleanValue() ? RequestType.OPTIMIZED : RequestType.RAW;
            if (request_type == RequestType.RAW && prompt_for_raw_data_request) {
                if (!MessageDialog.openQuestion(shell, Messages.RequestTypeWarning, Messages.RequestTypeWarningDetail))
                    return;
                prompt_for_raw_data_request = false;
            }
            new ChangeRequestTypeCommand(operations_manager, item, request_type);
            editing = false;
        }
    });
    // Waveform Index Column ----------
    view_col = TableHelper.createColumn(table_layout, table_viewer, Messages.WaveformIndexCol, 40, 10);
    view_col.setLabelProvider(new CellLabelProvider() {

        @Override
        public void update(final ViewerCell cell) {
            final ModelItem item = (ModelItem) cell.getElement();
            cell.setText(Integer.toString(item.getWaveformIndex()));
        }

        @Override
        public String getToolTipText(Object element) {
            return Messages.WaveformIndexColTT;
        }
    });
    view_col.setEditingSupport(new EditSupportBase(table_viewer) {

        @Override
        protected Object getValue(final Object element) {
            return Integer.toString(((ModelItem) element).getWaveformIndex());
        }

        @Override
        protected CellEditor getCellEditor(Object element) {
            editing = true;
            return super.getCellEditor(element);
        }

        @Override
        protected void setValue(final Object element, final Object value) {
            int index;
            try {
                index = Integer.parseInt(value.toString().trim());
                if (index < 0)
                    return;
                final ModelItem item = (ModelItem) element;
                if (index != item.getWaveformIndex())
                    new ChangeWaveformIndexCommand(operations_manager, item, index);
            } catch (NumberFormatException ex) {
                return;
            } finally {
                editing = false;
            }
        }
    });
    ColumnViewerToolTipSupport.enableFor(table_viewer);
}
Also used : CheckboxCellEditor(org.eclipse.jface.viewers.CheckboxCellEditor) LocalResourceManager(org.eclipse.jface.resource.LocalResourceManager) AxisConfig(org.csstudio.trends.databrowser3.model.AxisConfig) CellEditor(org.eclipse.jface.viewers.CellEditor) CheckboxCellEditor(org.eclipse.jface.viewers.CheckboxCellEditor) ComboBoxCellEditor(org.eclipse.jface.viewers.ComboBoxCellEditor) ArrayList(java.util.ArrayList) RelativeTime(org.csstudio.apputil.time.RelativeTime) Shell(org.eclipse.swt.widgets.Shell) ArrayList(java.util.ArrayList) List(java.util.List) TableColumnSortHelper(org.csstudio.apputil.ui.swt.TableColumnSortHelper) PVItem(org.csstudio.trends.databrowser3.model.PVItem) TableViewerColumn(org.eclipse.jface.viewers.TableViewerColumn) CellLabelProvider(org.eclipse.jface.viewers.CellLabelProvider) TraceType(org.csstudio.javafx.rtplot.TraceType) Optional(java.util.Optional) Color(org.eclipse.swt.graphics.Color) Instant(java.time.Instant) ModelItem(org.csstudio.trends.databrowser3.model.ModelItem) ComboBoxCellEditor(org.eclipse.jface.viewers.ComboBoxCellEditor) ViewerCell(org.eclipse.jface.viewers.ViewerCell) PlotSample(org.csstudio.trends.databrowser3.model.PlotSample) PointType(org.csstudio.javafx.rtplot.PointType) TableViewer(org.eclipse.jface.viewers.TableViewer) RequestType(org.csstudio.trends.databrowser3.model.RequestType)

Example 27 with Model

use of org.csstudio.trends.databrowser3.model.Model in project org.csstudio.display.builder by kasemir.

the class AxesTableHandler method getModelAxisCopy.

private void getModelAxisCopy(final Model model) {
    if (model == null) {
        axes = new AxisConfig[0];
        return;
    }
    final List<AxisConfig> new_axes = new ArrayList<>();
    for (AxisConfig axis : model.getAxes()) new_axes.add(axis);
    axes = new_axes.toArray(new AxisConfig[new_axes.size()]);
}
Also used : AxisConfig(org.csstudio.trends.databrowser3.model.AxisConfig) ArrayList(java.util.ArrayList)

Example 28 with Model

use of org.csstudio.trends.databrowser3.model.Model in project org.csstudio.display.builder by kasemir.

the class SampleImportAction method run.

@Override
public void run() {
    // Prompt for file
    final IPath path = SingleSourcePlugin.getUIHelper().openDialog(shell, SWT.OPEN, null, "*", NLS.bind(Messages.ImportActionFileSelectorTitleFmt, description));
    if (path == null)
        return;
    try {
        // Add to first empty axis, or create new axis
        final AxisConfig axis = model.getEmptyAxis().orElseGet(() -> new AddAxisCommand(op_manager, model).getAxis());
        // Add archivedatasource for "import:..." and let that load the file
        final String url = ImportArchiveReaderFactory.createURL(type, path.toString());
        final ArchiveDataSource imported = new ArchiveDataSource(url, 1, type);
        // Add PV Item with data to model
        AddModelItemCommand.forPV(shell, op_manager, model, type, Preferences.getScanPeriod(), axis, imported);
    } catch (Exception ex) {
        ExceptionDetailsErrorDialog.openError(shell, Messages.Error, ex);
    }
}
Also used : AddAxisCommand(org.csstudio.trends.databrowser3.propsheet.AddAxisCommand) IPath(org.eclipse.core.runtime.IPath) AxisConfig(org.csstudio.trends.databrowser3.model.AxisConfig) ArchiveDataSource(org.csstudio.trends.databrowser3.model.ArchiveDataSource)

Example 29 with Model

use of org.csstudio.trends.databrowser3.model.Model in project org.csstudio.display.builder by kasemir.

the class ExportView method startExportJob.

/**
 * Start export job with parameters from GUI
 */
private void startExportJob() {
    if (model == null)
        return;
    // Determine start/end time
    final Instant start_time, end_time;
    if (use_plot_times.getSelection()) {
        start_time = model.getStartTime();
        end_time = model.getEndTime();
    } else {
        try {
            final StartEndTimeParser times = new StartEndTimeParser(start.getText(), end.getText());
            start_time = times.getStart().toInstant();
            end_time = times.getEnd().toInstant();
        } catch (final Exception ex) {
            handleExportError(ex);
            return;
        }
    }
    // Determine source: Plot, archive, ...
    final Source source;
    int optimize_parameter = -1;
    if (source_raw.getSelection())
        source = Source.RAW_ARCHIVE;
    else if (source_opt.getSelection()) {
        source = Source.OPTIMIZED_ARCHIVE;
        try {
            optimize_parameter = Integer.parseInt(optimize.getText());
        } catch (Exception ex) {
            MessageDialog.openError(optimize.getShell(), Messages.Error, Messages.ExportOptimizeCountError);
            return;
        }
    } else if (source_lin.getSelection()) {
        source = Source.LINEAR_INTERPOLATION;
        try {
            optimize_parameter = (int) (SecondsParser.parseSeconds(linear.getText()) + 0.5);
            if (optimize_parameter < 1)
                optimize_parameter = 1;
        } catch (Exception ex) {
            MessageDialog.openError(linear.getShell(), Messages.Error, Messages.ExportLinearIntervalError);
            return;
        }
    } else
        source = Source.PLOT;
    // Get remaining export parameters
    final String filename = this.filename.getText().trim();
    if (filename.equalsIgnoreCase(Messages.ExportDefaultFilename)) {
        MessageDialog.openConfirm(optimize.getShell(), Messages.Error, Messages.ExportEnterFilenameError);
        this.filename.setFocus();
        return;
    }
    if (new File(filename).exists()) {
        if (!MessageDialog.openConfirm(optimize.getShell(), Messages.ExportFileExists, NLS.bind(Messages.ExportFileExistsFmt, filename)))
            return;
    }
    // Construct appropriate export job
    final Job export;
    if (type_matlab.getSelection()) {
        if (// $NON-NLS-1$
        filename.endsWith(".m"))
            export = new MatlabScriptExportJob(model, start_time, end_time, source, optimize_parameter, filename, this);
        else if (// $NON-NLS-1$
        filename.endsWith(".mat"))
            export = new MatlabFileExportJob(model, start_time, end_time, source, optimize_parameter, filename, this);
        else {
            MessageDialog.openError(type_matlab.getShell(), Messages.Error, Messages.ExportMatlabFilenameError);
            return;
        }
    } else {
        // Spreadsheet file export
        final Style style;
        if (format_decimal.getSelection())
            style = Style.Decimal;
        else if (format_expo.getSelection())
            style = Style.Exponential;
        else
            style = Style.Default;
        final int precision;
        if (style == Style.Default)
            // Not used
            precision = 0;
        else {
            try {
                precision = Integer.parseInt(format_digits.getText().trim());
            } catch (Exception ex) {
                MessageDialog.openError(optimize.getShell(), Messages.Error, Messages.ExportDigitsError);
                return;
            }
        }
        final ValueFormatter formatter;
        if (sev_stat.getSelection())
            formatter = new ValueWithInfoFormatter(style, precision);
        else
            formatter = new ValueFormatter(style, precision);
        formatter.useMinMaxColumn(minMaxAllowed() && min_max_col.getSelection());
        if (tabular.getSelection())
            export = new SpreadsheetExportJob(model, start_time, end_time, source, optimize_parameter, formatter, filename, this);
        else
            export = new PlainExportJob(model, start_time, end_time, source, optimize_parameter, formatter, filename, this);
    }
    export.schedule();
}
Also used : Instant(java.time.Instant) MatlabScriptExportJob(org.csstudio.trends.databrowser3.export.MatlabScriptExportJob) Source(org.csstudio.trends.databrowser3.export.Source) StartEndTimeParser(org.csstudio.apputil.time.StartEndTimeParser) SpreadsheetExportJob(org.csstudio.trends.databrowser3.export.SpreadsheetExportJob) MatlabFileExportJob(org.csstudio.trends.databrowser3.export.MatlabFileExportJob) Style(org.csstudio.archive.vtype.Style) ValueWithInfoFormatter(org.csstudio.trends.databrowser3.export.ValueWithInfoFormatter) PlainExportJob(org.csstudio.trends.databrowser3.export.PlainExportJob) SpreadsheetExportJob(org.csstudio.trends.databrowser3.export.SpreadsheetExportJob) MatlabScriptExportJob(org.csstudio.trends.databrowser3.export.MatlabScriptExportJob) Job(org.eclipse.core.runtime.jobs.Job) MatlabFileExportJob(org.csstudio.trends.databrowser3.export.MatlabFileExportJob) ValueFormatter(org.csstudio.trends.databrowser3.export.ValueFormatter) File(java.io.File) PlainExportJob(org.csstudio.trends.databrowser3.export.PlainExportJob)

Example 30 with Model

use of org.csstudio.trends.databrowser3.model.Model in project org.csstudio.display.builder by kasemir.

the class DataBrowserAwareView method updateEditor.

/**
 * The editor has changed.
 */
private void updateEditor(DataBrowserEditor new_editor) {
    final Model old_model = (editor == null) ? null : editor.getModel();
    editor = new_editor;
    final Model new_model = (editor == null) ? null : editor.getModel();
    updateModel(old_model, new_model);
}
Also used : Model(org.csstudio.trends.databrowser3.model.Model)

Aggregations

ModelItem (org.csstudio.trends.databrowser3.model.ModelItem)16 Model (org.csstudio.trends.databrowser3.model.Model)15 ArrayList (java.util.ArrayList)10 PVItem (org.csstudio.trends.databrowser3.model.PVItem)10 AxisConfig (org.csstudio.trends.databrowser3.model.AxisConfig)9 XMLPersistence (org.csstudio.trends.databrowser3.persistence.XMLPersistence)7 Instant (java.time.Instant)6 InputStream (java.io.InputStream)5 FormulaInput (org.csstudio.trends.databrowser3.model.FormulaInput)5 FormulaItem (org.csstudio.trends.databrowser3.model.FormulaItem)4 Shell (org.eclipse.swt.widgets.Shell)4 AnnotationInfo (org.csstudio.trends.databrowser3.model.AnnotationInfo)3 PlotSample (org.csstudio.trends.databrowser3.model.PlotSample)3 PlotSamples (org.csstudio.trends.databrowser3.model.PlotSamples)3 MinSizeTableColumnLayout (org.csstudio.ui.util.MinSizeTableColumnLayout)3 IPath (org.eclipse.core.runtime.IPath)3 Separator (org.eclipse.jface.action.Separator)3 TableColumnLayout (org.eclipse.jface.layout.TableColumnLayout)3 Composite (org.eclipse.swt.widgets.Composite)3 PartInitException (org.eclipse.ui.PartInitException)3