Browse Source

Fix adding a column to Table and immediately changing its size (#17927)

Change-Id: I970c771f647b7587aac3985ebeea0f0b20805fec
tags/7.5.0.beta2
Teemu Suo-Anttila 9 years ago
parent
commit
08dfe45d09

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

@@ -3659,16 +3659,15 @@ public class VScrollTable extends FlowPanel implements HasWidgets,
// Do a more thorough update if a column is resized from
// the server *after* the header has been properly
// initialized
final int colIx = getColIndexByKey(c.cid);
final int newWidth = width;
Scheduler.get().scheduleDeferred(
new ScheduledCommand() {
Scheduler.get().scheduleFinally(new ScheduledCommand() {

@Override
public void execute() {
setColWidth(colIx, newWidth, true);
}
});
@Override
public void execute() {
final int colIx = getColIndexByKey(cid);
setColWidth(colIx, newWidth, true);
}
});
refreshContentWidths = true;
} else {
// get min width with no indent or padding
@@ -3710,7 +3709,7 @@ public class VScrollTable extends FlowPanel implements HasWidgets,

if (refreshContentWidths) {
// Recalculate the column sizings if any column has changed
Scheduler.get().scheduleDeferred(new ScheduledCommand() {
Scheduler.get().scheduleFinally(new ScheduledCommand() {

@Override
public void execute() {

+ 70
- 0
uitest/src/com/vaadin/tests/components/table/TableColumnAddAndResize.java View File

@@ -0,0 +1,70 @@
/*
* 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.Button;
import com.vaadin.ui.Button.ClickEvent;
import com.vaadin.ui.Button.ClickListener;
import com.vaadin.ui.Table;
import com.vaadin.ui.VerticalLayout;

public class TableColumnAddAndResize extends AbstractTestUI {

@Override
protected void setup(VaadinRequest request) {
String people[][] = {
{ "Galileo", "Liked to go around the Sun" },
{ "Monnier", "Liked star charts" },
{ "VÀisÀlÀ", "Liked optics" },
{ "Oterma", "Liked comets" },
{
"Valtaoja",
"Likes cosmology and still "
+ "lives unlike the others above" }, };

VerticalLayout content = new VerticalLayout();

final Table table = new Table("Awesome Table");
table.setSizeFull();
table.addContainerProperty("Id1", String.class, "TestString");
table.addContainerProperty("Id2", String.class, "TestString2");

for (String[] p : people) {
table.addItem(p);
}
table.setColumnWidth("Id1", 100);

table.setColumnWidth("Id2", 100);

table.setVisibleColumns("Id1");
content.addComponent(table);
Button button = new Button("Add and Resize");
button.addClickListener(new ClickListener() {

@Override
public void buttonClick(ClickEvent event) {
table.setVisibleColumns("Id1", "Id2");
table.setColumnWidth("Id2", 200);

}
});
content.addComponent(button);
addComponent(content);

}
}

+ 41
- 0
uitest/src/com/vaadin/tests/components/table/TableColumnAddAndResizeTest.java View File

@@ -0,0 +1,41 @@
/*
* 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 static org.junit.Assert.assertEquals;
import static org.junit.Assert.assertFalse;

import org.junit.Test;

import com.vaadin.testbench.elements.ButtonElement;
import com.vaadin.testbench.elements.NotificationElement;
import com.vaadin.testbench.elements.TableElement;
import com.vaadin.tests.tb3.MultiBrowserTest;

public class TableColumnAddAndResizeTest extends MultiBrowserTest {

@Test
public void testAddAndResizeColumn() {
setDebug(true);
openTestURL();

$(ButtonElement.class).caption("Add and Resize").first().click();
assertFalse("Error notification present.", $(NotificationElement.class)
.exists());
assertEquals("Unexpected column width. ", 200, $(TableElement.class)
.first().getCell(0, 1).getSize().getWidth());
}
}

Loading…
Cancel
Save