You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.

SingleUseDragAndDropUpload.java 4.1KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108
  1. package com.vaadin.tests.components.draganddropwrapper;
  2. import java.io.OutputStream;
  3. import org.apache.commons.io.output.NullOutputStream;
  4. import com.vaadin.event.Transferable;
  5. import com.vaadin.event.dd.DragAndDropEvent;
  6. import com.vaadin.event.dd.DropHandler;
  7. import com.vaadin.event.dd.acceptcriteria.AcceptAll;
  8. import com.vaadin.event.dd.acceptcriteria.AcceptCriterion;
  9. import com.vaadin.icons.VaadinIcons;
  10. import com.vaadin.server.StreamVariable;
  11. import com.vaadin.server.VaadinRequest;
  12. import com.vaadin.shared.ui.ContentMode;
  13. import com.vaadin.tests.components.AbstractTestUIWithLog;
  14. import com.vaadin.ui.Button;
  15. import com.vaadin.ui.DragAndDropWrapper;
  16. import com.vaadin.ui.DragAndDropWrapper.WrapperTransferable;
  17. import com.vaadin.ui.Html5File;
  18. import com.vaadin.ui.Label;
  19. public class SingleUseDragAndDropUpload extends AbstractTestUIWithLog {
  20. @Override
  21. protected void setup(VaadinRequest request) {
  22. Label upload = new Label(VaadinIcons.UPLOAD.getHtml(),
  23. ContentMode.HTML);
  24. upload.setSizeUndefined();
  25. upload.setStyleName("upload");
  26. getPage().getStyles().add(
  27. ".upload{ font-size: 36px; border: 1px solid black; padding:15px;}");
  28. final DragAndDropWrapper dnd = new DragAndDropWrapper(upload);
  29. dnd.setSizeUndefined();
  30. addComponent(dnd);
  31. dnd.setDropHandler(new DropHandler() {
  32. @Override
  33. public AcceptCriterion getAcceptCriterion() {
  34. return AcceptAll.get();
  35. }
  36. @Override
  37. public void drop(DragAndDropEvent event) {
  38. Transferable transferable = event.getTransferable();
  39. log("Drop occurred");
  40. if (transferable instanceof WrapperTransferable) {
  41. WrapperTransferable wTransferable = (WrapperTransferable) transferable;
  42. Html5File[] files = wTransferable.getFiles();
  43. if (files != null) {
  44. for (Html5File file : files) {
  45. log("Uploading file " + file.getFileName());
  46. file.setStreamVariable(new StreamVariable() {
  47. @Override
  48. public void streamingStarted(
  49. StreamingStartEvent event) {
  50. log("Streaming started");
  51. }
  52. @Override
  53. public void streamingFinished(
  54. StreamingEndEvent event) {
  55. log("Streaming finished");
  56. removeComponent(dnd);
  57. log("DragAndDropWrapper removed");
  58. }
  59. @Override
  60. public void streamingFailed(
  61. StreamingErrorEvent event) {
  62. }
  63. @Override
  64. public void onProgress(
  65. StreamingProgressEvent event) {
  66. }
  67. @Override
  68. public boolean listenProgress() {
  69. return false;
  70. }
  71. @Override
  72. public boolean isInterrupted() {
  73. return false;
  74. }
  75. @Override
  76. public OutputStream getOutputStream() {
  77. return new NullOutputStream();
  78. }
  79. });
  80. }
  81. }
  82. }
  83. }
  84. });
  85. addComponent(new Button("Poll for changes"));
  86. }
  87. @Override
  88. protected String getTestDescription() {
  89. return "Drag a file to the upload icon and ensure there is no exceptions logged in the console";
  90. }
  91. }