From 168de1fefa0f09b07d438968575033e6d234cfb2 Mon Sep 17 00:00:00 2001 From: Teemu Suo-Anttila Date: Mon, 14 Apr 2014 11:14:32 +0000 Subject: [PATCH] Revert "Drag image for text-area should contain text of text-area (#13557)" This reverts commit f227f0c1068f17e5491bd399d9f5bde16a0c8272. Synchronising content after IE wraps the given element into a table with a body causes a NullPointerException on client side. This patch also contains new API and should be targeted to master branch. Change-Id: Ia19acd9fa31c7b67507bf797a2bab7c28ea37b4b --- .../src/com/vaadin/client/ui/VTextArea.java | 15 +---- .../vaadin/client/ui/dd/VDragCloneAware.java | 40 ------------ .../com/vaadin/client/ui/dd/VDragEvent.java | 31 ---------- .../DragAndDropTextArea.java | 56 ----------------- .../DragAndDropTextAreaTest.java | 61 ------------------- 5 files changed, 1 insertion(+), 202 deletions(-) delete mode 100644 client/src/com/vaadin/client/ui/dd/VDragCloneAware.java delete mode 100644 uitest/src/com/vaadin/tests/components/draganddropwrapper/DragAndDropTextArea.java delete mode 100644 uitest/src/com/vaadin/tests/components/draganddropwrapper/DragAndDropTextAreaTest.java diff --git a/client/src/com/vaadin/client/ui/VTextArea.java b/client/src/com/vaadin/client/ui/VTextArea.java index 627d14a058..2a697969df 100644 --- a/client/src/com/vaadin/client/ui/VTextArea.java +++ b/client/src/com/vaadin/client/ui/VTextArea.java @@ -17,7 +17,6 @@ package com.vaadin.client.ui; import com.google.gwt.core.client.Scheduler; -import com.google.gwt.dom.client.Element; import com.google.gwt.dom.client.Style.Overflow; import com.google.gwt.dom.client.Style.WhiteSpace; import com.google.gwt.dom.client.TextAreaElement; @@ -31,7 +30,6 @@ import com.google.gwt.user.client.DOM; import com.google.gwt.user.client.Event; import com.vaadin.client.BrowserInfo; import com.vaadin.client.Util; -import com.vaadin.client.ui.dd.VDragCloneAware; /** * This class represents a multiline textfield (textarea). @@ -42,7 +40,7 @@ import com.vaadin.client.ui.dd.VDragCloneAware; * @author Vaadin Ltd. * */ -public class VTextArea extends VTextField implements VDragCloneAware { +public class VTextArea extends VTextField { public static final String CLASSNAME = "v-textarea"; private boolean wordwrap = true; private MaxLengthHandler maxLengthHandler = new MaxLengthHandler(); @@ -296,15 +294,4 @@ public class VTextArea extends VTextField implements VDragCloneAware { // class instead of directly each other. } - @Override - public void initDragImageCopy(Element element) { - // Fix for #13557 - drag image doesn't show original text area text. - // It happens because "value" property is not copied into the cloned - // element - String value = getElement().getPropertyString("value"); - if (value != null) { - element.setPropertyString("value", value); - } - } - } diff --git a/client/src/com/vaadin/client/ui/dd/VDragCloneAware.java b/client/src/com/vaadin/client/ui/dd/VDragCloneAware.java deleted file mode 100644 index 546ca88a9f..0000000000 --- a/client/src/com/vaadin/client/ui/dd/VDragCloneAware.java +++ /dev/null @@ -1,40 +0,0 @@ -/* - * Copyright 2000-2013 Vaadin Ltd. - * - * Licensed under the Apache License, Version 2.0 (the "License"); you may not - * use this file except in compliance with the License. You may obtain a copy of - * the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, WITHOUT - * WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the - * License for the specific language governing permissions and limitations under - * the License. - */ -package com.vaadin.client.ui.dd; - -import com.google.gwt.dom.client.Element; - -/** - * Widget could implement this interface if drag image requires additional - * initialization/configuration. Method {@link #initDragImageCopy(Element)} - * allows to change/correct drag image element when element is dragged via DnD. - * - * @since 7.1 - * @author Vaadin Ltd - */ -public interface VDragCloneAware { - - /** - * This method is called for cloned element which corresponds - * to the widget element. One could modify/correct this element - * for drag image. - * - * @since 7.1 - * @param element - * cloned element of drag image - */ - void initDragImageCopy(Element element); -} diff --git a/client/src/com/vaadin/client/ui/dd/VDragEvent.java b/client/src/com/vaadin/client/ui/dd/VDragEvent.java index 0f0e1ecdad..a4667e57f3 100644 --- a/client/src/com/vaadin/client/ui/dd/VDragEvent.java +++ b/client/src/com/vaadin/client/ui/dd/VDragEvent.java @@ -20,14 +20,11 @@ import java.util.Map; import com.google.gwt.dom.client.Document; import com.google.gwt.dom.client.NativeEvent; -import com.google.gwt.dom.client.Node; import com.google.gwt.dom.client.Style.Unit; import com.google.gwt.dom.client.TableElement; import com.google.gwt.dom.client.TableSectionElement; import com.google.gwt.event.dom.client.MouseOverEvent; import com.google.gwt.user.client.Element; -import com.google.gwt.user.client.Event; -import com.google.gwt.user.client.EventListener; import com.vaadin.client.BrowserInfo; import com.vaadin.client.Util; @@ -187,7 +184,6 @@ public class VDragEvent { cloneNode = table.cast(); } } - syncContent(element, cloneNode); if (alignImageToEvent) { int absoluteTop = element.getAbsoluteTop(); int absoluteLeft = element.getAbsoluteLeft(); @@ -202,31 +198,4 @@ public class VDragEvent { } - /** - * Do additional content sync between original element and its - * copy if needed. - * - * @since 7.1 - * @param original - * original element - * @param copy - * copy of original element - */ - protected void syncContent(Element original, Element copy) { - for (int i = 0; i < original.getChildCount(); i++) { - Node child = original.getChild(i); - if (child instanceof Element) { - syncContent((Element) child, (Element) copy.getChild(i)); - } - } - doSyncContent(original, copy); - } - - private void doSyncContent(Element original, Element copy) { - EventListener eventListener = Event.getEventListener(original); - if (eventListener instanceof VDragCloneAware) { - ((VDragCloneAware) eventListener).initDragImageCopy(copy); - } - } - } diff --git a/uitest/src/com/vaadin/tests/components/draganddropwrapper/DragAndDropTextArea.java b/uitest/src/com/vaadin/tests/components/draganddropwrapper/DragAndDropTextArea.java deleted file mode 100644 index 410eb21170..0000000000 --- a/uitest/src/com/vaadin/tests/components/draganddropwrapper/DragAndDropTextArea.java +++ /dev/null @@ -1,56 +0,0 @@ -/* - * Copyright 2000-2013 Vaadin Ltd. - * - * Licensed under the Apache License, Version 2.0 (the "License"); you may not - * use this file except in compliance with the License. You may obtain a copy of - * the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, WITHOUT - * WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the - * License for the specific language governing permissions and limitations under - * the License. - */ -package com.vaadin.tests.components.draganddropwrapper; - -import com.vaadin.server.VaadinRequest; -import com.vaadin.tests.components.AbstractTestUI; -import com.vaadin.ui.DragAndDropWrapper; -import com.vaadin.ui.DragAndDropWrapper.DragStartMode; -import com.vaadin.ui.TextArea; -import com.vaadin.ui.VerticalLayout; - -/** - * Test UI for text area: drag image should contain text-area text. - * - * @since 7.1 - * @author Vaadin Ltd - */ -public class DragAndDropTextArea extends AbstractTestUI { - - @Override - protected void setup(VaadinRequest request) { - VerticalLayout dndLayout = new VerticalLayout(); - - TextArea area = new TextArea(); - area.setValue("text"); - - dndLayout.addComponent(area); - DragAndDropWrapper wrapper = new DragAndDropWrapper(dndLayout); - wrapper.setDragStartMode(DragStartMode.WRAPPER); - addComponent(wrapper); - } - - @Override - protected String getTestDescription() { - return "Drag image for textarea should contain text-area text"; - } - - @Override - protected Integer getTicketNumber() { - return 13557; - } - -} diff --git a/uitest/src/com/vaadin/tests/components/draganddropwrapper/DragAndDropTextAreaTest.java b/uitest/src/com/vaadin/tests/components/draganddropwrapper/DragAndDropTextAreaTest.java deleted file mode 100644 index 2abf3599ac..0000000000 --- a/uitest/src/com/vaadin/tests/components/draganddropwrapper/DragAndDropTextAreaTest.java +++ /dev/null @@ -1,61 +0,0 @@ -/* - * Copyright 2000-2013 Vaadin Ltd. - * - * Licensed under the Apache License, Version 2.0 (the "License"); you may not - * use this file except in compliance with the License. You may obtain a copy of - * the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, WITHOUT - * WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the - * License for the specific language governing permissions and limitations under - * the License. - */ -package com.vaadin.tests.components.draganddropwrapper; - -import java.util.List; - -import org.junit.Assert; -import org.junit.Test; -import org.openqa.selenium.WebElement; -import org.openqa.selenium.interactions.Actions; - -import com.vaadin.testbench.By; -import com.vaadin.tests.tb3.MultiBrowserTest; - -/** - * Test for drag image of text area which should contain text-area text. - * - * @since 7.1 - * @author Vaadin Ltd - */ -public class DragAndDropTextAreaTest extends MultiBrowserTest { - - @Test - public void testTextAreaDndImage() { - openTestURL(); - - WebElement wrapper = driver.findElement(By - .className("v-verticallayout")); - Actions actions = new Actions(driver); - actions.clickAndHold(wrapper); - actions.moveByOffset(50, 50); - actions.perform(); - - WebElement dragElement = driver.findElement(By - .className("v-drag-element")); - List children = dragElement.findElements(By.xpath(".//*")); - boolean found = false; - for (WebElement child : children) { - if ("text".equals(child.getAttribute("value"))) { - found = true; - } - } - - Assert.assertTrue( - "Text value is not found in the DnD image of text area", found); - } - -} -- 2.39.5