private TableCell MakeKeyCell(LocalizationTable table, string key, int row) { return(new TableCell(key, true).Do(cell => { cell.OnValueChanged += newKey => { table.UpdateKey(row, newKey); Utils.ApplyChanges(table); }; cell.OnNextCellSelected += () => GetCell(row, 1)?.BeginEdit(); cell.OnPreviousCellSelected += () => { if (row == 0) { return; } GetCell(row - 1, localeColumns.Count)?.BeginEdit(); }; cell.OnNextRowSelected += () => GetCell(row + 1, 0)?.BeginEdit(); cell.OnPreviousRowSelected += () => { if (row == 0) { return; } GetCell(row - 1, 0)?.BeginEdit(); }; cell.AddManipulator(new ContextualMenuManipulator(ctx => KeyContextMenu(ctx, table, row))); })); }