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

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

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

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

@ -7,6 +7,8 @@
using System; using System;
using System.Drawing; using System.Drawing;
using System.IO;
using ICSharpCode.SharpDevelop;
using ICSharpCode.SharpDevelop.Gui; using ICSharpCode.SharpDevelop.Gui;
namespace ICSharpCode.CodeCoverage namespace ICSharpCode.CodeCoverage
@ -135,6 +137,25 @@ namespace ICSharpCode.CodeCoverage
{ {
ExtTreeView treeView = (ExtTreeView)TreeView; ExtTreeView treeView = (ExtTreeView)TreeView;
treeView.SortNodes(Nodes, false); 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