private TableCell MakeCell(string value, int row, int col, LocalizationTable table) { return(new TableCell(value, true).Do(cell => { cell.OnValueChanged += newValue => { table.UpdateLocalization(row, col, newValue); Utils.ApplyChanges(table); }; cell.OnNextCellSelected += () => { var nextCell = GetCell(row, col + 2) ?? GetCell(row + 1, 0); nextCell?.BeginEdit(); }; cell.OnPreviousCellSelected += () => GetCell(row, col)?.BeginEdit(); cell.OnNextRowSelected += () => { var nextRow = row + 1 < keyColumn.childCount - 2 ? GetCell(row + 1, col + 1) : GetCell(row + 1, 0); nextRow?.BeginEdit(); }; cell.OnPreviousRowSelected += () => { if (row == 0) { return; } GetCell(row - 1, col + 1)?.BeginEdit(); }; })); }