package com.vaadin.event.dd.acceptCriteria;
import com.vaadin.event.dd.DragAndDropEvent;
+import com.vaadin.terminal.gwt.client.ui.dd.VAcceptAll;
+@ClientCriterion(VAcceptAll.class)
public final class AcceptAll extends ClientSideCriterion {
private static AcceptCriterion singleton = new AcceptAll();
*/
package com.vaadin.event.dd.acceptCriteria;
+import java.io.Serializable;
+
import com.vaadin.event.Transferable;
import com.vaadin.event.dd.DragAndDropEvent;
import com.vaadin.event.dd.DropHandler;
import com.vaadin.terminal.PaintException;
import com.vaadin.terminal.PaintTarget;
-public interface AcceptCriterion {
+public interface AcceptCriterion extends Serializable {
/**
* Criterion that can be used create policy to accept/discard dragged
* TODO consider replacing this with Union
*
*/
+@ClientCriterion(com.vaadin.terminal.gwt.client.ui.dd.VAnd.class)
public class And extends ClientSideCriterion {
/**
*
--- /dev/null
+package com.vaadin.event.dd.acceptCriteria;
+
+import java.lang.annotation.ElementType;
+import java.lang.annotation.Retention;
+import java.lang.annotation.RetentionPolicy;
+import java.lang.annotation.Target;
+
+import com.vaadin.terminal.gwt.client.ui.dd.VAcceptCriteria;
+
+/**
+ * TODO
+ *
+ * @since 6.2
+ */
+@Retention(RetentionPolicy.RUNTIME)
+@Target(ElementType.TYPE)
+public @interface ClientCriterion {
+ /**
+ * @return the client side counterpart for the annotated criterion
+ */
+ Class<? extends VAcceptCriteria> value();
+}
import com.vaadin.event.dd.DragAndDropEvent;
import com.vaadin.terminal.PaintException;
import com.vaadin.terminal.PaintTarget;
+import com.vaadin.terminal.gwt.client.ui.dd.VComponentFilter;
import com.vaadin.ui.Component;
+@ClientCriterion(VComponentFilter.class)
public class ComponentFilter extends ClientSideCriterion {
private Component[] component;
import com.vaadin.event.DataBoundTransferable;
import com.vaadin.event.dd.DragAndDropEvent;
+import com.vaadin.terminal.gwt.client.ui.dd.VDataBound;
+@ClientCriterion(VDataBound.class)
public final class IsDatabound extends ClientSideCriterion {
private static IsDatabound singleton = new IsDatabound();
package com.vaadin.event.dd.acceptCriteria;
import com.vaadin.event.dd.DragAndDropEvent;
+import com.vaadin.terminal.gwt.client.ui.dd.VNot;
+@ClientCriterion(VNot.class)
public class Not extends ClientSideCriterion {
private AcceptCriterion acceptCriterion;
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;
/**
* TODO consider replacing this with intersection
*
*/
+@ClientCriterion(VOr.class)
public class Or extends ClientSideCriterion {
/**
*
package com.vaadin.event.dd.acceptCriteria;
import com.vaadin.event.dd.DragAndDropEvent;
+import com.vaadin.terminal.gwt.client.ui.dd.VOverTreeNode;
import com.vaadin.ui.Tree;
import com.vaadin.ui.Tree.Location;
import com.vaadin.ui.Tree.TreeDropDetails;
* TODO relocate close to {@link Tree} as this is tree specifif
*
*/
+@ClientCriterion(VOverTreeNode.class)
public class OverTreeNode extends ClientSideCriterion {
private static final long serialVersionUID = 1L;
import com.vaadin.terminal.PaintException;
import com.vaadin.terminal.PaintTarget;
+import com.vaadin.terminal.gwt.client.ui.dd.VServerAccept;
+@ClientCriterion(VServerAccept.class)
public abstract class ServerSideCriterion implements Serializable,
AcceptCriterion {
+++ /dev/null
-/**
- *
- */
-package com.vaadin.terminal.gwt.client.ui.dd;
-
-import com.vaadin.terminal.gwt.client.UIDL;
-
-@ServerCriterion("com.vaadin.event.dd.acceptCriteria.AcceptAll")
-final class AcceptAll implements VAcceptCriteria {
- public void accept(VDragEvent drag, UIDL configuration,
- VAcceptCallback callback) {
- callback.accepted(drag);
- }
-
- public boolean needsServerSideCheck(VDragEvent drag, UIDL criterioUIDL) {
- return false;
- }
-}
\ No newline at end of file
+++ /dev/null
-/**
- *
- */
-package com.vaadin.terminal.gwt.client.ui.dd;
-
-import com.vaadin.terminal.gwt.client.ApplicationConnection;
-import com.vaadin.terminal.gwt.client.UIDL;
-
-@ServerCriterion("com.vaadin.event.dd.acceptCriteria.And")
-final class And implements VAcceptCriteria {
- private boolean b1;
- private boolean b2;
- private VAcceptCriteria crit1;
- private VAcceptCriteria crit2;
-
- public void accept(VDragEvent drag, UIDL configuration,
- VAcceptCallback callback) {
- if (crit1 == null) {
- crit1 = getCriteria(drag, configuration, 0);
- crit2 = getCriteria(drag, configuration, 1);
- if (crit1 == null || crit2 == null) {
- ApplicationConnection.getConsole().log(
- "And criteria didn't found a chidl criteria");
- return;
- }
- }
-
- b1 = false;
- b2 = false;
-
- VAcceptCallback accept1cb = new VAcceptCallback() {
- public void accepted(VDragEvent event) {
- b1 = true;
- }
- };
- VAcceptCallback accept2cb = new VAcceptCallback() {
- public void accepted(VDragEvent event) {
- b2 = true;
- }
- };
-
- crit1.accept(drag, configuration.getChildUIDL(0), accept1cb);
- crit2.accept(drag, configuration.getChildUIDL(1), accept2cb);
- if (b1 && b2) {
- callback.accepted(drag);
- }
- }
-
- private VAcceptCriteria getCriteria(VDragEvent drag, UIDL configuration,
- int i) {
- UIDL childUIDL = configuration.getChildUIDL(i);
- return VAcceptCriterion.get(childUIDL.getStringAttribute("name"));
- }
-
- public boolean needsServerSideCheck(VDragEvent drag, UIDL criterioUIDL) {
- return false; // TODO enforce on server side
- }
-}
\ No newline at end of file
+++ /dev/null
-/**
- *
- */
-package com.vaadin.terminal.gwt.client.ui.dd;
-
-import com.vaadin.terminal.gwt.client.Paintable;
-import com.vaadin.terminal.gwt.client.UIDL;
-
-@ServerCriterion("com.vaadin.event.dd.acceptCriteria.ComponentFilter")
-final class ComponentCriteria implements VAcceptCriteria {
- public void accept(VDragEvent drag, UIDL configuration,
- VAcceptCallback callback) {
- try {
- Paintable component = drag.getTransferable().getDragSource();
- int c = configuration.getIntAttribute("c");
- for (int i = 0; i < c; i++) {
- String requiredPid = configuration
- .getStringAttribute("component" + i);
- Paintable paintable = VDragAndDropManager.get()
- .getCurrentDropHandler().getApplicationConnection()
- .getPaintable(requiredPid);
- if (paintable == component) {
- callback.accepted(drag);
- }
- }
- } catch (Exception e) {
- }
- return;
- }
-
- public boolean needsServerSideCheck(VDragEvent drag, UIDL criterioUIDL) {
- return false;
- }
-}
\ No newline at end of file
+++ /dev/null
-/**
- *
- */
-package com.vaadin.terminal.gwt.client.ui.dd;
-
-import com.vaadin.terminal.gwt.client.UIDL;
-
-@ServerCriterion("com.vaadin.event.dd.acceptCriteria.IsDatabound")
-final class HasItemId implements VAcceptCriteria {
- public void accept(VDragEvent drag, UIDL configuration,
- VAcceptCallback callback) {
- if (drag.getTransferable().getData("itemId") != null) {
- callback.accepted(drag);
- }
- }
-
- public boolean needsServerSideCheck(VDragEvent drag, UIDL criterioUIDL) {
- return false;
- }
-}
\ No newline at end of file
+++ /dev/null
-/**
- *
- */
-package com.vaadin.terminal.gwt.client.ui.dd;
-
-import java.util.HashSet;
-
-import com.vaadin.terminal.gwt.client.UIDL;
-
-@ServerCriterion("com.vaadin.ui.Tree.TreeDropCriterion")
-final class LazyInitItemIdentifiers implements VAcceptCriteria {
- private boolean loaded = false;
- private HashSet<String> hashSet;
- private VDragEvent lastDragEvent;
-
- public void accept(final VDragEvent drag, UIDL configuration,
- final VAcceptCallback callback) {
- if (lastDragEvent == null || lastDragEvent != drag) {
- loaded = false;
- lastDragEvent = drag;
- }
- if (loaded) {
- Object object = drag.getDropDetails().get("itemIdOver");
- if (hashSet.contains(object)) {
- callback.accepted(drag);
- }
- } else {
-
- VDragEventServerCallback acceptCallback = new VDragEventServerCallback() {
-
- public void handleResponse(boolean accepted, UIDL response) {
- hashSet = new HashSet<String>();
- String[] stringArrayAttribute = response
- .getStringArrayAttribute("allowedIds");
- for (int i = 0; i < stringArrayAttribute.length; i++) {
- hashSet.add(stringArrayAttribute[i]);
- }
- loaded = true;
- if (accepted) {
- callback.accepted(drag);
- }
- }
- };
-
- VDragAndDropManager.get().visitServer(acceptCallback);
- }
-
- }
-
- public boolean needsServerSideCheck(VDragEvent drag, UIDL criterioUIDL) {
- return loaded;
- }
-}
\ No newline at end of file
+++ /dev/null
-/**
- *
- */
-package com.vaadin.terminal.gwt.client.ui.dd;
-
-import com.vaadin.terminal.gwt.client.ApplicationConnection;
-import com.vaadin.terminal.gwt.client.UIDL;
-
-@ServerCriterion("com.vaadin.event.dd.acceptCriteria.Or")
-final class Not implements VAcceptCriteria {
- private boolean b1;
- private VAcceptCriteria crit1;
-
- public void accept(VDragEvent drag, UIDL configuration,
- VAcceptCallback callback) {
- if (crit1 == null) {
- crit1 = getCriteria(drag, configuration, 0);
- if (crit1 == null) {
- ApplicationConnection.getConsole().log(
- "Not criteria didn't found a child criteria");
- return;
- }
- }
-
- b1 = false;
-
- VAcceptCallback accept1cb = new VAcceptCallback() {
- public void accepted(VDragEvent event) {
- b1 = true;
- }
- };
-
- crit1.accept(drag, configuration.getChildUIDL(0), accept1cb);
- if (!b1) {
- callback.accepted(drag);
- }
- }
-
- private VAcceptCriteria getCriteria(VDragEvent drag, UIDL configuration,
- int i) {
- UIDL childUIDL = configuration.getChildUIDL(i);
- return VAcceptCriterion.get(childUIDL.getStringAttribute("name"));
- }
-
- public boolean needsServerSideCheck(VDragEvent drag, UIDL criterioUIDL) {
- return false; // TODO enforce on server side
- }
-}
\ No newline at end of file
+++ /dev/null
-/**
- *
- */
-package com.vaadin.terminal.gwt.client.ui.dd;
-
-import com.vaadin.terminal.gwt.client.ApplicationConnection;
-import com.vaadin.terminal.gwt.client.UIDL;
-
-@ServerCriterion("com.vaadin.event.dd.acceptCriteria.Or")
-final class Or implements VAcceptCriteria {
- private boolean b1;
- private boolean b2;
- private VAcceptCriteria crit1;
- private VAcceptCriteria crit2;
-
- public void accept(VDragEvent drag, UIDL configuration,
- VAcceptCallback callback) {
- if (crit1 == null) {
- crit1 = getCriteria(drag, configuration, 0);
- crit2 = getCriteria(drag, configuration, 1);
- if (crit1 == null || crit2 == null) {
- ApplicationConnection.getConsole().log(
- "Or criteria didn't found a chidl criteria");
- return;
- }
- }
-
- b1 = false;
- b2 = false;
-
- VAcceptCallback accept1cb = new VAcceptCallback() {
- public void accepted(VDragEvent event) {
- b1 = true;
- }
- };
- VAcceptCallback accept2cb = new VAcceptCallback() {
- public void accepted(VDragEvent event) {
- b2 = true;
- }
- };
-
- crit1.accept(drag, configuration.getChildUIDL(0), accept1cb);
- crit2.accept(drag, configuration.getChildUIDL(1), accept2cb);
- if (b1 || b2) {
- callback.accepted(drag);
- }
- }
-
- private VAcceptCriteria getCriteria(VDragEvent drag, UIDL configuration,
- int i) {
- UIDL childUIDL = configuration.getChildUIDL(i);
- return VAcceptCriterion.get(childUIDL.getStringAttribute("name"));
- }
-
- public boolean needsServerSideCheck(VDragEvent drag, UIDL criterioUIDL) {
- return false; // TODO enforce on server side
- }
-
-}
\ No newline at end of file
+++ /dev/null
-/**
- *
- */
-package com.vaadin.terminal.gwt.client.ui.dd;
-
-import com.vaadin.terminal.gwt.client.UIDL;
-
-@ServerCriterion("com.vaadin.event.dd.acceptCriteria.OverTreeNode")
-final class OverTreeNode implements VAcceptCriteria {
- public void accept(VDragEvent drag, UIDL configuration,
- VAcceptCallback callback) {
- Boolean containsKey = (Boolean) drag.getDropDetails().get(
- "itemIdOverIsNode");
- if (containsKey != null && containsKey.booleanValue()) {
- callback.accepted(drag);
- return;
- }
- return;
- }
-
- public boolean needsServerSideCheck(VDragEvent drag, UIDL criterioUIDL) {
- return false;
- }
-}
\ No newline at end of file
+++ /dev/null
-/**
- *
- */
-package com.vaadin.terminal.gwt.client.ui.dd;
-
-import com.vaadin.terminal.gwt.client.UIDL;
-
-@ServerCriterion("com.vaadin.event.dd.acceptCriteria.ServerSideCriterion")
-final class ServerAccept implements VAcceptCriteria {
- public void accept(final VDragEvent drag, UIDL configuration,
- final VAcceptCallback callback) {
-
- VDragEventServerCallback acceptCallback = new VDragEventServerCallback() {
- public void handleResponse(boolean accepted, UIDL response) {
- if (accepted) {
- callback.accepted(drag);
- }
- }
- };
- VDragAndDropManager.get().visitServer(acceptCallback);
- }
-
- public boolean needsServerSideCheck(VDragEvent drag, UIDL criterioUIDL) {
- return true;
- }
-}
\ No newline at end of file
+++ /dev/null
-package com.vaadin.terminal.gwt.client.ui.dd;
-
-import java.lang.annotation.ElementType;
-import java.lang.annotation.Retention;
-import java.lang.annotation.RetentionPolicy;
-import java.lang.annotation.Target;
-
-@Retention(RetentionPolicy.RUNTIME)
-@Target(ElementType.TYPE)
-public @interface ServerCriterion {
- /**
- * Class type would be nice but annotating should come from different
- * direction to cope with gwt compiler.
- *
- * @return
- */
- String value();
-}
public abstract class VAbstractDropHandler implements VDropHandler {
private UIDL criterioUIDL;
- private VAcceptCriteria acceptCriteria = new AcceptAll();
+ private VAcceptCriteria acceptCriteria = new VAcceptAll();
/**
* Implementor/user of {@link VAbstractDropHandler} must pass the UIDL
--- /dev/null
+/**
+ *
+ */
+package com.vaadin.terminal.gwt.client.ui.dd;
+
+import com.vaadin.terminal.gwt.client.UIDL;
+
+final public class VAcceptAll implements VAcceptCriteria {
+ public void accept(VDragEvent drag, UIDL configuration,
+ VAcceptCallback callback) {
+ callback.accepted(drag);
+ }
+
+ public boolean needsServerSideCheck(VDragEvent drag, UIDL criterioUIDL) {
+ return false;
+ }
+}
\ No newline at end of file
--- /dev/null
+/**
+ *
+ */
+package com.vaadin.terminal.gwt.client.ui.dd;
+
+import com.vaadin.terminal.gwt.client.ApplicationConnection;
+import com.vaadin.terminal.gwt.client.UIDL;
+
+final public class VAnd implements VAcceptCriteria {
+ private boolean b1;
+ private boolean b2;
+ private VAcceptCriteria crit1;
+ private VAcceptCriteria crit2;
+
+ public void accept(VDragEvent drag, UIDL configuration,
+ VAcceptCallback callback) {
+ if (crit1 == null) {
+ crit1 = getCriteria(drag, configuration, 0);
+ crit2 = getCriteria(drag, configuration, 1);
+ if (crit1 == null || crit2 == null) {
+ ApplicationConnection.getConsole().log(
+ "And criteria didn't found a chidl criteria");
+ return;
+ }
+ }
+
+ b1 = false;
+ b2 = false;
+
+ VAcceptCallback accept1cb = new VAcceptCallback() {
+ public void accepted(VDragEvent event) {
+ b1 = true;
+ }
+ };
+ VAcceptCallback accept2cb = new VAcceptCallback() {
+ public void accepted(VDragEvent event) {
+ b2 = true;
+ }
+ };
+
+ crit1.accept(drag, configuration.getChildUIDL(0), accept1cb);
+ crit2.accept(drag, configuration.getChildUIDL(1), accept2cb);
+ if (b1 && b2) {
+ callback.accepted(drag);
+ }
+ }
+
+ private VAcceptCriteria getCriteria(VDragEvent drag, UIDL configuration,
+ int i) {
+ UIDL childUIDL = configuration.getChildUIDL(i);
+ return VAcceptCriterion.get(childUIDL.getStringAttribute("name"));
+ }
+
+ public boolean needsServerSideCheck(VDragEvent drag, UIDL criterioUIDL) {
+ return false; // TODO enforce on server side
+ }
+}
\ No newline at end of file
--- /dev/null
+/**
+ *
+ */
+package com.vaadin.terminal.gwt.client.ui.dd;
+
+import com.vaadin.terminal.gwt.client.Paintable;
+import com.vaadin.terminal.gwt.client.UIDL;
+
+final public class VComponentFilter implements VAcceptCriteria {
+ public void accept(VDragEvent drag, UIDL configuration,
+ VAcceptCallback callback) {
+ try {
+ Paintable component = drag.getTransferable().getDragSource();
+ int c = configuration.getIntAttribute("c");
+ for (int i = 0; i < c; i++) {
+ String requiredPid = configuration
+ .getStringAttribute("component" + i);
+ Paintable paintable = VDragAndDropManager.get()
+ .getCurrentDropHandler().getApplicationConnection()
+ .getPaintable(requiredPid);
+ if (paintable == component) {
+ callback.accepted(drag);
+ }
+ }
+ } catch (Exception e) {
+ }
+ return;
+ }
+
+ public boolean needsServerSideCheck(VDragEvent drag, UIDL criterioUIDL) {
+ return false;
+ }
+}
\ No newline at end of file
--- /dev/null
+/**
+ *
+ */
+package com.vaadin.terminal.gwt.client.ui.dd;
+
+import com.vaadin.terminal.gwt.client.UIDL;
+
+final public class VDataBound implements VAcceptCriteria {
+ public void accept(VDragEvent drag, UIDL configuration,
+ VAcceptCallback callback) {
+ if (drag.getTransferable().getData("itemId") != null) {
+ callback.accepted(drag);
+ }
+ }
+
+ public boolean needsServerSideCheck(VDragEvent drag, UIDL criterioUIDL) {
+ return false;
+ }
+}
\ No newline at end of file
--- /dev/null
+/**
+ *
+ */
+package com.vaadin.terminal.gwt.client.ui.dd;
+
+import java.util.HashSet;
+
+import com.vaadin.terminal.gwt.client.UIDL;
+
+/**
+ *
+ * @deprecated example class testing custom behavior
+ */
+@Deprecated
+final public class VLazyInitItemIdentifiers implements VAcceptCriteria {
+ private boolean loaded = false;
+ private HashSet<String> hashSet;
+ private VDragEvent lastDragEvent;
+
+ public void accept(final VDragEvent drag, UIDL configuration,
+ final VAcceptCallback callback) {
+ if (lastDragEvent == null || lastDragEvent != drag) {
+ loaded = false;
+ lastDragEvent = drag;
+ }
+ if (loaded) {
+ Object object = drag.getDropDetails().get("itemIdOver");
+ if (hashSet.contains(object)) {
+ callback.accepted(drag);
+ }
+ } else {
+
+ VDragEventServerCallback acceptCallback = new VDragEventServerCallback() {
+
+ public void handleResponse(boolean accepted, UIDL response) {
+ hashSet = new HashSet<String>();
+ String[] stringArrayAttribute = response
+ .getStringArrayAttribute("allowedIds");
+ for (int i = 0; i < stringArrayAttribute.length; i++) {
+ hashSet.add(stringArrayAttribute[i]);
+ }
+ loaded = true;
+ if (accepted) {
+ callback.accepted(drag);
+ }
+ }
+ };
+
+ VDragAndDropManager.get().visitServer(acceptCallback);
+ }
+
+ }
+
+ public boolean needsServerSideCheck(VDragEvent drag, UIDL criterioUIDL) {
+ return loaded;
+ }
+}
\ No newline at end of file
--- /dev/null
+/**
+ *
+ */
+package com.vaadin.terminal.gwt.client.ui.dd;
+
+import com.vaadin.terminal.gwt.client.ApplicationConnection;
+import com.vaadin.terminal.gwt.client.UIDL;
+
+final public class VNot implements VAcceptCriteria {
+ private boolean b1;
+ private VAcceptCriteria crit1;
+
+ public void accept(VDragEvent drag, UIDL configuration,
+ VAcceptCallback callback) {
+ if (crit1 == null) {
+ crit1 = getCriteria(drag, configuration, 0);
+ if (crit1 == null) {
+ ApplicationConnection.getConsole().log(
+ "Not criteria didn't found a child criteria");
+ return;
+ }
+ }
+
+ b1 = false;
+
+ VAcceptCallback accept1cb = new VAcceptCallback() {
+ public void accepted(VDragEvent event) {
+ b1 = true;
+ }
+ };
+
+ crit1.accept(drag, configuration.getChildUIDL(0), accept1cb);
+ if (!b1) {
+ callback.accepted(drag);
+ }
+ }
+
+ private VAcceptCriteria getCriteria(VDragEvent drag, UIDL configuration,
+ int i) {
+ UIDL childUIDL = configuration.getChildUIDL(i);
+ return VAcceptCriterion.get(childUIDL.getStringAttribute("name"));
+ }
+
+ public boolean needsServerSideCheck(VDragEvent drag, UIDL criterioUIDL) {
+ return false; // TODO enforce on server side
+ }
+}
\ No newline at end of file
--- /dev/null
+/**
+ *
+ */
+package com.vaadin.terminal.gwt.client.ui.dd;
+
+import com.vaadin.terminal.gwt.client.ApplicationConnection;
+import com.vaadin.terminal.gwt.client.UIDL;
+
+final public class VOr implements VAcceptCriteria {
+ private boolean b1;
+ private boolean b2;
+ private VAcceptCriteria crit1;
+ private VAcceptCriteria crit2;
+
+ public void accept(VDragEvent drag, UIDL configuration,
+ VAcceptCallback callback) {
+ if (crit1 == null) {
+ crit1 = getCriteria(drag, configuration, 0);
+ crit2 = getCriteria(drag, configuration, 1);
+ if (crit1 == null || crit2 == null) {
+ ApplicationConnection.getConsole().log(
+ "Or criteria didn't found a chidl criteria");
+ return;
+ }
+ }
+
+ b1 = false;
+ b2 = false;
+
+ VAcceptCallback accept1cb = new VAcceptCallback() {
+ public void accepted(VDragEvent event) {
+ b1 = true;
+ }
+ };
+ VAcceptCallback accept2cb = new VAcceptCallback() {
+ public void accepted(VDragEvent event) {
+ b2 = true;
+ }
+ };
+
+ crit1.accept(drag, configuration.getChildUIDL(0), accept1cb);
+ crit2.accept(drag, configuration.getChildUIDL(1), accept2cb);
+ if (b1 || b2) {
+ callback.accepted(drag);
+ }
+ }
+
+ private VAcceptCriteria getCriteria(VDragEvent drag, UIDL configuration,
+ int i) {
+ UIDL childUIDL = configuration.getChildUIDL(i);
+ return VAcceptCriterion.get(childUIDL.getStringAttribute("name"));
+ }
+
+ public boolean needsServerSideCheck(VDragEvent drag, UIDL criterioUIDL) {
+ return false; // TODO enforce on server side
+ }
+
+}
\ No newline at end of file
--- /dev/null
+/**
+ *
+ */
+package com.vaadin.terminal.gwt.client.ui.dd;
+
+import com.vaadin.terminal.gwt.client.UIDL;
+
+final public class VOverTreeNode implements VAcceptCriteria {
+ public void accept(VDragEvent drag, UIDL configuration,
+ VAcceptCallback callback) {
+ Boolean containsKey = (Boolean) drag.getDropDetails().get(
+ "itemIdOverIsNode");
+ if (containsKey != null && containsKey.booleanValue()) {
+ callback.accepted(drag);
+ return;
+ }
+ return;
+ }
+
+ public boolean needsServerSideCheck(VDragEvent drag, UIDL criterioUIDL) {
+ return false;
+ }
+}
\ No newline at end of file
--- /dev/null
+/**
+ *
+ */
+package com.vaadin.terminal.gwt.client.ui.dd;
+
+import com.vaadin.terminal.gwt.client.UIDL;
+
+final public class VServerAccept implements VAcceptCriteria {
+ public void accept(final VDragEvent drag, UIDL configuration,
+ final VAcceptCallback callback) {
+
+ VDragEventServerCallback acceptCallback = new VDragEventServerCallback() {
+ public void handleResponse(boolean accepted, UIDL response) {
+ if (accepted) {
+ callback.accepted(drag);
+ }
+ }
+ };
+ VDragAndDropManager.get().visitServer(acceptCallback);
+ }
+
+ public boolean needsServerSideCheck(VDragEvent drag, UIDL criterioUIDL) {
+ return true;
+ }
+}
\ No newline at end of file
import java.io.PrintWriter;
import java.util.Collection;
import java.util.Date;
-import java.util.LinkedList;
import com.google.gwt.core.ext.Generator;
import com.google.gwt.core.ext.GeneratorContext;
import com.google.gwt.core.ext.typeinfo.TypeOracle;
import com.google.gwt.user.rebind.ClassSourceFileComposerFactory;
import com.google.gwt.user.rebind.SourceWriter;
-import com.vaadin.terminal.gwt.client.ui.dd.ServerCriterion;
+import com.vaadin.event.dd.acceptCriteria.AcceptCriterion;
+import com.vaadin.event.dd.acceptCriteria.ClientCriterion;
+import com.vaadin.terminal.gwt.client.ui.dd.VAcceptCriteria;
import com.vaadin.ui.ClientWidget;
/**
}
- private Collection<JClassType> getAvailableCriteria(GeneratorContext context) {
-
- Collection<JClassType> crits = new LinkedList<JClassType>();
-
- JClassType[] types = context.getTypeOracle().getTypes();
- for (int i = 0; i < types.length; i++) {
- JClassType jClassType = types[i];
- JClassType[] implementedInterfaces = jClassType
- .getImplementedInterfaces();
- for (int j = 0; j < implementedInterfaces.length; j++) {
- String qualifiedSourceName = implementedInterfaces[j]
- .getQualifiedSourceName();
- if (qualifiedSourceName
- .equals("com.vaadin.terminal.gwt.client.ui.dd.VAcceptCriteria")) {
- crits.add(jClassType);
- }
- }
- }
- return crits;
- }
-
private void generateInstantiatorMethod(SourceWriter sourceWriter,
GeneratorContext context, TreeLogger logger) {
sourceWriter.println("name = name.intern();");
- Collection<JClassType> paintablesHavingWidgetAnnotation = getAvailableCriteria(context);
-
- for (JClassType jClassType : paintablesHavingWidgetAnnotation) {
- ServerCriterion annotation = jClassType
- .getAnnotation(ServerCriterion.class);
- if (annotation == null) {
- // throw new RuntimeException(
- // "No server side implementation defined for "
- // + jClassType.getName());
- continue;
- } else {
- System.out.print("Printing for instantiation rule for "
- + annotation.value());
- }
- String serversideclass = annotation.value();
+ Collection<Class<? extends AcceptCriterion>> clientSideVerifiableCriterion = ClassPathExplorer
+ .getCriterion();
+ for (Class<? extends AcceptCriterion> class1 : clientSideVerifiableCriterion) {
+ String canonicalName = class1.getCanonicalName();
+ Class<? extends VAcceptCriteria> clientClass = class1
+ .getAnnotation(ClientCriterion.class).value();
sourceWriter.print("if (\"");
- sourceWriter.print(serversideclass);
+ sourceWriter.print(canonicalName);
sourceWriter.print("\" == name) return GWT.create(");
- sourceWriter.print(jClassType.getName());
+ sourceWriter.print(clientClass.getCanonicalName());
sourceWriter.println(".class );");
sourceWriter.print("else ");
-
}
+
sourceWriter.println("return null;");
sourceWriter.outdent();
sourceWriter.println("}");
import java.util.logging.Level;
import java.util.logging.Logger;
+import com.vaadin.event.dd.acceptCriteria.AcceptCriterion;
+import com.vaadin.event.dd.acceptCriteria.ClientCriterion;
import com.vaadin.terminal.Paintable;
import com.vaadin.ui.ClientWidget;
}
+ public static Collection<Class<? extends AcceptCriterion>> getCriterion() {
+ if (acceptCriterion.isEmpty()) {
+ // accept criterion are searched as a side effect, normally after
+ // paintable detection
+ getPaintablesHavingWidgetAnnotation();
+ }
+ return acceptCriterion;
+ }
+
/**
* Finds available widgetset names.
*
}
});
+ private static Set<Class<? extends AcceptCriterion>> acceptCriterion = new HashSet<Class<? extends AcceptCriterion>>();
+
private static void tryToAdd(final String fullclassName,
Collection<Class<? extends Paintable>> paintables) {
try {
if (c.getAnnotation(ClientWidget.class) != null) {
paintables.add((Class<? extends Paintable>) c);
// System.out.println("Found paintable " + fullclassName);
+ } else if (c.getAnnotation(ClientCriterion.class) != null) {
+ acceptCriterion.add((Class<? extends AcceptCriterion>) c);
}
+
} catch (ClassNotFoundException e) {
// e.printStackTrace();
} catch (LinkageError e) {
import com.vaadin.event.dd.DropHandler;
import com.vaadin.event.dd.DropTarget;
import com.vaadin.event.dd.TargetDetailsImpl;
+import com.vaadin.event.dd.acceptCriteria.ClientCriterion;
import com.vaadin.event.dd.acceptCriteria.ServerSideCriterion;
import com.vaadin.terminal.KeyMapper;
import com.vaadin.terminal.PaintException;
import com.vaadin.terminal.Resource;
import com.vaadin.terminal.gwt.client.MouseEventDetails;
import com.vaadin.terminal.gwt.client.ui.VTree;
+import com.vaadin.terminal.gwt.client.ui.dd.VLazyInitItemIdentifiers;
/**
* Tree component. A Tree can be used to select an item (or multiple items) from
* <p>
* See client side counterpart
*/
+ @ClientCriterion(VLazyInitItemIdentifiers.class)
public static abstract class TreeDropCriterion extends ServerSideCriterion {
private Tree tree;