Browse Source

Add http://treemaps.codeplex.com/ to a TabItem for testing

pull/20/merge
PeterForstmeier 14 years ago
parent
commit
28080e33d1
  1. 5
      src/AddIns/Analysis/CodeQuality/CodeQualityAnalysis.csproj
  2. 12
      src/AddIns/Analysis/CodeQuality/CodeQualityAnalysis.sln
  3. 374
      src/AddIns/Analysis/CodeQuality/Src/MainWindow.xaml
  4. 10
      src/AddIns/Analysis/CodeQuality/Src/MainWindow.xaml.cs
  5. 99
      src/AddIns/Analysis/CodeQuality/Src/MainWindowModel.cs

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

@ -252,6 +252,10 @@ @@ -252,6 +252,10 @@
<Private>True</Private>
<EmbedInteropTypes>False</EmbedInteropTypes>
</ProjectReference>
<ProjectReference Include="TreeMaps\TreeMaps.csproj">
<Project>{3ED2897F-1A8A-4106-89D2-4D342860D480}</Project>
<Name>TreeMaps</Name>
</ProjectReference>
</ItemGroup>
<ItemGroup>
<Content Include="CodeQualityAnalysis.addin">
@ -260,6 +264,7 @@ @@ -260,6 +264,7 @@
</ItemGroup>
<ItemGroup>
<Folder Include="Src\Utility" />
<Folder Include="Src\Utility\LocaliceableCombo" />
</ItemGroup>
<Import Project="$(MSBuildToolsPath)\Microsoft.CSharp.targets" />
<!-- To modify your build process, add your task inside one of the targets below and uncomment it.

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

@ -1,7 +1,7 @@ @@ -1,7 +1,7 @@

Microsoft Visual Studio Solution File, Format Version 11.00
# Visual Studio 2010
# SharpDevelop 4.2.0.7909-alpha
# SharpDevelop 4.2.0.7939-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}"
@ -20,6 +20,8 @@ Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "Mono.Cecil", "..\..\..\Libr @@ -20,6 +20,8 @@ Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "Mono.Cecil", "..\..\..\Libr
EndProject
Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "ICSharpCode.TreeView", "..\..\..\Libraries\SharpTreeView\ICSharpCode.TreeView\ICSharpCode.TreeView.csproj", "{DDE2A481-8271-4EAC-A330-8FA6A38D13D1}"
EndProject
Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "TreeMaps", "TreeMaps\TreeMaps.csproj", "{3ED2897F-1A8A-4106-89D2-4D342860D480}"
EndProject
Global
GlobalSection(SolutionConfigurationPlatforms) = preSolution
Debug|Any CPU = Debug|Any CPU
@ -90,6 +92,14 @@ Global @@ -90,6 +92,14 @@ Global
{DDE2A481-8271-4EAC-A330-8FA6A38D13D1}.Release|Any CPU.ActiveCfg = Release|Any CPU
{DDE2A481-8271-4EAC-A330-8FA6A38D13D1}.Release|x86.Build.0 = Release|Any CPU
{DDE2A481-8271-4EAC-A330-8FA6A38D13D1}.Release|x86.ActiveCfg = Release|Any CPU
{3ED2897F-1A8A-4106-89D2-4D342860D480}.Debug|Any CPU.Build.0 = Debug|Any CPU
{3ED2897F-1A8A-4106-89D2-4D342860D480}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
{3ED2897F-1A8A-4106-89D2-4D342860D480}.Debug|x86.Build.0 = Debug|Any CPU
{3ED2897F-1A8A-4106-89D2-4D342860D480}.Debug|x86.ActiveCfg = Debug|Any CPU
{3ED2897F-1A8A-4106-89D2-4D342860D480}.Release|Any CPU.Build.0 = Release|Any CPU
{3ED2897F-1A8A-4106-89D2-4D342860D480}.Release|Any CPU.ActiveCfg = Release|Any CPU
{3ED2897F-1A8A-4106-89D2-4D342860D480}.Release|x86.Build.0 = Release|Any CPU
{3ED2897F-1A8A-4106-89D2-4D342860D480}.Release|x86.ActiveCfg = Release|Any CPU
EndGlobalSection
GlobalSection(SolutionProperties) = preSolution
HideSolutionNode = FALSE

374
src/AddIns/Analysis/CodeQuality/Src/MainWindow.xaml

