summaryrefslogtreecommitdiffstats
path: root/uitest/src/com/vaadin/tests/dd/DragAndDropFiles.java
diff options
context:
space:
mode:
Diffstat (limited to 'uitest/src/com/vaadin/tests/dd/DragAndDropFiles.java')
-rw-r--r--uitest/src/com/vaadin/tests/dd/DragAndDropFiles.java132
1 files changed, 132 insertions, 0 deletions
diff --git a/uitest/src/com/vaadin/tests/dd/DragAndDropFiles.java b/uitest/src/com/vaadin/tests/dd/DragAndDropFiles.java
new file mode 100644
index 0000000000..4ecabee617
--- /dev/null
+++ b/uitest/src/com/vaadin/tests/dd/DragAndDropFiles.java
@@ -0,0 +1,132 @@
+package com.vaadin.tests.dd;
+
+import java.io.OutputStream;
+
+import org.apache.commons.io.output.NullOutputStream;
+
+import com.vaadin.event.dd.DragAndDropEvent;
+import com.vaadin.event.dd.DropHandler;
+import com.vaadin.event.dd.acceptcriteria.AcceptAll;
+import com.vaadin.event.dd.acceptcriteria.AcceptCriterion;
+import com.vaadin.server.StreamVariable;
+import com.vaadin.tests.components.TestBase;
+import com.vaadin.ui.Component;
+import com.vaadin.ui.CssLayout;
+import com.vaadin.ui.DragAndDropWrapper;
+import com.vaadin.ui.DragAndDropWrapper.WrapperTransferable;
+import com.vaadin.ui.Html5File;
+import com.vaadin.ui.Label;
+
+public class DragAndDropFiles extends TestBase {
+
+ @Override
+ protected void setup() {
+ CssLayout cssLayout = new CssLayout() {
+ @Override
+ protected String getCss(Component c) {
+ return "display: block; padding:20px; border: 2px dotted black; background: #aaa;";
+ }
+ };
+ Component l = new Label("Drag file on me");
+ l.setSizeUndefined();
+ cssLayout.addComponent(l);
+ DragAndDropWrapper dragAndDropWrapper = new DragAndDropWrapper(
+ cssLayout);
+ dragAndDropWrapper.setSizeUndefined();
+ dragAndDropWrapper.setDropHandler(new DropHandler() {
+
+ @Override
+ public AcceptCriterion getAcceptCriterion() {
+ return AcceptAll.get();
+ }
+
+ @Override
+ public void drop(DragAndDropEvent event) {
+ WrapperTransferable transferable = (WrapperTransferable) event
+ .getTransferable();
+ Html5File[] files = transferable.getFiles();
+ if (files != null) {
+
+ for (int i = 0; i < files.length; i++) {
+ Html5File file = files[i];
+ // Max 1 MB files are uploaded
+ if (file.getFileSize() > 1024 * 1024) {
+ getMainWindow()
+ .showNotification(
+ "File "
+ + file.getFileName()
+ + " was too large, not transferred to the server side.");
+ continue;
+ }
+
+ StreamVariable streamVariable = new StreamVariable() {
+
+ @Override
+ public OutputStream getOutputStream() {
+ return new NullOutputStream();
+ }
+
+ @Override
+ public boolean listenProgress() {
+ return true;
+ }
+
+ @Override
+ public void onProgress(StreamingProgressEvent event) {
+ System.err.println("Progress"
+ + event.getBytesReceived());
+ }
+
+ @Override
+ public void streamingStarted(
+ StreamingStartEvent event) {
+ getMainWindow().showNotification(
+ "Started uploading "
+ + event.getFileName());
+ }
+
+ @Override
+ public void streamingFinished(
+ StreamingEndEvent event) {
+ getMainWindow().showNotification(
+ "Finished uploading "
+ + event.getFileName());
+ }
+
+ @Override
+ public void streamingFailed(
+ StreamingErrorEvent event) {
+ getMainWindow().showNotification(
+ "Failed uploading "
+ + event.getFileName());
+ }
+
+ @Override
+ public boolean isInterrupted() {
+ return false;
+ }
+ };
+ file.setStreamVariable(streamVariable);
+ }
+ }
+
+ }
+ });
+
+ addComponent(dragAndDropWrapper);
+ }
+
+ /*
+ * TODO implement 'handbrake' for testing, progresss listener, interrupting.
+ */
+ @Override
+ protected String getDescription() {
+ return "Should work. Over 1 MB files will not be posted. TODO implement 'handbrake' for testing, progresss listener, interrupting.";
+ }
+
+ @Override
+ protected Integer getTicketNumber() {
+ return null;
+ }
+
+}