/// <summary>
        /// Gets options data for specified rule.
        /// </summary>
        private static T GetOptionsData <T>(SourceAnalyzer analyzer, CodeDocument document, Rules rule) where T : ICustomRuleOptionsData
        {
            CustomRule customRule = CustomRules.Get(rule);
            T          data       = (T)customRule.CreateOptionsData();

            string settingValue = SettingsManager.GetValue <string>(
                analyzer,
                document.Settings,
                customRule.SettingName);

            data.ConvertFromValue(settingValue);
            return(data);
        }
Esempio n. 2
0
        /// <summary>
        /// Rebuilds rule list.
        /// </summary>
        private void RebuildRuleList()
        {
            listRules.BeginUpdate();
            listRules.Groups.Clear();
            listRules.Items.Clear();

            foreach (string group in CustomRules.GetGroups())
            {
                ListViewGroup lvg = new ListViewGroup(group);
                listRules.Groups.Add(lvg);

                foreach (CustomRule rule in CustomRules.GetByGroup(group))
                {
                    CustomRuleTag tag = new CustomRuleTag();
                    tag.Rule = rule;
                    if (rule.SettingName != null)
                    {
                        tag.OptionsControl      = tag.Rule.CreateOptionsControl();
                        tag.OptionsControl.Rule = tag.Rule;
                        tag.OptionsControl.OptionsDataChanged += OnOptionsDataChanged;
                        tag.OptionsControl.Dock = DockStyle.Fill;

                        tag.SettingName    = rule.SettingName;
                        tag.MergedValue    = SettingsManager.GetMergedValue(Page, rule.SettingName);
                        tag.InheritedValue = SettingsManager.GetInheritedValue(Page, rule.SettingName);
                    }

                    ListViewItem lvi = new ListViewItem();
                    lvi.Group = lvg;
                    lvi.UseItemStyleForSubItems = false;
                    lvi.Text = String.Format("{0}: {1}", rule.Code, rule.RuleName);
                    lvi.Tag  = tag;

                    ListViewItem.ListViewSubItem sub = new ListViewItem.ListViewSubItem();
                    lvi.SubItems.Add(sub);

                    UpdateListItem(lvi);

                    listRules.Items.Add(lvi);
                }
            }

            listRules.EndUpdate();
        }