@ -1,7 +1,8 @@ @@ -1,7 +1,8 @@
<Window x:Class="ICSharpCode.CodeQualityAnalysis.MainWindow"
<?xml version="1.0" encoding="utf-8"?>
<Window
x:Class="ICSharpCode.CodeQualityAnalysis.MainWindow"
xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
xmlns:Controls="clr-namespace:ICSharpCode.WpfDesign.Designer.Controls;assembly=ICSharpCode.WpfDesign.Designer"
xmlns:GraphSharp="clr-namespace:GraphSharp.Controls;assembly=GraphSharp.Controls"
xmlns:Graph="clr-namespace:ICSharpCode.CodeQualityAnalysis.Controls"
@ -10,144 +11,202 @@ @@ -10,144 +11,202 @@
xmlns:datavis="clr-namespace:System.Windows.Controls.DataVisualization;assembly=System.Windows.Controls.DataVisualization.Toolkit"
xmlns:tree="http://icsharpcode.net/sharpdevelop/treeview"
xmlns:sys="clr-namespace:System;assembly=mscorlib"
xmlns:t="clr-namespace:TreeMaps.Controls;assembly=TreeMaps"
Title="{Binding FrmTitle}"
x:Name="root">
<Window.DataContext>
<src:MainWindowViewModel/>
<src:MainWindowViewModel />
</Window.DataContext>
<Window.Resources>
<ResourceDictionary>
<ResourceDictionary.MergedDictionaries>
<ResourceDictionary Source="../Resources/GraphTemplate.xaml" />
<ResourceDictionary Source="../Resources/GridSplitterTemplate.xaml" />
<ResourceDictionary
Source="../Resources/GraphTemplate.xaml" />
<ResourceDictionary
Source="../Resources/GridSplitterTemplate.xaml" />
</ResourceDictionary.MergedDictionaries>
</ResourceDictionary>
</Window.Resources>
<Grid>
<Grid.RowDefinitions>
<RowDefinition Height="Auto" />
<RowDefinition
Height="Auto" />
<RowDefinition />
<RowDefinition Height="Auto" />
<RowDefinition
Height="Auto" />
</Grid.RowDefinitions>
<ToolBarTray Background="White" Grid.Row="0">
<ToolBarTray
Background="White"
Grid.Row="0">
<ToolBar>
<Button Name="btnOpenAssembly"
<Button
Name="btnOpenAssembly"
Content="{Binding btnOpenAssembly}"
Click="btnOpenAssembly_Click"
Margin="0 0 5 0"></Button>
</ToolBar>
</ToolBarTray>
<TabControl Grid.Row="1" IsEnabled="{Binding MainTabEnable}"> <!-- It is enabled once assembly is loaded. -->
<TabItem Header="{Binding TabDependencyGraph}">
<TabControl
Grid.Row="1"
IsEnabled="{Binding MainTabEnable}">
<!-- It is enabled once assembly is loaded. -->
<TabItem
Header="{Binding TabDependencyGraph}">
<Grid>
<Grid.RowDefinitions>
<RowDefinition Height="Auto" />
<RowDefinition
Height="Auto" />
<RowDefinition />
</Grid.RowDefinitions>
<Grid.ColumnDefinitions>
<ColumnDefinition Width="250px" />
<ColumnDefinition Width="Auto"></ColumnDefinition>
<ColumnDefinition
Width="250px" />
<ColumnDefinition
Width="Auto"></ColumnDefinition>
<ColumnDefinition />
<ColumnDefinition Width="Auto"></ColumnDefinition>
<ColumnDefinition Width="200px" />
<ColumnDefinition
Width="Auto"></ColumnDefinition>
<ColumnDefinition
Width="200px" />
</Grid.ColumnDefinitions>
<ToolBarTray Grid.Row="0" Grid.ColumnSpan="5">
<ToolBarTray
Grid.Row="0"
Grid.ColumnSpan="5">
<ToolBar>
<Button Name="btnRelayout" Click="btnRelayout_Click" Margin="0 0 5 0">Relayout</Button>
<Button Name="btnContinueLayout" Click="btnContinueLayout_Click" Margin="0 0 5 0">Continue Layout</Button>
<Button Name="btnResetGraph" Click="btnResetGraph_Click" Margin="0 0 5 0">Reset Graph</Button>
<Button Name="btnSaveImageGraph" Click="btnSaveImageGraph_Click">Save an Image of Graph</Button>
<Button
Name="btnRelayout"
Click="btnRelayout_Click"
Margin="0 0 5 0">Relayout</Button>
<Button
Name="btnContinueLayout"
Click="btnContinueLayout_Click"
Margin="0 0 5 0">Continue Layout</Button>
<Button
Name="btnResetGraph"
Click="btnResetGraph_Click"
Margin="0 0 5 0">Reset Graph</Button>
<Button
Name="btnSaveImageGraph"
Click="btnSaveImageGraph_Click">Save an Image of Graph</Button>
</ToolBar>
</ToolBarTray>
<tree:SharpTreeView Name="definitionTree"
Grid.Row="1" Grid.Column="0"
<tree:SharpTreeView
Name="definitionTree"
Grid.Row="1"
Grid.Column="0"
Margin="2"
SelectionChanged="definitionTree_SelectedItemChanged">
</tree:SharpTreeView>
<GridSplitter Grid.Column="1"
SelectionChanged="definitionTree_SelectedItemChanged"></tree:SharpTreeView>
<GridSplitter
Grid.Column="1"
Grid.Row="1"
Grid.RowSpan="2"
ResizeDirection="Columns"
HorizontalAlignment="Stretch"
VerticalAlignment="Stretch"
Style="{DynamicResource GridSplitterStyle1}"></GridSplitter>
<Controls:ZoomControl Grid.Row="1" Grid.Column="2" Name="zoom" AlwaysShowZoomButtons="True" HorizontalScrollBarVisibility="Visible" VerticalScrollBarVisibility="Visible">
<Graph:DependencyGraphLayout x:Name="graphLayout"
<Controls:ZoomControl
Grid.Row="1"
Grid.Column="2"
Name="zoom"
AlwaysShowZoomButtons="True"
HorizontalScrollBarVisibility="Visible"
VerticalScrollBarVisibility="Visible">
<Graph:DependencyGraphLayout
x:Name="graphLayout"
LayoutAlgorithmType="LinLog"
OverlapRemovalAlgorithmType="FSA"
HighlightAlgorithmType="Simple"
VertexClick="graphLayout_VertexClick"
/>
VertexClick="graphLayout_VertexClick" />
</Controls:ZoomControl>
<GridSplitter Grid.Column="3"
<GridSplitter
Grid.Column="3"
Grid.Row="2"
ResizeDirection="Columns"
ResizeBehavior="PreviousAndNext"
Style="{DynamicResource GridSplitterStyle1}"></GridSplitter>
<TextBlock Name="txbTypeInfo"
<TextBlock
Name="txbTypeInfo"
Text="{Binding TypeInfo}"
Margin="2" MinWidth="30"
Grid.Column="4" Grid.Row="1"
Margin="2"
MinWidth="30"
Grid.Column="4"
Grid.Row="1"
Padding="5"
Background="LightBlue"/>
Background="LightBlue" />
</Grid>
</TabItem>
<TabItem Header="{Binding TabDependencyMatrix}">
<Graph:TreeMatrixControl x:Name="matrixControl"></Graph:TreeMatrixControl>
<TabItem
Header="{Binding TabDependencyMatrix}">
<Graph:TreeMatrixControl
x:Name="matrixControl"></Graph:TreeMatrixControl>
</TabItem>
<TabItem Header="{Binding TabMetrics}" IsEnabled="{Binding MetrixTabEnable}">
<TabItem
Header="{Binding TabMetrics}"
IsEnabled="{Binding MetrixTabEnable}">
<Grid>
<Grid.RowDefinitions>
<RowDefinition Height="Auto" />
<RowDefinition Height="*" />
<RowDefinition
Height="Auto" />
<RowDefinition
Height="*" />
</Grid.RowDefinitions>
<Grid.ColumnDefinitions>
<ColumnDefinition Width="*" />
<ColumnDefinition
Width="*" />
</Grid.ColumnDefinitions>
<ToolBarTray Background="White" Grid.Row="0" Grid.Column="0">
<ToolBarTray
Background="White"
Grid.Row="0"
Grid.Column="0">
<ToolBar>
<TextBlock Text="Level: " />
<ComboBox IsEditable="False"
<TextBlock
Text="Level: " />
<ComboBox
IsEditable="False"
x:Name="cbxMetrixLevel"
IsDropDownOpen="True"
Width="150" SelectionChanged="MetricLevel_SelectionChanged">
<ComboBoxItem Name="assembly">Assembly</ComboBoxItem>
<ComboBoxItem Name="namespace">Namespace</ComboBoxItem>
<ComboBoxItem Name="type">Type</ComboBoxItem>
<ComboBoxItem Name="field">Field</ComboBoxItem>
<ComboBoxItem Name="method">Method</ComboBoxItem>
Width="150"
SelectionChanged="MetricLevel_SelectionChanged">
<ComboBoxItem
Name="assembly">Assembly</ComboBoxItem>
<ComboBoxItem
Name="namespace">Namespace</ComboBoxItem>
<ComboBoxItem
Name="type">Type</ComboBoxItem>
<ComboBoxItem
Name="field">Field</ComboBoxItem>
<ComboBoxItem
Name="method">Method</ComboBoxItem>
</ComboBox>
<TextBlock Text="Metric: " />
<ComboBox Width="200" x:Name="cbxMetrics" SelectionChanged="Metrics_SelectionChanged" />
<TextBlock
Text="Metric: " />
<ComboBox
Width="200"
x:Name="cbxMetrics"
SelectionChanged="Metrics_SelectionChanged" />
</ToolBar>
</ToolBarTray>
<datavis:TreeMap x:Name="treemap" Grid.Row="1" Grid.Column="0">
<datavis:TreeMap
x:Name="treemap"
Grid.Row="1"
Grid.Column="0">
<datavis:TreeMap.ItemDefinition>
<datavis:TreeMapItemDefinition ValuePath="Instructions.Count">
<datavis:TreeMapItemDefinition
ValuePath="Instructions.Count">
<DataTemplate>
<Border Background="AliceBlue" BorderBrush="Black" BorderThickness="1" ToolTipService.ToolTip="{Binding ToolTip}">
<Border
Background="AliceBlue"
BorderBrush="Black"
BorderThickness="1"
ToolTipService.ToolTip="{Binding ToolTip}">
<StackPanel>
<TextBlock Text="{Binding DeclaringType.Name}" />
<TextBlock Text="{Binding Name}" VerticalAlignment="Center" TextAlignment="Center" TextWrapping="Wrap"/>
<TextBlock
Text="{Binding DeclaringType.Name}" />
<TextBlock
Text="{Binding Name}"
VerticalAlignment="Center"
TextAlignment="Center"
TextWrapping="Wrap" />
</StackPanel>
</Border>
</DataTemplate>
@ -156,47 +215,160 @@ @@ -156,47 +215,160 @@
</datavis:TreeMap>
</Grid>
</TabItem>
</TabControl>
<StatusBar Grid.Row="2">
<StatusBarItem HorizontalAlignment="Left" Visibility="{Binding ProgressbarVisible}">
<StackPanel Orientation="Horizontal">
<TextBlock Text="Loading " />
<TextBlock Text="{Binding FileName}"></TextBlock>
<TextBlock Text="..." Margin="0, 0, 5, 0" />
<ProgressBar IsIndeterminate="True" Width="95" Height="15" />
<TabItem
Header="{Binding TabMetrics}"
IsEnabled="{Binding MetrixTabEnable}">
<TabItem.Resources>
<ObjectDataProvider MethodName="GetValues"
ObjectType="{x:Type sys:Enum}"
x:Key="MetricsLevel">
<ObjectDataProvider.MethodParameters>
<x:Type TypeName="src:MetricsLevel" />
</ObjectDataProvider.MethodParameters>
</ObjectDataProvider>
<ObjectDataProvider MethodName="GetValues"
ObjectType="{x:Type sys:Enum}"
x:Key="Metrics">
<ObjectDataProvider.MethodParameters>
<x:Type TypeName="src:Metrics" />
</ObjectDataProvider.MethodParameters>
</ObjectDataProvider>
<DataTemplate
x:Key="TreeMapDataTemplate">
<Border
Background="AliceBlue"
BorderBrush="Black"
BorderThickness="1">
<StackPanel>
<TextBlock
Text="{Binding DeclaringType.Name}" />
<TextBlock
Text="{Binding Name}"
VerticalAlignment="Center"
TextAlignment="Center"
TextWrapping="Wrap" />
</StackPanel>
</Border>
</DataTemplate>
</TabItem.Resources>
<Grid>
<Grid.RowDefinitions>
<RowDefinition
Height="Auto" />
<RowDefinition
Height="*" />
</Grid.RowDefinitions>
<Grid.ColumnDefinitions>
<ColumnDefinition
Width="*" />
</Grid.ColumnDefinitions>
<ToolBarTray
Background="White"
Grid.Row="0"
Grid.Column="0">
<ToolBar>
<TextBlock Text="Level: " />
<!-- SelectedItem="{Binding MetricsLevelSelectedItem}"-->
<ComboBox Width="200"
ItemsSource="{Binding Source={StaticResource MetricsLevel}}"></ComboBox>
<TextBlock Margin="4,0,0,0" Text="Metric: " />
<ComboBox Width="200" Margin="4,0,0,0"
ItemsSource="{Binding Source={StaticResource Metrics}}"
SelectedItem="{Binding SelectedMetrics}">
</ComboBox>
</ToolBar>
</ToolBarTray>
<!-- http://treemaps.codeplex.com/-->
<t:TreeMaps
Grid.Row="1"
Grid.Column="0"
ItemsSource="{Binding Nodes}"
Background="LightGray"
ItemTemplate="{StaticResource TreeMapDataTemplate}"
ValuePropertyName="{Binding TreeValueProperty}">
</t:TreeMaps>
</Grid>
</TabItem>
</TabControl>
<StatusBar
Grid.Row="2">
<StatusBarItem
HorizontalAlignment="Left"
Visibility="{Binding ProgressbarVisible}">
<StackPanel
Orientation="Horizontal">
<TextBlock
Text="Loading " />
<TextBlock
Text="{Binding FileName}"></TextBlock>
<TextBlock
Text="..."
Margin="0, 0, 5, 0" />
<ProgressBar
IsIndeterminate="True"
Width="95"
Height="15" />
</StackPanel>
</StatusBarItem>
<StatusBarItem HorizontalAlignment="Right" Visibility="{Binding AssemblyStatsVisible}">
<StackPanel Orientation="Horizontal">
<StatusBarItem
HorizontalAlignment="Right"
Visibility="{Binding AssemblyStatsVisible}">
<StackPanel
Orientation="Horizontal">
<StatusBarItem>
<StackPanel Orientation="Horizontal">
<TextBlock Text="Namespaces: " />
<TextBlock Text="{Binding Path=MainModule.Namespaces.Count}" />
<StackPanel
Orientation="Horizontal">
<TextBlock
Text="Namespaces: " />
<TextBlock
Text="{Binding Path=MainModule.Namespaces.Count}" />
</StackPanel>
</StatusBarItem>
<StatusBarItem>
<StackPanel Orientation="Horizontal">
<TextBlock Text="Types: " />
<TextBlock Text="{Binding Path=MainModule.TypesCount}" />
<StackPanel
Orientation="Horizontal">
<TextBlock
Text="Types: " />
<TextBlock
Text="{Binding Path=MainModule.TypesCount}" />
</StackPanel>
</StatusBarItem>
<StatusBarItem>
<StackPanel Orientation="Horizontal">
<TextBlock Text="Methods: " />
<TextBlock Text="{Binding Path=MainModule.MethodsCount}" />
<StackPanel
Orientation="Horizontal">
<TextBlock
Text="Methods: " />
<TextBlock
Text="{Binding Path=MainModule.MethodsCount}" />
</StackPanel>
</StatusBarItem>
<StatusBarItem>
<StackPanel Orientation="Horizontal">
<TextBlock Text="Fields: " />
<TextBlock Text="{Binding Path=MainModule.FieldsCount}" />
<StackPanel
Orientation="Horizontal">
<TextBlock
Text="Fields: " />
<TextBlock
Text="{Binding Path=MainModule.FieldsCount}" />
</StackPanel>
</StatusBarItem>
<StatusBarItem>
<StackPanel Orientation="Horizontal">
<TextBlock Text="IL instructions: " />
<TextBlock Text="{Binding Path=MainModule.InstructionsCount}" />
<StackPanel
Orientation="Horizontal">
<TextBlock
Text="IL instructions: " />
<TextBlock
Text="{Binding Path=MainModule.InstructionsCount}" />
</StackPanel>
</StatusBarItem>
</StackPanel>

