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