This is an automated email from the ASF dual-hosted git repository.
solomax pushed a commit to branch WICKET-6648-ajax-download
in repository https://gitbox.apache.org/repos/asf/wicket.git
The following commit(s) were added to refs/heads/WICKET-6648-ajax-download by
this push:
new 8d8e70b Cookie clear is moved to JS, example is added
8d8e70b is described below
commit 8d8e70b3f696c096f9bec858b6dc8ded8fd692d6
Author: Maxim Solodovnik <[email protected]>
AuthorDate: Sat Apr 6 10:38:37 2019 +0700
Cookie clear is moved to JS, example is added
---
.../websocket/WebSocketBehaviorDemoPage.html | 5 +-
.../websocket/WebSocketBehaviorDemoPage.java | 71 +++++++++++++++++++++-
.../extensions/ajax/AjaxDownloadBehavior.java | 2 -
.../wicket/extensions/ajax/wicket-ajaxdownload.js | 3 +-
4 files changed, 73 insertions(+), 8 deletions(-)
diff --git
a/wicket-examples/src/main/java/org/apache/wicket/examples/websocket/WebSocketBehaviorDemoPage.html
b/wicket-examples/src/main/java/org/apache/wicket/examples/websocket/WebSocketBehaviorDemoPage.html
index f94fa4b..b9b0e92 100644
---
a/wicket-examples/src/main/java/org/apache/wicket/examples/websocket/WebSocketBehaviorDemoPage.html
+++
b/wicket-examples/src/main/java/org/apache/wicket/examples/websocket/WebSocketBehaviorDemoPage.html
@@ -23,8 +23,9 @@
</head>
<body>
<wicket:extend>
-
- <div wicket:id="chartPanel"></div>
+ <div wicket:id="chartPanel"></div>
+ <button
onclick="Wicket.WebSocket.send('start');">Initiate download with Web Socket
message</button>
+ <div wicket:id="downloading"
class="download-veil"><span>Preparing download ...</span></div>
</wicket:extend>
</body>
</html>
diff --git
a/wicket-examples/src/main/java/org/apache/wicket/examples/websocket/WebSocketBehaviorDemoPage.java
b/wicket-examples/src/main/java/org/apache/wicket/examples/websocket/WebSocketBehaviorDemoPage.java
index cf3b321..d27bf29 100644
---
a/wicket-examples/src/main/java/org/apache/wicket/examples/websocket/WebSocketBehaviorDemoPage.java
+++
b/wicket-examples/src/main/java/org/apache/wicket/examples/websocket/WebSocketBehaviorDemoPage.java
@@ -18,23 +18,82 @@ package org.apache.wicket.examples.websocket;
import java.util.concurrent.ScheduledExecutorService;
+import org.apache.wicket.ajax.AjaxRequestTarget;
+import org.apache.wicket.core.request.handler.IPartialPageRequestHandler;
import org.apache.wicket.examples.WicketExamplePage;
import org.apache.wicket.examples.websocket.charts.ChartUpdater;
import org.apache.wicket.examples.websocket.charts.WebSocketChart;
+import org.apache.wicket.extensions.ajax.AjaxDownloadBehavior;
+import org.apache.wicket.markup.html.WebMarkupContainer;
import org.apache.wicket.protocol.https.RequireHttps;
import org.apache.wicket.protocol.ws.api.WebSocketBehavior;
import org.apache.wicket.protocol.ws.api.WebSocketRequestHandler;
import org.apache.wicket.protocol.ws.api.message.ConnectedMessage;
import org.apache.wicket.protocol.ws.api.message.TextMessage;
+import org.apache.wicket.request.resource.ContentDisposition;
+import org.apache.wicket.request.resource.IResource;
+import org.apache.wicket.request.resource.ResourceStreamResource;
+import org.apache.wicket.util.resource.IResourceStream;
+import org.apache.wicket.util.resource.StringResourceStream;
+import org.apache.wicket.util.time.Duration;
@RequireHttps
public class WebSocketBehaviorDemoPage extends WicketExamplePage
{
- public WebSocketBehaviorDemoPage()
- {
+ private static final long serialVersionUID = 1L;
+ private final WebMarkupContainer downloadingContainer = new
WebMarkupContainer("downloading");
+
+ @Override
+ protected void onInitialize() {
+ super.onInitialize();
+
+ ResourceStreamResource resource = new ResourceStreamResource()
+ {
+ private static final long serialVersionUID = 1L;
+ private int i = 42;
+
+ @Override
+ protected IResourceStream
getResourceStream(IResource.Attributes attributes)
+ {
+ return new StringResourceStream("downloaded via
ajax " + (i++) + " times");
+ }
+ }.setContentDisposition(ContentDisposition.ATTACHMENT)
+ .setFileName("File-from-IResource.txt")
+ .setCacheDuration(Duration.NONE);
+
+ final AjaxDownloadBehavior download = new
AjaxDownloadBehavior(resource)
+ {
+ private static final long serialVersionUID = 1L;
+
+ @Override
+ protected void
onBeforeDownload(IPartialPageRequestHandler handler)
+ {
+ downloadingContainer.setVisible(true);
+ handler.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);
+
+ target.appendJavaScript("alert('Download
failed');");
+ }
+ };
+ add(download);
WebSocketChart chartPanel = new WebSocketChart("chartPanel");
chartPanel.add(new WebSocketBehavior()
{
+ private static final long serialVersionUID = 1L;
+
@Override
protected void onConnect(ConnectedMessage message)
{
@@ -44,14 +103,20 @@ public class WebSocketBehaviorDemoPage extends
WicketExamplePage
ChartUpdater.start(message, service);
}
});
+
add(downloadingContainer.setOutputMarkupPlaceholderTag(true).setVisible(false));
add(chartPanel);
add(new WebSocketBehavior()
{
+ private static final long serialVersionUID = 1L;
+
@Override
protected void onMessage(WebSocketRequestHandler
handler, TextMessage message)
{
- super.onMessage(handler, message);
+ if ("start".equals(message.getText()))
+ {
+ download.initiate(handler);
+ }
}
});
}
diff --git
a/wicket-extensions/src/main/java/org/apache/wicket/extensions/ajax/AjaxDownloadBehavior.java
b/wicket-extensions/src/main/java/org/apache/wicket/extensions/ajax/AjaxDownloadBehavior.java
index 7a7bf1a..609a2be 100644
---
a/wicket-extensions/src/main/java/org/apache/wicket/extensions/ajax/AjaxDownloadBehavior.java
+++
b/wicket-extensions/src/main/java/org/apache/wicket/extensions/ajax/AjaxDownloadBehavior.java
@@ -215,8 +215,6 @@ public class AjaxDownloadBehavior extends
AbstractDefaultAjaxBehavior
throw new WicketRuntimeException("not bound to a
component");
}
-
((WebResponse)RequestCycle.get().getResponse()).clearCookie(cookie(getName()));
-
CharSequence url;
if (resourceBehavior == null)
{
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 6aaa43a..d0e490c 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
@@ -27,7 +27,8 @@
Wicket.AjaxDownload = {
initiate : function(settings) {
-
+ document.cookie = settings.name +
+ '=;path=/;Max-Age=0;expires=Thu, 01 Jan 1970
00:00:01 GMT';
var notifyServer = function(result) {
settings.attributes.ep = settings.attributes.ep
|| {};
settings.attributes.ep.result = result;