10
src/AddIns/Analysis/CodeQuality/Src/MainWindow.xaml.cs

@ -236,6 +236,7 @@ namespace ICSharpCode.CodeQualityAnalysis @@ -236,6 +236,7 @@ namespace ICSharpCode.CodeQualityAnalysis
cbxMetrics.Items.Add(new ComboBoxItem { Content = "Cyclomatic Complexity" });
cbxMetrics.Items.Add(new ComboBoxItem { Content = "Variables" });
}
}
@ -262,10 +263,10 @@ namespace ICSharpCode.CodeQualityAnalysis @@ -262,10 +263,10 @@ namespace ICSharpCode.CodeQualityAnalysis
} else if (level == "Field") {
} else if (level == "Method") {
var r = from ns in MetricsReader.MainModule.Namespaces
from type in ns.Types
from method in type.Methods
select method;
// var r = from ns in MetricsReader.MainModule.Namespaces
// from type in ns.Types
// from method in type.Methods
// select method;
treemap.ItemsSource = from ns in MetricsReader.MainModule.Namespaces
from type in ns.Types
from method in type.Methods
@ -281,5 +282,6 @@ namespace ICSharpCode.CodeQualityAnalysis @@ -281,5 +282,6 @@ namespace ICSharpCode.CodeQualityAnalysis
treemap.ItemDefinition.ValuePath = "Variables";
}
}
}
}

