private static void SetupFolderSelectionColumns (DataGridView dataGridView, IOptionTasks optionTasks, params OlItemType[] allowedFolderType)
{
var folderColumn = new DataGridViewTextBoxColumn();
folderColumn.HeaderText = "Selected Outlook Folder";
folderColumn.AutoSizeMode = DataGridViewAutoSizeColumnMode.Fill;
dataGridView.Columns.Add (folderColumn);
var selectFolderColumn = new DataGridViewButtonColumn();
selectFolderColumn.UseColumnTextForButtonValue = true;
selectFolderColumn.Text = "...";
selectFolderColumn.AutoSizeMode = DataGridViewAutoSizeColumnMode.AllCells;
dataGridView.Columns.Add (selectFolderColumn);
var removeFolderColumn = new DataGridViewButtonColumn();
removeFolderColumn.UseColumnTextForButtonValue = true;
removeFolderColumn.Text = "x";
removeFolderColumn.AutoSizeMode = DataGridViewAutoSizeColumnMode.AllCells;
dataGridView.Columns.Add (removeFolderColumn);
dataGridView.CellContentClick += (sender, e) =>
{
var column = dataGridView.Columns[e.ColumnIndex];
var row = dataGridView.Rows[e.RowIndex];
var viewModel = (ResourceDataViewModelBase) row.DataBoundItem;
var folderCell = row.Cells[folderColumn.Index];
if (column == selectFolderColumn)
{
var folder = optionTasks.PickFolderOrNull();
if (folder != null)
{
if (Array.IndexOf (allowedFolderType, folder.DefaultItemType) == -1)
{
MessageBox.Show ($"Folder has to have item type '{String.Join (", ", allowedFolderType)}'.", "Select folder", MessageBoxButtons.OK, MessageBoxIcon.Error);
return;
}
folderCell.Value = folder.Name;
viewModel.SelectedFolder = new FolderDescriptor (folder.EntryId, folder.StoreId);
}
}
else if (column == removeFolderColumn)
{
viewModel.SelectedFolder = null;
folderCell.Value = null;
}
};
}