1
// Copyright (c) AlphaSierraPapa for the SharpDevelop Team (for details please see \doc\copyright.txt)
2
// This code is distributed under the GNU LGPL (for details please see \doc\license.txt)
5
using ICSharpCode.SharpDevelop;
6
using ICSharpCode.SharpDevelop.Gui;
8
namespace ICSharpCode.CodeCoverage
10
public class CodeCoverageMethodTreeNode : CodeCoverageTreeNode
12
CodeCoverageMethod method;
14
public CodeCoverageMethodTreeNode(CodeCoverageMethod method)
16
CodeCoverageImageListIndex.Method,
17
method.GetVisitedCodeLength(),
18
method.GetUnvisitedCodeLength())
23
public CodeCoverageMethod Method {
24
get { return method; }
27
public override void ActivateItem()
29
if (method != null && method.SequencePoints.Count > 0) {
30
CodeCoverageSequencePoint firstSequencePoint = method.SequencePoints[0];
31
int line = firstSequencePoint.Line;
32
int column = firstSequencePoint.Column;
34
for (int i = 1; i < method.SequencePoints.Count; ++i) {
35
CodeCoverageSequencePoint sequencePoint = method.SequencePoints[0];
36
if (line > sequencePoint.Line) {
37
line = sequencePoint.Line;
38
column = sequencePoint.Column;
42
JumpToFilePosition(firstSequencePoint.Document, line, column);
44
} else if (Parent != null) {
45
((ExtTreeNode)Parent).ActivateItem();
50
/// Gets the string to be used when comparing method tree nodes
54
/// Until we group the getter and setter into its own
55
/// property tree node we return a compare string of the
56
/// form "PropertyName set" so sorting is acceptable.
58
public override string CompareString {
60
if (IsGetterOrSetter(Name)) {
61
string getterSetterPart = Name.Substring(0, 3);
62
string property = Name.Substring(4);
63
return String.Concat(property, ' ', getterSetterPart);
65
return base.CompareString;
70
/// Determines if the name refers to a getter or setter method.
72
static bool IsGetterOrSetter(string name)
74
return name.StartsWith("get_") || name.StartsWith("set_");