Sfoglia il codice sorgente

On progr. editor open, focus target cell if Grid had focus prior

Change-Id: I8ad9100356a309309e1f8964d6bc293981b2a827
tags/7.6.0.alpha1^0
Teppo Kurki 9 anni fa
parent
commit
eed4059ca0

+ 16
- 2
client/src/com/vaadin/client/widgets/Grid.java Vedi File

@@ -1280,12 +1280,26 @@ public class Grid<T> extends ResizeComposite implements
}

/**
* Equivalent to {@code editRow(rowIndex, -1)}.
* If a cell of this Grid had focus once this editRow call was
* triggered, the editor component at the previously focused column
* index will be focused.
*
* If a Grid cell was not focused prior to calling this method, it will
* be equivalent to {@code editRow(rowIndex, -1)}.
*
* @see #editRow(int, int)
*/
public void editRow(int rowIndex) {
editRow(rowIndex, -1);
// Focus the last focused column in the editor iff grid or its child
// was focused before the edit request
Cell focusedCell = grid.cellFocusHandler.getFocusedCell();
if (focusedCell != null
&& grid.getElement().isOrHasChild(
WidgetUtil.getFocusedElement())) {
editRow(rowIndex, focusedCell.getColumn());
} else {
editRow(rowIndex, -1);
}
}

/**

+ 21
- 0
uitest/src/com/vaadin/tests/components/grid/basicfeatures/GridBasicFeatures.java Vedi File

@@ -127,6 +127,14 @@ public class GridBasicFeatures extends AbstractComponentTest<Grid> {
}
};

private ItemClickListener editorOpeningItemClickListener = new ItemClickListener() {

@Override
public void itemClick(ItemClickEvent event) {
grid.editItem(event.getItemId());
}
};

private ColumnReorderListener columnReorderListener = new ColumnReorderListener() {

@Override
@@ -642,6 +650,19 @@ public class GridBasicFeatures extends AbstractComponentTest<Grid> {
}
}

});
createBooleanAction("EditorOpeningItemClickListener", "State", false,
new Command<Grid, Boolean>() {

@Override
public void execute(Grid c, Boolean value, Object data) {
if (!value) {
c.removeItemClickListener(editorOpeningItemClickListener);
} else {
c.addItemClickListener(editorOpeningItemClickListener);
}
}

});
createBooleanAction("ColumnReorderListener", "State", false,
new Command<Grid, Boolean>() {

+ 14
- 0
uitest/src/com/vaadin/tests/components/grid/basicfeatures/server/GridEditorTest.java Vedi File

@@ -161,6 +161,20 @@ public abstract class GridEditorTest extends GridBasicFeaturesTest {
assertEquals("", cell.getText(), focused.getAttribute("value"));
}

@Test
public void testFocusOnProgrammaticOpenOnItemClick() {
selectMenuPath("Component", "State", "EditorOpeningItemClickListener");

GridCellElement cell = getGridElement().getCell(4, 2);

cell.click();

WebElement focused = getFocusedElement();

assertEquals("", "input", focused.getTagName());
assertEquals("", cell.getText(), focused.getAttribute("value"));
}

@Test
public void testNoFocusOnProgrammaticOpen() {


Loading…
Annulla
Salva