Browse Source

Implemented VirtualMode for Dependency Matrix. It should improve performance a little bit.

git-svn-id: svn://svn.sharpdevelop.net/sharpdevelop/trunk@6230 1ccf3a8d-04fe-1044-b7c0-cef0b8235c61
pull/1/head
Tomáš Linhart 16 years ago
parent
commit
255e99b5e4
  1. 5
      src/AddIns/Analysis/CodeQuality/CodeQualityAnalysis.csproj
  2. 2
      src/AddIns/Analysis/CodeQuality/CodeQualityAnalysis.sln
  3. 79
      src/AddIns/Analysis/CodeQuality/Src/Controls/MatrixControl.cs

5
src/AddIns/Analysis/CodeQuality/CodeQualityAnalysis.csproj

@ -34,9 +34,9 @@
<OutputPath>..\..\..\..\AddIns\AddIns\Misc\CodeQualityAnalysis\</OutputPath> <OutputPath>..\..\..\..\AddIns\AddIns\Misc\CodeQualityAnalysis\</OutputPath>
<AllowUnsafeBlocks>False</AllowUnsafeBlocks> <AllowUnsafeBlocks>False</AllowUnsafeBlocks>
<NoStdLib>False</NoStdLib> <NoStdLib>False</NoStdLib>
<DebugType>None</DebugType> <DebugType>Full</DebugType>
<TreatWarningsAsErrors>false</TreatWarningsAsErrors> <TreatWarningsAsErrors>false</TreatWarningsAsErrors>
<DebugSymbols>false</DebugSymbols> <DebugSymbols>true</DebugSymbols>
</PropertyGroup> </PropertyGroup>
<PropertyGroup Condition=" '$(Configuration)|$(Platform)' == 'Debug' "> <PropertyGroup Condition=" '$(Configuration)|$(Platform)' == 'Debug' ">
<DebugSymbols>true</DebugSymbols> <DebugSymbols>true</DebugSymbols>
@ -238,6 +238,7 @@
<Content Include="CodeQualityAnalysis.addin"> <Content Include="CodeQualityAnalysis.addin">
<CopyToOutputDirectory>Always</CopyToOutputDirectory> <CopyToOutputDirectory>Always</CopyToOutputDirectory>
</Content> </Content>
<Content Include="ProfilingSessions\Session20100726_004238.sdps" />
</ItemGroup> </ItemGroup>
<ItemGroup> <ItemGroup>
<Folder Include="Themes" /> <Folder Include="Themes" />

2
src/AddIns/Analysis/CodeQuality/CodeQualityAnalysis.sln

@ -1,7 +1,7 @@
 
Microsoft Visual Studio Solution File, Format Version 11.00 Microsoft Visual Studio Solution File, Format Version 11.00
# Visual Studio 2010 # 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}" Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "CodeQualityAnalysis", "CodeQualityAnalysis.csproj", "{76DD1CC0-0D86-44A1-9BD6-D91F79807BC3}"
EndProject EndProject
Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "ICSharpCode.Core", "..\..\..\Main\Core\Project\ICSharpCode.Core.csproj", "{35CEF10F-2D4C-45F2-9DD1-161E0FEC583C}" Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "ICSharpCode.Core", "..\..\..\Main\Core\Project\ICSharpCode.Core.csproj", "{35CEF10F-2D4C-45F2-9DD1-161E0FEC583C}"

79
src/AddIns/Analysis/CodeQuality/Src/Controls/MatrixControl.cs

@ -4,33 +4,80 @@ using System.Linq;
using System.Text; using System.Text;
using System.Windows.Forms; using System.Windows.Forms;
using System.Drawing; using System.Drawing;
using ICSharpCode.SharpDevelop.Gui.ClassBrowser;
namespace ICSharpCode.CodeQualityAnalysis.Controls namespace ICSharpCode.CodeQualityAnalysis.Controls
{ {
public class MatrixControl<TValue> : DataGridView public class MatrixControl<TValue> : DataGridView
{ {
public Matrix<TValue> Matrix { get; set; } Matrix<TValue> matrix;
object [,] cache;
public Matrix<TValue> Matrix
{
get
{
return matrix;
}
set
{
Rows.Clear();
Columns.Clear();
cache = new object[value.HeaderRows.Count, value.HeaderColumns.Count];
matrix = value;
}
}
public MatrixControl() public MatrixControl()
{ {
BackgroundColor = Color.White;
BorderStyle = BorderStyle.None;
AllowUserToAddRows = false; AllowUserToAddRows = false;
AllowUserToDeleteRows = false; AllowUserToDeleteRows = false;
AllowUserToResizeRows = false; AllowUserToResizeRows = false;
AllowUserToResizeColumns = false;
AllowUserToOrderColumns = false;
AllowDrop = false;
EnableHeadersVisualStyles = 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() public void DrawMatrix()
{ {
DrawHeaders(); 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() protected void DrawHeaders()
@ -45,6 +92,18 @@ namespace ICSharpCode.CodeQualityAnalysis.Controls
var row = new DataGridViewRow(); var row = new DataGridViewRow();
row.HeaderCell.Value = headerRow.Value.ToString(); row.HeaderCell.Value = headerRow.Value.ToString();
this.Rows.Add(row); 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]);
} }
} }
} }

Loading…
Cancel
Save