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