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 220f7d1..403ab77 100644
--- a/html/src/main/java/com/agifans/agile/gwt/GwtDialogHandler.java
+++ b/html/src/main/java/com/agifans/agile/gwt/GwtDialogHandler.java
@@ -280,8 +280,12 @@ private final native void showHtmlOpenFileDialog(String type, GwtOpenFileResults
console.log('Finished creating input element of type file');
+ document.body.appendChild(fileInputElem);
+
// The change event occurs after a file is chosen.
fileInputElem.addEventListener("change", function(event) {
+ document.body.removeChild(fileInputElem);
+
if (this.files.length === 0) {
console.log('No files selected for import');
@@ -319,6 +323,15 @@ private final native void showHtmlOpenFileDialog(String type, GwtOpenFileResults
}
});
+ fileInputElem.addEventListener("cancel", function(event) {
+ document.body.removeChild(fileInputElem);
+
+ console.log('Open file dialog was cancelled.');
+
+ // No file was selected, so nothing more to do.
+ resultsHandler.@com.agifans.agile.gwt.GwtOpenFileResultsHandler::onFileResultsReady([Lcom/agifans/agile/gwt/GwtOpenFileResult;)([]);
+ });
+
// Trigger the display of the open file dialog.
fileInputElem.click();