Browse Source

sort members of TypeDefinition first by symbol kind, then by name in class browser

newNRILSpyDebugger
Siegfried Pammer 12 years ago
parent
commit
0d191ba5b8
  1. 27
      src/Main/Base/Project/Dom/ClassBrowser/TypeDefinitionTreeNode.cs

27
src/Main/Base/Project/Dom/ClassBrowser/TypeDefinitionTreeNode.cs

@ -5,12 +5,14 @@ using System; @@ -5,12 +5,14 @@ using System;
using System.Collections.Generic;
using ICSharpCode.Core.Presentation;
using ICSharpCode.NRefactory.TypeSystem;
using ICSharpCode.NRefactory.Utils;
using ICSharpCode.TreeView;
namespace ICSharpCode.SharpDevelop.Dom.ClassBrowser
{
public class TypeDefinitionTreeNode : ModelCollectionTreeNode
{
static readonly IComparer<SharpTreeNode> TypeMemberNodeComparer = new TypeDefinitionMemberNodeComparer();
ITypeDefinitionModel definition;
public TypeDefinitionTreeNode(ITypeDefinitionModel definition)
@ -40,7 +42,7 @@ namespace ICSharpCode.SharpDevelop.Dom.ClassBrowser @@ -40,7 +42,7 @@ namespace ICSharpCode.SharpDevelop.Dom.ClassBrowser
protected override IComparer<SharpTreeNode> NodeComparer {
get {
return NodeTextComparer;
return TypeMemberNodeComparer;
}
}
@ -64,6 +66,29 @@ namespace ICSharpCode.SharpDevelop.Dom.ClassBrowser @@ -64,6 +66,29 @@ namespace ICSharpCode.SharpDevelop.Dom.ClassBrowser
var ctx = MenuService.ShowContextMenu(null, entityModel, "/SharpDevelop/EntityContextMenu");
}
}
class TypeDefinitionMemberNodeComparer : IComparer<SharpTreeNode>
{
public int Compare(SharpTreeNode x, SharpTreeNode y)
{
var a = x.Model as IMemberModel;
var b = y.Model as IMemberModel;
if (a == null && b == null)
return NodeTextComparer.Compare(x, y);
if (a == null)
return -1;
if (b == null)
return 1;
if (a.SymbolKind < b.SymbolKind)
return -1;
if (a.SymbolKind > b.SymbolKind)
return 1;
return NodeTextComparer.Compare(x, y);
}
}
}
}

Loading…
Cancel
Save