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.

DragAndDropWrapperConnector.java 2.6KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768697071
  1. /*
  2. @VaadinApache2LicenseForJavaFiles@
  3. */
  4. package com.vaadin.terminal.gwt.client.ui;
  5. import java.util.HashMap;
  6. import java.util.Set;
  7. import com.google.gwt.core.client.GWT;
  8. import com.google.gwt.user.client.ui.Widget;
  9. import com.vaadin.terminal.gwt.client.ApplicationConnection;
  10. import com.vaadin.terminal.gwt.client.UIDL;
  11. public class DragAndDropWrapperConnector extends CustomComponentConnector {
  12. @Override
  13. public void updateFromUIDL(UIDL uidl, ApplicationConnection client) {
  14. getWidget().client = client;
  15. super.updateFromUIDL(uidl, client);
  16. if (isRealUpdate(uidl) && !uidl.hasAttribute("hidden")) {
  17. UIDL acceptCrit = uidl.getChildByTagName("-ac");
  18. if (acceptCrit == null) {
  19. getWidget().dropHandler = null;
  20. } else {
  21. if (getWidget().dropHandler == null) {
  22. getWidget().dropHandler = getWidget().new CustomDropHandler();
  23. }
  24. getWidget().dropHandler.updateAcceptRules(acceptCrit);
  25. }
  26. Set<String> variableNames = uidl.getVariableNames();
  27. for (String fileId : variableNames) {
  28. if (fileId.startsWith("rec-")) {
  29. String receiverUrl = uidl.getStringVariable(fileId);
  30. fileId = fileId.substring(4);
  31. if (getWidget().fileIdToReceiver == null) {
  32. getWidget().fileIdToReceiver = new HashMap<String, String>();
  33. }
  34. if ("".equals(receiverUrl)) {
  35. Integer id = Integer.parseInt(fileId);
  36. int indexOf = getWidget().fileIds.indexOf(id);
  37. if (indexOf != -1) {
  38. getWidget().files.remove(indexOf);
  39. getWidget().fileIds.remove(indexOf);
  40. }
  41. } else {
  42. getWidget().fileIdToReceiver.put(fileId, receiverUrl);
  43. }
  44. }
  45. }
  46. getWidget().startNextUpload();
  47. getWidget().dragStartMode = uidl
  48. .getIntAttribute(VDragAndDropWrapper.DRAG_START_MODE);
  49. getWidget().initDragStartMode();
  50. getWidget().html5DataFlavors = uidl
  51. .getMapAttribute(VDragAndDropWrapper.HTML5_DATA_FLAVORS);
  52. }
  53. }
  54. @Override
  55. protected Widget createWidget() {
  56. return GWT.create(VDragAndDropWrapper.class);
  57. }
  58. @Override
  59. public VDragAndDropWrapper getWidget() {
  60. return (VDragAndDropWrapper) super.getWidget();
  61. }
  62. }