Browse Source

Added "References" node to projects in ClassBrowser.

pull/80/head
Andreas Weizel 12 years ago
parent
commit
b682fd42fa
  1. 71
      src/Main/Base/Project/Dom/ClassBrowser/AssemblyReferencesTreeNode.cs
  2. 17
      src/Main/Base/Project/Dom/ClassBrowser/ProjectTreeNode.cs
  3. 1
      src/Main/Base/Project/ICSharpCode.SharpDevelop.csproj

71
src/Main/Base/Project/Dom/ClassBrowser/AssemblyReferencesTreeNode.cs

@ -0,0 +1,71 @@ @@ -0,0 +1,71 @@
// Copyright (c) AlphaSierraPapa for the SharpDevelop Team (for details please see \doc\copyright.txt)
// This code is distributed under the GNU LGPL (for details please see \doc\license.txt)
using System;
using System.Linq;
using ICSharpCode.SharpDevelop.Parser;
namespace ICSharpCode.SharpDevelop.Dom.ClassBrowser
{
/// <summary>
/// "References" tree node.
/// </summary>
public class AssemblyReferencesTreeNode : ModelCollectionTreeNode
{
private IAssemblyModel assemblyModel;
private string text;
private SimpleModelCollection<IAssemblyModel> references;
public AssemblyReferencesTreeNode(IAssemblyModel assemblyModel)
{
if (assemblyModel == null)
throw new ArgumentNullException("assemblyModel");
this.assemblyModel = assemblyModel;
this.text = SD.ResourceService.GetString("ICSharpCode.SharpDevelop.Commands.ProjectBrowser.ReferencesNodeText");
references = new SimpleModelCollection<IAssemblyModel>();
UpdateReferences();
}
protected override IModelCollection<object> ModelChildren
{
get {
return references;
}
}
protected override System.Collections.Generic.IComparer<ICSharpCode.TreeView.SharpTreeNode> NodeComparer
{
get {
return NodeTextComparer;
}
}
public override object Text
{
get {
return text;
}
}
public override object Icon
{
get {
return SD.ResourceService.GetImageSource("ProjectBrowser.ReferenceFolder.Closed");
}
}
void UpdateReferences()
{
references.Clear();
var assemblyParserService = SD.GetRequiredService<IAssemblyParserService>();
if (assemblyModel.References != null) {
foreach (var referencedAssemblyName in assemblyModel.References) {
DefaultAssemblySearcher searcher = new DefaultAssemblySearcher(assemblyModel.Location);
var resolvedFile = searcher.FindAssembly(referencedAssemblyName);
var referenceAssemblyModel = assemblyParserService.GetAssemblyModel(resolvedFile);
references.Add(referenceAssemblyModel);
}
}
}
}
}

17
src/Main/Base/Project/Dom/ClassBrowser/ProjectTreeNode.cs

@ -47,6 +47,23 @@ namespace ICSharpCode.SharpDevelop.Dom.ClassBrowser @@ -47,6 +47,23 @@ namespace ICSharpCode.SharpDevelop.Dom.ClassBrowser
return project.AssemblyModel.Namespaces;
}
}
protected override bool IsSpecialNode()
{
return true;
}
protected override void InsertSpecialNodes()
{
UpdateReferencesNode();
}
void UpdateReferencesNode()
{
this.Children.RemoveAll(n => n is AssemblyReferencesTreeNode);
var refsTreeNode = new AssemblyReferencesTreeNode(project.AssemblyModel);
Children.Insert(0, refsTreeNode);
}
}
}

1
src/Main/Base/Project/ICSharpCode.SharpDevelop.csproj

@ -85,6 +85,7 @@ @@ -85,6 +85,7 @@
<Compile Include="Designer\IDesignerTypeResolutionService.cs" />
<Compile Include="Designer\TypeResolutionService.cs" />
<Compile Include="Dom\ClassBrowser\AssemblyLoadErrorTreeNode.cs" />
<Compile Include="Dom\ClassBrowser\AssemblyReferencesTreeNode.cs" />
<Compile Include="Dom\ClassBrowser\AssemblyTreeNode.cs" />
<Compile Include="Dom\ClassBrowser\BaseTypesTreeNode.cs" />
<Compile Include="Dom\ClassBrowser\ClassBrowserAssemblyModelExtensions.cs" />

Loading…
Cancel
Save