Added "save as" option.
This commit is contained in:
parent
e88c51c152
commit
a4bc985472
|
@ -71,11 +71,11 @@ public class MainViewController implements ModelListener {
|
|||
var password = this.promptPassword();
|
||||
Cluster cluster;
|
||||
try {
|
||||
if (password.isEmpty() || password.get().isEmpty()) {
|
||||
if (password.isEmpty() || password.get().length == 0) {
|
||||
cluster = loader.loadUnencrypted(file.toPath());
|
||||
this.model.setActiveClusterPassword(null);
|
||||
} else {
|
||||
char[] pw = password.get().toCharArray();
|
||||
char[] pw = password.get();
|
||||
cluster = loader.load(file.toPath(), pw);
|
||||
this.model.setActiveClusterPassword(pw);
|
||||
}
|
||||
|
@ -104,7 +104,7 @@ public class MainViewController implements ModelListener {
|
|||
}
|
||||
char[] pw = this.model.getActiveClusterPassword();
|
||||
if (pw == null) {
|
||||
pw = this.promptPassword().orElse("").toCharArray();
|
||||
pw = this.promptPassword().orElse(new char[0]);
|
||||
}
|
||||
try {
|
||||
if (pw.length == 0) {
|
||||
|
@ -119,6 +119,37 @@ public class MainViewController implements ModelListener {
|
|||
}
|
||||
}
|
||||
|
||||
@FXML
|
||||
public void saveAs() {
|
||||
if (model.getActiveCluster() == null) return;
|
||||
ClusterIO clusterIO = new ClusterIO();
|
||||
Path path = model.getActiveClusterPath();
|
||||
FileChooser chooser = new FileChooser();
|
||||
chooser.setTitle("Save Cluster");
|
||||
chooser.setSelectedExtensionFilter(new FileChooser.ExtensionFilter("Cluster Files", "cts"));
|
||||
if (path != null) {
|
||||
chooser.setInitialDirectory(path.getParent().toFile());
|
||||
}
|
||||
File file = chooser.showSaveDialog(this.clusterTreeView.getScene().getWindow());
|
||||
if (file == null) return;
|
||||
path = file.toPath();
|
||||
char[] pw = this.model.getActiveClusterPassword();
|
||||
if (pw == null) {
|
||||
pw = this.promptPassword().orElse(new char[0]);
|
||||
}
|
||||
try {
|
||||
if (pw.length == 0) {
|
||||
clusterIO.saveUnencrypted(model.getActiveCluster(), path);
|
||||
} else {
|
||||
clusterIO.save(model.getActiveCluster(), path, pw);
|
||||
}
|
||||
} catch (Exception e) {
|
||||
e.printStackTrace();
|
||||
var alert = new Alert(Alert.AlertType.ERROR, "Could not save cluster.");
|
||||
alert.showAndWait();
|
||||
}
|
||||
}
|
||||
|
||||
@FXML
|
||||
public void newCluster() {
|
||||
Cluster c = new Cluster("Root");
|
||||
|
@ -126,8 +157,8 @@ public class MainViewController implements ModelListener {
|
|||
model.setActiveClusterPath(null);
|
||||
}
|
||||
|
||||
private Optional<String> promptPassword() {
|
||||
Dialog<String> d = new Dialog<>();
|
||||
private Optional<char[]> promptPassword() {
|
||||
Dialog<char[]> d = new Dialog<>();
|
||||
d.setTitle("Enter Password");
|
||||
d.getDialogPane().getButtonTypes().addAll(ButtonType.OK, ButtonType.CANCEL);
|
||||
|
||||
|
@ -138,7 +169,7 @@ public class MainViewController implements ModelListener {
|
|||
d.getDialogPane().setContent(content);
|
||||
d.setResultConverter(param -> {
|
||||
if (param == ButtonType.OK) {
|
||||
return pwField.getText();
|
||||
return pwField.getText().toCharArray();
|
||||
}
|
||||
return null;
|
||||
});
|
||||
|
|
|
@ -1,21 +1,14 @@
|
|||
<?xml version="1.0" encoding="UTF-8"?>
|
||||
|
||||
<?import javafx.scene.layout.BorderPane?>
|
||||
|
||||
<?import javafx.scene.control.MenuBar?>
|
||||
<?import javafx.scene.control.Menu?>
|
||||
<?import javafx.scene.control.MenuItem?>
|
||||
|
||||
<?import javafx.scene.layout.VBox?>
|
||||
<?import javafx.scene.control.Label?>
|
||||
<?import javafx.scene.control.TreeView?>
|
||||
<?import javafx.scene.layout.Pane?>
|
||||
<?import javafx.scene.control.*?>
|
||||
<?import javafx.scene.layout.*?>
|
||||
<VBox xmlns:fx="http://javafx.com/fxml/1" fx:controller="nl.andrewlalis.crystalkeep.control.MainViewController">
|
||||
<MenuBar>
|
||||
<Menu text="File">
|
||||
<MenuItem text="New" onAction="#newCluster" />
|
||||
<MenuItem text="Load" onAction="#load" />
|
||||
<MenuItem text="Save" onAction="#save" />
|
||||
<MenuItem text="Save As" onAction="#saveAs" />
|
||||
<MenuItem text="Exit" onAction="#exit" />
|
||||
</Menu>
|
||||
</MenuBar>
|
||||
|
|
Loading…
Reference in New Issue