From d051c568641a6cbe1035e622af685939c439edfe Mon Sep 17 00:00:00 2001 From: Abraham Wolk Date: Thu, 9 Jan 2025 09:54:32 +0100 Subject: [PATCH 1/3] CSSTUDIO-2648 Add new icon for adding layouts. --- .../ui/application/PhoebusApplication.java | 2 +- core/ui/src/main/resources/icons/add_layout.png | Bin 0 -> 549 bytes 2 files changed, 1 insertion(+), 1 deletion(-) create mode 100644 core/ui/src/main/resources/icons/add_layout.png 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 de2a5a3c02..092f40dca6 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 @@ -203,7 +203,7 @@ public class PhoebusApplication extends Application { /** * Menu to add a layout to the current layout */ - private final Menu add_layout = new Menu(Messages.AddLayout, ImageCache.getImageView(ImageCache.class, "/icons/layouts.png")); + private final Menu add_layout = new Menu(Messages.AddLayout, ImageCache.getImageView(ImageCache.class, "/icons/add_layout.png")); /** * List of memento names diff --git a/core/ui/src/main/resources/icons/add_layout.png b/core/ui/src/main/resources/icons/add_layout.png new file mode 100644 index 0000000000000000000000000000000000000000..3f47a4e89c43929c8106bdf383e6fb863cad3fed GIT binary patch literal 549 zcmV+=0^0qFP)Lk-ckEQ5eR5?>YCT2{%Y9LKX)<2#AUb3erKut#s2N zRFKkaSseVp!6i=C6bD_ROIjzzs)JK2LakI0L`6Xy`WGk~8!5d>bMHCVq2#8?Em-h@ z!#NL}_xHZ%Iq;v7?Oq(deJ+Z`BBFVB`B_{SAI5JzUluo$*CJ@G&`Qu+Pza)h_pQ53 zkNl!Im*Zeq{5W%U^aOy@0fgz@`D}WCtmooo9K5tkI_>b_^#m9|D;mbo{JF{}?i@dQ zeI)vFb6#SA|K|r$Fi5khSaAebSwy+4|86mH#s`F@ZxQ3i+E^t_FL?A!aCY!%m@nLm z{nwcShl{f;d=P4L16UDGA6etgXOBn>&;~$t3f8TV(%sb#H}*%9FL^lmigvvT%FwL) zTsg46v0QsAy%~f;D#oz^*yL?scrh;!8QMYj^SS_|NGa(7EY>c@{@SUN07TZ}uQjp> zKx3uu%vQ#_EfGe~m+6 Date: Thu, 9 Jan 2025 10:08:11 +0100 Subject: [PATCH 2/3] CSSTUDIO-2648 Add "Add Layout" button to the toolbar when org.phoebus.ui/toolbar_entries=Add Layouts is set. --- .../ui/application/PhoebusApplication.java | 19 +++++++++++++++++++ .../ui/application/ToolbarEntryService.java | 2 +- 2 files changed, 20 insertions(+), 1 deletion(-) 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 092f40dca6..3a3851fe4c 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 @@ -229,6 +229,11 @@ public class PhoebusApplication extends Application { */ private MenuButton layout_menu_button; + /** + * Toolbar button for adding past layouts + */ + private MenuButton add_layout_menu_button; + /** * Last file used by 'File, Open' menu * (the _directory_ is actually used by the file-open dialog) @@ -759,6 +764,7 @@ void createLoadLayoutsMenu() { final List menuItemList = new ArrayList<>(); final List toolbarMenuItemList = new ArrayList<>(); final List addLayoutMenuItemList = new ArrayList<>(); + final List toolbarAddLayoutMenuItemList = new ArrayList<>(); final Map layoutFiles = new HashMap(); @@ -822,6 +828,12 @@ void createLoadLayoutsMenu() { addLayoutMenuItem.setMnemonicParsing(false); addLayoutMenuItem.setOnAction(event -> startAddingLayout(file)); addLayoutMenuItemList.add(addLayoutMenuItem); + + // Repeat for the same menu in the toolbar. They can't share menu items. + final MenuItem toolbarAddLayoutMenuItem = new MenuItem(filename); + toolbarAddLayoutMenuItem.setMnemonicParsing(false); + toolbarAddLayoutMenuItem.setOnAction(event -> startAddingLayout(file)); + toolbarAddLayoutMenuItemList.add(toolbarAddLayoutMenuItem); } }); } @@ -832,6 +844,7 @@ void createLoadLayoutsMenu() { load_layout.getItems().setAll(menuItemList); add_layout.getItems().setAll(addLayoutMenuItemList); layout_menu_button.getItems().setAll(toolbarMenuItemList); + add_layout_menu_button.getItems().setAll(toolbarAddLayoutMenuItemList); delete_layouts.setDisable(memento_files.isEmpty()); }); }); @@ -965,6 +978,12 @@ private ToolBar createToolbar() { if (! Preferences.toolbar_entries.contains("!Layouts")) toolBar.getItems().add(layout_menu_button); + add_layout_menu_button = new MenuButton(null, ImageCache.getImageView(getClass(), "/icons/add_layout.png")); + add_layout_menu_button.setTooltip(new Tooltip(Messages.AddLayout)); + if (Preferences.toolbar_entries.contains("Add Layouts") && !Preferences.toolbar_entries.contains("!Add Layouts")) { + toolBar.getItems().add(add_layout_menu_button); + } + // Contributed Entries ToolbarEntryService.getInstance().listToolbarEntries().forEach((entry) -> { final AtomicBoolean open_new = new AtomicBoolean(); diff --git a/core/ui/src/main/java/org/phoebus/ui/application/ToolbarEntryService.java b/core/ui/src/main/java/org/phoebus/ui/application/ToolbarEntryService.java index 9872637359..d46e54193d 100644 --- a/core/ui/src/main/java/org/phoebus/ui/application/ToolbarEntryService.java +++ b/core/ui/src/main/java/org/phoebus/ui/application/ToolbarEntryService.java @@ -29,7 +29,7 @@ private ToolbarEntryService() { if (suppress) desired = desired.substring(1); // Skip entries handled in PhoebusApplication - if (desired.equals("Home") || desired.equals("Top Resources") || desired.equals("Layouts")) + if (desired.equals("Home") || desired.equals("Top Resources") || desired.equals("Layouts") || desired.equals("Add Layouts")) continue; // Add specific 'desired' entry ToolbarEntry found = null; From 6287407dd07be97c8c12eecc0506e6081fb5ad44 Mon Sep 17 00:00:00 2001 From: Abraham Wolk Date: Thu, 9 Jan 2025 10:18:18 +0100 Subject: [PATCH 3/3] CSSTUDIO-2648 Add documentation. --- .../src/main/resources/phoebus_ui_preferences.properties | 7 +++++-- 1 file changed, 5 insertions(+), 2 deletions(-) diff --git a/core/ui/src/main/resources/phoebus_ui_preferences.properties b/core/ui/src/main/resources/phoebus_ui_preferences.properties index f4fdbd0cda..3c840dd285 100644 --- a/core/ui/src/main/resources/phoebus_ui_preferences.properties +++ b/core/ui/src/main/resources/phoebus_ui_preferences.properties @@ -52,9 +52,12 @@ home_display=examples:/01_main.bob?app=display_runtime,Example Display # # The special entry "*" adds all remaining available toolbar entries. # An entry starting with "!" removes that item from the available entries. -# The order of the initial buttons "Home, Top Resources, Layouts" +# The order of the initial buttons "Home, Top Resources, Layouts, Add Layouts" # cannot be changed, but they can be suppressed by adding "!", -# for example "Home, !Top Resources, !Layouts". +# for example "Home, !Top Resources, !Layouts, !Add Layouts". +# +# The special entry "Add Layouts" is NOT added to the toolbar by default. It +# can be added to the toolbar by specifying "Add Layouts". # # The strings in the list of entries MUST match what is returned from # ToolbarEntry#getId(). This allows for customization/localization of app name