aboutsummaryrefslogtreecommitdiff
path: root/src/main/java/net/sowgro/npehero/main/ErrorDisplay.java
diff options
context:
space:
mode:
authorsowgro <tpoke.ferrari@gmail.com>2024-08-30 12:23:26 -0400
committersowgro <tpoke.ferrari@gmail.com>2024-08-30 12:23:26 -0400
commit69f69143f5604626ded3c26ee754b94eaf3c4f15 (patch)
treea64a1ce20ff21cd6d73b1d36c3e3f9ca930c9b4d /src/main/java/net/sowgro/npehero/main/ErrorDisplay.java
parentaa916b0f06be0d42bec1e035d0efeec954e09243 (diff)
downloadNPEhero-69f69143f5604626ded3c26ee754b94eaf3c4f15.tar.gz
NPEhero-69f69143f5604626ded3c26ee754b94eaf3c4f15.tar.bz2
NPEhero-69f69143f5604626ded3c26ee754b94eaf3c4f15.zip
Clean up error handling pt.1
Diffstat (limited to 'src/main/java/net/sowgro/npehero/main/ErrorDisplay.java')
-rw-r--r--src/main/java/net/sowgro/npehero/main/ErrorDisplay.java147
1 files changed, 147 insertions, 0 deletions
diff --git a/src/main/java/net/sowgro/npehero/main/ErrorDisplay.java b/src/main/java/net/sowgro/npehero/main/ErrorDisplay.java
new file mode 100644
index 0000000..cd43937
--- /dev/null
+++ b/src/main/java/net/sowgro/npehero/main/ErrorDisplay.java
@@ -0,0 +1,147 @@
+package net.sowgro.npehero.main;
+
+import javafx.geometry.Insets;
+import javafx.geometry.Pos;
+import javafx.scene.control.Button;
+import javafx.scene.control.Label;
+import javafx.scene.layout.HBox;
+import javafx.scene.layout.Pane;
+import javafx.scene.layout.VBox;
+import net.sowgro.npehero.Driver;
+
+import java.io.PrintWriter;
+import java.io.StringWriter;
+
+public class ErrorDisplay extends Page {
+
+ private HBox content = new HBox();
+
+ /**
+ * Error display with a message and Back button
+ * @param message The message to display
+ * @param prev The destination of the close button
+ */
+ public ErrorDisplay(String message, Page prev) {
+ Label main = new Label(message);
+ main.getStyleClass().add("box");
+ main.setPadding(new Insets(10));
+ main.setWrapText(true);
+
+ Button exit = new Button();
+ exit.setText("Ok");
+ exit.setOnAction(e -> {
+ Sound.playSfx(Sound.BACKWARD);
+ Driver.setMenu(prev);
+ });
+
+ VBox centerBox = new VBox();
+ centerBox.getChildren().addAll(main, exit);
+ centerBox.setSpacing(10);
+ centerBox.setAlignment(Pos.CENTER);
+
+ content.getChildren().add(centerBox);
+ content.setAlignment(Pos.CENTER);
+ }
+
+ /**
+ * Error display with a message, exception and Back button
+ * @param message The message to display
+ * @param e The exception that occurred
+ * @param prev The destination of the close button
+ */
+ public ErrorDisplay(String message, Exception e, Page prev) {
+ Label title = new Label(message);
+ title.setPadding(new Insets(10));
+ title.setWrapText(true);
+
+ Label exView = new Label(e.toString());
+ exView.getStyleClass().add("red");
+
+ StringWriter sw = new StringWriter();
+ PrintWriter pw = new PrintWriter(sw);
+ e.printStackTrace(pw);
+ String sStackTrace = sw.toString(); // stack trace as a string
+
+ Label stackTrace = new Label(sStackTrace);
+ stackTrace.getStyleClass().add("red");
+ stackTrace.setVisible(false);
+ stackTrace.setManaged(false);
+
+ Button exit = new Button();
+ exit.setText("Ok");
+ exit.setOnAction(_ -> {
+ Sound.playSfx(Sound.BACKWARD);
+ Driver.setMenu(prev);
+ });
+
+ Button printStack = new Button("Print to console");
+ printStack.setOnAction(_ -> {
+ Sound.playSfx(Sound.FORWARD);
+ e.printStackTrace();
+ });
+
+ Button showStack = new Button("Show Stack Trace");
+ showStack.setOnAction(_ -> {
+ stackTrace.setVisible(true);
+ stackTrace.setManaged(true);
+ });
+
+ HBox buttonBox = new HBox(exit, showStack);
+ buttonBox.setSpacing(10);
+
+ VBox main = new VBox(title, exView);
+ main.getStyleClass().add("box");
+
+ VBox centerBox = new VBox();
+ centerBox.getChildren().addAll(main, buttonBox, stackTrace);
+ centerBox.setSpacing(10);
+ centerBox.setAlignment(Pos.CENTER);
+
+ content.getChildren().add(centerBox);
+ content.setAlignment(Pos.CENTER);
+ }
+
+ /**
+ * Error display with a message and Cancel and Proceed buttons
+ * @param message The message to display
+ * @param prev The destination of the Cancel button
+ * @param next The destination of the Proceed button
+ */
+ public ErrorDisplay(String message, Page prev, Page next) {
+ Label main = new Label(message);
+ main.getStyleClass().add("box");
+ main.setPadding(new Insets(10));
+ main.setWrapText(true);
+
+ Button exit = new Button();
+ exit.setText("Cancel");
+ exit.setOnAction(_ -> {
+ Sound.playSfx(Sound.BACKWARD);
+ Driver.setMenu(prev);
+ });
+
+ Button nextButton = new Button();
+ nextButton.setText("Proceed");
+ nextButton.setOnAction(_ -> {
+ Sound.playSfx(Sound.FORWARD);
+ Driver.setMenu(next);
+ });
+
+ HBox bottom = new HBox(exit, nextButton);
+ bottom.setAlignment(Pos.CENTER);
+ bottom.setSpacing(10);
+
+ VBox centerBox = new VBox();
+ centerBox.getChildren().addAll(main, bottom);
+ centerBox.setSpacing(10);
+ centerBox.setAlignment(Pos.CENTER);
+
+ content.getChildren().add(centerBox);
+ content.setAlignment(Pos.CENTER);
+ }
+
+ @Override
+ public Pane getContent() {
+ return content;
+ }
+}