/// <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); }
/// <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(); }