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);