diff options
Diffstat (limited to 'src/com/vaadin/event/dd/acceptcriteria/DropTargetDetailEquals.java')
-rw-r--r-- | src/com/vaadin/event/dd/acceptcriteria/DropTargetDetailEquals.java | 73 |
1 files changed, 73 insertions, 0 deletions
diff --git a/src/com/vaadin/event/dd/acceptcriteria/DropTargetDetailEquals.java b/src/com/vaadin/event/dd/acceptcriteria/DropTargetDetailEquals.java new file mode 100644 index 0000000000..a2b24533b3 --- /dev/null +++ b/src/com/vaadin/event/dd/acceptcriteria/DropTargetDetailEquals.java @@ -0,0 +1,73 @@ +/* +@ITMillApache2LicenseForJavaFiles@ + */ +/** + * + */ +package com.vaadin.event.dd.acceptCriteria; + +import com.vaadin.event.dd.DragAndDropEvent; +import com.vaadin.event.dd.DropTargetDetails; +import com.vaadin.terminal.PaintException; +import com.vaadin.terminal.PaintTarget; +import com.vaadin.terminal.gwt.client.ui.dd.VDropDetailEquals; + +/** + * Criterion for checking if drop target details contains the specific property + * with the specific value. Currently only String values are supported. + * + * @since 6.3 + * + * TODO add support for other basic data types that we support in UIDL. + * + */ +@ClientCriterion(VDropDetailEquals.class) +public class DropTargetDetailEquals extends ClientSideCriterion { + + private static final long serialVersionUID = 763165450054331246L; + private String propertyName; + private Object value; + + /** + * Constructs a criterion which ensures that the value there is a value in + * {@link DropTargetDetails} that equals the reference value. + * + * @param dataFlavor + * the type of data to be checked + * @param value + * the reference value to which the drop target detail will be + * compared + */ + public DropTargetDetailEquals(String dataFlavor, String value) { + propertyName = dataFlavor; + this.value = value; + } + + public DropTargetDetailEquals(String dataFlavor, Boolean true1) { + propertyName = dataFlavor; + value = true1; + } + + @Override + public void paintContent(PaintTarget target) throws PaintException { + super.paintContent(target); + target.addAttribute("p", propertyName); + if (value instanceof Boolean) { + target.addAttribute("v", ((Boolean) value).booleanValue()); + target.addAttribute("t", "b"); + } else if (value instanceof String) { + target.addAttribute("v", (String) value); + } + } + + public boolean accept(DragAndDropEvent dragEvent) { + Object data = dragEvent.getDropTargetDetails().getData(propertyName); + return value.equals(data); + } + + @Override + protected String getIdentifier() { + // sub classes by default use VDropDetailEquals a client implementation + return DropTargetDetailEquals.class.getCanonicalName(); + } +}
\ No newline at end of file |