示例#1
0
        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);
        }
示例#2
0
        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;
            }
        }
示例#3
0
        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;
                }
            }
        }
示例#4
0
        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);
                    }
                }
            }
        }
示例#5
0
 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;
         }
     }
 }