99
src/AddIns/Analysis/CodeQuality/Src/MainWindowModel.cs

@ -16,6 +16,7 @@ using System.Windows.Media.Imaging; @@ -16,6 +16,7 @@ using System.Windows.Media.Imaging;
using ICSharpCode.CodeQualityAnalysis.Controls;
using ICSharpCode.CodeQualityAnalysis.Utility;
using Microsoft.Win32;
namespace ICSharpCode.CodeQualityAnalysis
@ -23,7 +24,20 @@ namespace ICSharpCode.CodeQualityAnalysis @@ -23,7 +24,20 @@ namespace ICSharpCode.CodeQualityAnalysis
/// <summary>
/// Description of MainWindowViewModel.
/// </summary>
public enum MetricsLevel
{
Assembly,
Namespace,
Type,
Method
}
public enum Metrics
{
ILInstructions,
CyclomaticComplexity,
Variables
}
public class MainWindowViewModel :ViewModelBase
{
@ -38,6 +52,7 @@ namespace ICSharpCode.CodeQualityAnalysis @@ -38,6 +52,7 @@ namespace ICSharpCode.CodeQualityAnalysis
this.TabDependencyMatrix = "$Dependency Matrix";
this.TabMetrics = "$Metrics";
#endregion
MetrixTabEnable = false;
}
@ -113,7 +128,89 @@ namespace ICSharpCode.CodeQualityAnalysis @@ -113,7 +128,89 @@ namespace ICSharpCode.CodeQualityAnalysis
public Module MainModule {
get { return mainModule; }
set { mainModule = value;
base.RaisePropertyChanged(() =>this.MainModule);}
base.RaisePropertyChanged(() =>this.MainModule);
}
}
private ObservableCollection<INode> nodes;
public ObservableCollection<INode> Nodes {
get { return nodes; }
set { nodes = value;
base.RaisePropertyChanged(() =>this.Nodes);}
}
//http://stackoverflow.com/questions/58743/databinding-an-enum-property-to-a-combobox-in-wpf#62032 http://stackoverflow.com/questions/58743/databinding-an-enum-property-to-a-combobox-in-wpf#62032
//http://www.ageektrapped.com/blog/the-missing-net-7-displaying-enums-in-wpf/
// http://www.codeproject.com/KB/WPF/FriendlyEnums.aspx
private string treeValueProperty ;
public string TreeValueProperty {
get { return treeValueProperty; }
set { treeValueProperty = value;
base.RaisePropertyChanged(() =>this.TreeValueProperty);}
}
// First Combo
public MetricsLevel MetricsLevel {
get {return MetricsLevel;}
}
// MetricsLevel metricsLevelSelectedItem = MetricsLevel.Assembly;
//
// public MetricsLevel MetricsLevelSelectedItem {
// get { return metricsLevelSelectedItem; }
// set { metricsLevelSelectedItem = value;
// base.RaisePropertyChanged(() =>this.MetricsLevelSelectedItem);
// }
// }
// Second Combo
public Metrics Metrics
{
get {return Metrics;}
}
Metrics selectedMetrics;
public Metrics SelectedMetrics {
get { return selectedMetrics; }
set { selectedMetrics = value;
base.RaisePropertyChanged(() =>this.SelectedMetrics);
ActivateTreemap();
}
}
void ActivateTreemap()
{
var r = from ns in MainModule.Namespaces
from type in ns.Types
from method in type.Methods
select method;
Nodes = new ObservableCollection<INode>(r);
switch (selectedMetrics)
{
case Metrics.ILInstructions:
TreeValueProperty = "Instructions.Count";
break;
case Metrics.CyclomaticComplexity:
TreeValueProperty = Metrics.CyclomaticComplexity.ToString();
break;
case Metrics.Variables:
TreeValueProperty = Metrics.Variables.ToString();
break;
default:
throw new Exception("Invalid value for Metrics");
}
}
}
}

Loading…
Cancel
Save