You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@wicket.apache.org by so...@apache.org on 2018/01/28 05:10:45 UTC
[08/14] wicket git commit: WICKET-6517 new AjaxFileDropBehavior
WICKET-6517 new AjaxFileDropBehavior
Project: http://git-wip-us.apache.org/repos/asf/wicket/repo
Commit: http://git-wip-us.apache.org/repos/asf/wicket/commit/237147fe
Tree: http://git-wip-us.apache.org/repos/asf/wicket/tree/237147fe
Diff: http://git-wip-us.apache.org/repos/asf/wicket/diff/237147fe
Branch: refs/heads/WICKET-6498_deferred_javascript_2
Commit: 237147fee94e7fb2c0e91216aee0e4a51b448c30
Parents: 44fb374
Author: Sven Meier <sv...@apache.org>
Authored: Wed Jan 17 09:23:27 2018 +0100
Committer: Sven Meier <sv...@apache.org>
Committed: Fri Jan 26 23:09:37 2018 +0100
----------------------------------------------------------------------
.../examples/ajax/builtin/FileUploadPage.java | 4 +-
.../ajax/markup/html/AjaxFileDropBehavior.java | 160 +++++++++++++++++++
.../markup/html/AjaxFileUploadBehavior.java | 156 ------------------
3 files changed, 162 insertions(+), 158 deletions(-)
----------------------------------------------------------------------
http://git-wip-us.apache.org/repos/asf/wicket/blob/237147fe/wicket-examples/src/main/java/org/apache/wicket/examples/ajax/builtin/FileUploadPage.java
----------------------------------------------------------------------
diff --git a/wicket-examples/src/main/java/org/apache/wicket/examples/ajax/builtin/FileUploadPage.java b/wicket-examples/src/main/java/org/apache/wicket/examples/ajax/builtin/FileUploadPage.java
index ca6dc70..7399301 100644
--- a/wicket-examples/src/main/java/org/apache/wicket/examples/ajax/builtin/FileUploadPage.java
+++ b/wicket-examples/src/main/java/org/apache/wicket/examples/ajax/builtin/FileUploadPage.java
@@ -21,7 +21,7 @@ import java.util.List;
import org.apache.wicket.Component;
import org.apache.wicket.ajax.AjaxRequestTarget;
import org.apache.wicket.ajax.markup.html.form.AjaxButton;
-import org.apache.wicket.extensions.ajax.markup.html.AjaxFileUploadBehavior;
+import org.apache.wicket.extensions.ajax.markup.html.AjaxFileDropBehavior;
import org.apache.wicket.extensions.ajax.markup.html.form.upload.UploadProgressBar;
import org.apache.wicket.markup.html.WebMarkupContainer;
import org.apache.wicket.markup.html.basic.Label;
@@ -116,7 +116,7 @@ public class FileUploadPage extends BasePage
});
WebMarkupContainer drop = new WebMarkupContainer("drop");
- drop.add(new AjaxFileUploadBehavior() {
+ drop.add(new AjaxFileDropBehavior() {
protected void onFileUpload(AjaxRequestTarget target, List<FileUpload> files) {
// display uploaded info
http://git-wip-us.apache.org/repos/asf/wicket/blob/237147fe/wicket-extensions/src/main/java/org/apache/wicket/extensions/ajax/markup/html/AjaxFileDropBehavior.java
----------------------------------------------------------------------
diff --git a/wicket-extensions/src/main/java/org/apache/wicket/extensions/ajax/markup/html/AjaxFileDropBehavior.java b/wicket-extensions/src/main/java/org/apache/wicket/extensions/ajax/markup/html/AjaxFileDropBehavior.java
new file mode 100644
index 0000000..9073cd3
--- /dev/null
+++ b/wicket-extensions/src/main/java/org/apache/wicket/extensions/ajax/markup/html/AjaxFileDropBehavior.java
@@ -0,0 +1,160 @@
+/*
+ * Licensed to the Apache Software Foundation (ASF) under one or more
+ * contributor license agreements. See the NOTICE file distributed with
+ * this work for additional information regarding copyright ownership.
+ * The ASF licenses this file to You under the Apache License, Version 2.0
+ * (the "License"); you may not use this file except in compliance with
+ * the License. You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+package org.apache.wicket.extensions.ajax.markup.html;
+
+import java.util.ArrayList;
+import java.util.List;
+
+import org.apache.commons.fileupload.FileItem;
+import org.apache.commons.fileupload.FileUploadException;
+import org.apache.wicket.Component;
+import org.apache.wicket.ajax.AjaxEventBehavior;
+import org.apache.wicket.ajax.AjaxRequestTarget;
+import org.apache.wicket.ajax.attributes.AjaxRequestAttributes;
+import org.apache.wicket.ajax.attributes.AjaxRequestAttributes.Method;
+import org.apache.wicket.markup.head.IHeaderResponse;
+import org.apache.wicket.markup.head.JavaScriptHeaderItem;
+import org.apache.wicket.markup.head.OnDomReadyHeaderItem;
+import org.apache.wicket.markup.html.form.upload.FileUpload;
+import org.apache.wicket.protocol.http.servlet.MultipartServletWebRequest;
+import org.apache.wicket.protocol.http.servlet.ServletWebRequest;
+import org.apache.wicket.request.resource.PackageResourceReference;
+import org.apache.wicket.request.resource.ResourceReference;
+import org.apache.wicket.util.lang.Args;
+import org.apache.wicket.util.lang.Bytes;
+
+/**
+ * Uploads files from a drop event.
+ *
+ * @author Andrew Kondratev
+ * @author svenmeier
+ */
+public class AjaxFileDropBehavior extends AjaxEventBehavior
+{
+
+ private static final ResourceReference JS = new PackageResourceReference(AjaxFileDropBehavior.class, "datatransfer.js");
+
+ /**
+ * Maximum size of all uploaded files in bytes in a request.
+ */
+ private Bytes maxSize;
+
+ /**
+ * Maximum size of file of upload in bytes (if there are more than one) in a request.
+ */
+ private Bytes fileMaxSize;
+
+ private String parameterName = "f";
+
+ public AjaxFileDropBehavior()
+ {
+ super("drop");
+ }
+
+ @Override
+ public void renderHead(Component component, IHeaderResponse response)
+ {
+ super.renderHead(component, response);
+
+ response.render(JavaScriptHeaderItem.forReference(JS));
+
+ // default must be prevented for dragover event, otherwise browser will consume the dataTransfer
+ response.render(OnDomReadyHeaderItem.forScript(String.format("jQuery('#%s').on('dragover', function(e) { e.preventDefault(); });", component.getMarkupId())));
+ }
+
+ @Override
+ protected void updateAjaxAttributes(AjaxRequestAttributes attributes)
+ {
+ super.updateAjaxAttributes(attributes);
+
+ attributes.setMultipart(true);
+ attributes.setMethod(Method.POST);
+ // default must be prevented, otherwise browser will consume the dataTransfer
+ attributes.setPreventDefault(true);
+
+ attributes.getDynamicExtraParameters().add(
+ String.format("return Wicket.DataTransfer.getFilesAsParamArray(attrs.event.originalEvent, '%s');", parameterName)
+ );
+ }
+
+ @Override
+ protected void onEvent(AjaxRequestTarget target)
+ {
+ try
+ {
+ ServletWebRequest request = (ServletWebRequest)getComponent().getRequest();
+ final MultipartServletWebRequest multipartWebRequest = request.newMultipartWebRequest(
+ getMaxSize(), getComponent().getPage().getId());
+ multipartWebRequest.setFileMaxSize(getFileMaxSize());
+ multipartWebRequest.parseFileParts();
+
+ // TODO: Can't this be detected from header?
+ getComponent().getRequestCycle().setRequest(multipartWebRequest);
+
+ ArrayList<FileUpload> fileUploads = new ArrayList<>();
+
+ // Get the item for the path
+ final List<FileItem> fileItems = multipartWebRequest.getFile(parameterName);
+
+ if (fileItems != null)
+ {
+ for (FileItem item : fileItems)
+ {
+ fileUploads.add(new FileUpload(item));
+ }
+ }
+
+ onFileUpload(target, fileUploads);
+ }
+ catch (final FileUploadException fux)
+ {
+ onError(fux);
+ }
+ }
+
+ public Bytes getMaxSize()
+ {
+ if (maxSize == null) {
+ maxSize = getComponent().getApplication().getApplicationSettings().getDefaultMaximumUploadSize();
+ }
+ return maxSize;
+ }
+
+ public void setMaxSize(Bytes maxSize)
+ {
+ Args.notNull(maxSize, "maxSize");
+ this.maxSize = maxSize;
+ }
+
+ public Bytes getFileMaxSize()
+ {
+ return fileMaxSize;
+ }
+
+ public void setFileMaxSize(Bytes fileMaxSize)
+ {
+ this.fileMaxSize = fileMaxSize;
+ }
+
+ protected void onFileUpload(AjaxRequestTarget target, List<FileUpload> files)
+ {
+ }
+
+ protected void onError(FileUploadException fux)
+ {
+ }
+}
\ No newline at end of file
http://git-wip-us.apache.org/repos/asf/wicket/blob/237147fe/wicket-extensions/src/main/java/org/apache/wicket/extensions/ajax/markup/html/AjaxFileUploadBehavior.java
----------------------------------------------------------------------
diff --git a/wicket-extensions/src/main/java/org/apache/wicket/extensions/ajax/markup/html/AjaxFileUploadBehavior.java b/wicket-extensions/src/main/java/org/apache/wicket/extensions/ajax/markup/html/AjaxFileUploadBehavior.java
deleted file mode 100644
index 3801c62..0000000
--- a/wicket-extensions/src/main/java/org/apache/wicket/extensions/ajax/markup/html/AjaxFileUploadBehavior.java
+++ /dev/null
@@ -1,156 +0,0 @@
-/*
- * Licensed to the Apache Software Foundation (ASF) under one or more
- * contributor license agreements. See the NOTICE file distributed with
- * this work for additional information regarding copyright ownership.
- * The ASF licenses this file to You under the Apache License, Version 2.0
- * (the "License"); you may not use this file except in compliance with
- * the License. You may obtain a copy of the License at
- *
- * http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- */
-package org.apache.wicket.extensions.ajax.markup.html;
-
-import java.util.ArrayList;
-import java.util.List;
-
-import org.apache.commons.fileupload.FileItem;
-import org.apache.commons.fileupload.FileUploadException;
-import org.apache.wicket.Component;
-import org.apache.wicket.ajax.AjaxEventBehavior;
-import org.apache.wicket.ajax.AjaxRequestTarget;
-import org.apache.wicket.ajax.attributes.AjaxRequestAttributes;
-import org.apache.wicket.ajax.attributes.AjaxRequestAttributes.Method;
-import org.apache.wicket.markup.head.IHeaderResponse;
-import org.apache.wicket.markup.head.JavaScriptHeaderItem;
-import org.apache.wicket.markup.head.OnDomReadyHeaderItem;
-import org.apache.wicket.markup.html.form.upload.FileUpload;
-import org.apache.wicket.protocol.http.servlet.MultipartServletWebRequest;
-import org.apache.wicket.protocol.http.servlet.ServletWebRequest;
-import org.apache.wicket.request.resource.PackageResourceReference;
-import org.apache.wicket.request.resource.ResourceReference;
-import org.apache.wicket.util.lang.Args;
-import org.apache.wicket.util.lang.Bytes;
-
-/**
- * Uploads files from a drop event.
- *
- * @author svenmeier
- */
-public class AjaxFileUploadBehavior extends AjaxEventBehavior
-{
-
- private static final ResourceReference JS = new PackageResourceReference(AjaxFileUploadBehavior.class, "datatransfer.js");
-
- /**
- * Maximum size of all uploaded files in bytes in a request.
- */
- private Bytes maxSize;
-
- /**
- * Maximum size of file of upload in bytes (if there are more than one) in a request.
- */
- private Bytes fileMaxSize;
-
- private String parameterName = "f";
-
- public AjaxFileUploadBehavior()
- {
- super("drop");
- }
-
- @Override
- public void renderHead(Component component, IHeaderResponse response)
- {
- super.renderHead(component, response);
-
- response.render(JavaScriptHeaderItem.forReference(JS));
-
- // default must be prevented for dragover event, otherwise browser will consume the dataTransfer
- response.render(OnDomReadyHeaderItem.forScript(String.format("jQuery('#%s').on('dragover', function(e) { e.preventDefault(); });", component.getMarkupId())));
- }
-
- @Override
- protected void updateAjaxAttributes(AjaxRequestAttributes attributes)
- {
- super.updateAjaxAttributes(attributes);
-
- attributes.setMultipart(true);
- attributes.setMethod(Method.POST);
- // default must be prevented, otherwise browser will consume the dataTransfer
- attributes.setPreventDefault(true);
-
- attributes.getDynamicExtraParameters().add(
- String.format("return Wicket.DataTransfer.getFilesAsParamArray(attrs.event.originalEvent, '%s');", parameterName)
- );
- }
-
- @Override
- protected void onEvent(AjaxRequestTarget target)
- {
- try
- {
- ServletWebRequest request = (ServletWebRequest)getComponent().getRequest();
- final MultipartServletWebRequest multipartWebRequest = request.newMultipartWebRequest(
- getMaxSize(), getComponent().getPage().getId());
- multipartWebRequest.setFileMaxSize(getFileMaxSize());
- multipartWebRequest.parseFileParts();
-
- // TODO: Can't this be detected from header?
- getComponent().getRequestCycle().setRequest(multipartWebRequest);
-
- ArrayList<FileUpload> fileUploads = new ArrayList<>();
-
- // Get the item for the path
- final List<FileItem> fileItems = multipartWebRequest.getFile(parameterName);
-
- if (fileItems != null)
- {
- for (FileItem item : fileItems)
- {
- fileUploads.add(new FileUpload(item));
- }
- }
-
- onFileUpload(target, fileUploads);
- }
- catch (final FileUploadException fux)
- {
- onError(fux);
- }
- }
-
- public Bytes getMaxSize()
- {
- return maxSize;
- }
-
- public void setMaxSize(Bytes maxSize)
- {
- Args.notNull(maxSize, "maxSize");
- this.maxSize = maxSize;
- }
-
- public Bytes getFileMaxSize()
- {
- return fileMaxSize;
- }
-
- public void setFileMaxSize(Bytes fileMaxSize)
- {
- this.fileMaxSize = fileMaxSize;
- }
-
- protected void onFileUpload(AjaxRequestTarget target, List<FileUpload> files)
- {
- }
-
- protected void onError(FileUploadException fux)
- {
- }
-}
\ No newline at end of file