diff --git a/src/AddIns/Analysis/CodeAnalysis/Src/AnalysisProjectOptionsPanelXaml.xaml b/src/AddIns/Analysis/CodeAnalysis/Src/AnalysisProjectOptionsPanelXaml.xaml index 4875b687bb..f829ff6198 100644 --- a/src/AddIns/Analysis/CodeAnalysis/Src/AnalysisProjectOptionsPanelXaml.xaml +++ b/src/AddIns/Analysis/CodeAnalysis/Src/AnalysisProjectOptionsPanelXaml.xaml @@ -9,13 +9,18 @@ xmlns:local="clr-namespace:ICSharpCode.CodeAnalysis" xmlns:core="http://icsharpcode.net/sharpdevelop/core"> + + + @@ -32,8 +37,14 @@ + - + - - + @@ -92,17 +108,18 @@ - - - - + --> + - + + + + + + + + diff --git a/src/AddIns/Analysis/CodeAnalysis/Src/AnalysisProjectOptionsPanelXaml.xaml.cs b/src/AddIns/Analysis/CodeAnalysis/Src/AnalysisProjectOptionsPanelXaml.xaml.cs index e4d31b1f7a..9dac8b9661 100644 --- a/src/AddIns/Analysis/CodeAnalysis/Src/AnalysisProjectOptionsPanelXaml.xaml.cs +++ b/src/AddIns/Analysis/CodeAnalysis/Src/AnalysisProjectOptionsPanelXaml.xaml.cs @@ -44,15 +44,10 @@ namespace ICSharpCode.CodeAnalysis private bool userCheck; private Dictionary rules = new Dictionary(); - private List> bla = new List>(); - public AnalysisProjectOptionsPanelXaml() { InitializeComponent(); DataContext = this; - bla.Add(Tuple.Create(SystemIcons.Warning,ResourceService.GetString("Global.WarningText"),0)); - bla.Add(Tuple.Create(SystemIcons.Error,ResourceService.GetString("Global.ErrorText"),1)); -// bla.Add(Tuple.Create(null,"None")); } @@ -169,19 +164,23 @@ namespace ICSharpCode.CodeAnalysis void SetCategoryIcon() { - foreach (CategoryTreeNode element in ruleTreeView.Root.Children) { + + foreach (CategoryTreeNode categoryNode in ruleTreeView.Root.Children) { // Console.WriteLine(" {0} ",element.Text); - if (!element.NewErrorState.HasValue) { - Console.WriteLine (" {0} is Mixed Mode",element.Text); + if (!categoryNode.NewErrorState.HasValue) { + Console.WriteLine (" {0} is Mixed Mode",categoryNode.Text); + categoryNode.AddMixedMode(); } else{ - if (element.NewErrorState == true) { - Console.WriteLine (" {0} is Error",element.Text); - element.Index = 1; + if (categoryNode.NewErrorState == true) { + Console.WriteLine (" {0} is Error",categoryNode.Text); + categoryNode.Index = 1; } else { - Console.WriteLine (" {0} is Warning",element.Text); + Console.WriteLine (" {0} is Warning",categoryNode.Text); } } } + Console.WriteLine("--------------"); + } string ruleString = ""; @@ -247,7 +246,7 @@ namespace ICSharpCode.CodeAnalysis ruleTreeView.Root.Children.Add(new MessageNode(StringParser.Parse("${res:ICSharpCode.CodeAnalysis.ProjectOptions.SpecifyFxCopPath}"))); } else { foreach (FxCopCategory cat in ruleList) { - CategoryTreeNode catNode = new CategoryTreeNode(cat,bla); + CategoryTreeNode catNode = new CategoryTreeNode(cat); catNode.PropertyChanged += OnPropertyChanged; ruleTreeView.Root.Children.Add(catNode); foreach (RuleTreeNode ruleNode in catNode.Children) { @@ -322,7 +321,14 @@ namespace ICSharpCode.CodeAnalysis } } + void ComboBox_SelectionChanged(object sender, SelectionChangedEventArgs e) + { +// throw new NotImplementedException(); + } + #endregion + + } @@ -334,6 +340,7 @@ namespace ICSharpCode.CodeAnalysis public override DataTemplate SelectTemplate(object item, DependencyObject container) { + Console.WriteLine ("------- TypeSelector ---------"); var rule = item as RuleTreeNode; if (rule != null) { @@ -359,7 +366,7 @@ namespace ICSharpCode.CodeAnalysis [ValueConversion(typeof(System.Drawing.Icon), typeof(System.Windows.Media.ImageSource))] public class ImageConverter : IValueConverter { - public object Convert(object value, Type targetType, + public object Convert(object value, Type targetType, object parameter, CultureInfo culture) { // empty images are empty... diff --git a/src/AddIns/Analysis/CodeAnalysis/Src/AnalysisProjectOptionsTreeNodes.cs b/src/AddIns/Analysis/CodeAnalysis/Src/AnalysisProjectOptionsTreeNodes.cs index c9d3207235..95338ceda2 100644 --- a/src/AddIns/Analysis/CodeAnalysis/Src/AnalysisProjectOptionsTreeNodes.cs +++ b/src/AddIns/Analysis/CodeAnalysis/Src/AnalysisProjectOptionsTreeNodes.cs @@ -7,8 +7,12 @@ */ using System; using System.Collections.Generic; +using System.Collections.ObjectModel; using System.Drawing; +using System.Windows; +using System.Windows.Interop; using System.Windows.Media; +using System.Windows.Media.Imaging; using ICSharpCode.Core; using ICSharpCode.Core.Presentation; @@ -22,13 +26,23 @@ namespace ICSharpCode.CodeAnalysis public class BaseTree:SharpTreeNode { private int index; - - public BaseTree(IEnumerable> ruleState) + + public BaseTree() { - this.RuleState = ruleState; + RuleState = new ObservableCollection>(); + this.RuleState.Add(Tuple.Create(SystemIcons.Warning,ResourceService.GetString("Global.WarningText"))); + this.RuleState.Add(Tuple.Create(SystemIcons.Error,ResourceService.GetString("Global.ErrorText"))); +// bla.Add(Tuple.Create(null,"None")); } - public IEnumerable> RuleState {get;set;} + public ObservableCollection> RuleState {get;set;} + + private Tuple selectedItem; + + public Tuple SelectedNode { + get { return selectedItem; } + set { selectedItem = value; } + } public virtual int Index { @@ -36,40 +50,30 @@ namespace ICSharpCode.CodeAnalysis set { if (index != value) { index = value; - switch (index) { - case 0: - break; - case 1: - break; - case 2: - break; - default: - break; - } - base.RaisePropertyChanged("Index"); } + base.RaisePropertyChanged("Index"); } } } + public class CategoryTreeNode : BaseTree { internal FxCopCategory category; - private string mixedModeText; - private ImageSource mixedModeIcon; + private Tuple mixedTuple; - public CategoryTreeNode(FxCopCategory category,IEnumerable> bla):base(bla) + public CategoryTreeNode(FxCopCategory category):base() { - mixedModeText = StringParser.Parse("${res:ICSharpCode.CodeAnalysis.ProjectOptions.WarningErrorMixed}"); - mixedModeIcon = PresentationResourceService.GetBitmapSource("Icons.16x16.ClosedFolderBitmap"); + this.category = category; foreach (FxCopRule rule in category.Rules) { - this.Children.Add(new RuleTreeNode(rule,bla)); + this.Children.Add(new RuleTreeNode(rule)); } + } - + public override bool IsCheckable { get { return true; } } @@ -83,23 +87,28 @@ namespace ICSharpCode.CodeAnalysis set { if (value != base.Index) { base.Index = value; - foreach (RuleTreeNode rule in this.Children) { - rule.Index = Index; + if (mixedTuple == null) { + foreach (RuleTreeNode rule in this.Children) { + rule.Index = Index; + } } + } } } - public ImageSource MixedModeIcon { - get { return mixedModeIcon; } - } - public string MixedModeText + public void AddMixedMode() { - get {return mixedModeText;} + Bitmap b = (Bitmap)ResourceService.GetImageResource("Icons.16x16.ClosedFolderBitmap"); + System.Drawing.Icon ico = (Icon)System.Drawing.Icon.FromHandle(b.GetHicon()); + + mixedTuple = Tuple.Create(ico, + StringParser.Parse("${res:ICSharpCode.CodeAnalysis.ProjectOptions.WarningErrorMixed}")); + RuleState.Add(mixedTuple); + Index = RuleState.Count -1; } - public Nullable NewErrorState { get { bool allWarn = true; @@ -153,15 +162,16 @@ namespace ICSharpCode.CodeAnalysis set { if (error != value) { error = value; + if (error) { base.Index = 1; } } - } } - public RuleTreeNode(FxCopRule rule,IEnumerable> ruleState):base(ruleState) + + public RuleTreeNode(FxCopRule rule):base() { this.rule = rule; } @@ -184,13 +194,16 @@ namespace ICSharpCode.CodeAnalysis public override int Index { get { return base.Index; } set { - if (value != Index) { - if (Index == 1) { - error = true; - } else { - error = false; - } + if (base.Index != value) { + isError = value == 1; base.Index = value; + +// if (base.Index == 1) { +// error = true; +// } else { +// error = false; +// } + Console.WriteLine ("RuleNode {0} - index {1} - error {2}",rule.DisplayName,Index, isError); } } } @@ -210,5 +223,4 @@ namespace ICSharpCode.CodeAnalysis get { return message; } } } - }