From 4655c6fd3f1f1d608d7706f31e6167fc029f0362 Mon Sep 17 00:00:00 2001 From: PeterForstmeier Date: Fri, 3 Aug 2012 20:28:10 +0200 Subject: [PATCH] CodeCoverageOptionPanel --- .../CodeCoverage/Project/CodeCoverage.addin | 7 +- .../CodeCoverage/Project/CodeCoverage.csproj | 8 +- ...xfrm => old_CodeCoverageOptionsPanel.xfrm} | 0 .../Src/CodeCoverageOptionsPanelXaml.xaml | 75 +++++++++++++----- .../Src/CodeCoverageOptionsPanelXaml.xaml.cs | 77 ++++++++++++++++++- ...nel.cs => old_CodeCoverageOptionsPanel.cs} | 2 +- 6 files changed, 138 insertions(+), 31 deletions(-) rename src/AddIns/Analysis/CodeCoverage/Project/Resources/{CodeCoverageOptionsPanel.xfrm => old_CodeCoverageOptionsPanel.xfrm} (100%) rename src/AddIns/Analysis/CodeCoverage/Project/Src/{CodeCoverageOptionsPanel.cs => old_CodeCoverageOptionsPanel.cs} (98%) diff --git a/src/AddIns/Analysis/CodeCoverage/Project/CodeCoverage.addin b/src/AddIns/Analysis/CodeCoverage/Project/CodeCoverage.addin index dec489e9f3..c1a204acf9 100644 --- a/src/AddIns/Analysis/CodeCoverage/Project/CodeCoverage.addin +++ b/src/AddIns/Analysis/CodeCoverage/Project/CodeCoverage.addin @@ -48,15 +48,10 @@ - - - diff --git a/src/AddIns/Analysis/CodeCoverage/Project/CodeCoverage.csproj b/src/AddIns/Analysis/CodeCoverage/Project/CodeCoverage.csproj index 0f5ac5a2a7..73dfc7344f 100644 --- a/src/AddIns/Analysis/CodeCoverage/Project/CodeCoverage.csproj +++ b/src/AddIns/Analysis/CodeCoverage/Project/CodeCoverage.csproj @@ -99,8 +99,8 @@ - - + + @@ -144,6 +144,10 @@ ICSharpCode.Core.WinForms False + + {8035765F-D51F-4A0C-A746-2FD100E19419} + ICSharpCode.SharpDevelop.Widgets + {1F261725-6318-4434-A1B1-6C70CE4CD324} UnitTesting diff --git a/src/AddIns/Analysis/CodeCoverage/Project/Resources/CodeCoverageOptionsPanel.xfrm b/src/AddIns/Analysis/CodeCoverage/Project/Resources/old_CodeCoverageOptionsPanel.xfrm similarity index 100% rename from src/AddIns/Analysis/CodeCoverage/Project/Resources/CodeCoverageOptionsPanel.xfrm rename to src/AddIns/Analysis/CodeCoverage/Project/Resources/old_CodeCoverageOptionsPanel.xfrm diff --git a/src/AddIns/Analysis/CodeCoverage/Project/Src/CodeCoverageOptionsPanelXaml.xaml b/src/AddIns/Analysis/CodeCoverage/Project/Src/CodeCoverageOptionsPanelXaml.xaml index 35c04952af..5754eb3315 100644 --- a/src/AddIns/Analysis/CodeCoverage/Project/Src/CodeCoverageOptionsPanelXaml.xaml +++ b/src/AddIns/Analysis/CodeCoverage/Project/Src/CodeCoverageOptionsPanelXaml.xaml @@ -1,46 +1,83 @@ - - + + + + - + + + - + - - - + - + + + + - + - - + + - + + + + + + + + + \ No newline at end of file diff --git a/src/AddIns/Analysis/CodeCoverage/Project/Src/CodeCoverageOptionsPanelXaml.xaml.cs b/src/AddIns/Analysis/CodeCoverage/Project/Src/CodeCoverageOptionsPanelXaml.xaml.cs index d533991097..c4bcbd3b74 100644 --- a/src/AddIns/Analysis/CodeCoverage/Project/Src/CodeCoverageOptionsPanelXaml.xaml.cs +++ b/src/AddIns/Analysis/CodeCoverage/Project/Src/CodeCoverageOptionsPanelXaml.xaml.cs @@ -8,9 +8,11 @@ using System; using System.Collections.Generic; using System.Collections.ObjectModel; +using System.Globalization; using System.Text; using System.Windows; using System.Windows.Controls; +using System.Windows.Controls.Primitives; using System.Windows.Data; using System.Windows.Documents; using System.Windows.Input; @@ -18,23 +20,92 @@ using System.Windows.Media; using ICSharpCode.Core; using ICSharpCode.SharpDevelop.Gui; +using ICSharpCode.SharpDevelop.Widgets; namespace ICSharpCode.CodeCoverage { /// /// Interaction logic for CodeCoverageOptionsPanelXaml.xaml /// - public partial class CodeCoverageOptionsPanelXaml : OptionPanel + public partial class CodeCoverageOptionsPanel : OptionPanel { - public CodeCoverageOptionsPanelXaml() + + public CodeCoverageOptionsPanel() { InitializeComponent(); - DisplayItems = new ObservableCollection(); DataContext = this; + DisplayItems = new ObservableCollection(); DisplayItems.Add(new CodeCoverageDisplayItem(StringParser.Parse("${res:ICSharpCode.CodeCoverage.CodeCovered}"), CodeCoverageOptions.VisitedColorProperty, CodeCoverageOptions.VisitedColor, CodeCoverageOptions.VisitedForeColorProperty, CodeCoverageOptions.VisitedForeColor)); DisplayItems.Add(new CodeCoverageDisplayItem(StringParser.Parse("${res:ICSharpCode.CodeCoverage.CodeNotCovered}"), CodeCoverageOptions.NotVisitedColorProperty, CodeCoverageOptions.NotVisitedColor, CodeCoverageOptions.NotVisitedForeColorProperty, CodeCoverageOptions.NotVisitedForeColor)); + DisplayItem = DisplayItems[0]; } + CodeCoverageDisplayItem displayItem; + + public CodeCoverageDisplayItem DisplayItem { + get { return displayItem; } + set { displayItem = value; + base.RaisePropertyChanged(() => DisplayItem); + ShowColors(); + } + } + + + private System.Windows.Media.Color foreGroundColor; + + public Color ForeGroundColor { + get { return foreGroundColor; } + set { + foreGroundColor = value; + RaisePropertyChanged(() => ForeGroundColor); + DisplayItem.ForeColor = SetColor(ForeGroundColor); + } + } + + + private System.Windows.Media.Color backGroundColor; + + public Color BackGroundColor { + get { return backGroundColor; } + set { backGroundColor = value; + RaisePropertyChanged(() => BackGroundColor); + DisplayItem.BackColor = SetColor(BackGroundColor); + } + } + + + public override bool SaveOptions() + { + bool codeCoverageColorsChanged = false; + + foreach (CodeCoverageDisplayItem item in displayItemsListBox.Items) { + if (item.HasChanged) { + CodeCoverageOptions.Properties.Set(item.ForeColorPropertyName, item.ForeColor); + CodeCoverageOptions.Properties.Set(item.BackColorPropertyName, item.BackColor); + codeCoverageColorsChanged = true; + } + } + + if (codeCoverageColorsChanged) { + CodeCoverageService.RefreshCodeCoverageHighlights(); + } + return base.SaveOptions(); + } + + private void ShowColors() + { + System.Drawing.Color clr = DisplayItem.ForeColor; + ForeGroundColor = System.Windows.Media.Color.FromArgb(clr.A, clr.R, clr.G, clr.B); + clr = DisplayItem.BackColor; + BackGroundColor = System.Windows.Media.Color.FromArgb(clr.A, clr.R, clr.G, clr.B); + } + + + private System.Drawing.Color SetColor (System.Windows.Media.Color color) + { + return System.Drawing.Color.FromArgb(color.A,color.R,color.G,color.B); + } + public ObservableCollection DisplayItems {get; private set;} } } \ No newline at end of file diff --git a/src/AddIns/Analysis/CodeCoverage/Project/Src/CodeCoverageOptionsPanel.cs b/src/AddIns/Analysis/CodeCoverage/Project/Src/old_CodeCoverageOptionsPanel.cs similarity index 98% rename from src/AddIns/Analysis/CodeCoverage/Project/Src/CodeCoverageOptionsPanel.cs rename to src/AddIns/Analysis/CodeCoverage/Project/Src/old_CodeCoverageOptionsPanel.cs index 904ba909f9..c042ea4ffd 100644 --- a/src/AddIns/Analysis/CodeCoverage/Project/Src/CodeCoverageOptionsPanel.cs +++ b/src/AddIns/Analysis/CodeCoverage/Project/Src/old_CodeCoverageOptionsPanel.cs @@ -10,7 +10,7 @@ using ICSharpCode.SharpDevelop.Gui; namespace ICSharpCode.CodeCoverage { - public class CodeCoverageOptionsPanel : XmlFormsOptionPanel + public class old_CodeCoverageOptionsPanel : XmlFormsOptionPanel { static readonly string foregroundCustomColourButtonName = "foregroundCustomColourButton"; static readonly string backgroundCustomColourButtonName = "backgroundCustomColourButton";