Change-Id: I8ad9100356a309309e1f8964d6bc293981b2a827tags/7.6.0.alpha1^0
@@ -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); | |||
} | |||
} | |||
/** |
@@ -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>() { |
@@ -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() { | |||