浏览代码

Unify select all behavior with single row selection. (#17742)

Change-Id: I6481bf6f429046166dd0502a62b22aea51f5a0bd
tags/7.6.0.beta2
Sauli Tähkäpää 8 年前
父节点
当前提交
b021d6199a

+ 12
- 0
client/src/com/vaadin/client/widgets/Grid.java 查看文件

@@ -2846,6 +2846,18 @@ public class Grid<T> extends ResizeComposite implements
});
selectAllCheckBox.setValue(selected);

addHeaderClickHandler(new HeaderClickHandler() {
@Override
public void onClick(GridClickEvent event) {
CellReference<?> targetCell = event.getTargetCell();
int defaultRowIndex = getHeader().getRows().indexOf(getDefaultHeaderRow());

if(targetCell.getColumnIndex() == 0 && targetCell.getRowIndex() == defaultRowIndex) {
selectAllCheckBox.setValue(!selectAllCheckBox.getValue(), true);
}
}
});

// Select all with space when "select all" cell is active
addHeaderKeyUpHandler(new HeaderKeyUpHandler() {
@Override

+ 21
- 0
uitest/src/com/vaadin/tests/components/grid/GridSelectAllCell.java 查看文件

@@ -0,0 +1,21 @@
package com.vaadin.tests.components.grid;

import com.vaadin.annotations.Theme;
import com.vaadin.server.VaadinRequest;
import com.vaadin.tests.components.AbstractTestUI;
import com.vaadin.ui.Grid;

@Theme("valo")
public class GridSelectAllCell extends AbstractTestUI {
@Override
protected void setup(VaadinRequest request) {
Grid grid = new Grid();

grid.addColumn("foo", String.class);
grid.addRow("bar");

grid.setSelectionMode(Grid.SelectionMode.MULTI);

addComponent(grid);
}
}

+ 34
- 0
uitest/src/com/vaadin/tests/components/grid/GridSelectAllCellTest.java 查看文件

@@ -0,0 +1,34 @@
package com.vaadin.tests.components.grid;

import static org.hamcrest.MatcherAssert.assertThat;
import static org.hamcrest.core.Is.is;

import java.io.IOException;

import org.junit.Test;
import org.openqa.selenium.By;
import org.openqa.selenium.WebElement;
import org.openqa.selenium.interactions.Actions;

import com.vaadin.testbench.elements.GridElement;
import com.vaadin.tests.tb3.MultiBrowserTest;

public class GridSelectAllCellTest extends MultiBrowserTest {

@Override
public void setup() throws Exception {
super.setup();

openTestURL();
}

@Test
public void selectAllCellCanBeClicked() throws IOException {
GridElement.GridCellElement selectAllCell = $(GridElement.class).first().getHeaderCell(0, 0);

new Actions(getDriver()).moveToElement(selectAllCell, 2, 2).click().perform();

WebElement selectAllCheckbox = selectAllCell.findElement(By.cssSelector("input"));
assertThat(selectAllCheckbox.isSelected(), is(true));
}
}

正在加载...
取消
保存