diff options
Diffstat (limited to 'uitest/src/com/vaadin/tests/dd/DragAndDropFiles.java')
-rw-r--r-- | uitest/src/com/vaadin/tests/dd/DragAndDropFiles.java | 132 |
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; + } + +} |