diff --git a/src/AddIns/Analysis/CodeAnalysis/Src/AnalysisProjectOptionsPanelXaml.xaml b/src/AddIns/Analysis/CodeAnalysis/Src/AnalysisProjectOptionsPanelXaml.xaml
index f829ff6198..f42dad8f88 100644
--- a/src/AddIns/Analysis/CodeAnalysis/Src/AnalysisProjectOptionsPanelXaml.xaml
+++ b/src/AddIns/Analysis/CodeAnalysis/Src/AnalysisProjectOptionsPanelXaml.xaml
@@ -8,63 +8,6 @@
xmlns:tv="http://icsharpcode.net/sharpdevelop/treeview"
xmlns:local="clr-namespace:ICSharpCode.CodeAnalysis"
xmlns:core="http://icsharpcode.net/sharpdevelop/core">
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
@@ -92,7 +35,7 @@
Content="{core:Localize ICSharpCode.CodeAnalysis.ProjectOptions.AddRemoveRuleAssembly}">
+ Grid.Row="2" Grid.ColumnSpan="3">
@@ -104,34 +47,24 @@
-
-
-
-
-
-
-
-
-
+
-
+ Source="{Binding Item1}">
+
@@ -139,22 +72,11 @@
-
-
-
-
-
-
-
-
-
-
-
-
-
+
+
diff --git a/src/AddIns/Analysis/CodeAnalysis/Src/AnalysisProjectOptionsPanelXaml.xaml.cs b/src/AddIns/Analysis/CodeAnalysis/Src/AnalysisProjectOptionsPanelXaml.xaml.cs
index 9dac8b9661..f2445d89c3 100644
--- a/src/AddIns/Analysis/CodeAnalysis/Src/AnalysisProjectOptionsPanelXaml.xaml.cs
+++ b/src/AddIns/Analysis/CodeAnalysis/Src/AnalysisProjectOptionsPanelXaml.xaml.cs
@@ -144,43 +144,32 @@ namespace ICSharpCode.CodeAnalysis
}
}
userCheck = true;
-// SetCategoryIcon();
SetCategoryIcon();
}
- /*
- void oldSetCategoryIcon()
- {
- foreach (CategoryTreeNode element in ruleTreeView.Root.Children) {
- Console.WriteLine(" {0} - errorstate {1}",element.Text, element.ErrorState.ToString());
- if (element.ErrorState > -1) {
- element.Index = element.ErrorState;
- }
- Console.WriteLine("-------------------------");
- }
-
- }
- */
-
void SetCategoryIcon() {
-
+
+ Console.WriteLine("SetCategoryicon");
foreach (CategoryTreeNode categoryNode in ruleTreeView.Root.Children) {
-// Console.WriteLine(" {0} ",element.Text);
+ categoryNode.CheckMode();
+ /*
if (!categoryNode.NewErrorState.HasValue) {
- Console.WriteLine (" {0} is Mixed Mode",categoryNode.Text);
+ Console.WriteLine ("\t{0} is Mixed Mode",categoryNode.Text);
categoryNode.AddMixedMode();
} else{
if (categoryNode.NewErrorState == true) {
- Console.WriteLine (" {0} is Error",categoryNode.Text);
- categoryNode.Index = 1;
+ Console.WriteLine ("\t{0} is Error",categoryNode.Text);
+// categoryNode.Index = 1;
} else {
- Console.WriteLine (" {0} is Warning",categoryNode.Text);
+ Console.WriteLine ("\t{0} is Warning",categoryNode.Text);
+// categoryNode.Index = ;
}
}
+ */
}
Console.WriteLine("--------------");
-
+
}
string ruleString = "";
@@ -219,7 +208,6 @@ namespace ICSharpCode.CodeAnalysis
#endregion
-
#region RuleList
void ReloadRuleList()
@@ -254,7 +242,6 @@ namespace ICSharpCode.CodeAnalysis
rules[ruleNode.Identifier] = ruleNode;
}
}
-
ReadRuleString();
initSuccess = true;
}
@@ -265,16 +252,18 @@ namespace ICSharpCode.CodeAnalysis
private void OnPropertyChanged(object sender,System.ComponentModel.PropertyChangedEventArgs e)
{
if (initSuccess) {
- base.IsDirty = true;
+ Console.WriteLine("OnPropertyChanged {0}",e.PropertyName);
if (e.PropertyName == "Index") {
- RuleTreeNode r = sender as RuleTreeNode;
- if (r != null) {
- var p = r.Parent;
- if (p != null) {
- SetCategoryIcon();
- }
- }
+ base.IsDirty = true;
+// var rule = sender as RuleTreeNode;
+// if (rule != null) {
+// var cat = rule.Parent as CategoryTreeNode;
+// if (cat != null) {
+// cat.CheckMode();
+// }
+// }
}
+
}
}
@@ -321,73 +310,8 @@ namespace ICSharpCode.CodeAnalysis
}
}
- void ComboBox_SelectionChanged(object sender, SelectionChangedEventArgs e)
- {
-// throw new NotImplementedException();
- }
-
#endregion
-
- }
-
- public class TypeSelector : DataTemplateSelector
- {
-
- public DataTemplate ComboTemplate { get; set; }
- public DataTemplate TxtTemplate { get; set; }
-
- public override DataTemplate SelectTemplate(object item, DependencyObject container)
- {
- Console.WriteLine ("------- TypeSelector ---------");
- var rule = item as RuleTreeNode;
-
- if (rule != null) {
- return ComboTemplate;
- }
-
- var cat = item as CategoryTreeNode;
-
- if (cat != null) {
- if (!cat.NewErrorState.HasValue) {
- //Mixed Mode
- return TxtTemplate;
- } else {
- //All childs has same value
- return ComboTemplate;
- }
- }
- return ComboTemplate;
- }
- }
-
-
- [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
diff --git a/src/AddIns/Analysis/CodeAnalysis/Src/AnalysisProjectOptionsTreeNodes.cs b/src/AddIns/Analysis/CodeAnalysis/Src/AnalysisProjectOptionsTreeNodes.cs
index 95338ceda2..065e383a9c 100644
--- a/src/AddIns/Analysis/CodeAnalysis/Src/AnalysisProjectOptionsTreeNodes.cs
+++ b/src/AddIns/Analysis/CodeAnalysis/Src/AnalysisProjectOptionsTreeNodes.cs
@@ -26,16 +26,42 @@ namespace ICSharpCode.CodeAnalysis
public class BaseTree:SharpTreeNode
{
private int index;
-
+
+
+
public BaseTree()
{
- 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")));
+ RuleState = new ObservableCollection>();
+
+ Icon icon = SystemIcons.Warning;
+ ImageSource imageSource = ToImageSource(icon);
+ this.RuleState.Add(Tuple.Create(imageSource,
+ ResourceService.GetString("Global.WarningText")));
+
+ icon = SystemIcons.Error;
+ imageSource = ToImageSource(icon);
+ this.RuleState.Add(Tuple.Create(imageSource,
+ ResourceService.GetString("Global.ErrorText")));
// bla.Add(Tuple.Create(null,"None"));
}
- public ObservableCollection> RuleState {get;set;}
+ private static ImageSource ToImageSource( Icon icon)
+ {
+ Bitmap bitmap = icon.ToBitmap();
+ IntPtr hBitmap = bitmap.GetHbitmap();
+
+ ImageSource wpfBitmap = Imaging.CreateBitmapSourceFromHBitmap(
+ hBitmap,
+ IntPtr.Zero,
+ Int32Rect.Empty,
+ BitmapSizeOptions.FromEmptyOptions());
+
+ return wpfBitmap;
+ }
+
+
+
+ public ObservableCollection> RuleState {get;set;}
private Tuple selectedItem;
@@ -48,10 +74,7 @@ namespace ICSharpCode.CodeAnalysis
public virtual int Index {
get { return index; }
set {
- if (index != value) {
- index = value;
- }
- base.RaisePropertyChanged("Index");
+ index = value;
}
}
}
@@ -61,7 +84,7 @@ namespace ICSharpCode.CodeAnalysis
public class CategoryTreeNode : BaseTree
{
internal FxCopCategory category;
- private Tuple mixedTuple;
+ private Tuple mixedModeTuple;
public CategoryTreeNode(FxCopCategory category):base()
{
@@ -71,6 +94,7 @@ namespace ICSharpCode.CodeAnalysis
this.Children.Add(new RuleTreeNode(rule));
}
+ CheckMode();
}
@@ -87,28 +111,65 @@ namespace ICSharpCode.CodeAnalysis
set {
if (value != base.Index) {
base.Index = value;
- if (mixedTuple == null) {
+ if (mixedModeTuple == null) {
+ Console.WriteLine("Set all to index");
foreach (RuleTreeNode rule in this.Children) {
rule.Index = Index;
}
+ base.RaisePropertyChanged("Index");
}
-
}
}
}
- public void AddMixedMode()
+ private void AddMixedMode()
{
- 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;
+ Console.WriteLine("AddMixedMode");
+ if (!RuleState.Contains(mixedModeTuple)) {
+ var image = PresentationResourceService.GetBitmapSource("Icons.16x16.ClosedFolderBitmap");
+ mixedModeTuple = Tuple.Create(image,
+ StringParser.Parse("${res:ICSharpCode.CodeAnalysis.ProjectOptions.WarningErrorMixed}"));
+ RuleState.Add(mixedModeTuple);
+ Index = RuleState.Count -1;
+ base.RaisePropertyChanged("Index");
+ CheckMode();
+ }
}
+ private void RemoveMixedMode()
+ {
+ Console.WriteLine("RemoveMixedMode(");
+ if (mixedModeTuple != null) {
+ if (RuleState.Contains(mixedModeTuple)) {
+ RuleState.Remove(mixedModeTuple);
+ mixedModeTuple = null;
+ base.RaisePropertyChanged("Index");
+ CheckMode();
+ }
+ }
+ }
+
+ public void CheckMode ()
+ {
+ Console.WriteLine("CheckMode");
+ if (!NewErrorState.HasValue) {
+ Console.WriteLine ("\t{0} is Mixed Mode",Text);
+ AddMixedMode();
+// categoryNode.AddMixedMode();
+ } else{
+ RemoveMixedMode();
+ if (NewErrorState == true) {
+ Console.WriteLine ("\t{0} is Error",Text);
+// categoryNode.Index = 1;
+ } else {
+ Console.WriteLine ("\t{0} is Warning",Text);
+// categoryNode.Index = ;
+ }
+ }
+ }
+
+
public Nullable NewErrorState {
get {
bool allWarn = true;
@@ -160,13 +221,7 @@ namespace ICSharpCode.CodeAnalysis
internal bool isError {
get { return error; }
set {
- if (error != value) {
- error = value;
-
- if (error) {
- base.Index = 1;
- }
- }
+ error = value;
}
}
@@ -197,12 +252,8 @@ namespace ICSharpCode.CodeAnalysis
if (base.Index != value) {
isError = value == 1;
base.Index = value;
-
-// if (base.Index == 1) {
-// error = true;
-// } else {
-// error = false;
-// }
+ var p = Parent as CategoryTreeNode;
+ p.CheckMode();
Console.WriteLine ("RuleNode {0} - index {1} - error {2}",rule.DisplayName,Index, isError);
}
}