* Fix data not being sent again when adding DataGenerators * Fix header component detaching, revert early header cleanuptags/8.1.0.alpha3
@@ -73,7 +73,12 @@ public class ColumnConnector extends AbstractExtensionConnector { | |||
return null; | |||
} | |||
}; | |||
// Initially set a renderer | |||
updateRenderer(); | |||
getParent().addColumn(column, getState().internalId); | |||
} | |||
@SuppressWarnings("unchecked") | |||
@@ -149,6 +154,7 @@ public class ColumnConnector extends AbstractExtensionConnector { | |||
// time to remove columns (and have problems with frozen columns) | |||
// before throwing everything away | |||
parent.removeColumn(column); | |||
parent = null; | |||
} | |||
column = null; | |||
} |
@@ -366,6 +366,9 @@ public class DataCommunicator<T> extends AbstractExtension { | |||
public void addDataGenerator(DataGenerator<T> generator) { | |||
Objects.requireNonNull(generator, "generator cannot be null"); | |||
generators.add(generator); | |||
// Make sure data gets generated when adding data generators. | |||
reset(); | |||
} | |||
/** |
@@ -158,6 +158,7 @@ public abstract class StaticSection<ROW extends StaticSection.StaticRow<?>> | |||
iterator.remove(); | |||
} | |||
} | |||
cell.detach(); | |||
} | |||
} | |||
@@ -1,18 +1,34 @@ | |||
package com.vaadin.tests.components.grid; | |||
import com.vaadin.annotations.Widgetset; | |||
import com.vaadin.data.ValueProvider; | |||
import com.vaadin.server.VaadinRequest; | |||
import com.vaadin.tests.components.AbstractTestUI; | |||
import com.vaadin.ui.Button; | |||
import com.vaadin.ui.Grid; | |||
import com.vaadin.ui.Grid.Column; | |||
import com.vaadin.ui.Label; | |||
import com.vaadin.ui.Notification; | |||
import com.vaadin.ui.renderers.NumberRenderer; | |||
@Widgetset("com.vaadin.DefaultWidgetSet") | |||
public class GridAddColumn extends AbstractTestUI { | |||
@Override | |||
protected void setup(VaadinRequest request) { | |||
Grid<String> grid = new Grid<>(); | |||
createColumns(grid); | |||
grid.setItems("a", "aa", "aaa"); | |||
addComponent(grid); | |||
addComponent(new Button("Replace columns", e -> { | |||
grid.removeAllColumns(); | |||
createColumns(grid); | |||
Notification.show("Columns replaced."); | |||
})); | |||
} | |||
private void createColumns(Grid<String> grid) { | |||
Column<String, String> col0 = grid.addColumn(ValueProvider.identity()) | |||
.setCaption("First column"); | |||
grid.getDefaultHeaderRow().getCell(col0) | |||
@@ -21,7 +37,5 @@ public class GridAddColumn extends AbstractTestUI { | |||
grid.addColumn(String::length); | |||
grid.addColumn(string -> -string.length()); | |||
grid.addColumn(string -> new Object()); | |||
grid.setItems("a", "aa", "aaa"); | |||
addComponent(grid); | |||
} | |||
} |
@@ -5,8 +5,10 @@ import org.junit.Before; | |||
import org.junit.Test; | |||
import com.vaadin.testbench.By; | |||
import com.vaadin.testbench.elements.ButtonElement; | |||
import com.vaadin.testbench.elements.GridElement; | |||
import com.vaadin.testbench.elements.GridElement.GridCellElement; | |||
import com.vaadin.testbench.elements.NotificationElement; | |||
import com.vaadin.tests.tb3.SingleBrowserTest; | |||
public class GridAddColumnTest extends SingleBrowserTest { | |||
@@ -64,6 +66,19 @@ public class GridAddColumnTest extends SingleBrowserTest { | |||
firstHeader.getText()); | |||
} | |||
@Test | |||
public void replace_all_columns() { | |||
$(ButtonElement.class).first().click(); | |||
// Verify button got clicked | |||
Assert.assertTrue(isElementPresent(NotificationElement.class)); | |||
Assert.assertEquals("Columns replaced.", | |||
$(NotificationElement.class).first().getText()); | |||
// Run default rendering test | |||
columns_rendered_correctly(); | |||
} | |||
private void assertCellEquals(int rowIndex, int colIndex, String content) { | |||
Assert.assertEquals("Cell text should equal", content, | |||
grid.getCell(rowIndex, colIndex).getText()); |