From 0d4be04d581c73818a76c04a0706295548dbfcc8 Mon Sep 17 00:00:00 2001 From: Carlos Galindo Date: Fri, 9 Dec 2016 18:10:01 +0100 Subject: [PATCH] Added context menu to tabs (duplication and merging) --- .../kauron/jstudy/controller/Controller.java | 24 ++++++++++++++++++- 1 file changed, 23 insertions(+), 1 deletion(-) diff --git a/src/main/java/es/kauron/jstudy/controller/Controller.java b/src/main/java/es/kauron/jstudy/controller/Controller.java index aec4ea0..dcc43bb 100644 --- a/src/main/java/es/kauron/jstudy/controller/Controller.java +++ b/src/main/java/es/kauron/jstudy/controller/Controller.java @@ -169,8 +169,30 @@ public class Controller implements Initializable { tabPane.getSelectionModel().selectNext(); }); + MenuItem merge = new MenuItem("Merge with other table"); + merge.setOnAction(event -> { + Map choices = new HashMap<>(tabMap.values().size() - 1); + for (TableController tc : tabMap.values()) + if (tc != loader.getController()) + choices.put(tc.getName(), tc); + + ChoiceDialog dialog = new ChoiceDialog<>(); + dialog.setTitle("Merging tables..."); + dialog.setHeaderText("Please select another table to merge with this one"); + dialog.getItems().addAll(choices.keySet()); + Optional result = dialog.showAndWait(); + + if (result.isPresent() && choices.get(result.get()) != null) { + List newList = new ArrayList<>(list); + newList.addAll(choices.get(result.get()).getData()); + Tab newTab = createTableTab("Merge", newList, null); + tabPane.getTabs().add(tabPane.getTabs().indexOf(tab) + 1, newTab); + tabPane.getSelectionModel().selectNext(); + } + }); + tab.setContent(tableRoot); - tab.setContextMenu(new ContextMenu(duplicate)); + tab.setContextMenu(new ContextMenu(duplicate, merge)); tab.setOnCloseRequest(event -> { if (!((TableController) loader.getController()).saved.get()) { Alert dialog = new Alert(Alert.AlertType.WARNING);