return;
}
+ Collection<Object> activeItemIds = activeItemHandler.getActiveItemIds();
List<Column> columns = getGrid().getColumns();
JsonArray rowData = Json.createArray();
int i = 0;
for (Object itemId : itemIds) {
- if (activeItemHandler.getActiveItemIds().contains(itemId)) {
+ if (activeItemIds.contains(itemId)) {
Item item = container.getItem(itemId);
if (item != null) {
JsonObject row = getRowData(columns, itemId, item);
if (!added.isEmpty()) {
changed = true;
selection.addAll(added);
+ for (Object id : added) {
+ refreshRow(id);
+ }
}
Set<Object> removed = getDifference(selection, selectedRows);
if (!removed.isEmpty()) {
changed = true;
selection.removeAll(removed);
+ for (Object id : removed) {
+ refreshRow(id);
+ }
}
if (changed) {
}
/**
- * Gets the
- * {@link KeyMapper } being used by the data source.
+ * Gets the {@link KeyMapper } being used by the data source.
*
* @return the key mapper being used by the data source
*/
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.Grid;
+import com.vaadin.ui.Grid.MultiSelectionModel;
import com.vaadin.ui.Grid.SelectionMode;
public class GridMultiSelectionOnInit extends AbstractTestUI {
@Override
protected void setup(VaadinRequest request) {
- Grid grid = new Grid();
+ final Grid grid = new Grid();
grid.addColumn("foo", String.class);
grid.addRow("Foo 1");
grid.addRow("Foo 2");
grid.setSelectionMode(SelectionMode.MULTI);
addComponent(grid);
+
+ addComponent(new Button("Select rows", new Button.ClickListener() {
+
+ @Override
+ public void buttonClick(ClickEvent event) {
+ ((MultiSelectionModel) grid.getSelectionModel())
+ .setSelected(grid.getContainerDataSource().getItemIds());
+ }
+ }));
}
}
*/
package com.vaadin.tests.components.grid;
+import static org.junit.Assert.assertFalse;
import static org.junit.Assert.assertTrue;
import org.junit.Test;
import org.openqa.selenium.By;
+import com.vaadin.testbench.elements.ButtonElement;
import com.vaadin.testbench.elements.GridElement;
import com.vaadin.testbench.parallel.TestCategory;
import com.vaadin.tests.tb3.MultiBrowserTest;
$(GridElement.class).first().getHeaderCell(0, 0)
.isElementPresent(By.tagName("input")));
}
+
+ @Test
+ public void testSetSelectedUpdatesClient() {
+ openTestURL();
+ assertFalse("Rows should not be selected initially.",
+ $(GridElement.class).first().getRow(0).isSelected());
+ $(ButtonElement.class).first().click();
+ assertTrue("Rows should be selected after button click.",
+ $(GridElement.class).first().getRow(0).isSelected());
+ }
}