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 System.Windows.Forms;
6
using ICSharpCode.Core;
7
using ICSharpCode.SharpDevelop.Dom;
8
using ICSharpCode.SharpDevelop.Project;
10
namespace ICSharpCode.SharpDevelop.Gui.ClassBrowser
13
/// This class reperesents the base class for all nodes in the
16
public class ReferenceFolderNode : ExtFolderNode
20
public IProject Project {
26
public override bool Visible {
28
ClassBrowserFilter filter = ClassBrowserPad.Instance.Filter;
29
return (filter & ClassBrowserFilter.ShowProjectReferences) != 0;
33
public ReferenceFolderNode(IProject project)
37
this.project = project;
38
Text = ResourceService.GetString("ICSharpCode.SharpDevelop.Commands.ProjectBrowser.ReferencesNodeText");
40
OpenedIcon = "ProjectBrowser.ReferenceFolder.Open";
41
ClosedIcon = "ProjectBrowser.ReferenceFolder.Closed";
43
Nodes.Add(new TreeNode(ResourceService.GetString("ICSharpCode.SharpDevelop.Gui.Pads.ClassScout.LoadingNode")));
46
protected override void Initialize()
49
UpdateReferenceNodes();
52
public void UpdateReferenceNodes()
55
foreach (ProjectItem item in project.Items) {
56
if (item.ItemType == ItemType.Reference) {
57
new ReferenceNode((ReferenceProjectItem)item).AddTo(this);
63
public class ReferenceNode : ProjectNode
65
ReferenceProjectItem item;
67
public ReferenceNode(ReferenceProjectItem item)
72
SetIcon("Icons.16x16.Reference");
74
Nodes.Add(new TreeNode(StringParser.Parse("${res:ICSharpCode.SharpDevelop.Gui.Pads.ClassScout.LoadingNode}")));
77
protected override void Initialize()
81
IProjectContent pc = AssemblyParserService.GetProjectContentForReference(item);
84
foreach (IClass c in pc.Classes) {
85
TreeNode node = GetNodeByPath(c.Namespace, true);
86
new ClassNode(item.Project, c).AddTo(node);
91
protected override string StripRootNamespace(string directory)
93
string rootNamespace = item.Include;
94
int pos = rootNamespace.IndexOf(',');
96
rootNamespace = rootNamespace.Substring(0, pos);
97
if (directory.ToLowerInvariant().StartsWith(rootNamespace.ToLowerInvariant())) {
98
directory = directory.Substring(rootNamespace.Length);