2
// <copyright see="prj:///doc/copyright.txt"/>
3
// <license see="prj:///doc/license.txt"/>
4
// <owner name="Oakland Software Incorporated" email="general@oaklandsoftware.com"/>
5
// <version>$Revision$</version>
9
using System.Collections;
10
using System.Reflection;
11
using System.Windows.Forms;
15
namespace NoGoop.ObjBrowser.TreeNodes
18
internal class AssemblyTreeNode : BrowserTreeNode,
22
protected TypeLibrary _typeLib;
23
protected Assembly _assembly;
24
protected bool _noClose;
27
internal Assembly Assembly
35
internal TypeLibrary TypeLib
60
internal AssemblyTreeNode(Assembly assembly,
61
TypeLibrary typeLib) : base()
66
MethodInfo entryPoint = null;
69
entryPoint = _assembly.EntryPoint;
73
// Sadly, this can throw for some reason
76
if (entryPoint != null)
82
// Gets the objects to iterate over to make the child nodes
83
protected override ICollection GetChildren()
85
return _assembly.GetModules();
88
// Allocates the correct type of node
89
protected override BrowserTreeNode AllocateChildNode(Object obj)
91
return new ModuleTreeNode((Module)obj);
95
// Determines is this node has children
96
protected override bool HasChildren()
98
return _assembly.GetModules().Length > 0;
102
internal NamespaceTreeNode FindNamespace(String ns)
105
foreach (ModuleTreeNode modNode in LogicalNodes)
107
modNode.ExpandNode();
108
foreach (NamespaceTreeNode nameNode in modNode.LogicalNodes)
110
if (nameNode.Namespace.Equals(ns))
120
internal TypeTreeNode GetTypeNode(Type t)
122
String ns = t.Namespace;
123
bool isNestedType = (t.MemberType == MemberTypes.NestedType);
126
foreach (ModuleTreeNode modNode in LogicalNodes)
128
modNode.ExpandNode();
129
foreach (NamespaceTreeNode nameNode in modNode.LogicalNodes)
131
if (nameNode.Namespace.Equals(ns) ||
132
(ns == null && nameNode.Namespace.Equals("")) )
134
nameNode.ExpandNode();
135
foreach (TypeTreeNode typeNode in
136
nameNode.LogicalNodes)
138
if (typeNode.Type.Equals(t))
142
else if (isNestedType)
144
TypeTreeNode nestedNode =
145
(TypeTreeNode)typeNode.FindMemberNode
146
(t, TypeTreeNode.FIND_NESTED);
147
if (nestedNode != null)
158
public override bool HasCreateObj()
160
if (_assembly.EntryPoint != null)
166
public override bool HasClose()
173
public override void SetupParamPanel()
175
if (_assembly.EntryPoint != null)
177
ObjectBrowser.ParamPanel.Setup
178
(ActionMenuHelper.CalcInvokeActionName(this, false),
180
(((BrowserTree)TreeView).TreeNodePopupCreateObj),
182
_assembly.EntryPoint.GetParameters());
185
base.SetupParamPanel();
188
public override void RemoveLogicalNode()
190
AssemblySupport.CloseAssembly(this);
191
ControlTree.RemoveAssy(_assembly);
192
base.RemoveLogicalNode();
197
public override String GetName()
199
return _assembly.GetName().Name;
202
public override void GetDetailText()
204
base.GetDetailText();
206
if (_typeLib != null)
207
_typeLib.GetDetailText(!TypeLibrary.SHOW_ASSY);
209
AssemblySupport.GetDetailText(_assembly);