diff --git a/src/AddIns/Analysis/CodeQuality/Src/Controls/DependencyColorizer.cs b/src/AddIns/Analysis/CodeQuality/Src/Controls/DependencyColorizer.cs index f460fad867..742d3e2449 100644 --- a/src/AddIns/Analysis/CodeQuality/Src/Controls/DependencyColorizer.cs +++ b/src/AddIns/Analysis/CodeQuality/Src/Controls/DependencyColorizer.cs @@ -42,9 +42,9 @@ namespace ICSharpCode.CodeQualityAnalysis.Controls return Colors.Transparent; if (relationship.Relationships.Any(r => r == RelationshipType.UseThis)) - return Colors.Azure; + return Colors.LightBlue; if (relationship.Relationships.Any(r => r == RelationshipType.UsedBy)) - return Colors.Beige; + return Colors.Violet; if (relationship.Relationships.Any(r => r == RelationshipType.Same)) return Colors.Gray; diff --git a/src/AddIns/Analysis/CodeQuality/Src/Controls/DependencyMatrix.cs b/src/AddIns/Analysis/CodeQuality/Src/Controls/DependencyMatrix.cs index a8bc4dff7f..45c8250255 100644 --- a/src/AddIns/Analysis/CodeQuality/Src/Controls/DependencyMatrix.cs +++ b/src/AddIns/Analysis/CodeQuality/Src/Controls/DependencyMatrix.cs @@ -16,6 +16,9 @@ namespace ICSharpCode.CodeQualityAnalysis.Controls var toRelationship = HeaderRows[rowIndex].Value.GetRelationship(HeaderColumns[columnIndex].Value); var fromRelationship = HeaderColumns[columnIndex].Value.GetRelationship(HeaderRows[rowIndex].Value); + toRelationship.From = HeaderRows[rowIndex].Value; + toRelationship.To = HeaderColumns[columnIndex].Value; + // add other way foreach (var relationship in fromRelationship.Relationships) { if (relationship == RelationshipType.UseThis) diff --git a/src/AddIns/Analysis/CodeQuality/Src/Controls/MatrixControl.cs b/src/AddIns/Analysis/CodeQuality/Src/Controls/MatrixControl.cs index 073bd181f5..d864fec0f7 100644 --- a/src/AddIns/Analysis/CodeQuality/Src/Controls/MatrixControl.cs +++ b/src/AddIns/Analysis/CodeQuality/Src/Controls/MatrixControl.cs @@ -105,17 +105,24 @@ namespace ICSharpCode.CodeQualityAnalysis.Controls { var items = type == HeaderType.Columns ? matrix.HeaderColumns : matrix.HeaderRows; for (int i = 0; i < items.Count; i++) { - if (node.Equals(items[i])) { + if (items[i].Value.Equals(node)) { + if (currentCell.X == i && type == HeaderType.Rows) + return; + if (currentCell.Y == i && type == HeaderType.Columns) + return; + currentCell = type == HeaderType.Columns ? new Coords(i, currentCell.Y) : new Coords(currentCell.X, i); SetHoveredCell(); + InvalidateVisual(); + + return; } } } - protected override void OnMouseMove(System.Windows.Input.MouseEventArgs e) { base.OnMouseMove(e); @@ -137,6 +144,14 @@ namespace ICSharpCode.CodeQualityAnalysis.Controls } } + protected override void OnMouseDown(System.Windows.Input.MouseButtonEventArgs e) + { + base.OnMouseDown(e); + Relationship relationship = HoveredCell.Value as Relationship; + Console.WriteLine("To: " + relationship.To.Name); + Console.WriteLine("From:" + relationship.From.Name); + } + protected void SetHoveredCell() { HoveredCell.RowIndex = currentCell.Y; @@ -157,8 +172,8 @@ namespace ICSharpCode.CodeQualityAnalysis.Controls // how many cells we will draw // sometimes happens when half of cell is hidden in scroll so text isnt drawn // so lets drawn one more cell - var cellsHorizontally = maxWidth > matrixWidth ? matrixWidth : maxWidth + 1; - var cellsVertically = maxHeight > matrixHeight ? matrixHeight : maxHeight + 1; + var cellsHorizontally = maxWidth >= matrixWidth ? matrixWidth : maxWidth + 1; + var cellsVertically = maxHeight >= matrixHeight ? matrixHeight : maxHeight + 1; // number of cell which will be drawn var scaledOffsetX = (int)offset.X / CellWidth; diff --git a/src/AddIns/Analysis/CodeQuality/Src/Controls/TreeMatrixControl.xaml.cs b/src/AddIns/Analysis/CodeQuality/Src/Controls/TreeMatrixControl.xaml.cs index ed39c797da..fe80ac79e9 100644 --- a/src/AddIns/Analysis/CodeQuality/Src/Controls/TreeMatrixControl.xaml.cs +++ b/src/AddIns/Analysis/CodeQuality/Src/Controls/TreeMatrixControl.xaml.cs @@ -125,9 +125,7 @@ namespace ICSharpCode.CodeQualityAnalysis.Controls if (rebuildLeftNodeListRequested) return; rebuildLeftNodeListRequested = true; - Dispatcher.BeginInvoke( - DispatcherPriority.DataBind, - new Action(SetVisibleItemsForRows)); + Dispatcher.BeginInvoke(DispatcherPriority.DataBind, new Action(SetVisibleItemsForRows)); } void SetVisibleItemsForRows() @@ -149,9 +147,7 @@ namespace ICSharpCode.CodeQualityAnalysis.Controls if (rebuildTopNodeListRequested) return; rebuildTopNodeListRequested = true; - Dispatcher.BeginInvoke( - DispatcherPriority.DataBind, - new Action(SetVisibleItemsForColumns)); + Dispatcher.BeginInvoke(DispatcherPriority.DataBind, new Action(SetVisibleItemsForColumns)); } void SetVisibleItemsForColumns() diff --git a/src/AddIns/Analysis/CodeQuality/Src/Field.cs b/src/AddIns/Analysis/CodeQuality/Src/Field.cs index 1a28f15ae4..e6dc66de4d 100644 --- a/src/AddIns/Analysis/CodeQuality/Src/Field.cs +++ b/src/AddIns/Analysis/CodeQuality/Src/Field.cs @@ -86,6 +86,12 @@ namespace ICSharpCode.CodeQualityAnalysis public Relationship GetRelationship(INode node) { Relationship relationship = new Relationship(); + + if (node == this) { + relationship.Relationships.Add(RelationshipType.Same); + return relationship; + } + return relationship; } diff --git a/src/AddIns/Analysis/CodeQuality/Src/Method.cs b/src/AddIns/Analysis/CodeQuality/Src/Method.cs index a96fc7bed7..d988320720 100644 --- a/src/AddIns/Analysis/CodeQuality/Src/Method.cs +++ b/src/AddIns/Analysis/CodeQuality/Src/Method.cs @@ -148,6 +148,12 @@ namespace ICSharpCode.CodeQualityAnalysis public Relationship GetRelationship(INode node) { Relationship relationship = new Relationship(); + + if (node == this) { + relationship.Relationships.Add(RelationshipType.Same); + return relationship; + } + return relationship; } diff --git a/src/AddIns/Analysis/CodeQuality/Src/Relationship.cs b/src/AddIns/Analysis/CodeQuality/Src/Relationship.cs index c7ebf8371c..76b83422bb 100644 --- a/src/AddIns/Analysis/CodeQuality/Src/Relationship.cs +++ b/src/AddIns/Analysis/CodeQuality/Src/Relationship.cs @@ -18,6 +18,9 @@ namespace ICSharpCode.CodeQualityAnalysis public string Text { get { return OccurrenceCount.ToString(); } } + public INode To { get; set; } + public INode From { get; set; } + public Relationship() { Relationships = new HashSet();