|
44 | 44 | import javafx.scene.layout.GridPane; |
45 | 45 | import javafx.scene.layout.HBox; |
46 | 46 | import javafx.scene.layout.VBox; |
| 47 | +import org.phoebus.framework.jobs.JobManager; |
47 | 48 | import org.phoebus.logbook.LogClient; |
48 | 49 | import org.phoebus.logbook.LogEntryLevel; |
49 | 50 | import org.phoebus.logbook.Logbook; |
@@ -317,18 +318,21 @@ public void initialize() { |
317 | 318 | } |
318 | 319 | }); |
319 | 320 |
|
320 | | - levelsList.addAll(logClient.listLevels().stream().map(LogEntryLevel::name).sorted().toList()); |
321 | | - levelsList.forEach(level -> { |
322 | | - LevelSelection levelSelection = new LevelSelection(level, false); |
323 | | - levelSelections.add(levelSelection); |
324 | | - CheckBox checkBox = new CheckBox(level); |
325 | | - LevelSelectionMenuItem levelSelectionMenuItem = new LevelSelectionMenuItem(checkBox); |
326 | | - levelSelectionMenuItem.setHideOnClick(false); |
327 | | - checkBox.selectedProperty().addListener((observable, oldValue, newValue) -> { |
328 | | - levelSelection.selected = newValue; |
329 | | - setSelectedLevelsString(); |
| 321 | + // Fetch levels from service on separate thread |
| 322 | + JobManager.schedule("Get logbook levels", monitor -> { |
| 323 | + levelsList.addAll(logClient.listLevels().stream().map(LogEntryLevel::name).sorted().toList()); |
| 324 | + levelsList.forEach(level -> { |
| 325 | + LevelSelection levelSelection = new LevelSelection(level, false); |
| 326 | + levelSelections.add(levelSelection); |
| 327 | + CheckBox checkBox = new CheckBox(level); |
| 328 | + LevelSelectionMenuItem levelSelectionMenuItem = new LevelSelectionMenuItem(checkBox); |
| 329 | + levelSelectionMenuItem.setHideOnClick(false); |
| 330 | + checkBox.selectedProperty().addListener((observable, oldValue, newValue) -> { |
| 331 | + levelSelection.selected = newValue; |
| 332 | + setSelectedLevelsString(); |
| 333 | + }); |
| 334 | + levelsContextMenu.getItems().add(levelSelectionMenuItem); |
330 | 335 | }); |
331 | | - levelsContextMenu.getItems().add(levelSelectionMenuItem); |
332 | 336 | }); |
333 | 337 |
|
334 | 338 | sortOrderProperty.addListener(searchOnSortChange); |
@@ -358,45 +362,47 @@ public AnchorPane getPane() { |
358 | 362 | * @param queryString Query string containing search terms and values |
359 | 363 | */ |
360 | 364 | private void updateControls(String queryString) { |
361 | | - Map<String, String> queryStringParameters = LogbookQueryUtil.parseHumanReadableQueryString(queryString); |
362 | | - queryStringParameters.entrySet().forEach(entry -> { |
363 | | - Keys keys = Keys.findKey(entry.getKey()); |
364 | | - if (keys != null) { |
365 | | - if (keys.equals(Keys.LEVEL)) { |
366 | | - List<String> validatedLevels = getValidatedLevelsSelection(entry.getValue()); |
367 | | - if (validatedLevels.isEmpty()) { |
368 | | - searchParameters.levelsProperty().setValue(null); |
369 | | - } else { |
370 | | - String selectedLevels = |
371 | | - String.join(",", validatedLevels); |
372 | | - searchParameters.levelsProperty().setValue(selectedLevels); |
373 | | - } |
374 | | - levelsContextMenu.getItems().forEach(mi -> { |
375 | | - LevelSelectionMenuItem levelSelectionMenuItem = |
376 | | - (LevelSelectionMenuItem) mi; |
377 | | - levelSelectionMenuItem.setSelected(validatedLevels.contains(levelSelectionMenuItem.getCheckBox().getText())); |
378 | | - }); |
379 | | - } else if (keys.equals(Keys.LOGBOOKS)) { |
380 | | - List<String> validatedLogbookNames = getValidatedLogbooksSelection(entry.getValue()); |
381 | | - if (validatedLogbookNames.isEmpty()) { |
382 | | - searchParameters.logbooksProperty().setValue(null); |
383 | | - } else { |
384 | | - String selectedLogbooks = |
385 | | - String.join(",", validatedLogbookNames); |
386 | | - searchParameters.logbooksProperty().setValue(selectedLogbooks); |
387 | | - } |
388 | | - logbookSearchPopover.setSelected(validatedLogbookNames); |
389 | | - } else if (keys.equals(Keys.TAGS)) { |
390 | | - List<String> validatedTagsNames = getValidatedTagsSelection(entry.getValue()); |
391 | | - if (validatedTagsNames.isEmpty()) { |
392 | | - searchParameters.tagsProperty().setValue(null); |
393 | | - } else { |
394 | | - String selectedTags = String.join(",", validatedTagsNames); |
395 | | - searchParameters.tagsProperty().setValue(selectedTags); |
| 365 | + JobManager.schedule("Update controls from server data", monitor -> { |
| 366 | + Map<String, String> queryStringParameters = LogbookQueryUtil.parseHumanReadableQueryString(queryString); |
| 367 | + queryStringParameters.entrySet().forEach(entry -> { |
| 368 | + Keys keys = Keys.findKey(entry.getKey()); |
| 369 | + if (keys != null) { |
| 370 | + if (keys.equals(Keys.LEVEL)) { |
| 371 | + List<String> validatedLevels = getValidatedLevelsSelection(entry.getValue()); |
| 372 | + if (validatedLevels.isEmpty()) { |
| 373 | + searchParameters.levelsProperty().setValue(null); |
| 374 | + } else { |
| 375 | + String selectedLevels = |
| 376 | + String.join(",", validatedLevels); |
| 377 | + searchParameters.levelsProperty().setValue(selectedLevels); |
| 378 | + } |
| 379 | + levelsContextMenu.getItems().forEach(mi -> { |
| 380 | + LevelSelectionMenuItem levelSelectionMenuItem = |
| 381 | + (LevelSelectionMenuItem) mi; |
| 382 | + levelSelectionMenuItem.setSelected(validatedLevels.contains(levelSelectionMenuItem.getCheckBox().getText())); |
| 383 | + }); |
| 384 | + } else if (keys.equals(Keys.LOGBOOKS)) { |
| 385 | + List<String> validatedLogbookNames = getValidatedLogbooksSelection(entry.getValue()); |
| 386 | + if (validatedLogbookNames.isEmpty()) { |
| 387 | + searchParameters.logbooksProperty().setValue(null); |
| 388 | + } else { |
| 389 | + String selectedLogbooks = |
| 390 | + String.join(",", validatedLogbookNames); |
| 391 | + searchParameters.logbooksProperty().setValue(selectedLogbooks); |
| 392 | + } |
| 393 | + logbookSearchPopover.setSelected(validatedLogbookNames); |
| 394 | + } else if (keys.equals(Keys.TAGS)) { |
| 395 | + List<String> validatedTagsNames = getValidatedTagsSelection(entry.getValue()); |
| 396 | + if (validatedTagsNames.isEmpty()) { |
| 397 | + searchParameters.tagsProperty().setValue(null); |
| 398 | + } else { |
| 399 | + String selectedTags = String.join(",", validatedTagsNames); |
| 400 | + searchParameters.tagsProperty().setValue(selectedTags); |
| 401 | + } |
| 402 | + tagSearchPopover.setSelected(validatedTagsNames); |
396 | 403 | } |
397 | | - tagSearchPopover.setSelected(validatedTagsNames); |
398 | 404 | } |
399 | | - } |
| 405 | + }); |
400 | 406 | }); |
401 | 407 | } |
402 | 408 |
|
|
0 commit comments