Skip to content

Commit f12b02e

Browse files
authored
Merge pull request #3227 from ControlSystemStudio/CSSTUDIO-2648
CSSTUDIO-2648 "Add Layout" toolbar button and new "Add Layout" icon
2 parents a0e3746 + 6287407 commit f12b02e

File tree

4 files changed

+26
-4
lines changed

4 files changed

+26
-4
lines changed

core/ui/src/main/java/org/phoebus/ui/application/PhoebusApplication.java

Lines changed: 20 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -203,7 +203,7 @@ public class PhoebusApplication extends Application {
203203
/**
204204
* Menu to add a layout to the current layout
205205
*/
206-
private final Menu add_layout = new Menu(Messages.AddLayout, ImageCache.getImageView(ImageCache.class, "/icons/layouts.png"));
206+
private final Menu add_layout = new Menu(Messages.AddLayout, ImageCache.getImageView(ImageCache.class, "/icons/add_layout.png"));
207207

208208
/**
209209
* List of memento names
@@ -229,6 +229,11 @@ public class PhoebusApplication extends Application {
229229
*/
230230
private MenuButton layout_menu_button;
231231

232+
/**
233+
* Toolbar button for adding past layouts
234+
*/
235+
private MenuButton add_layout_menu_button;
236+
232237
/**
233238
* Last file used by 'File, Open' menu
234239
* (the _directory_ is actually used by the file-open dialog)
@@ -759,6 +764,7 @@ void createLoadLayoutsMenu() {
759764
final List<MenuItem> menuItemList = new ArrayList<>();
760765
final List<MenuItem> toolbarMenuItemList = new ArrayList<>();
761766
final List<MenuItem> addLayoutMenuItemList = new ArrayList<>();
767+
final List<MenuItem> toolbarAddLayoutMenuItemList = new ArrayList<>();
762768

763769
final Map<String, File> layoutFiles = new HashMap<String, File>();
764770

@@ -822,6 +828,12 @@ void createLoadLayoutsMenu() {
822828
addLayoutMenuItem.setMnemonicParsing(false);
823829
addLayoutMenuItem.setOnAction(event -> startAddingLayout(file));
824830
addLayoutMenuItemList.add(addLayoutMenuItem);
831+
832+
// Repeat for the same menu in the toolbar. They can't share menu items.
833+
final MenuItem toolbarAddLayoutMenuItem = new MenuItem(filename);
834+
toolbarAddLayoutMenuItem.setMnemonicParsing(false);
835+
toolbarAddLayoutMenuItem.setOnAction(event -> startAddingLayout(file));
836+
toolbarAddLayoutMenuItemList.add(toolbarAddLayoutMenuItem);
825837
}
826838
});
827839
}
@@ -832,6 +844,7 @@ void createLoadLayoutsMenu() {
832844
load_layout.getItems().setAll(menuItemList);
833845
add_layout.getItems().setAll(addLayoutMenuItemList);
834846
layout_menu_button.getItems().setAll(toolbarMenuItemList);
847+
add_layout_menu_button.getItems().setAll(toolbarAddLayoutMenuItemList);
835848
delete_layouts.setDisable(memento_files.isEmpty());
836849
});
837850
});
@@ -965,6 +978,12 @@ private ToolBar createToolbar() {
965978
if (! Preferences.toolbar_entries.contains("!Layouts"))
966979
toolBar.getItems().add(layout_menu_button);
967980

981+
add_layout_menu_button = new MenuButton(null, ImageCache.getImageView(getClass(), "/icons/add_layout.png"));
982+
add_layout_menu_button.setTooltip(new Tooltip(Messages.AddLayout));
983+
if (Preferences.toolbar_entries.contains("Add Layouts") && !Preferences.toolbar_entries.contains("!Add Layouts")) {
984+
toolBar.getItems().add(add_layout_menu_button);
985+
}
986+
968987
// Contributed Entries
969988
ToolbarEntryService.getInstance().listToolbarEntries().forEach((entry) -> {
970989
final AtomicBoolean open_new = new AtomicBoolean();

core/ui/src/main/java/org/phoebus/ui/application/ToolbarEntryService.java

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -29,7 +29,7 @@ private ToolbarEntryService() {
2929
if (suppress)
3030
desired = desired.substring(1);
3131
// Skip entries handled in PhoebusApplication
32-
if (desired.equals("Home") || desired.equals("Top Resources") || desired.equals("Layouts"))
32+
if (desired.equals("Home") || desired.equals("Top Resources") || desired.equals("Layouts") || desired.equals("Add Layouts"))
3333
continue;
3434
// Add specific 'desired' entry
3535
ToolbarEntry found = null;
549 Bytes
Loading

core/ui/src/main/resources/phoebus_ui_preferences.properties

Lines changed: 5 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -52,9 +52,12 @@ home_display=examples:/01_main.bob?app=display_runtime,Example Display
5252
#
5353
# The special entry "*" adds all remaining available toolbar entries.
5454
# An entry starting with "!" removes that item from the available entries.
55-
# The order of the initial buttons "Home, Top Resources, Layouts"
55+
# The order of the initial buttons "Home, Top Resources, Layouts, Add Layouts"
5656
# cannot be changed, but they can be suppressed by adding "!",
57-
# for example "Home, !Top Resources, !Layouts".
57+
# for example "Home, !Top Resources, !Layouts, !Add Layouts".
58+
#
59+
# The special entry "Add Layouts" is NOT added to the toolbar by default. It
60+
# can be added to the toolbar by specifying "Add Layouts".
5861
#
5962
# The strings in the list of entries MUST match what is returned from
6063
# ToolbarEntry#getId(). This allows for customization/localization of app name

0 commit comments

Comments
 (0)