migrate Fatal Error (Startup) dialog to JFX

This commit is contained in:
Bixilon 2020-12-03 11:45:42 +01:00
parent 9f19b460fb
commit 80df1a749d

View File

@ -14,6 +14,8 @@
package de.bixilon.minosoft; package de.bixilon.minosoft;
import com.google.common.collect.HashBiMap; import com.google.common.collect.HashBiMap;
import com.jfoenix.controls.JFXAlert;
import com.jfoenix.controls.JFXDialogLayout;
import de.bixilon.minosoft.config.Configuration; import de.bixilon.minosoft.config.Configuration;
import de.bixilon.minosoft.config.ConfigurationPaths; import de.bixilon.minosoft.config.ConfigurationPaths;
import de.bixilon.minosoft.config.StaticConfiguration; import de.bixilon.minosoft.config.StaticConfiguration;
@ -36,8 +38,8 @@ import de.bixilon.minosoft.util.task.AsyncTaskWorker;
import de.bixilon.minosoft.util.task.Task; import de.bixilon.minosoft.util.task.Task;
import de.bixilon.minosoft.util.task.TaskImportance; import de.bixilon.minosoft.util.task.TaskImportance;
import javafx.application.Platform; import javafx.application.Platform;
import javafx.scene.control.Dialog;
import javafx.scene.control.TextArea; import javafx.scene.control.TextArea;
import javafx.scene.text.Text;
import javafx.stage.Stage; import javafx.stage.Stage;
import java.io.IOException; import java.io.IOException;
@ -73,18 +75,19 @@ public final class Minosoft {
StartProgressWindow.hideDialog(); StartProgressWindow.hideDialog();
Launcher.exit(); Launcher.exit();
Platform.runLater(() -> { Platform.runLater(() -> {
Dialog<Boolean> dialog = new Dialog<>(); JFXAlert<Boolean> dialog = new JFXAlert<>();
GUITools.initializePane(dialog.getDialogPane()); GUITools.initializePane(dialog.getDialogPane());
// Do not translate this, translations might fail to load... // Do not translate this, translations might fail to load...
dialog.setTitle("Critical Error"); dialog.setTitle("Critical Error");
dialog.setHeaderText("An error occurred while starting Minosoft"); JFXDialogLayout layout = new JFXDialogLayout();
layout.setHeading(new Text("A fatal error occurred while starting Minosoft"));
TextArea text = new TextArea(exception.getClass().getCanonicalName() + ": " + exception.getMessage()); TextArea text = new TextArea(exception.getClass().getCanonicalName() + ": " + exception.getMessage());
text.setEditable(false); text.setEditable(false);
text.setWrapText(true); text.setWrapText(true);
dialog.getDialogPane().setContent(text); layout.setBody(text);
dialog.getDialogPane().setContent(layout);
Stage stage = (Stage) dialog.getDialogPane().getScene().getWindow(); Stage stage = (Stage) dialog.getDialogPane().getScene().getWindow();
stage.setAlwaysOnTop(true);
stage.toFront(); stage.toFront();
stage.setOnCloseRequest(dialogEvent -> { stage.setOnCloseRequest(dialogEvent -> {
dialog.setResult(Boolean.TRUE); dialog.setResult(Boolean.TRUE);