Skip to content

Commit 83f0a37

Browse files
committed
CSSTUDIO-2880 Run refresh() atomically on the UI thread.
1 parent 368971f commit 83f0a37

File tree

1 file changed

+21
-15
lines changed

1 file changed

+21
-15
lines changed

app/logbook/olog/ui/src/main/java/org/phoebus/logbook/olog/ui/LogEntryTableViewController.java

Lines changed: 21 additions & 15 deletions
Original file line numberDiff line numberDiff line change
@@ -436,35 +436,41 @@ public String getQuery() {
436436
}
437437

438438
private synchronized void refresh() {
439-
if (this.searchResult != null) {
440-
List<TableViewListItem> selectedLogEntries = new ArrayList<>(tableView.getSelectionModel().getSelectedItems());
439+
Runnable refreshRunnable = () -> {
440+
if (this.searchResult != null) {
441+
List<TableViewListItem> selectedLogEntries = new ArrayList<>(tableView.getSelectionModel().getSelectedItems());
441442

442-
List<LogEntry> logEntries = searchResult.getLogs();
443-
logEntries.sort((o1, o2) -> -(o1.getCreatedDate().compareTo(o2.getCreatedDate())));
443+
List<LogEntry> logEntries = searchResult.getLogs();
444+
logEntries.sort((o1, o2) -> -(o1.getCreatedDate().compareTo(o2.getCreatedDate())));
444445

445-
boolean showDetailsBoolean = showDetails.get();
446-
var logs = logEntries.stream().map(le -> new TableViewListItem(le, showDetailsBoolean)).toList();
446+
boolean showDetailsBoolean = showDetails.get();
447+
var logs = logEntries.stream().map(le -> new TableViewListItem(le, showDetailsBoolean)).toList();
447448

448-
ObservableList<TableViewListItem> logsList = FXCollections.observableArrayList(logs);
449-
tableView.setItems(logsList);
449+
ObservableList<TableViewListItem> logsList = FXCollections.observableArrayList(logs);
450+
tableView.setItems(logsList);
450451

451-
// This will ensure that selected entries stay selected after the list has been
452-
// updated from the search result.
453-
for (TableViewListItem selectedItem : selectedLogEntries) {
454-
for (TableViewListItem item : tableView.getItems()) {
455-
if (item.getLogEntry().getId().equals(selectedItem.getLogEntry().getId())) {
456-
Platform.runLater(() -> {
452+
// This will ensure that selected entries stay selected after the list has been
453+
// updated from the search result.
454+
for (TableViewListItem selectedItem : selectedLogEntries) {
455+
for (TableViewListItem item : tableView.getItems()) {
456+
if (item.getLogEntry().getId().equals(selectedItem.getLogEntry().getId())) {
457457
if (goBackAndGoForwardActions.isPresent()) {
458458
goBackAndGoForwardActions.get().setIsRecordingHistoryDisabled(true); // Do not create a "Back" action for the automatic reload.
459459
tableView.getSelectionModel().select(item);
460460
goBackAndGoForwardActions.get().setIsRecordingHistoryDisabled(false);
461461
} else {
462462
tableView.getSelectionModel().select(item);
463463
}
464-
});
464+
}
465465
}
466466
}
467467
}
468+
};
469+
470+
if (Platform.isFxApplicationThread()) {
471+
refreshRunnable.run();
472+
} else {
473+
Platform.runLater(refreshRunnable);
468474
}
469475
}
470476

0 commit comments

Comments
 (0)