Browse Source

add type members to ClassBrowser

addin-manager-package-subdirectories
Siegfried Pammer 12 years ago
parent
commit
204e1dca5d
  1. 63
      src/Main/Base/Project/Dom/ClassBrowser/WorkspaceTreeNode.cs
  2. 4
      src/Main/SharpDevelop/Dom/ClassBrowser/WorkspaceTreeNodesFactory.cs

63
src/Main/Base/Project/Dom/ClassBrowser/WorkspaceTreeNode.cs

@ -4,6 +4,7 @@ @@ -4,6 +4,7 @@
using System;
using System.Collections.Generic;
using System.Windows.Media;
using ICSharpCode.NRefactory.TypeSystem;
using ICSharpCode.NRefactory.Utils;
using ICSharpCode.TreeView;
using ICSharpCode.SharpDevelop.Project;
@ -220,4 +221,66 @@ namespace ICSharpCode.SharpDevelop.Dom.ClassBrowser @@ -220,4 +221,66 @@ namespace ICSharpCode.SharpDevelop.Dom.ClassBrowser
NavigationService.NavigateTo(target);
}
}
public class MemberTreeNode : ModelCollectionTreeNode
{
IMemberModel model;
public MemberTreeNode(IMemberModel model)
{
if (model == null)
throw new ArgumentNullException("model");
this.model = model;
// disable lazy loading to avoid showing a useless + sign in the tree.
// remove this line if you add child nodes
LazyLoading = false;
}
protected override object GetModel()
{
return model;
}
public override object Icon {
// TODO why do I have to resolve this?
get {
return ClassBrowserIconService.GetIcon(model.Resolve()).ImageSource;
}
}
object cachedText;
public override object Text {
get {
if (cachedText == null)
cachedText = GetText();
return cachedText;
}
}
object GetText()
{
var member = model.Resolve();
if (member == null)
return model.Name;
IAmbience ambience = AmbienceService.GetCurrentAmbience();
ambience.ConversionFlags = ConversionFlags.ShowTypeParameterList | ConversionFlags.ShowParameterList | ConversionFlags.ShowParameterNames;
return ambience.ConvertEntity(member);
}
protected override IComparer<SharpTreeNode> NodeComparer {
get { return NodeTextComparer; }
}
protected override IModelCollection<object> ModelChildren {
get { return ImmutableModelCollection<object>.Empty; }
}
public override void ActivateItem(System.Windows.RoutedEventArgs e)
{
var target = model.Resolve();
if (target != null)
NavigationService.NavigateTo(target);
}
}
}

4
src/Main/SharpDevelop/Dom/ClassBrowser/WorkspaceTreeNodesFactory.cs

@ -22,6 +22,8 @@ namespace ICSharpCode.SharpDevelop.Dom.ClassBrowser @@ -22,6 +22,8 @@ namespace ICSharpCode.SharpDevelop.Dom.ClassBrowser
return typeof(INamespaceModel);
if (model is ITypeDefinitionModel)
return typeof(ITypeDefinitionModel);
if (model is IMemberModel)
return typeof(IMemberModel);
return null;
}
@ -35,6 +37,8 @@ namespace ICSharpCode.SharpDevelop.Dom.ClassBrowser @@ -35,6 +37,8 @@ namespace ICSharpCode.SharpDevelop.Dom.ClassBrowser
return new NamespaceTreeNode((INamespaceModel)model);
if (model is ITypeDefinitionModel)
return new TypeDefinitionTreeNode((ITypeDefinitionModel)model);
if (model is IMemberModel)
return new MemberTreeNode((IMemberModel)model);
return null;
}
}

Loading…
Cancel
Save