Search in sources :

Example 1 with TimeRelativeInterval

use of org.phoebus.util.time.TimeRelativeInterval in project phoebus by ControlSystemStudio.

the class Controller method doUpdate.

private void doUpdate() {
    try {
        // Skip updates while nobody is watching
        if (window_is_iconized || suppress_redraws)
            return;
        // Check if anything changed, which also updates formulas.
        // When scrolling, need to update even when nothing changed to 'scroll'.
        final TimeRelativeInterval span = model.getTimerange();
        final boolean scrolling = !span.isEndAbsolute();
        if (model.updateItemsAndCheckForNewSamples() || scrolling)
            plot.redrawTraces();
    } catch (Throwable ex) {
        logger.log(Level.WARNING, "Error in Plot refresh timer", ex);
    }
}
Also used : TimeRelativeInterval(org.phoebus.util.time.TimeRelativeInterval)

Example 2 with TimeRelativeInterval

use of org.phoebus.util.time.TimeRelativeInterval in project phoebus by ControlSystemStudio.

the class XMLPersistence method write.

/**
 * Write XML formatted Model content.
 *  @param model Model to write
 *  @param out {@link OutputStream}
 *  @throws Exception on error
 */
public static void write(final Model model, final OutputStream out) throws Exception {
    final XMLStreamWriter base = XMLOutputFactory.newInstance().createXMLStreamWriter(out, XMLUtil.ENCODING);
    final XMLStreamWriter writer = new IndentingXMLStreamWriter(base);
    writer.writeStartDocument(XMLUtil.ENCODING, "1.0");
    writer.writeStartElement(TAG_DATABROWSER);
    {
        writer.writeStartElement(TAG_TITLE);
        writer.writeCharacters(model.getTitle().orElse(""));
        writer.writeEndElement();
        if (!model.shouldSaveChanges()) {
            writer.writeStartElement(TAG_SAVE_CHANGES);
            writer.writeCharacters(Boolean.FALSE.toString());
            writer.writeEndElement();
        }
        // Visibility of toolbar and legend
        if (model.isLegendVisible()) {
            writer.writeStartElement(TAG_SHOW_LEGEND);
            writer.writeCharacters(Boolean.TRUE.toString());
            writer.writeEndElement();
        }
        if (model.isToolbarVisible()) {
            writer.writeStartElement(TAG_SHOW_TOOLBAR);
            writer.writeCharacters(Boolean.TRUE.toString());
            writer.writeEndElement();
        }
        // Time axis
        if (model.isGridVisible()) {
            writer.writeStartElement(TAG_GRID);
            writer.writeCharacters(Boolean.TRUE.toString());
            writer.writeEndElement();
        }
        writer.writeStartElement(TAG_UPDATE_PERIOD);
        writer.writeCharacters(Double.toString(model.getUpdatePeriod()));
        writer.writeEndElement();
        writer.writeStartElement(TAG_SCROLL_STEP);
        writer.writeCharacters(Long.toString(model.getScrollStep().getSeconds()));
        writer.writeEndElement();
        final TimeRelativeInterval span = model.getTimerange();
        writer.writeStartElement(TAG_SCROLL);
        writer.writeCharacters(Boolean.toString(!span.isEndAbsolute()));
        writer.writeEndElement();
        final TimeInterval interval = span.toAbsoluteInterval();
        if (span.isEndAbsolute()) {
            writer.writeStartElement(TAG_START);
            writer.writeCharacters(TimestampFormats.MILLI_FORMAT.format(interval.getStart()));
            writer.writeEndElement();
            writer.writeStartElement(TAG_END);
            writer.writeCharacters(TimestampFormats.MILLI_FORMAT.format(interval.getEnd()));
            writer.writeEndElement();
        } else {
            writer.writeStartElement(TAG_START);
            writer.writeCharacters(TimeWarp.formatAsLegacy(span.getRelativeStart().get()));
            writer.writeEndElement();
            writer.writeStartElement(TAG_END);
            writer.writeCharacters(TimeParser.NOW);
            writer.writeEndElement();
        }
        writer.writeStartElement(TAG_ARCHIVE_RESCALE);
        writer.writeCharacters(model.getArchiveRescale().name());
        writer.writeEndElement();
        writeColor(writer, TAG_FOREGROUND, model.getPlotForeground());
        writeColor(writer, TAG_BACKGROUND, model.getPlotBackground());
        writeFont(writer, TAG_TITLE_FONT, model.getTitleFont());
        writeFont(writer, TAG_LABEL_FONT, model.getLabelFont());
        writeFont(writer, TAG_SCALE_FONT, model.getScaleFont());
        writeFont(writer, TAG_LEGEND_FONT, model.getLegendFont());
        // Value axes
        writer.writeStartElement(TAG_AXES);
        for (AxisConfig axis : model.getAxes()) axis.write(writer);
        writer.writeEndElement();
        // Annotations
        writer.writeStartElement(TAG_ANNOTATIONS);
        for (AnnotationInfo annotation : model.getAnnotations()) annotation.write(writer);
        writer.writeEndElement();
        // PVs (Formulas)
        writer.writeStartElement(TAG_PVLIST);
        for (ModelItem item : model.getItems()) item.write(writer);
        writer.writeEndElement();
    }
    writer.writeEndElement();
    writer.writeEndDocument();
}
Also used : IndentingXMLStreamWriter(org.phoebus.framework.persistence.IndentingXMLStreamWriter) TimeRelativeInterval(org.phoebus.util.time.TimeRelativeInterval) TimeInterval(org.phoebus.util.time.TimeInterval) AxisConfig(org.csstudio.trends.databrowser3.model.AxisConfig) IndentingXMLStreamWriter(org.phoebus.framework.persistence.IndentingXMLStreamWriter) XMLStreamWriter(javax.xml.stream.XMLStreamWriter) ModelItem(org.csstudio.trends.databrowser3.model.ModelItem) AnnotationInfo(org.csstudio.trends.databrowser3.model.AnnotationInfo)

