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]); } } }