diff --git a/src/AddIns/Analysis/CodeAnalysis/Src/AnalysisProjectOptionsPanelXaml.xaml b/src/AddIns/Analysis/CodeAnalysis/Src/AnalysisProjectOptionsPanelXaml.xaml
index 19c4a0681d..bbad3d701b 100644
--- a/src/AddIns/Analysis/CodeAnalysis/Src/AnalysisProjectOptionsPanelXaml.xaml
+++ b/src/AddIns/Analysis/CodeAnalysis/Src/AnalysisProjectOptionsPanelXaml.xaml
@@ -6,7 +6,11 @@
xmlns:project="clr-namespace:ICSharpCode.SharpDevelop.Project;assembly=ICSharpCode.SharpDevelop"
xmlns:widgets="http://icsharpcode.net/sharpdevelop/widgets"
xmlns:tv="http://icsharpcode.net/sharpdevelop/treeview"
+ xmlns:local="clr-namespace:ICSharpCode.CodeAnalysis"
xmlns:core="http://icsharpcode.net/sharpdevelop/core">
+
+
+
@@ -31,10 +35,11 @@
Style="{x:Static core:GlobalStyles.ButtonStyle}"
Content="{core:Localize ICSharpCode.CodeAnalysis.ProjectOptions.AddRemoveRuleAssembly}">
-
+
+
-
+
@@ -43,16 +48,28 @@
-
+
+
+
+
+
+
+
+
+
+
+
+ ItemsSource="{Binding Path=RuleState}"
+ SelectedIndex="{Binding Index}"
+ DisplayMemberPath="DisplayValue">
+
+
diff --git a/src/AddIns/Analysis/CodeAnalysis/Src/AnalysisProjectOptionsPanelXaml.xaml.cs b/src/AddIns/Analysis/CodeAnalysis/Src/AnalysisProjectOptionsPanelXaml.xaml.cs
index 22a4ddec2f..2a271ac7ed 100644
--- a/src/AddIns/Analysis/CodeAnalysis/Src/AnalysisProjectOptionsPanelXaml.xaml.cs
+++ b/src/AddIns/Analysis/CodeAnalysis/Src/AnalysisProjectOptionsPanelXaml.xaml.cs
@@ -8,6 +8,10 @@
using System;
using System.Collections.Generic;
using System.Collections.ObjectModel;
+using System.Drawing;
+using System.Drawing.Imaging;
+using System.Globalization;
+using System.IO;
using System.Text;
using System.Text.RegularExpressions;
using System.Windows;
@@ -16,6 +20,7 @@ using System.Windows.Data;
using System.Windows.Documents;
using System.Windows.Input;
using System.Windows.Media;
+
using Gui.Dialogs.OptionPanels.ProjectOptions;
using ICSharpCode.Core;
using ICSharpCode.SharpDevelop;
@@ -31,23 +36,27 @@ namespace ICSharpCode.CodeAnalysis
///
/// Interaction logic for AnalysisProjectOptionsPanelXaml.xaml
///
+
+
public partial class AnalysisProjectOptionsPanelXaml : ProjectOptionPanel
{
private bool initSuccess;
private bool userCheck;
private Dictionary rules = new Dictionary();
+
private List bla = new List();
public AnalysisProjectOptionsPanelXaml()
{
InitializeComponent();
DataContext = this;
+
bla.Add(new KeyItemPair("Warning","Warning"));
bla.Add(new KeyItemPair("Error","Error"));
bla.Add(new KeyItemPair("None","None"));
}
-
+
public ProjectProperty RunCodeAnalysis {
get { return GetProperty("RunCodeAnalysis", false); }
}
@@ -77,7 +86,7 @@ namespace ICSharpCode.CodeAnalysis
ruleAssemblies = value;
if (initSuccess) {
-//// OnOptionChanged(EventArgs.Empty);
+ //// OnOptionChanged(EventArgs.Empty);
ReloadRuleList();
}
}
@@ -185,7 +194,6 @@ namespace ICSharpCode.CodeAnalysis
#endregion
-
#region RuleList
void ReloadRuleList()
@@ -242,19 +250,54 @@ namespace ICSharpCode.CodeAnalysis
return list.ToArray();
}
-
+
#endregion
+
- #region TreeView
+ #region TreeNodes
class BaseTree:SharpTreeNode
{
- public BaseTree(IEnumerable bla)
+ private Icon ruleIcon;
+ private int index;
+
+ public BaseTree(IEnumerable ruleState)
{
- this.BLA = bla;
+ this.RuleState = ruleState;
+ RuleIcon = SystemIcons.Warning;
+ }
+
+ public IEnumerable RuleState {get;set;}
+
+
+ public Icon RuleIcon {
+ get { return ruleIcon; }
+ set { ruleIcon = value;
+ base.RaisePropertyChanged("RuleIcon");
+ }
}
- public IEnumerable BLA {get;set;}
+
+ public int Index {
+ get { return index; }
+ set { index = value;
+ switch (index) {
+ case 0:
+ RuleIcon = SystemIcons.Warning;
+ break;
+ case 1:
+ RuleIcon = SystemIcons.Error;
+ break;
+ case 2:
+ RuleIcon = null;
+ break;
+ default:
+
+ break;
+ }
+ base.RaisePropertyChanged("Index");
+ }
+ }
}
@@ -268,6 +311,7 @@ namespace ICSharpCode.CodeAnalysis
foreach (FxCopRule rule in category.Rules) {
this.Children.Add(new RuleTreeNode(rule,bla));
}
+
}
@@ -294,7 +338,7 @@ namespace ICSharpCode.CodeAnalysis
return 1;
else if (allWarn)
return 0;
- else
+ else
return -1;
}
}
@@ -306,7 +350,7 @@ namespace ICSharpCode.CodeAnalysis
internal FxCopRule rule;
internal bool isError;
- public RuleTreeNode(FxCopRule rule,IEnumerable bla):base(bla)
+ public RuleTreeNode(FxCopRule rule,IEnumerable ruleState):base(ruleState)
{
this.rule = rule;
}
@@ -341,4 +385,33 @@ namespace ICSharpCode.CodeAnalysis
}
#endregion
}
+
+ [ValueConversion(typeof(System.Drawing.Icon), typeof(System.Windows.Media.ImageSource))]
+ public class ImageConverter : IValueConverter
+ {
+ public object Convert(object value, Type targetType,
+ object parameter, CultureInfo culture)
+ {
+ // empty images are empty...
+ if (value == null) { return null; }
+ var image = (System.Drawing.Icon)value;
+ // Winforms Image we want to get the WPF Image from...
+ var bitmap = new System.Windows.Media.Imaging.BitmapImage();
+ bitmap.BeginInit();
+ MemoryStream memoryStream = new MemoryStream();
+ // Save to a memory stream...
+ image.Save(memoryStream);
+ // Rewind the stream...
+ memoryStream.Seek(0, System.IO.SeekOrigin.Begin);
+ bitmap.StreamSource = memoryStream;
+ bitmap.EndInit();
+ return bitmap;
+ }
+ public object ConvertBack(object value, Type targetType,
+ object parameter, CultureInfo culture)
+ {
+ return null;
+ }
+ }
+
}
\ No newline at end of file