]> source.dussan.org Git - vaadin-framework.git/commitdiff
Test case for enhancement #6813
authorMatti Tahvonen <matti.tahvonen@itmill.com>
Wed, 13 Apr 2011 15:30:30 +0000 (15:30 +0000)
committerMatti Tahvonen <matti.tahvonen@itmill.com>
Wed, 13 Apr 2011 15:30:30 +0000 (15:30 +0000)
svn changeset:18274/svn branch:6.6

tests/src/com/vaadin/tests/dd/ActiveDragSourceClassName.java [new file with mode: 0644]

diff --git a/tests/src/com/vaadin/tests/dd/ActiveDragSourceClassName.java b/tests/src/com/vaadin/tests/dd/ActiveDragSourceClassName.java
new file mode 100644 (file)
index 0000000..889c6bb
--- /dev/null
@@ -0,0 +1,117 @@
+package com.vaadin.tests.dd;
+
+import java.util.Iterator;
+
+import com.vaadin.event.Transferable;
+import com.vaadin.event.TransferableImpl;
+import com.vaadin.event.dd.DragAndDropEvent;
+import com.vaadin.event.dd.DropHandler;
+import com.vaadin.event.dd.DropTarget;
+import com.vaadin.event.dd.TargetDetails;
+import com.vaadin.event.dd.acceptcriteria.AcceptAll;
+import com.vaadin.event.dd.acceptcriteria.AcceptCriterion;
+import com.vaadin.tests.components.TestBase;
+import com.vaadin.tests.util.TestUtils;
+import com.vaadin.ui.Component;
+import com.vaadin.ui.CssLayout;
+import com.vaadin.ui.DragAndDropWrapper;
+import com.vaadin.ui.Label;
+import com.vaadin.ui.VerticalLayout;
+
+public class ActiveDragSourceClassName extends TestBase {
+
+    private static final String GREENBOXES = ".greenblock {float:left; width:60px;height:60px;background: green !important; padding:0; margin:2px;-webkit-transition: width 0.3s ease-in-out;}";
+    private static final String HIDEDRAGSOURCE = ".v-active-drag-source { overflow:hidden; width:0px !important;}";
+
+    protected void setup() {
+        TestUtils.injectCSS(getMainWindow(), GREENBOXES + HIDEDRAGSOURCE);
+        
+        VerticalLayout l = new VerticalLayout();
+        l.setWidth("400px");
+        l.setHeight("100px");
+        DragAndDropWrapper pane = new DragAndDropWrapper(cssLayout);
+        pane.setSizeFull();
+        l.addComponent(pane);
+        
+        addComponent(l);
+        
+        for (int i = 0; i < 4; i++) {
+            cssLayout.addComponent(new WrappedLabel("Block"));
+        }
+        
+    }
+    
+    static int count;
+
+    private CssLayout cssLayout = new CssLayout() {};
+
+    class WrappedLabel extends DragAndDropWrapper {
+
+        private static final long serialVersionUID = 1L;
+
+        public WrappedLabel(String content) {
+            super(new Label(content + " c:" + ++count));
+            getCompositionRoot().setSizeUndefined();
+            setHeight("60px"); // FIXME custom component seems to be broken:
+            // can't set height with css only
+            setWidth("60px");
+            setDragStartMode(DragStartMode.WRAPPER);
+            addStyleName("greenblock");
+        }
+
+        @Override
+        public DropHandler getDropHandler() {
+            return dh;
+        }
+
+    }
+
+    private DropHandler dh = new DropHandler() {
+
+        public AcceptCriterion getAcceptCriterion() {
+            return AcceptAll.get();
+        }
+
+        public void drop(DragAndDropEvent dropEvent) {
+            Transferable transferable = dropEvent.getTransferable();
+            if (transferable instanceof TransferableImpl) {
+                TransferableImpl ct = (TransferableImpl) transferable;
+                Component sourceComponent = ct.getSourceComponent();
+                if (sourceComponent instanceof WrappedLabel) {
+                    int index = 1;
+                    Iterator<Component> componentIterator = cssLayout
+                            .getComponentIterator();
+                    Component next = componentIterator.next();
+                    TargetDetails dropTargetData = dropEvent.getTargetDetails();
+                    DropTarget target = dropTargetData.getTarget();
+                    while (next != target) {
+                        if (next != sourceComponent) {
+                            index++;
+                        }
+                        next = componentIterator.next();
+                    }
+                    if (dropTargetData.getData("horizontalLocation").equals(
+                            "LEFT")) {
+                        index--;
+                        if (index < 0) {
+                            index = 0;
+                        }
+                    }
+
+                    cssLayout.removeComponent(sourceComponent);
+                    cssLayout.addComponent(sourceComponent, index);
+                }
+            }
+        }
+    };
+
+    @Override
+    protected String getDescription() {
+        return "It should be possible to style the source component during the drag.";
+    }
+
+    @Override
+    protected Integer getTicketNumber() {
+        return 6813;
+    }
+}