Example 3 with TimeRelativeInterval

use of org.phoebus.util.time.TimeRelativeInterval in project phoebus by ControlSystemStudio.

the class AdvancedSearchViewController method initialize.

@FXML
public void initialize() {
    searchTitle.textProperty().bindBidirectional(this.searchParameters.titleProperty());
    searchText.textProperty().bindBidirectional(this.searchParameters.textProperty());
    searchAuthor.textProperty().bindBidirectional(this.searchParameters.authorProperty());
    levelSelector.valueProperty().bindBidirectional(this.searchParameters.levelProperty());
    searchTags.textProperty().bindBidirectional(this.searchParameters.tagsProperty());
    searchLogbooks.textProperty().bindBidirectional(this.searchParameters.logbooksProperty());
    startTime.textProperty().bindBidirectional(this.searchParameters.startTimeProperty());
    endTime.textProperty().bindBidirectional(this.searchParameters.endTimeProperty());
    searchParameters.addListener((observable, oldValue, newValue) -> {
        updateControls(newValue);
    });
    levelLabel.setText(LogbookUIPreferences.level_field_name);
    advancedSearchPane.minWidthProperty().set(0);
    advancedSearchPane.maxWidthProperty().set(0);
    VBox timeBox = new VBox();
    TimeRelativeIntervalPane timeSelectionPane = new TimeRelativeIntervalPane(TEMPORAL_AMOUNTS_AND_NOW);
    // TODO needs to be initialized from the values in the search parameters
    TimeRelativeInterval initial = TimeRelativeInterval.of(java.time.Duration.ofHours(8), java.time.Duration.ZERO);
    timeSelectionPane.setInterval(initial);
    HBox hbox = new HBox();
    hbox.setSpacing(5);
    hbox.setAlignment(Pos.CENTER_RIGHT);
    Button apply = new Button();
    apply.setText(Messages.Apply);
    apply.setPrefWidth(80);
    apply.setOnAction((event) -> {
        Platform.runLater(() -> {
            TimeRelativeInterval interval = timeSelectionPane.getInterval();
            if (interval.isStartAbsolute()) {
                searchParameters.startTimeProperty().setValue(TimestampFormats.MILLI_FORMAT.format(interval.getAbsoluteStart().get()));
            } else {
                searchParameters.startTimeProperty().setValue(TimeParser.format(interval.getRelativeStart().get()));
            }
            if (interval.isEndAbsolute()) {
                searchParameters.endTimeProperty().setValue(TimestampFormats.MILLI_FORMAT.format(interval.getAbsoluteEnd().get()));
            } else {
                searchParameters.endTimeProperty().setValue(TimeParser.format(interval.getRelativeEnd().get()));
            }
            if (timeSearchPopover.isShowing())
                timeSearchPopover.hide();
        });
    });
    Button cancel = new Button();
    cancel.setText("Cancel");
    cancel.setPrefWidth(80);
    cancel.setOnAction((event) -> {
        if (timeSearchPopover.isShowing())
            timeSearchPopover.hide();
    });
    hbox.getChildren().addAll(apply, cancel);
    timeBox.getChildren().addAll(timeSelectionPane, hbox);
    timeSearchPopover = new PopOver(timeBox);
    startTime.focusedProperty().addListener((ObservableValue<? extends Boolean> arg0, Boolean oldPropertyValue, Boolean newPropertyValue) -> {
        if (newPropertyValue) {
            timeSearchPopover.show(timePane);
        } else if (timeSearchPopover.isShowing()) {
            timeSearchPopover.hide();
        }
    });
    endTime.focusedProperty().addListener((ObservableValue<? extends Boolean> arg0, Boolean oldPropertyValue, Boolean newPropertyValue) -> {
        if (newPropertyValue) {
            timeSearchPopover.show(timePane);
        } else if (timeSearchPopover.isShowing()) {
            timeSearchPopover.hide();
        }
    });
    FXMLLoader logbookSelectionLoader = new FXMLLoader();
    logbookSelectionLoader.setLocation(this.getClass().getResource("ListSelection.fxml"));
    try {
        logbookSelectionLoader.load();
        logbookController = logbookSelectionLoader.getController();
        logbookController.setOnApply((List<String> t) -> {
            Platform.runLater(() -> {
                if (t.isEmpty()) {
                    searchParameters.logbooksProperty().setValue(null);
                } else {
                    searchParameters.logbooksProperty().setValue(t.stream().collect(Collectors.joining(",")));
                }
                if (logbookSearchPopover.isShowing())
                    logbookSearchPopover.hide();
            });
            return true;
        });
        logbookController.setOnCancel((List<String> t) -> {
            if (logbookSearchPopover.isShowing())
                logbookSearchPopover.hide();
            return true;
        });
        logbookSearchPopover = new PopOver(logbookSelectionLoader.getRoot());
    } catch (IOException e) {
        logger.log(Level.WARNING, "failed to open logbook search dialog", e);
    }
    FXMLLoader tagSelectionLoader = new FXMLLoader();
    tagSelectionLoader.setLocation(this.getClass().getResource("ListSelection.fxml"));
    try {
        tagSelectionLoader.load();
        tagController = tagSelectionLoader.getController();
        tagController.setOnApply((List<String> t) -> {
            Platform.runLater(() -> {
                if (t.isEmpty()) {
                // searchParameters.remove(Keys.TAGS);
                } else {
                    String tagsValue = t.stream().collect(Collectors.joining(","));
                    // searchParameters.put(Keys.TAGS, tagsValue);
                    searchParameters.tagsProperty().setValue(tagsValue);
                }
                if (tagSearchPopover.isShowing())
                    tagSearchPopover.hide();
            });
            return true;
        });
        tagController.setOnCancel((List<String> t) -> {
            if (tagSearchPopover.isShowing())
                tagSearchPopover.hide();
            return true;
        });
        tagSearchPopover = new PopOver(tagSelectionLoader.getRoot());
    } catch (IOException e) {
        logger.log(Level.WARNING, "failed to open tag search dialog", e);
    }
    searchTags.setOnMouseClicked(mouseEvent -> {
        if (tagSearchPopover.isShowing()) {
            tagSearchPopover.hide();
        } else {
            tagNames = logClient.listTags().stream().map(Tag::getName).sorted().collect(Collectors.toList());
            tagController.setAvailable(tagNames);
            tagSearchPopover.show(searchTags);
        }
    });
    searchLogbooks.setOnMouseClicked(mouseEvent -> {
        if (logbookSearchPopover.isShowing()) {
            logbookSearchPopover.hide();
        } else {
            logbookNames = logClient.listLogbooks().stream().map(Logbook::getName).sorted().collect(Collectors.toList());
            logbookController.setAvailable(logbookNames);
            logbookSearchPopover.show(searchLogbooks);
        }
    });
    List<String> levelList = logClient.listLevels().stream().collect(Collectors.toList());
    levelSelector.getItems().add("");
    levelSelector.getItems().addAll(levelList);
}
Also used : TimeRelativeInterval(org.phoebus.util.time.TimeRelativeInterval) HBox(javafx.scene.layout.HBox) ObservableValue(javafx.beans.value.ObservableValue) PopOver(org.phoebus.ui.dialog.PopOver) IOException(java.io.IOException) FXMLLoader(javafx.fxml.FXMLLoader) TimeRelativeIntervalPane(org.phoebus.ui.time.TimeRelativeIntervalPane) Button(javafx.scene.control.Button) List(java.util.List) VBox(javafx.scene.layout.VBox) FXML(javafx.fxml.FXML)

