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.

ContainsDataFlavor.java 1.4KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152
  1. /*
  2. @VaadinApache2LicenseForJavaFiles@
  3. */
  4. /**
  5. *
  6. */
  7. package com.vaadin.event.dd.acceptcriteria;
  8. import com.vaadin.event.Transferable;
  9. import com.vaadin.event.dd.DragAndDropEvent;
  10. import com.vaadin.terminal.PaintException;
  11. import com.vaadin.terminal.PaintTarget;
  12. /**
  13. * A Criterion that checks whether {@link Transferable} contains given data
  14. * flavor. The developer might for example accept the incoming data only if it
  15. * contains "Url" or "Text".
  16. *
  17. * @since 6.3
  18. */
  19. public class ContainsDataFlavor extends ClientSideCriterion {
  20. private String dataFlavorId;
  21. /**
  22. * Constructs a new instance of {@link ContainsDataFlavor}.
  23. *
  24. * @param dataFlawor
  25. * the type of data that will be checked from
  26. * {@link Transferable}
  27. */
  28. public ContainsDataFlavor(String dataFlawor) {
  29. dataFlavorId = dataFlawor;
  30. }
  31. @Override
  32. public void paintContent(PaintTarget target) throws PaintException {
  33. super.paintContent(target);
  34. target.addAttribute("p", dataFlavorId);
  35. }
  36. public boolean accept(DragAndDropEvent dragEvent) {
  37. return dragEvent.getTransferable().getDataFlavors()
  38. .contains(dataFlavorId);
  39. }
  40. @Override
  41. protected String getIdentifier() {
  42. // extending classes use client side implementation from this class
  43. return ContainsDataFlavor.class.getCanonicalName();
  44. }
  45. }