Search in sources :

Example 1 with TimeRelativeIntervalPane

use of org.phoebus.ui.time.TimeRelativeIntervalPane 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 2 with TimeRelativeIntervalPane

use of org.phoebus.ui.time.TimeRelativeIntervalPane 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 3 with TimeRelativeIntervalPane

use of org.phoebus.ui.time.TimeRelativeIntervalPane 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)

Example 4 with TimeRelativeIntervalPane

use of org.phoebus.ui.time.TimeRelativeIntervalPane in project phoebus by ControlSystemStudio.

the class AdvancedSearchViewController method initialize.

@FXML
public void initialize() {
    // 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("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();
        }
    });
    FXMLLoader logbookSelectionLoader = new FXMLLoader();
    logbookSelectionLoader.setLocation(this.getClass().getResource("ListSelection.fxml"));
    try {
        logbookSelectionLoader.load();
        logbookController = logbookSelectionLoader.getController();
        logbookController.setOnApply((List<String> t) -> {
            Platform.runLater(() -> {
                searchParameters.put(Keys.LOGBOOKS, 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(() -> {
                searchParameters.put(Keys.TAGS, t.stream().collect(Collectors.joining(",")));
                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.focusedProperty().addListener((ObservableValue<? extends Boolean> arg0, Boolean oldPropertyValue, Boolean newPropertyValue) -> {
        if (newPropertyValue) {
            if (tagNames == null) {
                tagNames = logClient.listTags().stream().map(Tag::getName).sorted().collect(Collectors.toList());
            }
            tagController.setAvailable(tagNames);
            tagSearchPopover.show(searchTags);
        } else if (tagSearchPopover.isShowing()) {
            tagSearchPopover.hide();
        }
    });
    searchLogbooks.focusedProperty().addListener((arg0, oldPropertyValue, newPropertyValue) -> {
        if (newPropertyValue) {
            if (logbookNames == null) {
                logbookNames = logClient.listLogbooks().stream().map(Logbook::getName).sorted().collect(Collectors.toList());
            }
            logbookController.setAvailable(logbookNames);
            logbookSearchPopover.show(searchLogbooks);
        } else if (logbookSearchPopover.isShowing()) {
            logbookSearchPopover.hide();
        }
    });
    searchText.textProperty().addListener((observable, oldValue, newValue) -> {
        searchParameters.put(Keys.SEARCH, newValue);
    });
    searchAuthor.textProperty().addListener((observable, oldValue, newValue) -> {
        searchParameters.put(Keys.AUTHOR, newValue);
    });
    searchTitle.textProperty().addListener((observable, oldValue, newValue) -> {
        searchParameters.put(Keys.TITLE, newValue);
    });
    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)

Aggregations

FXML (javafx.fxml.FXML)4 Button (javafx.scene.control.Button)4 HBox (javafx.scene.layout.HBox)4 VBox (javafx.scene.layout.VBox)4 TimeRelativeIntervalPane (org.phoebus.ui.time.TimeRelativeIntervalPane)4 TimeRelativeInterval (org.phoebus.util.time.TimeRelativeInterval)4 List (java.util.List)3 ObservableValue (javafx.beans.value.ObservableValue)3 PopOver (org.phoebus.ui.dialog.PopOver)3 IOException (java.io.IOException)2 FXMLLoader (javafx.fxml.FXMLLoader)2 LocalDateTime (java.time.LocalDateTime)1 ZoneId (java.time.ZoneId)1 Arrays (java.util.Arrays)1 HashMap (java.util.HashMap)1 Map (java.util.Map)1 TreeMap (java.util.TreeMap)1 AtomicBoolean (java.util.concurrent.atomic.AtomicBoolean)1 Function (java.util.function.Function)1 Level (java.util.logging.Level)1