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