Browse Source

Handle sequence points with no filename when opening a file from the Code Coverage window.

git-svn-id: svn://svn.sharpdevelop.net/sharpdevelop/trunk@6443 1ccf3a8d-04fe-1044-b7c0-cef0b8235c61
pull/1/head
Matt Ward 16 years ago
parent
commit
603d50d8b9
  1. 36
      src/AddIns/Analysis/CodeCoverage/Project/Src/CodeCoverageClassTreeNode.cs
  2. 2
      src/AddIns/Analysis/CodeCoverage/Project/Src/CodeCoverageMethodTreeNode.cs
  3. 23
      src/AddIns/Analysis/CodeCoverage/Project/Src/CodeCoverageTreeNode.cs

36
src/AddIns/Analysis/CodeCoverage/Project/Src/CodeCoverageClassTreeNode.cs

@ -20,22 +20,34 @@ namespace ICSharpCode.CodeCoverage @@ -20,22 +20,34 @@ namespace ICSharpCode.CodeCoverage
public override void ActivateItem()
{
if (Nodes.Count > 0) {
CodeCoverageMethodTreeNode methodNode = Nodes[0] as CodeCoverageMethodTreeNode;
if (methodNode != null && methodNode.Method.SequencePoints.Count > 0) {
FileService.OpenFile(methodNode.Method.SequencePoints[0].Document);
foreach (CodeCoverageTreeNode node in Nodes) {
CodeCoverageMethodTreeNode methodNode = node as CodeCoverageMethodTreeNode;
CodeCoverageMethodsTreeNode methodsNode = node as CodeCoverageMethodsTreeNode;
bool openedFile = false;
if (methodNode != null) {
openedFile = OpenFile(methodNode.Method.SequencePoints);
} else if ((methodsNode != null) && (methodsNode.Methods.Count > 0)) {
openedFile = OpenFile(methodsNode.Methods[0].SequencePoints);
}
// when the first node is a property:
CodeCoverageMethodsTreeNode methodsNode = Nodes[0] as CodeCoverageMethodsTreeNode;
if (methodsNode != null && methodsNode.Methods.Count > 0) {
var sequencePoints = methodsNode.Methods[0].SequencePoints;
if (sequencePoints != null) {
FileService.OpenFile(sequencePoints[0].Document);
}
if (openedFile) {
break;
}
}
}
bool OpenFile(List<CodeCoverageSequencePoint> sequencePoints)
{
foreach (CodeCoverageSequencePoint point in sequencePoints) {
if (point.HasDocument()) {
OpenFile(point.Document);
return true;
}
}
return false;
}
protected override void Initialize()
{
Nodes.Clear();
@ -51,7 +63,7 @@ namespace ICSharpCode.CodeCoverage @@ -51,7 +63,7 @@ namespace ICSharpCode.CodeCoverage
}
}
// Add properties.
// Add properties.s
foreach (CodeCoverageProperty property in properties) {
CodeCoveragePropertyTreeNode node = new CodeCoveragePropertyTreeNode(property);
node.AddTo(this);

2
src/AddIns/Analysis/CodeCoverage/Project/Src/CodeCoverageMethodTreeNode.cs

@ -43,7 +43,7 @@ namespace ICSharpCode.CodeCoverage @@ -43,7 +43,7 @@ namespace ICSharpCode.CodeCoverage
}
}
FileService.JumpToFilePosition(firstSequencePoint.Document, line, column);
JumpToFilePosition(firstSequencePoint.Document, line, column);
} else if (Parent != null) {
((ExtTreeNode)Parent).ActivateItem();

23
src/AddIns/Analysis/CodeCoverage/Project/Src/CodeCoverageTreeNode.cs

@ -7,6 +7,8 @@ @@ -7,6 +7,8 @@
using System;
using System.Drawing;
using System.IO;
using ICSharpCode.SharpDevelop;
using ICSharpCode.SharpDevelop.Gui;
namespace ICSharpCode.CodeCoverage
@ -135,6 +137,25 @@ namespace ICSharpCode.CodeCoverage @@ -135,6 +137,25 @@ namespace ICSharpCode.CodeCoverage
{
ExtTreeView treeView = (ExtTreeView)TreeView;
treeView.SortNodes(Nodes, false);
}
}
protected void OpenFile(string fileName)
{
if (FileExists(fileName)) {
FileService.OpenFile(fileName);
}
}
bool FileExists(string fileName)
{
return !String.IsNullOrEmpty(fileName) && File.Exists(fileName);
}
protected void JumpToFilePosition(string fileName, int line, int column)
{
if (FileExists(fileName)) {
FileService.JumpToFilePosition(fileName, line, column);
}
}
}
}

Loading…
Cancel
Save