77 lines
2.1 KiB
Java
77 lines
2.1 KiB
Java
package app.service;
|
|
|
|
import java.io.File;
|
|
|
|
import app.model.Model;
|
|
import javafx.scene.control.Alert;
|
|
import javafx.scene.control.Alert.AlertType;
|
|
import javafx.stage.DirectoryChooser;
|
|
import javafx.stage.FileChooser;
|
|
import javafx.stage.Stage;
|
|
|
|
/**
|
|
* Class containing static methods for different kinds of popup window interactions
|
|
* with the user.
|
|
*/
|
|
public class DialogBoxes {
|
|
|
|
private DialogBoxes() {}
|
|
private static FileChooser fc = new FileChooser();
|
|
private static DirectoryChooser dc = new DirectoryChooser();
|
|
private static Alert error = new Alert(AlertType.ERROR);
|
|
|
|
/**
|
|
* Shows a specified message to the user with an error icon.
|
|
*
|
|
* @param errorMessage The message to show the user
|
|
*/
|
|
public static void showErrorMessage(String errorMessage) {
|
|
error.setContentText(errorMessage);
|
|
error.showAndWait();
|
|
}
|
|
|
|
/**
|
|
* Shows an OS specific file chooser to choose a file on the disk
|
|
*
|
|
* @param stage The JavaFX stage to connect to the dialog box. This is needed
|
|
* for the window to be able to run on the JavaFX thread.
|
|
*
|
|
* @return The file chosen through the dialog window
|
|
*/
|
|
public static File showopenFileWithDialog(Stage stage) {
|
|
fc.setTitle("Open File");
|
|
File chosenFile = fc.showOpenDialog(stage);
|
|
|
|
return chosenFile;
|
|
}
|
|
|
|
/**
|
|
* Shows an OS specific directory chooser to choose a directory on the disk
|
|
*
|
|
* @param stage The JavaFX stage to connect to the dialog box. This is needed
|
|
* for the window to be able to run on the JavaFX thread.
|
|
*
|
|
* @return The file chosen through the dialog window
|
|
*/
|
|
public static File showOpenFolderWithDialog(Stage stage) {
|
|
dc.setTitle("Open Project");
|
|
File dir = dc.showDialog(stage);
|
|
|
|
return dir;
|
|
}
|
|
|
|
public static File showSaveFileWithDialog(Stage stage) {
|
|
FileChooser fc = new FileChooser();
|
|
fc.setTitle("Save as");
|
|
|
|
Model
|
|
.getProjectPath()
|
|
.ifPresent(path -> fc.setInitialDirectory(path.toFile()));
|
|
|
|
File chosenLocation = fc.showSaveDialog(stage);
|
|
|
|
return chosenLocation;
|
|
}
|
|
|
|
}
|