Add more options to crash popup.
Options: "Send Report" (opens GitHub issues and log file), "View Error Log" (opens log file), "Close" (does nothing). Signed-off-by: Jeffrey Han <itdelatrisu@gmail.com>
This commit is contained in:
parent
09d96f3f08
commit
9db9c2f3ad
|
@ -35,6 +35,7 @@ import java.io.FileOutputStream;
|
||||||
import java.io.IOException;
|
import java.io.IOException;
|
||||||
import java.io.PrintStream;
|
import java.io.PrintStream;
|
||||||
import java.net.ServerSocket;
|
import java.net.ServerSocket;
|
||||||
|
import java.net.URI;
|
||||||
|
|
||||||
import javax.swing.JOptionPane;
|
import javax.swing.JOptionPane;
|
||||||
import javax.swing.UIManager;
|
import javax.swing.UIManager;
|
||||||
|
@ -108,20 +109,7 @@ public class Opsu extends StateBasedGame {
|
||||||
public void uncaughtException(Thread t, Throwable e) {
|
public void uncaughtException(Thread t, Throwable e) {
|
||||||
if (!(e instanceof ThreadDeath)) { // TODO: see MusicController
|
if (!(e instanceof ThreadDeath)) { // TODO: see MusicController
|
||||||
Log.error("** Uncaught Exception! **", e);
|
Log.error("** Uncaught Exception! **", e);
|
||||||
|
openCrashPopup();
|
||||||
// try to open the log file
|
|
||||||
if (Desktop.isDesktopSupported()) {
|
|
||||||
try {
|
|
||||||
UIManager.setLookAndFeel(UIManager.getSystemLookAndFeelClassName());
|
|
||||||
JOptionPane.showMessageDialog(null,
|
|
||||||
"opsu! has crashed. Please report this!",
|
|
||||||
"Error", JOptionPane.ERROR_MESSAGE
|
|
||||||
);
|
|
||||||
Desktop.getDesktop().open(Options.LOG_FILE);
|
|
||||||
} catch (Exception e1) {
|
|
||||||
Log.error("Failed to open log file.", e1);
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
});
|
});
|
||||||
|
@ -206,4 +194,35 @@ public class Opsu extends StateBasedGame {
|
||||||
Log.error("Failed to close server socket.", e);
|
Log.error("Failed to close server socket.", e);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Opens the crash popup.
|
||||||
|
*/
|
||||||
|
private static void openCrashPopup() {
|
||||||
|
try {
|
||||||
|
UIManager.setLookAndFeel(UIManager.getSystemLookAndFeelClassName());
|
||||||
|
if (Desktop.isDesktopSupported()) {
|
||||||
|
// try to open the log file and/or issues webpage
|
||||||
|
String[] options = {"Send Report", "View Error Log", "Close"};
|
||||||
|
int n = JOptionPane.showOptionDialog(null,
|
||||||
|
"opsu! has crashed. Please report this!",
|
||||||
|
"Error", JOptionPane.DEFAULT_OPTION,
|
||||||
|
JOptionPane.ERROR_MESSAGE, null, options,
|
||||||
|
options[2]);
|
||||||
|
if (n == 0) {
|
||||||
|
Desktop.getDesktop().browse(
|
||||||
|
new URI("https://github.com/itdelatrisu/opsu/issues/new"));
|
||||||
|
Desktop.getDesktop().open(Options.LOG_FILE);
|
||||||
|
} else if (n == 1)
|
||||||
|
Desktop.getDesktop().open(Options.LOG_FILE);
|
||||||
|
} else {
|
||||||
|
// display error only
|
||||||
|
JOptionPane.showMessageDialog(null,
|
||||||
|
"opsu! has crashed. Please report this!",
|
||||||
|
"Error", JOptionPane.ERROR_MESSAGE);
|
||||||
|
}
|
||||||
|
} catch (Exception e) {
|
||||||
|
Log.error("Error opening crash popup.", e);
|
||||||
|
}
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
Loading…
Reference in New Issue
Block a user