From 80246426e62c6b2499be6eb705dd287483bf5164 Mon Sep 17 00:00:00 2001 From: Anna Koskinen Date: Wed, 9 Jan 2013 15:03:31 +0200 Subject: [PATCH] Merge of (#10073) to Vaadin 7. DragDropWrapper does not work correctly with multiple batch uploads. Change-Id: Ib576ebf6f687c2b2ebda86e6ad1003408250140c --- .../com/vaadin/client/ui/VDragAndDropWrapper.java | 2 ++ .../DragAndDropWrapperConnector.java | 12 ++++++++++++ server/src/com/vaadin/ui/DragAndDropWrapper.java | 13 +++++++------ 3 files changed, 21 insertions(+), 6 deletions(-) diff --git a/client/src/com/vaadin/client/ui/VDragAndDropWrapper.java b/client/src/com/vaadin/client/ui/VDragAndDropWrapper.java index 91edcc4db1..f23bf88969 100644 --- a/client/src/com/vaadin/client/ui/VDragAndDropWrapper.java +++ b/client/src/com/vaadin/client/ui/VDragAndDropWrapper.java @@ -373,6 +373,8 @@ public class VDragAndDropWrapper extends VCustomComponent implements for (int i = 0; i < fileCount; i++) { final int fileId = filecounter++; final VHtml5File file = event.getFile(i); + VConsole.log("Preparing to upload file " + file.getName() + + " with id " + fileId); transferable.setData("fi" + i, "" + fileId); transferable.setData("fn" + i, file.getName()); transferable.setData("ft" + i, file.getType()); diff --git a/client/src/com/vaadin/client/ui/draganddropwrapper/DragAndDropWrapperConnector.java b/client/src/com/vaadin/client/ui/draganddropwrapper/DragAndDropWrapperConnector.java index 60b9690321..f659e72e78 100644 --- a/client/src/com/vaadin/client/ui/draganddropwrapper/DragAndDropWrapperConnector.java +++ b/client/src/com/vaadin/client/ui/draganddropwrapper/DragAndDropWrapperConnector.java @@ -21,6 +21,7 @@ import java.util.Set; import com.vaadin.client.ApplicationConnection; import com.vaadin.client.Paintable; import com.vaadin.client.UIDL; +import com.vaadin.client.VConsole; import com.vaadin.client.ui.VDragAndDropWrapper; import com.vaadin.client.ui.customcomponent.CustomComponentConnector; import com.vaadin.shared.ui.Connect; @@ -61,6 +62,17 @@ public class DragAndDropWrapperConnector extends CustomComponentConnector getWidget().fileIds.remove(indexOf); } } else { + if (getWidget().fileIdToReceiver.containsKey(fileId) + && receiverUrl != null + && !receiverUrl + .equals(getWidget().fileIdToReceiver + .get(fileId))) { + VConsole.error("Overwriting file receiver mapping for fileId " + + fileId + + " . Old receiver URL: " + + getWidget().fileIdToReceiver.get(fileId) + + " New receiver URL: " + receiverUrl); + } getWidget().fileIdToReceiver.put(fileId, receiverUrl); } } diff --git a/server/src/com/vaadin/ui/DragAndDropWrapper.java b/server/src/com/vaadin/ui/DragAndDropWrapper.java index 23641f285e..6c6aa3c3f4 100644 --- a/server/src/com/vaadin/ui/DragAndDropWrapper.java +++ b/server/src/com/vaadin/ui/DragAndDropWrapper.java @@ -58,7 +58,7 @@ public class DragAndDropWrapper extends CustomComponent implements DropTarget, (String) rawVariables.get("ft" + i)); // mime String id = (String) rawVariables.get("fi" + i); files[i] = file; - receivers.put(id, file); + receivers.put(id, new ProxyReceiver(id, file)); markAsDirty(); // paint Receivers } } @@ -106,7 +106,7 @@ public class DragAndDropWrapper extends CustomComponent implements DropTarget, } - private Map receivers = new HashMap(); + private Map receivers = new HashMap(); public class WrapperTargetDetails extends TargetDetailsImpl { @@ -222,11 +222,12 @@ public class DragAndDropWrapper extends CustomComponent implements DropTarget, getDropHandler().getAcceptCriterion().paint(target); } if (receivers != null && receivers.size() > 0) { - for (Iterator> it = receivers.entrySet() - .iterator(); it.hasNext();) { - Entry entry = it.next(); + for (Iterator> it = receivers + .entrySet().iterator(); it.hasNext();) { + Entry entry = it.next(); String id = entry.getKey(); - Html5File html5File = entry.getValue(); + ProxyReceiver proxyReceiver = entry.getValue(); + Html5File html5File = proxyReceiver.file; if (html5File.getStreamVariable() != null) { target.addVariable(this, "rec-" + id, new ProxyReceiver(id, html5File)); -- 2.39.5