diff options
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<String, Html5File> receivers = new HashMap<String, Html5File>(); + private Map<String, ProxyReceiver> receivers = new HashMap<String, ProxyReceiver>(); 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<Entry<String, Html5File>> it = receivers.entrySet() - .iterator(); it.hasNext();) { - Entry<String, com.vaadin.ui.Html5File> entry = it.next(); + for (Iterator<Entry<String, ProxyReceiver>> it = receivers + .entrySet().iterator(); it.hasNext();) { + Entry<String, ProxyReceiver> 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)); |