aboutsummaryrefslogtreecommitdiffstats
path: root/uitest/src/com/vaadin/tests/dd/DragDropPane.java
diff options
context:
space:
mode:
authorArtur Signell <artur@vaadin.com>2012-08-30 17:24:36 +0300
committerArtur Signell <artur@vaadin.com>2012-08-30 17:24:36 +0300
commit7b25b3886ea95bc6495506fbe9472e45fcbde684 (patch)
tree0b93cb65dab437feb46720659a63b8f1ef48f7f4 /uitest/src/com/vaadin/tests/dd/DragDropPane.java
parent8941056349e302e687e40e94c13709e75f256d73 (diff)
downloadvaadin-framework-7b25b3886ea95bc6495506fbe9472e45fcbde684.tar.gz
vaadin-framework-7b25b3886ea95bc6495506fbe9472e45fcbde684.zip
Renamed tests -> uitest and tests/testbench -> uitest/src (#9299)
Diffstat (limited to 'uitest/src/com/vaadin/tests/dd/DragDropPane.java')
-rw-r--r--uitest/src/com/vaadin/tests/dd/DragDropPane.java188
1 files changed, 188 insertions, 0 deletions
diff --git a/uitest/src/com/vaadin/tests/dd/DragDropPane.java b/uitest/src/com/vaadin/tests/dd/DragDropPane.java
new file mode 100644
index 0000000000..970e1b0141
--- /dev/null
+++ b/uitest/src/com/vaadin/tests/dd/DragDropPane.java
@@ -0,0 +1,188 @@
+package com.vaadin.tests.dd;
+
+import java.io.ByteArrayOutputStream;
+import java.io.OutputStream;
+
+import com.vaadin.event.DataBoundTransferable;
+import com.vaadin.event.Transferable;
+import com.vaadin.event.dd.DragAndDropEvent;
+import com.vaadin.event.dd.DropHandler;
+import com.vaadin.event.dd.acceptcriteria.AcceptAll;
+import com.vaadin.event.dd.acceptcriteria.AcceptCriterion;
+import com.vaadin.server.StreamVariable;
+import com.vaadin.shared.MouseEventDetails;
+import com.vaadin.ui.AbsoluteLayout;
+import com.vaadin.ui.AbsoluteLayout.ComponentPosition;
+import com.vaadin.ui.Component;
+import com.vaadin.ui.DragAndDropWrapper;
+import com.vaadin.ui.Html5File;
+import com.vaadin.ui.Label;
+
+/**
+ * replacement for a proto class to keep tests working
+ */
+public class DragDropPane extends DragAndDropWrapper implements DropHandler {
+
+ private AbsoluteLayout root;
+ private AcceptCriterion crit;
+
+ public DragDropPane() {
+ super(new AbsoluteLayout());
+ root = (AbsoluteLayout) getCompositionRoot();
+ setDropHandler(this);
+ setDragStartMode(DragStartMode.COMPONENT);
+ }
+
+ @Override
+ public void addComponent(Component c) {
+ root.addComponent(c);
+ }
+
+ /**
+ *
+ */
+ private static final long serialVersionUID = 1L;
+
+ public void addComponent(Component l, String string) {
+ root.addComponent(l, string);
+ }
+
+ public void setAcceptCriterion(AcceptCriterion crit) {
+ this.crit = crit;
+ }
+
+ @Override
+ public void drop(DragAndDropEvent event) {
+
+ WrapperTargetDetails ed = (WrapperTargetDetails) event
+ .getTargetDetails();
+ Transferable ctr = event.getTransferable();
+ // use "component" (from DragDropPane) if available, else take
+ // the source component
+ Component component = null;
+ if (ctr instanceof WrapperTransferable) {
+ component = ((WrapperTransferable) ctr).getDraggedComponent();
+ } else if (ctr instanceof DataBoundTransferable) {
+ // Item has been dragged, construct a Label from
+ // Item id
+ Label l = new Label();
+ l.setSizeUndefined();
+ l.setValue("ItemId : " + ((DataBoundTransferable) ctr).getItemId());
+ component = l;
+ }
+
+ if (component != null) {
+
+ if (component.getParent() != root) {
+
+ root.addComponent(component);
+
+ Integer left = ed.getAbsoluteLeft();
+ Integer top = ed.getAbsoluteTop();
+
+ MouseEventDetails eventDetails = ed.getMouseEvent();
+
+ int clientX = eventDetails.getClientX();
+ int clientY = eventDetails.getClientY();
+
+ try {
+ root.getPosition(component).setTopValue(
+ Float.valueOf(clientY - top));
+ root.getPosition(component).setLeftValue(
+ Float.valueOf(clientX - left));
+ } catch (Exception e) {
+ }
+ } else {
+ // drag started and ended inside the this Pane
+
+ MouseEventDetails start = ((WrapperTransferable) event
+ .getTransferable()).getMouseDownEvent();
+ MouseEventDetails eventDetails = ed.getMouseEvent();
+
+ int deltaX = eventDetails.getClientX() - start.getClientX();
+ int deltaY = eventDetails.getClientY() - start.getClientY();
+
+ ComponentPosition p = root.getPosition(component);
+ p.setTopValue(p.getTopValue() + deltaY);
+ p.setLeftValue(p.getLeftValue() + deltaX);
+
+ }
+ }
+
+ else {
+ // drag coming outside of Vaadin
+
+ WrapperTransferable wtr = (WrapperTransferable) ctr;
+
+ String object = wtr.getText();
+ // String html = wtr.getHtml();
+ // String url = (String) ctr.getData("Url");
+
+ final Label l = new Label();
+ l.setCaption("Generated from HTML5 drag:");
+ if (object != null) {
+ if (object.length() > 80) {
+ object = object.substring(0, 79);
+ }
+ l.setValue(object);
+ } else {
+ l.setValue("HTML5 dd");
+ }
+
+ Html5File[] files = wtr.getFiles();
+ if (files != null) {
+ for (Html5File html5File : files) {
+ l.setCaption(html5File.getFileName());
+ html5File.setStreamVariable(new StreamVariable() {
+ ByteArrayOutputStream byteArrayOutputStream = new ByteArrayOutputStream();
+
+ @Override
+ public OutputStream getOutputStream() {
+ return byteArrayOutputStream;
+ }
+
+ @Override
+ public boolean listenProgress() {
+ return false;
+ }
+
+ @Override
+ public void onProgress(StreamingProgressEvent event) {
+ }
+
+ @Override
+ public void streamingStarted(StreamingStartEvent event) {
+ }
+
+ @Override
+ public void streamingFinished(StreamingEndEvent event) {
+ l.setValue((new String(byteArrayOutputStream
+ .toByteArray()).substring(0, 80) + "..."));
+ }
+
+ @Override
+ public void streamingFailed(StreamingErrorEvent event) {
+ }
+
+ @Override
+ public boolean isInterrupted() {
+ return false;
+ }
+ });
+ }
+ }
+
+ l.setSizeUndefined();
+
+ root.addComponent(l);
+
+ }
+ return;
+ }
+
+ @Override
+ public AcceptCriterion getAcceptCriterion() {
+ return crit != null ? crit : AcceptAll.get();
+ }
+
+}