diff --git a/src/AddIns/Analysis/CodeQuality/CodeQualityAnalysis.csproj b/src/AddIns/Analysis/CodeQuality/CodeQualityAnalysis.csproj
index 54181f47ab..aa5dabb6e0 100644
--- a/src/AddIns/Analysis/CodeQuality/CodeQualityAnalysis.csproj
+++ b/src/AddIns/Analysis/CodeQuality/CodeQualityAnalysis.csproj
@@ -6,7 +6,7 @@
8.0.30703
2.0
{76DD1CC0-0D86-44A1-9BD6-D91F79807BC3}
- WinExe
+ Exe
Properties
ICSharpCode.CodeQualityAnalysis
CodeQualityAnalysis
@@ -129,7 +129,6 @@
-
@@ -143,6 +142,7 @@
+
diff --git a/src/AddIns/Analysis/CodeQuality/CodeQualityAnalysis.sln b/src/AddIns/Analysis/CodeQuality/CodeQualityAnalysis.sln
index c67ec6b861..4408289165 100644
--- a/src/AddIns/Analysis/CodeQuality/CodeQualityAnalysis.sln
+++ b/src/AddIns/Analysis/CodeQuality/CodeQualityAnalysis.sln
@@ -1,7 +1,7 @@
Microsoft Visual Studio Solution File, Format Version 11.00
# Visual Studio 2010
-# SharpDevelop 4.2.0.7899-alpha
+# SharpDevelop 4.2.0.7909-alpha
Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "CodeQualityAnalysis", "CodeQualityAnalysis.csproj", "{76DD1CC0-0D86-44A1-9BD6-D91F79807BC3}"
EndProject
Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "ICSharpCode.Core", "..\..\..\Main\Core\Project\ICSharpCode.Core.csproj", "{35CEF10F-2D4C-45F2-9DD1-161E0FEC583C}"
diff --git a/src/AddIns/Analysis/CodeQuality/Src/Controls/MatrixControl.cs b/src/AddIns/Analysis/CodeQuality/Src/Controls/MatrixControl.cs
index 7b5d533bad..133f7fcbe2 100644
--- a/src/AddIns/Analysis/CodeQuality/Src/Controls/MatrixControl.cs
+++ b/src/AddIns/Analysis/CodeQuality/Src/Controls/MatrixControl.cs
@@ -81,8 +81,8 @@ namespace ICSharpCode.CodeQualityAnalysis.Controls
{
InvalidateVisual();
- HoveredCell.RowIndex = currentCell.X;
- HoveredCell.ColumnIndex = currentCell.Y;
+ HoveredCell.RowIndex = currentCell.Y;
+ HoveredCell.ColumnIndex = currentCell.X;
HoveredCell.Value = matrix[HoveredCell.RowIndex, HoveredCell.ColumnIndex];
if (HoveredCellChanged != null)
HoveredCellChanged(this, new HoveredCellEventArgs(HoveredCell));
diff --git a/src/AddIns/Analysis/CodeQuality/Src/Controls/TreeMatrixControl.xaml b/src/AddIns/Analysis/CodeQuality/Src/Controls/TreeMatrixControl.xaml
index fd7f90f7ab..1fd9e2c9d3 100644
--- a/src/AddIns/Analysis/CodeQuality/Src/Controls/TreeMatrixControl.xaml
+++ b/src/AddIns/Analysis/CodeQuality/Src/Controls/TreeMatrixControl.xaml
@@ -32,6 +32,7 @@
@@ -45,7 +46,9 @@
+ Grid.Column="2"
+ Loaded="Trees_Loaded"
+ ScrollViewer.ScrollChanged="TopTree_ScrollChanged">
@@ -57,12 +60,13 @@
ResizeDirection="Rows"
HorizontalAlignment="Stretch"
Background="LightGray">
-
+ HorizontalScrollBarVisibility="Visible"
+ ScrollChanged="ScrollViewer_ScrollChanged">
diff --git a/src/AddIns/Analysis/CodeQuality/Src/Controls/TreeMatrixControl.xaml.cs b/src/AddIns/Analysis/CodeQuality/Src/Controls/TreeMatrixControl.xaml.cs
index fdc0273d61..3e0caa3a9e 100644
--- a/src/AddIns/Analysis/CodeQuality/Src/Controls/TreeMatrixControl.xaml.cs
+++ b/src/AddIns/Analysis/CodeQuality/Src/Controls/TreeMatrixControl.xaml.cs
@@ -15,6 +15,7 @@ using System.Windows.Forms;
using System.Linq;
using ICSharpCode.CodeQualityAnalysis.Utility;
+
namespace ICSharpCode.CodeQualityAnalysis.Controls
{
///
@@ -22,6 +23,10 @@ namespace ICSharpCode.CodeQualityAnalysis.Controls
///
public partial class TreeMatrixControl : System.Windows.Controls.UserControl
{
+
+ private ScrollViewer leftScrollViewer;
+ private ScrollViewer topScrollViewer;
+
public Matrix Matrix
{
get
@@ -35,9 +40,11 @@ namespace ICSharpCode.CodeQualityAnalysis.Controls
}
}
+
public TreeMatrixControl()
{
InitializeComponent();
+ matrixControl.HoveredCellChanged += OnHoverChanged;
}
@@ -46,5 +53,48 @@ namespace ICSharpCode.CodeQualityAnalysis.Controls
Helper.FillTree (leftTree,module);
Helper.FillTree (topTree,module);
}
+
+
+ void Trees_Loaded (object sender, EventArgs e)
+ {
+ leftTree.ApplyTemplate();
+ topTree.ApplyTemplate();
+
+ leftScrollViewer = Helper.FindVisualChild(leftTree);
+ topScrollViewer = Helper.FindVisualChild(topTree);
+ }
+
+ void OnHoverChanged (object sender ,HoveredCellEventArgs e)
+ {
+ var leftNode = leftTree.Items[e.HoveredCell.RowIndex] as DependecyTreeNode;
+ leftTree.SelectedItem = leftNode;
+ leftTree.FocusNode(leftNode);
+
+ var topNode = topTree.Items[e.HoveredCell.ColumnIndex] as DependecyTreeNode;
+ topTree.SelectedItem = topNode;
+ topTree.FocusNode(topNode);
+ }
+
+
+ void LeftTree_ScrollChanged(object sender, ScrollChangedEventArgs e)
+ {
+// Console.WriteLine("Left TreeScroll");
+ scrollViewer.ScrollToVerticalOffset(e.VerticalOffset * matrixControl.CellHeight);
+ Console.WriteLine("--");
+ }
+
+ void TopTree_ScrollChanged(object sender, ScrollChangedEventArgs e)
+ {
+// Console.WriteLine("Top TreeScroll ");
+ scrollViewer.ScrollToHorizontalOffset(e.VerticalChange * matrixControl.CellHeight);
+ Console.WriteLine("--");
+ }
+
+
+ void ScrollViewer_ScrollChanged(object sender, ScrollChangedEventArgs e)
+ {
+// Console.WriteLine("ScrollViewer_ScrollChanged {0} _ {1}",e.VerticalChange,scrollViewer != null);
+ //leftScrollViewer.ScrollToVerticalOffset (e.VerticalChange * matrixControl.CellHeight);
+ }
}
}
diff --git a/src/AddIns/Analysis/CodeQuality/Src/Helper.cs b/src/AddIns/Analysis/CodeQuality/Src/Utility/Helper.cs
similarity index 67%
rename from src/AddIns/Analysis/CodeQuality/Src/Helper.cs
rename to src/AddIns/Analysis/CodeQuality/Src/Utility/Helper.cs
index 130a9e2a77..ddf7695e4b 100644
--- a/src/AddIns/Analysis/CodeQuality/Src/Helper.cs
+++ b/src/AddIns/Analysis/CodeQuality/Src/Utility/Helper.cs
@@ -7,6 +7,8 @@
* To change this template use Tools | Options | Coding | Edit Standard Headers.
*/
using System;
+using System.Windows;
+using System.Windows.Media;
namespace ICSharpCode.CodeQualityAnalysis
{
@@ -52,5 +54,33 @@ namespace ICSharpCode.CodeQualityAnalysis
DependecyTreeNode dtn = new DependecyTreeNode(node);
return dtn;
}
+
+
+ public static T FindVisualChild( DependencyObject obj )
+ where T : DependencyObject
+ {
+ // Search immediate children first (breadth-first)
+
+ for( int i = 0; i < VisualTreeHelper.GetChildrenCount( obj ); i++ )
+ {
+ DependencyObject child = VisualTreeHelper.GetChild( obj, i );
+
+ if( child != null && child is T )
+ {
+ return ( T )child;
+ }
+ else
+ {
+ T childOfChild = FindVisualChild( child );
+
+ if( childOfChild != null )
+ {
+ return childOfChild;
+ }
+ }
+ }
+
+ return null;
+ }
}
}