diff --git a/core/ui/src/main/java/org/phoebus/ui/application/PhoebusApplication.java b/core/ui/src/main/java/org/phoebus/ui/application/PhoebusApplication.java index c4d3c7ca20..9f48eb7baa 100644 --- a/core/ui/src/main/java/org/phoebus/ui/application/PhoebusApplication.java +++ b/core/ui/src/main/java/org/phoebus/ui/application/PhoebusApplication.java @@ -1395,6 +1395,12 @@ public static boolean confirmationDialogWhenUnsavedChangesExist(List stag monitor); } + private enum SaveStatus { + SUCCESS, + FAILURE, + NOTHING + }; + public static boolean confirmationDialogWhenUnsavedChangesExist(SortedMap>> windowNrToApplicationNameToDockItemsWithInput, String question, String closeActionName, @@ -1440,7 +1446,7 @@ public static boolean confirmationDialogWhenUnsavedChangesExist(SortedMap> setCheckBoxStatusActions = new LinkedList<>(); List> getCheckBoxStatusActions = new LinkedList<>(); - List> saveActions = new LinkedList<>(); + List> saveActions = new LinkedList<>(); Runnable enableAndDisableButtons = () -> { if (getCheckBoxStatusActions.stream().anyMatch(getCheckBoxStatus -> getCheckBoxStatus.get())) { @@ -1501,7 +1507,7 @@ public static boolean confirmationDialogWhenUnsavedChangesExist(SortedMap checkBox.setSelected(!checkBox.isSelected())); // Enable toggling checkbox by clicking on its label. - Supplier saveIfCheckboxEnabled = () -> { + Supplier saveIfCheckboxEnabled = () -> { if (checkBox.isSelected()) { Text saving = new Text("[" + Messages.UnsavedChanges_saving + "]"); @@ -1520,7 +1526,7 @@ public static boolean confirmationDialogWhenUnsavedChangesExist(SortedMap { event.consume(); - List> saveActionsThatHaveBeenCompleted = new LinkedList<>(); + List> saveActionsThatHaveBeenCompleted = new LinkedList<>(); for (var saveAction : saveActions) { - boolean result = saveAction.get(); - if (result) { + SaveStatus result = saveAction.get(); + if (result == SaveStatus.SUCCESS) { saveActionsThatHaveBeenCompleted.add(saveAction); } + else if (result == SaveStatus.FAILURE) { + break; + } + // If result == SaveStatus.NOTHING, continue. } for (var saveActionThatHasBeenCompleted : saveActionsThatHaveBeenCompleted) {