summaryrefslogtreecommitdiffstats
path: root/src/com/vaadin/event/dd/acceptcriteria/Or.java
diff options
context:
space:
mode:
Diffstat (limited to 'src/com/vaadin/event/dd/acceptcriteria/Or.java')
-rw-r--r--src/com/vaadin/event/dd/acceptcriteria/Or.java53
1 files changed, 53 insertions, 0 deletions
diff --git a/src/com/vaadin/event/dd/acceptcriteria/Or.java b/src/com/vaadin/event/dd/acceptcriteria/Or.java
new file mode 100644
index 0000000000..41aef10738
--- /dev/null
+++ b/src/com/vaadin/event/dd/acceptcriteria/Or.java
@@ -0,0 +1,53 @@
+/*
+@ITMillApache2LicenseForJavaFiles@
+ */
+/**
+ *
+ */
+package com.vaadin.event.dd.acceptCriteria;
+
+import com.vaadin.event.dd.DragAndDropEvent;
+import com.vaadin.terminal.PaintException;
+import com.vaadin.terminal.PaintTarget;
+import com.vaadin.terminal.gwt.client.ui.dd.VOr;
+
+/**
+ * A compound criterion that accepts the drag if any of its criterion accepts
+ * it.
+ *
+ * @see And
+ *
+ * @since 6.3
+ *
+ */
+@ClientCriterion(VOr.class)
+public class Or extends ClientSideCriterion {
+ private static final long serialVersionUID = 1L;
+ private AcceptCriterion criteria[];
+
+ /**
+ * @param criteria
+ * the criteria of which the Or criteria will be composed
+ */
+ public Or(ClientSideCriterion... criteria) {
+ this.criteria = criteria;
+ }
+
+ @Override
+ public void paintContent(PaintTarget target) throws PaintException {
+ super.paintContent(target);
+ for (AcceptCriterion crit : criteria) {
+ crit.paint(target);
+ }
+ }
+
+ public boolean accept(DragAndDropEvent dragEvent) {
+ for (AcceptCriterion crit : criteria) {
+ if (crit.accept(dragEvent)) {
+ return true;
+ }
+ }
+ return false;
+ }
+
+} \ No newline at end of file