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;

Reply via email to