You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@wicket.apache.org by mg...@apache.org on 2017/03/07 21:06:43 UTC
wicket git commit: WICKET-6286 Add Location.NewWindow - downloads the
resource in a new browser window/tab
Repository: wicket
Updated Branches:
refs/heads/WICKET-6286-ajax-download 4db836dce -> bb46817f2
WICKET-6286 Add Location.NewWindow - downloads the resource in a new browser window/tab
Project: http://git-wip-us.apache.org/repos/asf/wicket/repo
Commit: http://git-wip-us.apache.org/repos/asf/wicket/commit/bb46817f
Tree: http://git-wip-us.apache.org/repos/asf/wicket/tree/bb46817f
Diff: http://git-wip-us.apache.org/repos/asf/wicket/diff/bb46817f
Branch: refs/heads/WICKET-6286-ajax-download
Commit: bb46817f24fe202e931f964b874c6dfda88a805b
Parents: 4db836d
Author: Martin Tzvetanov Grigorov <mg...@apache.org>
Authored: Tue Mar 7 22:05:48 2017 +0100
Committer: Martin Tzvetanov Grigorov <mg...@apache.org>
Committed: Tue Mar 7 22:05:48 2017 +0100
----------------------------------------------------------------------
.../examples/ajax/builtin/AjaxDownloadPage.html | 6 ++
.../examples/ajax/builtin/AjaxDownloadPage.java | 62 +++++++++++++++++++-
.../wicket/extensions/ajax/AjaxDownload.java | 8 ++-
.../extensions/ajax/wicket-ajaxdownload.js | 7 ++-
4 files changed, 77 insertions(+), 6 deletions(-)
----------------------------------------------------------------------
http://git-wip-us.apache.org/repos/asf/wicket/blob/bb46817f/wicket-examples/src/main/java/org/apache/wicket/examples/ajax/builtin/AjaxDownloadPage.html
----------------------------------------------------------------------
diff --git a/wicket-examples/src/main/java/org/apache/wicket/examples/ajax/builtin/AjaxDownloadPage.html b/wicket-examples/src/main/java/org/apache/wicket/examples/ajax/builtin/AjaxDownloadPage.html
index 2764b25..670c736 100644
--- a/wicket-examples/src/main/java/org/apache/wicket/examples/ajax/builtin/AjaxDownloadPage.html
+++ b/wicket-examples/src/main/java/org/apache/wicket/examples/ajax/builtin/AjaxDownloadPage.html
@@ -34,6 +34,12 @@ This download <a wicket:id="downloadFailure">fails</a>.
A resource reference can be <a wicket:id="downloadReference">used too</a>.
</p>
+<p>
+ This example demonstrates a <a wicket:id="downloadInNewWindow">download</a>
+ initiated via Ajax and serving the response in a new browser window.
+</p>
+
+
<div wicket:id="downloading" class="download-veil"><span>Preparing download ...</span></div>
</wicket:extend>
http://git-wip-us.apache.org/repos/asf/wicket/blob/bb46817f/wicket-examples/src/main/java/org/apache/wicket/examples/ajax/builtin/AjaxDownloadPage.java
----------------------------------------------------------------------
diff --git a/wicket-examples/src/main/java/org/apache/wicket/examples/ajax/builtin/AjaxDownloadPage.java b/wicket-examples/src/main/java/org/apache/wicket/examples/ajax/builtin/AjaxDownloadPage.java
index a23368c..3a7ccb5 100644
--- a/wicket-examples/src/main/java/org/apache/wicket/examples/ajax/builtin/AjaxDownloadPage.java
+++ b/wicket-examples/src/main/java/org/apache/wicket/examples/ajax/builtin/AjaxDownloadPage.java
@@ -51,10 +51,12 @@ public class AjaxDownloadPage extends BasePage
add(downloadingContainer);
initDownload();
-
+
initDownloadFailure();
-
+
initDownloadReference();
+
+ initDownloadInNewWindow();
}
private void initDownload()
@@ -209,7 +211,61 @@ public class AjaxDownloadPage extends BasePage
}
});
}
-
+
+ private void initDownloadInNewWindow()
+ {
+ IResource resource = new ResourceStreamResource() {
+ protected IResourceStream getResourceStream() {
+ // simulate delay
+ try
+ {
+ TimeUnit.MILLISECONDS.sleep(5000);
+ }
+ catch (InterruptedException e)
+ {
+ }
+
+ return new StringResourceStream("downloaded via ajax in a new browser window");
+ };
+
+ }.setFileName("File-from-IResource.txt").setContentDisposition(ContentDisposition.INLINE).setCacheDuration(Duration.NONE);
+
+ final AjaxDownload download = new AjaxDownload(resource) {
+
+ @Override
+ protected void onBeforeDownload(AjaxRequestTarget target)
+ {
+ downloadingContainer.setVisible(true);
+ target.add(downloadingContainer);
+ }
+
+ @Override
+ protected void onDownloadSuccess(AjaxRequestTarget target)
+ {
+ downloadingContainer.setVisible(false);
+ target.add(downloadingContainer);
+ }
+
+ @Override
+ protected void onDownloadFailed(AjaxRequestTarget target)
+ {
+ downloadingContainer.setVisible(false);
+ target.add(downloadingContainer);
+ }
+ };
+ download.setLocation(AjaxDownload.Location.NewWindow);
+ add(download);
+
+ add(new AjaxLink<Void>("downloadInNewWindow")
+ {
+ @Override
+ public void onClick(AjaxRequestTarget target)
+ {
+ download.initiate(target);
+ }
+ });
+ }
+
public static class StaticResource extends ResourceStreamResource {
StaticResource() {
http://git-wip-us.apache.org/repos/asf/wicket/blob/bb46817f/wicket-extensions/src/main/java/org/apache/wicket/extensions/ajax/AjaxDownload.java
----------------------------------------------------------------------
diff --git a/wicket-extensions/src/main/java/org/apache/wicket/extensions/ajax/AjaxDownload.java b/wicket-extensions/src/main/java/org/apache/wicket/extensions/ajax/AjaxDownload.java
index 0b941de..aacbfd9 100644
--- a/wicket-extensions/src/main/java/org/apache/wicket/extensions/ajax/AjaxDownload.java
+++ b/wicket-extensions/src/main/java/org/apache/wicket/extensions/ajax/AjaxDownload.java
@@ -79,7 +79,13 @@ public class AjaxDownload extends AbstractDefaultAjaxBehavior
* The resource will be downloaded by changing the location of the current DOM document.
* Note: This will trigger JavaScript <em>unload</em> event on the page!
*/
- Self
+ Self,
+
+ /**
+ * The resource will be downloaded in a new browser window by using JavaScript
+ * <code>window.open()</code> API.
+ */
+ NewWindow
}
/**
http://git-wip-us.apache.org/repos/asf/wicket/blob/bb46817f/wicket-extensions/src/main/java/org/apache/wicket/extensions/ajax/wicket-ajaxdownload.js
----------------------------------------------------------------------
diff --git a/wicket-extensions/src/main/java/org/apache/wicket/extensions/ajax/wicket-ajaxdownload.js b/wicket-extensions/src/main/java/org/apache/wicket/extensions/ajax/wicket-ajaxdownload.js
index b821883..4c5d554 100644
--- a/wicket-extensions/src/main/java/org/apache/wicket/extensions/ajax/wicket-ajaxdownload.js
+++ b/wicket-extensions/src/main/java/org/apache/wicket/extensions/ajax/wicket-ajaxdownload.js
@@ -58,10 +58,13 @@
};
if (settings.method === 'self') {
- setTimeout(function() {
- window.location.href=settings.downloadUrl;
+ setTimeout(function () {
+ window.location.href = settings.downloadUrl;
checkComplete();
}, 100);
+ } else if (settings.method === 'newwindow') {
+ window.open(settings.downloadUrl, 'ajax-download');
+ checkComplete();
} else {
var frame = jQuery("<iframe>").hide().prop("src", settings.downloadUrl).appendTo("body");
checkComplete(frame);