diff options
3 files changed, 132 insertions, 2 deletions
diff --git a/client/src/com/vaadin/client/ui/VScrollTable.java b/client/src/com/vaadin/client/ui/VScrollTable.java index 4a7fc1de0a..6717a1a521 100644 --- a/client/src/com/vaadin/client/ui/VScrollTable.java +++ b/client/src/com/vaadin/client/ui/VScrollTable.java @@ -2702,7 +2702,9 @@ public class VScrollTable extends FlowPanel implements HasWidgets, public void setUndefinedWidth() { definedWidth = false; - setWidth(-1, false); + if (!isResizing) { + setWidth(-1, false); + } } /** @@ -3358,7 +3360,7 @@ public class VScrollTable extends FlowPanel implements HasWidgets, c.setAlign(ALIGN_LEFT); } - if (col.hasAttribute("width")) { + if (col.hasAttribute("width") && !c.isResizing) { // Make sure to accomodate for the sort indicator if // necessary. int width = col.getIntAttribute("width"); @@ -6637,6 +6639,9 @@ public class VScrollTable extends FlowPanel implements HasWidgets, int checksum = 0; while (headCells.hasNext()) { hCell = (HeaderCell) headCells.next(); + if (hCell.isResizing) { + continue; + } if (!hCell.isDefinedWidth()) { int w = hCell.getNaturalColumnWidth(colIndex); int newSpace; diff --git a/uitest/src/com/vaadin/tests/components/table/TableWithPolling.java b/uitest/src/com/vaadin/tests/components/table/TableWithPolling.java new file mode 100644 index 0000000000..fdd5c2901a --- /dev/null +++ b/uitest/src/com/vaadin/tests/components/table/TableWithPolling.java @@ -0,0 +1,60 @@ +/* + * Copyright 2000-2014 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.table; + +import com.vaadin.server.VaadinRequest; +import com.vaadin.tests.components.AbstractTestUI; +import com.vaadin.ui.Table; + +public class TableWithPolling extends AbstractTestUI { + + @Override + protected String getTestDescription() { + return "Polling shouldn't affect table column resizing in any way."; + } + + @Override + protected Integer getTicketNumber() { + return 13432; + } + + @Override + protected void setup(VaadinRequest request) { + + Table table = new Table("This is my Table"); + + table.addContainerProperty("First Name", String.class, null); + table.addContainerProperty("Last Name", String.class, null); + table.addContainerProperty("Year", Integer.class, null); + + table.addItem(new Object[] { "Nicolaus", "Copernicus", + new Integer(1473) }, new Integer(1)); + table.addItem(new Object[] { "Tycho", "Brahe", new Integer(1546) }, + new Integer(2)); + table.addItem(new Object[] { "Giordano", "Bruno", new Integer(1548) }, + new Integer(3)); + table.addItem(new Object[] { "Galileo", "Galilei", new Integer(1564) }, + new Integer(4)); + table.addItem(new Object[] { "Johannes", "Kepler", new Integer(1571) }, + new Integer(5)); + table.addItem(new Object[] { "Isaac", "Newton", new Integer(1643) }, + new Integer(6)); + + addComponent(table); + + setPollInterval(1000); + } +} diff --git a/uitest/src/com/vaadin/tests/components/table/TableWithPollingTest.java b/uitest/src/com/vaadin/tests/components/table/TableWithPollingTest.java new file mode 100644 index 0000000000..6aae1e27fc --- /dev/null +++ b/uitest/src/com/vaadin/tests/components/table/TableWithPollingTest.java @@ -0,0 +1,65 @@ +/* + * Copyright 2000-2014 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.table; + +import java.util.List; + +import org.junit.Assert; +import org.junit.Test; +import org.openqa.selenium.By; +import org.openqa.selenium.WebElement; +import org.openqa.selenium.interactions.Actions; +import org.openqa.selenium.remote.DesiredCapabilities; + +import com.vaadin.tests.tb3.MultiBrowserTest; + +public class TableWithPollingTest extends MultiBrowserTest { + + @Test + public void testColumnResizing() throws Exception { + openTestURL(); + + WebElement headerCell = driver.findElement(By + .xpath("(//td[contains(@class, 'v-table-header-cell')])[1]")); + WebElement bodyCell = driver.findElement(By + .xpath("(//td[contains(@class, 'v-table-cell-content')])[1]")); + WebElement resizer = driver.findElement(By + .xpath("(//div[contains(@class, 'v-table-resizer')])[1]")); + + final int offset = 50; + final int headerCellWidth = headerCell.getSize().width; + final int bodyCellWidth = bodyCell.getSize().width; + + new Actions(driver).clickAndHold(resizer).moveByOffset(offset, 0) + .perform(); + sleep(2000); + new Actions(driver).release().perform(); + + Assert.assertEquals(headerCellWidth + offset, + headerCell.getSize().width); + Assert.assertEquals(bodyCellWidth + offset, bodyCell.getSize().width); + } + + @Override + public List<DesiredCapabilities> getBrowsersToTest() { + // Selenium has issues with drag-and-drop on IE8 making it impossible to + // drag a target as small as the table resizer. So we'll just have to + // ignore IE8 completely. + List<DesiredCapabilities> browsers = super.getBrowsersToTest(); + browsers.remove(Browser.IE8.getDesiredCapabilities()); + return browsers; + } +} |