private void btnMoveTo_Click(object sender, EventArgs e) { if (MoveToCollectionDialog.Show(CurrentCollection, CurrentRules.Count() > 1, Analyzer, out BestPracticeCollection destination, out bool clone)) { foreach (var rule in CurrentRules.ToList()) { var currentCollection = CurrentCollection ?? Analyzer.EffectiveCollectionForRule(rule.ID); if (clone) { var newRule = rule.Clone(); destination.Rules.Add(newRule); rulesModel.AddedRules[newRule] = destination; } else { rulesModel.DeletedRules[rule] = currentCollection; currentCollection.Rules.Remove(rule); rulesModel.AddedRules[rule] = destination; destination.Rules.Add(rule); } } EffectiveRules = new HashSet <BestPracticeRule>(Analyzer.EffectiveRules); rulesModel.RefreshCategories(); } }
public static bool Show(BestPracticeCollection source, bool plural, Analyzer analyzer, out BestPracticeCollection destinationCollection, out bool clone) { var form = new MoveToCollectionDialog(); form.lblHeader.Text = "Which collection do you want to move the selected rule" + (plural ? "s" : "") + " to?"; form.chkCopy.Text = "Clone rule" + (plural ? "s" : "") + " to collection"; form.chkCopy.Enabled = source.AllowEdit; if (!source.AllowEdit) { form.chkCopy.Checked = true; // Only allow copying when sourcing rules from a read-only collection } form.comboBox1.DisplayMember = "Name"; form.comboBox1.Items.AddRange(analyzer.Collections.Where(rc => rc.AllowEdit && rc != source).ToArray()); if (form.comboBox1.Items.Count == 0) { form.btnOK.Enabled = true; } else { form.comboBox1.SelectedIndex = 0; } destinationCollection = null; clone = false; if (form.ShowDialog() == DialogResult.OK) { clone = form.chkCopy.Checked; destinationCollection = form.comboBox1.SelectedItem as BestPracticeCollection; return(true); } return(false); }