Browse Source

Fix Table width calculation when adding the first item (#13592)

Change-Id: I328dd83cac0cc6ba08fa32a1227f10ece9b52d6f
tags/7.2.0
Juuso Valli 10 years ago
parent
commit
813559e82a

+ 1
- 1
client/src/com/vaadin/client/ui/VScrollTable.java View File

@@ -4271,7 +4271,7 @@ public class VScrollTable extends FlowPanel implements HasWidgets,

}
if (col.hasAttribute("width")) {
if (scrollBody == null) {
if (scrollBody == null || isNewBody) {
// Already updated by setColWidth called from
// TableHeads.updateCellsFromUIDL in case of a server
// side resize

+ 92
- 0
uitest/src/com/vaadin/tests/components/table/TableWidthItemRemove.java View File

@@ -0,0 +1,92 @@
/*
* 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.table;

import com.vaadin.server.VaadinRequest;
import com.vaadin.tests.components.AbstractTestUI;
import com.vaadin.ui.Button;
import com.vaadin.ui.Button.ClickEvent;
import com.vaadin.ui.Button.ClickListener;
import com.vaadin.ui.Table;

/**
* Test whether adding the first item to a table calculates the table width
* correctly
*
* @author Vaadin Ltd
*/
public class TableWidthItemRemove extends AbstractTestUI {

/*
* (non-Javadoc)
*
* @see com.vaadin.tests.components.AbstractTestUI#setup(com.vaadin.server.
* VaadinRequest)
*/
@Override
protected void setup(VaadinRequest request) {
final Table table = new Table("My table");
table.addContainerProperty("firstName", String.class, null);
table.addContainerProperty("lastName", String.class, null);
table.addContainerProperty("year", Integer.class, null);
table.setColumnWidth("firstName", 200);
table.setColumnWidth("lastName", 100);
table.setColumnWidth("year", 50);

Button cleanButton = new Button("Clean");
cleanButton.addClickListener(new ClickListener() {
@Override
public void buttonClick(ClickEvent event) {
table.removeAllItems();
}
});
addComponent(cleanButton);

Button populateButton = new Button("Populate");
populateButton.addClickListener(new ClickListener() {
@Override
public void buttonClick(ClickEvent event) {
table.addItem(
new Object[] { "John", "Doe", new Integer(1980) },
Math.random() * 1000);
}
});
addComponent(populateButton);

addComponent(table);
}

/*
* (non-Javadoc)
*
* @see com.vaadin.tests.components.AbstractTestUI#getTestDescription()
*/
@Override
protected String getTestDescription() {
return "The table should retain the correct width on item remove and add.";
}

/*
* (non-Javadoc)
*
* @see com.vaadin.tests.components.AbstractTestUI#getTicketNumber()
*/
@Override
protected Integer getTicketNumber() {
return 13592;
}

}

+ 46
- 0
uitest/src/com/vaadin/tests/components/table/TableWidthItemRemoveTest.java View File

@@ -0,0 +1,46 @@
/*
* 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.table;

import org.junit.Assert;
import org.junit.Test;
import org.openqa.selenium.WebElement;

import com.vaadin.testbench.By;
import com.vaadin.tests.tb3.MultiBrowserTest;

/**
* Test whether adding the first item to a table calculates the table width
* correctly
*
* @author Vaadin Ltd
*/
public class TableWidthItemRemoveTest extends MultiBrowserTest {
@Test
public void testWidthResizeOnItemAdd() {
openTestURL();

WebElement populateButton = driver.findElement(By
.vaadin("//Button[caption=\"Populate\"]"));
WebElement table = driver.findElement(By
.vaadin("//Table[caption=\"My table\"]"));
int original_width = table.getSize().getWidth();
populateButton.click();
Assert.assertTrue("Width changed on item add.", original_width == table
.getSize().getWidth());
}

}

Loading…
Cancel
Save