private async Task <KeyValuePair <IDevOpsField, IdentityField> > ManageField(IDevOpsField field, IdentityField identityField) { KeyValuePair <IDevOpsField, IdentityField> result = new KeyValuePair <IDevOpsField, IdentityField>(null, null); var connector = DevOpsManager.GetConnector(_model); if (connector != null) { var fieldsAsync = await connector.GetWorkItemDevOpsFieldsAsync(); var fields = fieldsAsync?.ToArray(); if (fields?.Any() ?? false) { var dialog = new FieldAssociationDialog(); dialog.Initialize(_model, fields); if (field != null && identityField != null) { dialog.SetField(field, identityField); } if (dialog.ShowDialog(this) == DialogResult.OK) { field = dialog.Field; identityField = dialog.IdentityField; if (field != null && identityField != null) { connector.SetWorkItemFieldMapping(field, identityField); DevOpsManager.UpdateConfig(_model); result = new KeyValuePair <IDevOpsField, IdentityField>(field, identityField); } } } } return(result); }
private void _parents_SelectedIndexChanged(object sender, EventArgs e) { var connector = DevOpsManager.GetConnector(_model); if (connector != null && _parents.SelectedItem is IDevOpsItemInfo item) { connector.MasterParent = item; DevOpsManager.UpdateConfig(_model); _parentItemType.Text = item.WorkItemType; } }
private async void _itemTypes_SelectedIndexChanged(object sender, EventArgs e) { var connector = DevOpsManager.GetConnector(_model); if (connector != null && _itemTypes.SelectedItem is string itemType) { try { _loading = true; _gridStates.PrimaryGrid.Rows.Clear(); connector.WorkItemType = itemType; DevOpsManager.UpdateConfig(_model); var itemStatesAsync = await connector.GetWorkItemStatesAsync(); var itemStates = itemStatesAsync?.ToArray(); if (itemStates?.Any() ?? false) { var mappings = connector.WorkItemStateMappings?.ToArray(); foreach (var state in itemStates) { var value = mappings? .Where(x => string.CompareOrdinal(x.Key, state) == 0)? .Select(x => x.Value) .FirstOrDefault() ?? WorkItemStatus.Unknown; var row = new GridRow(state, value.GetEnumLabel()) { Tag = state }; _gridStates.PrimaryGrid.Rows.Add(row); row.Cells["KnownState"].PropertyChanged += KnownStateChanged; } } } finally { _loading = false; } } }
private void _remove_Click(object sender, EventArgs e) { var selectedRow = _gridFields.GetSelectedCells()? .OfType <GridCell>() .Select(x => x.GridRow) .FirstOrDefault(); if (selectedRow.Tag is IDevOpsField field) { if (MessageBox.Show($"Are you sure you want to remove field '{field.Label}'?", "Remove field", MessageBoxButtons.YesNo, MessageBoxIcon.Warning, MessageBoxDefaultButton.Button2) == DialogResult.Yes) { var connector = DevOpsManager.GetConnector(_model); if (connector != null) { connector.SetWorkItemFieldMapping(field, null); DevOpsManager.UpdateConfig(_model); _gridFields.PrimaryGrid.Rows.Remove(selectedRow); } } } }
private void KnownStateChanged(object sender, PropertyChangedEventArgs e) { if (!_loading && sender is GridCell cell) { try { _loading = true; if (cell.GridRow.Tag is string devOpsState) { switch (cell.GridColumn.Name) { case "KnownState": var connector = DevOpsManager.GetConnector(_model); if (connector != null && cell.Value is string knownStateString) { var knownState = knownStateString.GetEnumValue <WorkItemStatus>(); connector.SetWorkItemStateMapping(devOpsState, knownState); DevOpsManager.UpdateConfig(_model); if (knownState == WorkItemStatus.Unknown) { cell.Value = connector.WorkItemStateMappings? .Where(x => string.CompareOrdinal(x.Key, devOpsState) == 0)? .Select(x => x.Value) .FirstOrDefault() ?? WorkItemStatus.Unknown; } } break; } } } finally { _loading = false; } } }