From 29b3f71861e322cec11ce68956c9fdd3812688cc Mon Sep 17 00:00:00 2001 From: Lance Ewing Date: Wed, 18 Sep 2024 18:33:36 +0100 Subject: [PATCH] Implemented cleared of the URL path and hash when a game import is not successful. --- .../java/com/agifans/agile/AgileRunner.java | 2 ++ .../java/com/agifans/agile/HomeScreen.java | 4 ++++ .../com/agifans/agile/gwt/GwtAgileRunner.java | 19 ++++++++++++++----- .../agifans/agile/gwt/GwtDialogHandler.java | 3 +++ .../agile/lwjgl3/DesktopAgileRunner.java | 5 +++++ 5 files changed, 28 insertions(+), 5 deletions(-) diff --git a/core/src/main/java/com/agifans/agile/AgileRunner.java b/core/src/main/java/com/agifans/agile/AgileRunner.java index 2920c23..2d1102c 100644 --- a/core/src/main/java/com/agifans/agile/AgileRunner.java +++ b/core/src/main/java/com/agifans/agile/AgileRunner.java @@ -187,4 +187,6 @@ private void updateGameClock() { public abstract boolean isMobile(); public abstract String slugify(String input); + + public abstract void cancelImport(); } diff --git a/core/src/main/java/com/agifans/agile/HomeScreen.java b/core/src/main/java/com/agifans/agile/HomeScreen.java index be12091..e668514 100644 --- a/core/src/main/java/com/agifans/agile/HomeScreen.java +++ b/core/src/main/java/com/agifans/agile/HomeScreen.java @@ -900,6 +900,8 @@ public void run() { public void importTypeResult(boolean success, ImportType importType) { if (success) { importGameUsingOpenFileDialog(appConfigItem, importType); + } else { + agile.getAgileRunner().cancelImport(); } } }); @@ -961,6 +963,8 @@ public void inputTextResult(boolean success, String text) { dialogHandler.promptForTextInput("Confirm name of AGI game", gameName, textInputResponseHandler); } + } else { + agile.getAgileRunner().cancelImport(); } } }); diff --git a/html/src/main/java/com/agifans/agile/gwt/GwtAgileRunner.java b/html/src/main/java/com/agifans/agile/gwt/GwtAgileRunner.java index a63b365..b86beec 100644 --- a/html/src/main/java/com/agifans/agile/gwt/GwtAgileRunner.java +++ b/html/src/main/java/com/agifans/agile/gwt/GwtAgileRunner.java @@ -263,17 +263,21 @@ public void stop() { stopped = true; } + private void clearUrl() { + String newURL = Window.Location.createUrlBuilder() + .setPath("/") + .setHash(null) + .buildString(); + updateURLWithoutReloading(newURL); + } + @Override public void reset() { // Resets to the original state, as if a game has not been previously run. stopped = false; worker = null; - String newURL = Window.Location.createUrlBuilder() - .setPath("/") - .setHash(null) - .buildString(); - updateURLWithoutReloading(newURL); + clearUrl(); } @Override @@ -350,4 +354,9 @@ private native String slugifyHtml(String input) /*-{ return slug; }-*/; + + @Override + public void cancelImport() { + clearUrl(); + } } diff --git a/html/src/main/java/com/agifans/agile/gwt/GwtDialogHandler.java b/html/src/main/java/com/agifans/agile/gwt/GwtDialogHandler.java index 7538547..199ea58 100644 --- a/html/src/main/java/com/agifans/agile/gwt/GwtDialogHandler.java +++ b/html/src/main/java/com/agifans/agile/gwt/GwtDialogHandler.java @@ -240,6 +240,9 @@ public void onFileResultsReady(GwtOpenFileResult[] openFileResultArray) { // The game file map does not contain the minimum set of files. openFileResponseHandler.openFileResult(false, null, null, null); } + } else { + // No files selected. + openFileResponseHandler.openFileResult(false, null, null, null); } } }); diff --git a/lwjgl3/src/main/java/com/agifans/agile/lwjgl3/DesktopAgileRunner.java b/lwjgl3/src/main/java/com/agifans/agile/lwjgl3/DesktopAgileRunner.java index 65f81bb..97cb5d7 100644 --- a/lwjgl3/src/main/java/com/agifans/agile/lwjgl3/DesktopAgileRunner.java +++ b/lwjgl3/src/main/java/com/agifans/agile/lwjgl3/DesktopAgileRunner.java @@ -167,4 +167,9 @@ public String slugify(String input) { return slug; } + + @Override + public void cancelImport() { + // Nothing to do for Desktop. + } }