diff options
Diffstat (limited to 'src/com/vaadin/event/dd/acceptcriteria/TargetDetailIs.java')
-rw-r--r-- | src/com/vaadin/event/dd/acceptcriteria/TargetDetailIs.java | 73 |
1 files changed, 73 insertions, 0 deletions
diff --git a/src/com/vaadin/event/dd/acceptcriteria/TargetDetailIs.java b/src/com/vaadin/event/dd/acceptcriteria/TargetDetailIs.java new file mode 100644 index 0000000000..c20f10667d --- /dev/null +++ b/src/com/vaadin/event/dd/acceptcriteria/TargetDetailIs.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.VTargetDetailIs; + +/** + * 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(VTargetDetailIs.class) +public class TargetDetailIs 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 TargetDetailIs(String dataFlavor, String value) { + propertyName = dataFlavor; + this.value = value; + } + + public TargetDetailIs(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 TargetDetailIs.class.getCanonicalName(); + } +}
\ No newline at end of file |