Skip to content

Commit 3b65cd8

Browse files
committed
CSSTUDIO-2648 Add "Add Layout" button to the toolbar when org.phoebus.ui/toolbar_entries=Add Layouts is set.
1 parent d051c56 commit 3b65cd8

File tree

2 files changed

+20
-1
lines changed

2 files changed

+20
-1
lines changed

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

Lines changed: 19 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -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;

0 commit comments

Comments
 (0)