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.

VLazyInitItemIdentifiers.java 1.8KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465
  1. /*
  2. @ITMillApache2LicenseForJavaFiles@
  3. */
  4. /**
  5. *
  6. */
  7. package com.vaadin.terminal.gwt.client.ui.dd;
  8. import java.util.HashSet;
  9. import com.vaadin.terminal.gwt.client.UIDL;
  10. /**
  11. *
  12. */
  13. final public class VLazyInitItemIdentifiers extends VAcceptCriterion {
  14. private boolean loaded = false;
  15. private HashSet<String> hashSet;
  16. private VDragEvent lastDragEvent;
  17. @Override
  18. public void accept(final VDragEvent drag, UIDL configuration,
  19. final VAcceptCallback callback) {
  20. if (lastDragEvent == null || lastDragEvent != drag) {
  21. loaded = false;
  22. lastDragEvent = drag;
  23. }
  24. if (loaded) {
  25. Object object = drag.getDropDetails().get("itemIdOver");
  26. if (hashSet.contains(object)) {
  27. callback.accepted(drag);
  28. }
  29. } else {
  30. VDragEventServerCallback acceptCallback = new VDragEventServerCallback() {
  31. public void handleResponse(boolean accepted, UIDL response) {
  32. hashSet = new HashSet<String>();
  33. String[] stringArrayAttribute = response
  34. .getStringArrayAttribute("allowedIds");
  35. for (int i = 0; i < stringArrayAttribute.length; i++) {
  36. hashSet.add(stringArrayAttribute[i]);
  37. }
  38. loaded = true;
  39. if (accepted) {
  40. callback.accepted(drag);
  41. }
  42. }
  43. };
  44. VDragAndDropManager.get().visitServer(acceptCallback);
  45. }
  46. }
  47. @Override
  48. public boolean needsServerSideCheck(VDragEvent drag, UIDL criterioUIDL) {
  49. return loaded;
  50. }
  51. @Override
  52. public boolean validates(VDragEvent drag, UIDL configuration) {
  53. return false; // not used is this implementation
  54. }
  55. }