~halega/+junk/sharpdevelop

« back to all changes in this revision

Viewing changes to src/Main/Base/Project/Src/Gui/Pads/ClassBrowser/Nodes/ReferenceFolderNode.cs

  • Committer: sk
  • Date: 2011-09-10 05:17:57 UTC
  • Revision ID: halega@halega.com-20110910051757-qfouz1llya9m6boy
4.1.0.7915 Release Candidate 1

Show diffs side-by-side

added added

removed removed

Lines of Context:
 
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)
 
3
 
 
4
using System;
 
5
using System.Windows.Forms;
 
6
using ICSharpCode.Core;
 
7
using ICSharpCode.SharpDevelop.Dom;
 
8
using ICSharpCode.SharpDevelop.Project;
 
9
 
 
10
namespace ICSharpCode.SharpDevelop.Gui.ClassBrowser
 
11
{
 
12
        /// <summary>
 
13
        /// This class reperesents the base class for all nodes in the
 
14
        /// class browser.
 
15
        /// </summary>
 
16
        public class ReferenceFolderNode : ExtFolderNode
 
17
        {
 
18
                IProject project;
 
19
                
 
20
                public IProject Project {
 
21
                        get {
 
22
                                return project;
 
23
                        }
 
24
                }
 
25
                
 
26
                public override bool Visible {
 
27
                        get {
 
28
                                ClassBrowserFilter filter = ClassBrowserPad.Instance.Filter;
 
29
                                return (filter & ClassBrowserFilter.ShowProjectReferences) != 0;
 
30
                        }
 
31
                }
 
32
                
 
33
                public ReferenceFolderNode(IProject project)
 
34
                {
 
35
                        sortOrder = -1;
 
36
                        
 
37
                        this.project = project;
 
38
                        Text = ResourceService.GetString("ICSharpCode.SharpDevelop.Commands.ProjectBrowser.ReferencesNodeText");
 
39
                        
 
40
                        OpenedIcon = "ProjectBrowser.ReferenceFolder.Open";
 
41
                        ClosedIcon = "ProjectBrowser.ReferenceFolder.Closed";
 
42
                        
 
43
                        Nodes.Add(new TreeNode(ResourceService.GetString("ICSharpCode.SharpDevelop.Gui.Pads.ClassScout.LoadingNode")));
 
44
                }
 
45
                
 
46
                protected override void Initialize()
 
47
                {
 
48
                        base.Initialize();
 
49
                        UpdateReferenceNodes();
 
50
                }
 
51
                
 
52
                public void UpdateReferenceNodes()
 
53
                {
 
54
                        Nodes.Clear();
 
55
                        foreach (ProjectItem item in project.Items) {
 
56
                                if (item.ItemType == ItemType.Reference) {
 
57
                                        new ReferenceNode((ReferenceProjectItem)item).AddTo(this);
 
58
                                }
 
59
                        }
 
60
                }
 
61
        }
 
62
        
 
63
        public class ReferenceNode : ProjectNode
 
64
        {
 
65
                ReferenceProjectItem item;
 
66
                
 
67
                public ReferenceNode(ReferenceProjectItem item)
 
68
                {
 
69
                        this.item = item;
 
70
                        Text = item.Name;
 
71
                        
 
72
                        SetIcon("Icons.16x16.Reference");
 
73
                        
 
74
                        Nodes.Add(new TreeNode(StringParser.Parse("${res:ICSharpCode.SharpDevelop.Gui.Pads.ClassScout.LoadingNode}")));
 
75
                }
 
76
                
 
77
                protected override void Initialize()
 
78
                {
 
79
                        isInitialized = true;
 
80
                        
 
81
                        IProjectContent pc = AssemblyParserService.GetProjectContentForReference(item);
 
82
                        if (pc != null) {
 
83
                                Nodes.Clear();
 
84
                                foreach (IClass c in pc.Classes) {
 
85
                                        TreeNode node = GetNodeByPath(c.Namespace, true);
 
86
                                        new ClassNode(item.Project, c).AddTo(node);
 
87
                                }
 
88
                        }
 
89
                }
 
90
                
 
91
                protected override string StripRootNamespace(string directory)
 
92
                {
 
93
                        string rootNamespace = item.Include;
 
94
                        int pos = rootNamespace.IndexOf(',');
 
95
                        if (pos > 0)
 
96
                                rootNamespace = rootNamespace.Substring(0, pos);
 
97
                        if (directory.ToLowerInvariant().StartsWith(rootNamespace.ToLowerInvariant())) {
 
98
                                directory = directory.Substring(rootNamespace.Length);
 
99
                        }
 
100
                        return directory;
 
101
                }
 
102
        }
 
103
}