From 27947001b11a9aef281643a87424636a1a12dbbc Mon Sep 17 00:00:00 2001 From: Urban Bobek Date: Thu, 24 Oct 2024 14:21:37 +0200 Subject: [PATCH 1/4] Implement user defined runtime zoom factor Add a mechanism to apply a custom zoom factor for the runtime window. The desired zoom factor can be set in settings.ini as: org.csstudio.display.builder.runtime.app/default_zoom_factor=1.23 --- .../builder/runtime/app/ZoomAction.java | 18 +++++++++++++++++- .../main/resources/zoom_preferences.properties | 6 ++++++ 2 files changed, 23 insertions(+), 1 deletion(-) create mode 100644 app/display/runtime/src/main/resources/zoom_preferences.properties diff --git a/app/display/runtime/src/main/java/org/csstudio/display/builder/runtime/app/ZoomAction.java b/app/display/runtime/src/main/java/org/csstudio/display/builder/runtime/app/ZoomAction.java index 6e6f011bcf..97c65f32ad 100644 --- a/app/display/runtime/src/main/java/org/csstudio/display/builder/runtime/app/ZoomAction.java +++ b/app/display/runtime/src/main/java/org/csstudio/display/builder/runtime/app/ZoomAction.java @@ -8,6 +8,9 @@ package org.csstudio.display.builder.runtime.app; import org.csstudio.display.builder.representation.javafx.JFXRepresentation; +import org.phoebus.framework.preferences.AnnotatedPreferences; +import org.phoebus.framework.preferences.PreferencesReader; +import org.phoebus.framework.preferences.Preference; import javafx.application.Platform; import javafx.scene.control.ComboBox; @@ -19,13 +22,19 @@ public class ZoomAction extends ComboBox { private boolean updating = false; + @Preference public static double default_zoom_factor; + + static + { + AnnotatedPreferences.initialize(ZoomAction.class, "/zoom_preferences.properties"); + } + /** @param instance {@link DisplayRuntimeInstance} */ public ZoomAction(final DisplayRuntimeInstance instance) { setEditable(true); setPrefWidth(100.0); getItems().addAll(JFXRepresentation.ZOOM_LEVELS); - setValue(JFXRepresentation.DEFAULT_ZOOM_LEVEL); // For Ctrl-Wheel zoom gesture instance.getRepresentation().setZoomListener(txt -> { @@ -33,6 +42,13 @@ public ZoomAction(final DisplayRuntimeInstance instance) getEditor().setText(txt); }); setOnAction(event -> zoom(instance.getRepresentation())); + + // Add the zoom action into a queue + Platform.runLater(() -> + { + String zoom = String.format("%d %%", (int)(default_zoom_factor * 100)); + setValue(zoom); + }); } private void zoom(final JFXRepresentation representation) diff --git a/app/display/runtime/src/main/resources/zoom_preferences.properties b/app/display/runtime/src/main/resources/zoom_preferences.properties new file mode 100644 index 0000000000..498764ccf6 --- /dev/null +++ b/app/display/runtime/src/main/resources/zoom_preferences.properties @@ -0,0 +1,6 @@ +# ---------------------- +# Package org.csstudio.display.builder.runtime.app +# ---------------------- + +# Defualt zoom factor(double) of display runtime window +default_zoom_factor=1.00 From ed5b95fdcbcaf5b19b396da13d837afacf6287e9 Mon Sep 17 00:00:00 2001 From: Urban Bobek Date: Fri, 18 Apr 2025 14:42:04 +0200 Subject: [PATCH 2/4] Define zoom as a percentage, fix typo --- .../csstudio/display/builder/runtime/app/ZoomAction.java | 7 ++++--- .../runtime/src/main/resources/zoom_preferences.properties | 4 ++-- 2 files changed, 6 insertions(+), 5 deletions(-) diff --git a/app/display/runtime/src/main/java/org/csstudio/display/builder/runtime/app/ZoomAction.java b/app/display/runtime/src/main/java/org/csstudio/display/builder/runtime/app/ZoomAction.java index 97c65f32ad..90b44d7a56 100644 --- a/app/display/runtime/src/main/java/org/csstudio/display/builder/runtime/app/ZoomAction.java +++ b/app/display/runtime/src/main/java/org/csstudio/display/builder/runtime/app/ZoomAction.java @@ -22,7 +22,7 @@ public class ZoomAction extends ComboBox { private boolean updating = false; - @Preference public static double default_zoom_factor; + @Preference public static int default_zoom_factor; static { @@ -35,6 +35,7 @@ public ZoomAction(final DisplayRuntimeInstance instance) setEditable(true); setPrefWidth(100.0); getItems().addAll(JFXRepresentation.ZOOM_LEVELS); + setValue(JFXRepresentation.DEFAULT_ZOOM_LEVEL); // For Ctrl-Wheel zoom gesture instance.getRepresentation().setZoomListener(txt -> { @@ -43,10 +44,10 @@ public ZoomAction(final DisplayRuntimeInstance instance) }); setOnAction(event -> zoom(instance.getRepresentation())); - // Add the zoom action into a queue + // Apply default zoom factor from settings.ini Platform.runLater(() -> { - String zoom = String.format("%d %%", (int)(default_zoom_factor * 100)); + String zoom = String.format("%d %%", default_zoom_factor); setValue(zoom); }); } diff --git a/app/display/runtime/src/main/resources/zoom_preferences.properties b/app/display/runtime/src/main/resources/zoom_preferences.properties index 498764ccf6..9e0ed10f2d 100644 --- a/app/display/runtime/src/main/resources/zoom_preferences.properties +++ b/app/display/runtime/src/main/resources/zoom_preferences.properties @@ -2,5 +2,5 @@ # Package org.csstudio.display.builder.runtime.app # ---------------------- -# Defualt zoom factor(double) of display runtime window -default_zoom_factor=1.00 +# Default zoom factor (percentage) of display runtime window +default_zoom_factor=100 From 716cbb491773105bd69f23317f4a03a0deb63971 Mon Sep 17 00:00:00 2001 From: Urban Bobek Date: Fri, 18 Apr 2025 14:42:36 +0200 Subject: [PATCH 3/4] Invoke zoom changed handler to apply the zoom factor --- .../org/csstudio/display/builder/runtime/app/ZoomAction.java | 2 ++ 1 file changed, 2 insertions(+) diff --git a/app/display/runtime/src/main/java/org/csstudio/display/builder/runtime/app/ZoomAction.java b/app/display/runtime/src/main/java/org/csstudio/display/builder/runtime/app/ZoomAction.java index 90b44d7a56..52e93a0dbb 100644 --- a/app/display/runtime/src/main/java/org/csstudio/display/builder/runtime/app/ZoomAction.java +++ b/app/display/runtime/src/main/java/org/csstudio/display/builder/runtime/app/ZoomAction.java @@ -49,6 +49,8 @@ public ZoomAction(final DisplayRuntimeInstance instance) { String zoom = String.format("%d %%", default_zoom_factor); setValue(zoom); + // Invoke zoom changed handler + getOnAction().handle(null); }); } From 603c657e85e019a4081dc85e3b5f52bbf124e17f Mon Sep 17 00:00:00 2001 From: Urban Bobek Date: Tue, 22 Apr 2025 14:41:50 +0200 Subject: [PATCH 4/4] Move default_zoom_factor to display runtime preferences --- .../display/builder/runtime/Preferences.java | 2 ++ .../display/builder/runtime/app/ZoomAction.java | 13 ++----------- .../display_runtime_preferences.properties | 3 +++ .../src/main/resources/zoom_preferences.properties | 6 ------ 4 files changed, 7 insertions(+), 17 deletions(-) delete mode 100644 app/display/runtime/src/main/resources/zoom_preferences.properties diff --git a/app/display/runtime/src/main/java/org/csstudio/display/builder/runtime/Preferences.java b/app/display/runtime/src/main/java/org/csstudio/display/builder/runtime/Preferences.java index 4b07f67a54..4f07a2b3e0 100644 --- a/app/display/runtime/src/main/java/org/csstudio/display/builder/runtime/Preferences.java +++ b/app/display/runtime/src/main/java/org/csstudio/display/builder/runtime/Preferences.java @@ -33,6 +33,8 @@ public class Preferences @Preference public static String probe_display; /** Preference setting */ public static final List pv_name_patches = new ArrayList<>(); + /** Preference setting */ + @Preference public static int default_zoom_factor; static { diff --git a/app/display/runtime/src/main/java/org/csstudio/display/builder/runtime/app/ZoomAction.java b/app/display/runtime/src/main/java/org/csstudio/display/builder/runtime/app/ZoomAction.java index 52e93a0dbb..01859028e2 100644 --- a/app/display/runtime/src/main/java/org/csstudio/display/builder/runtime/app/ZoomAction.java +++ b/app/display/runtime/src/main/java/org/csstudio/display/builder/runtime/app/ZoomAction.java @@ -8,9 +8,7 @@ package org.csstudio.display.builder.runtime.app; import org.csstudio.display.builder.representation.javafx.JFXRepresentation; -import org.phoebus.framework.preferences.AnnotatedPreferences; -import org.phoebus.framework.preferences.PreferencesReader; -import org.phoebus.framework.preferences.Preference; +import org.csstudio.display.builder.runtime.Preferences; import javafx.application.Platform; import javafx.scene.control.ComboBox; @@ -22,13 +20,6 @@ public class ZoomAction extends ComboBox { private boolean updating = false; - @Preference public static int default_zoom_factor; - - static - { - AnnotatedPreferences.initialize(ZoomAction.class, "/zoom_preferences.properties"); - } - /** @param instance {@link DisplayRuntimeInstance} */ public ZoomAction(final DisplayRuntimeInstance instance) { @@ -47,7 +38,7 @@ public ZoomAction(final DisplayRuntimeInstance instance) // Apply default zoom factor from settings.ini Platform.runLater(() -> { - String zoom = String.format("%d %%", default_zoom_factor); + String zoom = String.format("%d %%", Preferences.default_zoom_factor); setValue(zoom); // Invoke zoom changed handler getOnAction().handle(null); diff --git a/app/display/runtime/src/main/resources/display_runtime_preferences.properties b/app/display/runtime/src/main/resources/display_runtime_preferences.properties index f5450ea396..9e23ee7bd5 100644 --- a/app/display/runtime/src/main/resources/display_runtime_preferences.properties +++ b/app/display/runtime/src/main/resources/display_runtime_preferences.properties @@ -46,3 +46,6 @@ update_throttle=250 # When left empty, the "Probe Display" # context menu entry is disabled. probe_display=examples:/probe.bob + +# Default zoom factor (percentage) of display runtime window +default_zoom_factor=100 diff --git a/app/display/runtime/src/main/resources/zoom_preferences.properties b/app/display/runtime/src/main/resources/zoom_preferences.properties deleted file mode 100644 index 9e0ed10f2d..0000000000 --- a/app/display/runtime/src/main/resources/zoom_preferences.properties +++ /dev/null @@ -1,6 +0,0 @@ -# ---------------------- -# Package org.csstudio.display.builder.runtime.app -# ---------------------- - -# Default zoom factor (percentage) of display runtime window -default_zoom_factor=100