diff --git a/src/AddIns/Analysis/CodeQuality/CodeQualityAnalysis.csproj b/src/AddIns/Analysis/CodeQuality/CodeQualityAnalysis.csproj
index 33cce6c0b7..5f1c5bd2d6 100644
--- a/src/AddIns/Analysis/CodeQuality/CodeQualityAnalysis.csproj
+++ b/src/AddIns/Analysis/CodeQuality/CodeQualityAnalysis.csproj
@@ -34,9 +34,9 @@
..\..\..\..\AddIns\AddIns\Misc\CodeQualityAnalysis\
False
False
- None
+ Full
false
- false
+ true
true
@@ -238,6 +238,7 @@
Always
+
diff --git a/src/AddIns/Analysis/CodeQuality/CodeQualityAnalysis.sln b/src/AddIns/Analysis/CodeQuality/CodeQualityAnalysis.sln
index 905db53228..b15e1a03ba 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.0.0.6197
+# SharpDevelop 4.0.0.6218
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 9548d994e2..319cfd86aa 100644
--- a/src/AddIns/Analysis/CodeQuality/Src/Controls/MatrixControl.cs
+++ b/src/AddIns/Analysis/CodeQuality/Src/Controls/MatrixControl.cs
@@ -4,33 +4,80 @@ using System.Linq;
using System.Text;
using System.Windows.Forms;
using System.Drawing;
+using ICSharpCode.SharpDevelop.Gui.ClassBrowser;
namespace ICSharpCode.CodeQualityAnalysis.Controls
{
public class MatrixControl : DataGridView
{
- public Matrix Matrix { get; set; }
+ Matrix matrix;
+ object [,] cache;
+
+ public Matrix Matrix
+ {
+ get
+ {
+ return matrix;
+ }
+
+ set
+ {
+ Rows.Clear();
+ Columns.Clear();
+ cache = new object[value.HeaderRows.Count, value.HeaderColumns.Count];
+ matrix = value;
+ }
+ }
public MatrixControl()
{
+ BackgroundColor = Color.White;
+ BorderStyle = BorderStyle.None;
+
AllowUserToAddRows = false;
AllowUserToDeleteRows = false;
AllowUserToResizeRows = false;
+ AllowUserToResizeColumns = false;
+ AllowUserToOrderColumns = false;
+ AllowDrop = false;
+
EnableHeadersVisualStyles = false;
+
+ EditMode = DataGridViewEditMode.EditProgrammatically;
+
+ AutoSizeColumnsMode = DataGridViewAutoSizeColumnsMode.DisplayedCells;
+ AutoSizeRowsMode = DataGridViewAutoSizeRowsMode.DisplayedCells;
+
+ CellBorderStyle = DataGridViewCellBorderStyle.None;
+
+ ColumnHeadersHeightSizeMode = DataGridViewColumnHeadersHeightSizeMode.AutoSize;
+ RowHeadersWidthSizeMode = DataGridViewRowHeadersWidthSizeMode.AutoSizeToDisplayedHeaders;
+ ColumnHeadersDefaultCellStyle.BackColor = Color.White;
+ RowHeadersDefaultCellStyle.BackColor = Color.White;
+ RowHeadersBorderStyle = DataGridViewHeaderBorderStyle.None;
+ ColumnHeadersBorderStyle = DataGridViewHeaderBorderStyle.None;
+
+ // disable selection
+ DefaultCellStyle.SelectionForeColor = Color.Black;
+ DefaultCellStyle.SelectionBackColor = Color.White;
+
+ ColumnHeadersDefaultCellStyle.SelectionForeColor = Color.Black;
+ ColumnHeadersDefaultCellStyle.SelectionBackColor = Color.White;
+
+ RowHeadersDefaultCellStyle.SelectionForeColor = Color.Black;
+ RowHeadersDefaultCellStyle.SelectionBackColor = Color.White;
+
+ SelectionMode = DataGridViewSelectionMode.CellSelect;
+
+
+ ReadOnly = true;
+ VirtualMode = true;
+ EditMode = DataGridViewEditMode.EditProgrammatically;
}
public void DrawMatrix()
{
DrawHeaders();
-
- for (int i = 0; i < Matrix.HeaderRows.Count; i++) {
-
- for (int j = 0; j < Matrix.HeaderColumns.Count; j++) {
- var val = Matrix.EvaluateCell(Matrix.HeaderRows[i], Matrix.HeaderColumns[j]);
-
- this[i, j].Value = val.ToString();
- }
- }
}
protected void DrawHeaders()
@@ -45,6 +92,18 @@ namespace ICSharpCode.CodeQualityAnalysis.Controls
var row = new DataGridViewRow();
row.HeaderCell.Value = headerRow.Value.ToString();
this.Rows.Add(row);
+
+ //if (!row.Displayed) // crashes sharpdevelop debugger
+ // break;
+ }
+ }
+
+ protected override void OnCellValueNeeded(DataGridViewCellValueEventArgs e)
+ {
+ if (cache[e.RowIndex, e.ColumnIndex] != null)
+ e.Value = cache[e.RowIndex, e.ColumnIndex];
+ if (e.RowIndex < Matrix.HeaderRows.Count && e.ColumnIndex < Matrix.HeaderColumns.Count) {
+ e.Value = Matrix.EvaluateCell(Matrix.HeaderRows[e.RowIndex], Matrix.HeaderColumns[e.ColumnIndex]);
}
}
}