Quellcode durchsuchen

Never check the selectAll checkbox in an empty grid (#20301)

Change-Id: Ia15edb5a10de9bff047044161ffe83dd09f51098
tags/7.7.4
Artur Signell vor 7 Jahren
Ursprung
Commit
9c90ed78a1

+ 3
- 1
server/src/main/java/com/vaadin/ui/Grid.java Datei anzeigen

@@ -1878,7 +1878,9 @@ public class Grid extends AbstractFocusable implements SelectionNotifier,
private void updateAllSelectedState() {
int totalRowCount = getParentGrid().datasource.size();
int rows = Math.min(totalRowCount, selectionLimit);
if (getState().allSelected != selection.size() >= rows) {
if (totalRowCount == 0) {
getState().allSelected = false;
} else {
getState().allSelected = selection.size() >= rows;
}
}

+ 23
- 4
server/src/test/java/com/vaadin/tests/server/component/grid/MultiSelectionModelTest.java Datei anzeigen

@@ -28,12 +28,20 @@ import com.vaadin.data.Container;
import com.vaadin.data.util.IndexedContainer;
import com.vaadin.event.SelectionEvent;
import com.vaadin.event.SelectionEvent.SelectionListener;
import com.vaadin.shared.ui.grid.selection.MultiSelectionModelState;
import com.vaadin.ui.Grid;
import com.vaadin.ui.Grid.MultiSelectionModel;
import com.vaadin.ui.Grid.SelectionMode;

public class MultiSelectionModelTest {

private static class MultiSelectionModel
extends com.vaadin.ui.Grid.MultiSelectionModel {
@Override
protected MultiSelectionModelState getState() {
// Overridden to be accessible from test
return super.getState();
}
}

private Object itemId1Present = "itemId1Present";
private Object itemId2Present = "itemId2Present";
private Object itemId3Present = "itemId3Present";
@@ -52,8 +60,8 @@ public class MultiSelectionModelTest {
public void setUp() {
dataSource = createDataSource();
grid = new Grid(dataSource);
grid.setSelectionMode(SelectionMode.MULTI);
model = (MultiSelectionModel) grid.getSelectionModel();
model = new MultiSelectionModel();
grid.setSelectionModel(model);
}

@After
@@ -104,6 +112,17 @@ public class MultiSelectionModelTest {
verifyCurrentSelection(itemId1Present, itemId2Present);
}

@Test
public void testSelectAllWithoutItems() throws Throwable {
Assert.assertFalse(model.getState().allSelected);
dataSource.removeAllItems();
Assert.assertFalse(model.getState().allSelected);
model.select();
Assert.assertFalse(model.getState().allSelected);
model.deselect();
Assert.assertFalse(model.getState().allSelected);
}

@Test
public void testSettingSelection() throws Throwable {
try {

Laden…
Abbrechen
Speichern