}
// keep active cell since we manually fire blur (finishEditing) which will
// call cancel edit
// clearing active cell
final GridCell active = activeCell;
if (GXTLogConfiguration.loggingIsEnabled()) {
logger.finest("onTab activeCell is " + (activeCell == null ? "null" : "not null"));
}
if (activeCell != null) {
ColumnConfig<M, ?> c = columnModel.getColumn(activeCell.getCol());
Field<?> field = getEditor(c);
// we handle navigation programatically
evt.preventDefault();
// since we are preventingDefault on tab key, the field will not blur on
// its
// own, which means the value change event will not fire so we manually
// blur
// the field, so we call finishEditing
if (GXTLogConfiguration.loggingIsEnabled()) {
logger.finest("onTab calling field.finishEditing()");
}
field.finishEditing();
}
if (active != null) {
GridCell newCell = null;
if (evt.getShiftKey()) {
newCell = getEditableGrid().walkCells(active.getRow(), active.getCol() - 1, -1, callback);
} else {
newCell = getEditableGrid().walkCells(active.getRow(), active.getCol() + 1, 1, callback);
}
if (newCell != null) {
final GridCell c = newCell;
Scheduler.get().scheduleFinally(new ScheduledCommand() {
@Override
public void execute() {