Example 4 with TimeRelativeInterval

use of org.phoebus.util.time.TimeRelativeInterval in project phoebus by ControlSystemStudio.

the class AdvancedSearchViewController method initialize.

@FXML
public void initialize() {
    advancedSearchPane.minWidthProperty().set(0);
    advancedSearchPane.maxWidthProperty().set(0);
    VBox timeBox = new VBox();
    TimeRelativeIntervalPane timeSelectionPane = new TimeRelativeIntervalPane(TEMPORAL_AMOUNTS_AND_NOW);
    // TODO needs to be initialized from the values in the search parameters
    TimeRelativeInterval initial = TimeRelativeInterval.of(java.time.Duration.ofHours(8), java.time.Duration.ZERO);
    timeSelectionPane.setInterval(initial);
    HBox hbox = new HBox();
    hbox.setSpacing(5);
    hbox.setAlignment(Pos.CENTER_RIGHT);
    Button apply = new Button();
    apply.setText("Apply");
    apply.setPrefWidth(80);
    apply.setOnAction((event) -> {
        Platform.runLater(() -> {
            TimeRelativeInterval interval = timeSelectionPane.getInterval();
            if (interval.isStartAbsolute()) {
                searchParameters.put(Keys.STARTTIME, TimestampFormats.MILLI_FORMAT.format(interval.getAbsoluteStart().get()));
            } else {
                searchParameters.put(Keys.STARTTIME, TimeParser.format(interval.getRelativeStart().get()));
            }
            if (interval.isEndAbsolute()) {
                searchParameters.put(Keys.ENDTIME, TimestampFormats.MILLI_FORMAT.format(interval.getAbsoluteEnd().get()));
            } else {
                searchParameters.put(Keys.ENDTIME, TimeParser.format(interval.getRelativeEnd().get()));
            }
            if (timeSearchPopover.isShowing())
                timeSearchPopover.hide();
        });
    });
    Button cancel = new Button();
    cancel.setText("Cancel");
    cancel.setPrefWidth(80);
    cancel.setOnAction((event) -> {
        if (timeSearchPopover.isShowing())
            timeSearchPopover.hide();
    });
    hbox.getChildren().addAll(apply, cancel);
    timeBox.getChildren().addAll(timeSelectionPane, hbox);
    timeSearchPopover = new PopOver(timeBox);
    startTime.focusedProperty().addListener((ObservableValue<? extends Boolean> arg0, Boolean oldPropertyValue, Boolean newPropertyValue) -> {
        if (newPropertyValue) {
            timeSearchPopover.show(timePane);
        } else if (timeSearchPopover.isShowing()) {
            timeSearchPopover.hide();
        }
    });
    endTime.focusedProperty().addListener((ObservableValue<? extends Boolean> arg0, Boolean oldPropertyValue, Boolean newPropertyValue) -> {
        if (newPropertyValue) {
            timeSearchPopover.show(timePane);
        } else if (timeSearchPopover.isShowing()) {
            timeSearchPopover.hide();
        }
    });
    searchPV.textProperty().addListener((observable, oldValue, newValue) -> {
        searchParameters.put(Keys.PV, newValue);
    });
    searchSeverity.textProperty().addListener((observable, oldValue, newValue) -> {
        searchParameters.put(Keys.SEVERITY, newValue);
    });
    searchMessage.textProperty().addListener((observable, oldValue, newValue) -> {
        searchParameters.put(Keys.MESSAGE, newValue);
    });
    searchCurrentSeverity.textProperty().addListener((observable, oldValue, newValue) -> {
        searchParameters.put(Keys.CURRENTSEVERITY, newValue);
    });
    searchCurrentMessage.textProperty().addListener((observable, oldValue, newValue) -> {
        searchParameters.put(Keys.CURRENTMESSAGE, newValue);
    });
    searchUser.textProperty().addListener((observable, oldValue, newValue) -> {
        searchParameters.put(Keys.USER, newValue);
    });
    searchHost.textProperty().addListener((observable, oldValue, newValue) -> {
        searchParameters.put(Keys.HOST, newValue);
    });
    searchCommand.textProperty().addListener((observable, oldValue, newValue) -> {
        searchParameters.put(Keys.COMMAND, newValue);
    });
}
Also used : TimeRelativeIntervalPane(org.phoebus.ui.time.TimeRelativeIntervalPane) TimeRelativeInterval(org.phoebus.util.time.TimeRelativeInterval) HBox(javafx.scene.layout.HBox) Button(javafx.scene.control.Button) ObservableValue(javafx.beans.value.ObservableValue) PopOver(org.phoebus.ui.dialog.PopOver) VBox(javafx.scene.layout.VBox) FXML(javafx.fxml.FXML)

