From 57026c1b0a93b0018555240c00c03334930dfedd Mon Sep 17 00:00:00 2001 From: Dennis Hilhorst Date: Mon, 18 Aug 2025 11:22:25 +0200 Subject: [PATCH] [phoebus] allow empty descriptions in SaR controllers --- .../phoebus/applications/saveandrestore/Preferences.java | 6 ++++++ .../ui/configuration/ConfigurationController.java | 3 ++- .../configuration/ConfigurationFromSelectionController.java | 6 ++++-- .../ui/snapshot/CompositeSnapshotController.java | 3 ++- .../saveandrestore/ui/snapshot/SnapshotController.java | 2 +- .../main/resources/save_and_restore_preferences.properties | 6 +++++- 6 files changed, 20 insertions(+), 6 deletions(-) diff --git a/app/save-and-restore/app/src/main/java/org/phoebus/applications/saveandrestore/Preferences.java b/app/save-and-restore/app/src/main/java/org/phoebus/applications/saveandrestore/Preferences.java index 9e7e8314df..0babe6f21a 100644 --- a/app/save-and-restore/app/src/main/java/org/phoebus/applications/saveandrestore/Preferences.java +++ b/app/save-and-restore/app/src/main/java/org/phoebus/applications/saveandrestore/Preferences.java @@ -63,6 +63,12 @@ public class Preferences { @Preference public static String default_restore_mode; + /** + * Allow empty descriptions / comments in SaR nodes + */ + @Preference + public static boolean allow_empty_descriptions; + static { AnnotatedPreferences.initialize(Preferences.class, "/save_and_restore_preferences.properties"); } diff --git a/app/save-and-restore/app/src/main/java/org/phoebus/applications/saveandrestore/ui/configuration/ConfigurationController.java b/app/save-and-restore/app/src/main/java/org/phoebus/applications/saveandrestore/ui/configuration/ConfigurationController.java index 6ba19f78d5..e62ca06684 100644 --- a/app/save-and-restore/app/src/main/java/org/phoebus/applications/saveandrestore/ui/configuration/ConfigurationController.java +++ b/app/save-and-restore/app/src/main/java/org/phoebus/applications/saveandrestore/ui/configuration/ConfigurationController.java @@ -51,6 +51,7 @@ import javafx.util.StringConverter; import javafx.util.converter.DoubleStringConverter; import org.phoebus.applications.saveandrestore.Messages; +import org.phoebus.applications.saveandrestore.Preferences; import org.phoebus.applications.saveandrestore.SaveAndRestoreApplication; import org.phoebus.applications.saveandrestore.model.ComparisonMode; import org.phoebus.applications.saveandrestore.model.ConfigPv; @@ -349,7 +350,7 @@ public void commitEdit(Double value) { descriptionChangeListener = (observableValue, oldValue, newValue) -> dirty.setValue(true); saveButton.disableProperty().bind(Bindings.createBooleanBinding(() -> dirty.not().get() || - configurationDescriptionProperty.isEmpty().get() || + (!Preferences.allow_empty_descriptions && configurationDescriptionProperty.isEmpty().get()) || configurationNameProperty.isEmpty().get() || userIdentity.isNull().get(), dirty, configurationDescriptionProperty, configurationNameProperty, userIdentity)); diff --git a/app/save-and-restore/app/src/main/java/org/phoebus/applications/saveandrestore/ui/configuration/ConfigurationFromSelectionController.java b/app/save-and-restore/app/src/main/java/org/phoebus/applications/saveandrestore/ui/configuration/ConfigurationFromSelectionController.java index ed151afcac..3741314273 100644 --- a/app/save-and-restore/app/src/main/java/org/phoebus/applications/saveandrestore/ui/configuration/ConfigurationFromSelectionController.java +++ b/app/save-and-restore/app/src/main/java/org/phoebus/applications/saveandrestore/ui/configuration/ConfigurationFromSelectionController.java @@ -41,6 +41,7 @@ import javafx.stage.Stage; import org.phoebus.applications.saveandrestore.DirectoryUtilities; import org.phoebus.applications.saveandrestore.Messages; +import org.phoebus.applications.saveandrestore.Preferences; import org.phoebus.applications.saveandrestore.filehandler.csv.CSVCommon; import org.phoebus.applications.saveandrestore.model.ConfigPv; import org.phoebus.applications.saveandrestore.model.Configuration; @@ -243,8 +244,9 @@ public void initialize(URL location, ResourceBundle resources) { // Cannot save until location, config name and description are set. saveButton.disableProperty().bind(Bindings.createBooleanBinding(() -> targetNode.get() == null || - configurationName.get() == null || configurationName.get().isEmpty() || - description.get() == null || description.get().isEmpty(), + configurationName.get() == null || configurationName.get().isEmpty() || ( + !Preferences.allow_empty_descriptions && (description.get() == null || description.get().isEmpty()) + ), targetNode, configurationName, description)); // Make config name field non-editable if location is not set, or if user is updating existing configuration diff --git a/app/save-and-restore/app/src/main/java/org/phoebus/applications/saveandrestore/ui/snapshot/CompositeSnapshotController.java b/app/save-and-restore/app/src/main/java/org/phoebus/applications/saveandrestore/ui/snapshot/CompositeSnapshotController.java index 78c5be1a3e..eaf71294c1 100644 --- a/app/save-and-restore/app/src/main/java/org/phoebus/applications/saveandrestore/ui/snapshot/CompositeSnapshotController.java +++ b/app/save-and-restore/app/src/main/java/org/phoebus/applications/saveandrestore/ui/snapshot/CompositeSnapshotController.java @@ -52,6 +52,7 @@ import javafx.util.Callback; import org.phoebus.applications.saveandrestore.DirectoryUtilities; import org.phoebus.applications.saveandrestore.Messages; +import org.phoebus.applications.saveandrestore.Preferences; import org.phoebus.applications.saveandrestore.SaveAndRestoreApplication; import org.phoebus.applications.saveandrestore.model.CompositeSnapshot; import org.phoebus.applications.saveandrestore.model.CompositeSnapshotData; @@ -304,7 +305,7 @@ public void updateItem(Node item, boolean empty) { descriptionChangeListener = (observableValue, oldValue, newValue) -> dirty.setValue(true); saveButton.disableProperty().bind(Bindings.createBooleanBinding(() -> dirty.not().get() || - compositeSnapshotDescriptionProperty.isEmpty().get() || + (!Preferences.allow_empty_descriptions && compositeSnapshotDescriptionProperty.isEmpty().get()) || compositeSnapshotNameProperty.isEmpty().get() || userIdentity.isNull().get(), dirty, compositeSnapshotDescriptionProperty, compositeSnapshotNameProperty, userIdentity)); diff --git a/app/save-and-restore/app/src/main/java/org/phoebus/applications/saveandrestore/ui/snapshot/SnapshotController.java b/app/save-and-restore/app/src/main/java/org/phoebus/applications/saveandrestore/ui/snapshot/SnapshotController.java index e7bbef4720..dd61a39dba 100644 --- a/app/save-and-restore/app/src/main/java/org/phoebus/applications/saveandrestore/ui/snapshot/SnapshotController.java +++ b/app/save-and-restore/app/src/main/java/org/phoebus/applications/saveandrestore/ui/snapshot/SnapshotController.java @@ -398,7 +398,7 @@ public void initialize() { // TODO: support save (=update) a composite snapshot from the snapshot view. In the meanwhile, disable save button. snapshotDataDirty.not().get() || snapshotNameProperty.isEmpty().get() || - snapshotCommentProperty.isEmpty().get() || + (!Preferences.allow_empty_descriptions && snapshotCommentProperty.isEmpty().get()) || userIdentity.isNull().get(), snapshotDataDirty, snapshotNameProperty, snapshotCommentProperty, userIdentity)); diff --git a/app/save-and-restore/app/src/main/resources/save_and_restore_preferences.properties b/app/save-and-restore/app/src/main/resources/save_and_restore_preferences.properties index 958167c41c..bda0f1c9f3 100644 --- a/app/save-and-restore/app/src/main/resources/save_and_restore_preferences.properties +++ b/app/save-and-restore/app/src/main/resources/save_and_restore_preferences.properties @@ -25,4 +25,8 @@ default_snapshot_mode=READ_PVS # Defines the default restore mode # CLIENT_RESTORE: the restore operation is performed by the client # SERVICE_RESTORE: the restore operation is performed by the server -default_restore_mode=CLIENT_RESTORE \ No newline at end of file +default_restore_mode=CLIENT_RESTORE + +# Allow leaving the description / comment field empty for Configs / (Composite) +# Snapshots +allow_empty_descriptions=false