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();