Example 5 with TimeRelativeInterval

use of org.phoebus.util.time.TimeRelativeInterval in project phoebus by ControlSystemStudio.

the class LogEntryCalenderViewController method initialize.

@FXML
public void initialize() {
    resize.setText("<");
    agenda = new Agenda();
    agenda.setEditAppointmentCallback(new Callback<Agenda.Appointment, Void>() {

        @Override
        public Void call(Appointment appointment) {
            return null;
        }
    });
    agenda.setActionCallback((appointment) -> {
        // show detailed view
        try {
            if (map != null) {
                final Stage dialog = new Stage();
                dialog.initModality(Modality.NONE);
                logEntryControl = new LogEntryControl();
                logEntryControl.setLog(map.get(appointment));
                Scene dialogScene = new Scene(logEntryControl, 300, 200);
                dialog.setScene(dialogScene);
                dialog.show();
            }
        } catch (Exception e) {
            logger.log(Level.WARNING, "Failed to show details for : " + appointment.getSummary(), e);
        }
        return null;
    });
    agenda.allowDraggingProperty().set(false);
    agenda.allowResizeProperty().set(false);
    appointmentGroupMap = agenda.appointmentGroups().stream().collect(Collectors.toMap(AppointmentGroup::getDescription, Function.identity()));
    try {
        String styleSheetResource = LogbookUiPreferences.calendar_view_item_stylesheet;
        agenda.getStylesheets().add(this.getClass().getResource(styleSheetResource).toString());
    } catch (Exception e) {
        logger.log(Level.WARNING, "Failed to set css style", e);
    }
    AnchorPane.setTopAnchor(agenda, 6.0);
    AnchorPane.setBottomAnchor(agenda, 6.0);
    AnchorPane.setLeftAnchor(agenda, 6.0);
    AnchorPane.setRightAnchor(agenda, 6.0);
    agendaPane.getChildren().add(agenda);
    searchParameters = FXCollections.<Keys, String>observableHashMap();
    searchParameters.put(Keys.SEARCH, "*");
    searchParameters.put(Keys.STARTTIME, TimeParser.format(java.time.Duration.ofHours(8)));
    searchParameters.put(Keys.ENDTIME, TimeParser.format(java.time.Duration.ZERO));
    advancedSearchViewController.setSearchParameters(searchParameters);
    searchParameters.addListener(new MapChangeListener<Keys, String>() {

        @Override
        public void onChanged(Change<? extends Keys, ? extends String> change) {
            Platform.runLater(() -> {
                query.setText(searchParameters.entrySet().stream().sorted(Map.Entry.comparingByKey()).map((e) -> {
                    return e.getKey().getName().trim() + "=" + e.getValue().trim();
                }).collect(Collectors.joining("&")));
            });
        }
    });
    query.setText(searchParameters.entrySet().stream().sorted(Map.Entry.comparingByKey()).map((e) -> {
        return e.getKey().getName().trim() + "=" + e.getValue().trim();
    }).collect(Collectors.joining("&")));
    VBox timeBox = new VBox();
    TimeRelativeIntervalPane timeSelectionPane = new TimeRelativeIntervalPane(TEMPORAL_AMOUNTS_AND_NOW);
    // TODO needs to be initialized from the values in the search parameters
    TimeRelativeInterval initial = TimeRelativeInterval.of(java.time.Duration.ofHours(8), java.time.Duration.ZERO);
    timeSelectionPane.setInterval(initial);
    HBox hbox = new HBox();
    hbox.setSpacing(5);
    hbox.setAlignment(Pos.CENTER_RIGHT);
    Button apply = new Button();
    apply.setText("Apply");
    apply.setPrefWidth(80);
    apply.setOnAction((event) -> {
        Platform.runLater(() -> {
            TimeRelativeInterval interval = timeSelectionPane.getInterval();
            if (interval.isStartAbsolute()) {
                searchParameters.put(Keys.STARTTIME, TimestampFormats.MILLI_FORMAT.format(interval.getAbsoluteStart().get()));
            } else {
                searchParameters.put(Keys.STARTTIME, TimeParser.format(interval.getRelativeStart().get()));
            }
            if (interval.isEndAbsolute()) {
                searchParameters.put(Keys.ENDTIME, TimestampFormats.MILLI_FORMAT.format(interval.getAbsoluteEnd().get()));
            } else {
                searchParameters.put(Keys.ENDTIME, TimeParser.format(interval.getRelativeEnd().get()));
            }
        });
    });
    Button cancel = new Button();
    cancel.setText("Cancel");
    cancel.setPrefWidth(80);
    hbox.getChildren().addAll(apply, cancel);
    timeBox.getChildren().addAll(timeSelectionPane, hbox);
    // Bind ENTER key press to search
    query.addEventFilter(KeyEvent.KEY_PRESSED, event -> {
        if (event.getCode() == KeyCode.ENTER) {
            search();
        }
    });
}
Also used : Appointment(jfxtras.scene.control.agenda.Agenda.Appointment) AppointmentGroup(jfxtras.scene.control.agenda.Agenda.AppointmentGroup) Button(javafx.scene.control.Button) LogEntry(org.phoebus.logbook.LogEntry) Pos(javafx.geometry.Pos) Scene(javafx.scene.Scene) Arrays(java.util.Arrays) LocalDateTime(java.time.LocalDateTime) TimeRelativeIntervalPane(org.phoebus.ui.time.TimeRelativeIntervalPane) AtomicBoolean(java.util.concurrent.atomic.AtomicBoolean) FXCollections(javafx.collections.FXCollections) HashMap(java.util.HashMap) TimestampFormats(org.phoebus.util.time.TimestampFormats) VBox(javafx.scene.layout.VBox) Function(java.util.function.Function) AppointmentImplLocal(jfxtras.scene.control.agenda.Agenda.AppointmentImplLocal) Level(java.util.logging.Level) TimeParser(org.phoebus.util.time.TimeParser) TimeRelativeInterval(org.phoebus.util.time.TimeRelativeInterval) Map(java.util.Map) Agenda(jfxtras.scene.control.agenda.Agenda) KeyValue(javafx.animation.KeyValue) Callback(javafx.util.Callback) GridPane(javafx.scene.layout.GridPane) KeyCode(javafx.scene.input.KeyCode) HBox(javafx.scene.layout.HBox) KeyFrame(javafx.animation.KeyFrame) TextField(javafx.scene.control.TextField) Modality(javafx.stage.Modality) MapChangeListener(javafx.collections.MapChangeListener) Timeline(javafx.animation.Timeline) KeyEvent(javafx.scene.input.KeyEvent) ObservableMap(javafx.collections.ObservableMap) Logger(java.util.logging.Logger) Collectors(java.util.stream.Collectors) ZoneId(java.time.ZoneId) Platform(javafx.application.Platform) FXML(javafx.fxml.FXML) List(java.util.List) Duration(javafx.util.Duration) Keys(org.phoebus.logbook.ui.LogbookQueryUtil.Keys) TreeMap(java.util.TreeMap) Stage(javafx.stage.Stage) AnchorPane(javafx.scene.layout.AnchorPane) Appointment(jfxtras.scene.control.agenda.Agenda.Appointment) LogClient(org.phoebus.logbook.LogClient) TEMPORAL_AMOUNTS_AND_NOW(org.phoebus.ui.time.TemporalAmountPane.Type.TEMPORAL_AMOUNTS_AND_NOW) AppointmentGroup(jfxtras.scene.control.agenda.Agenda.AppointmentGroup) TimeRelativeInterval(org.phoebus.util.time.TimeRelativeInterval) HBox(javafx.scene.layout.HBox) Agenda(jfxtras.scene.control.agenda.Agenda) Scene(javafx.scene.Scene) TimeRelativeIntervalPane(org.phoebus.ui.time.TimeRelativeIntervalPane) Button(javafx.scene.control.Button) Keys(org.phoebus.logbook.ui.LogbookQueryUtil.Keys) Stage(javafx.stage.Stage) VBox(javafx.scene.layout.VBox) FXML(javafx.fxml.FXML)

Aggregations

TimeRelativeInterval (org.phoebus.util.time.TimeRelativeInterval)10 Button (javafx.scene.control.Button)5 List (java.util.List)4 FXML (javafx.fxml.FXML)4 HBox (javafx.scene.layout.HBox)4 VBox (javafx.scene.layout.VBox)4 TimeRelativeIntervalPane (org.phoebus.ui.time.TimeRelativeIntervalPane)4 TemporalAmount (java.time.temporal.TemporalAmount)3 ObservableValue (javafx.beans.value.ObservableValue)3 PopOver (org.phoebus.ui.dialog.PopOver)3 IOException (java.io.IOException)2 Instant (java.time.Instant)2 ArrayList (java.util.ArrayList)2 Collectors (java.util.stream.Collectors)2 FXMLLoader (javafx.fxml.FXMLLoader)2 Scene (javafx.scene.Scene)2 GridPane (javafx.scene.layout.GridPane)2 ExportJob (org.csstudio.trends.databrowser3.export.ExportJob)2 MatlabFileExportJob (org.csstudio.trends.databrowser3.export.MatlabFileExportJob)2 MatlabScriptExportJob (org.csstudio.trends.databrowser3.export.MatlabScriptExportJob)2