public override void PopulateTree (Tree tree)
{
ArrayList ns_dirs = new ArrayList ();
foreach (string asm in asm_dirs) {
ns_dirs.AddRange (Directory.GetDirectories (asm));
}
foreach (string ns in ns_dirs){
string basedir = Directory.GetParent (ns).FullName;
string [] files = Directory.GetFiles (ns);
Node ns_node = null;
string tn = null;
Hashtable nsnodes = new Hashtable();
foreach (string file in files){
if (!file.EndsWith (".xml"))
continue;
if (ns_node == null) {
tn = Path.GetFileName (ns);
tree.HelpSource.Message (TraceLevel.Info, "Processing namespace {0}", tn);
ns_node = tree.LookupNode (tn, "N:" + tn);
string ns_summary_file = EcmaDoc.GetNamespaceFile (basedir, tn);
nsnodes[ns_node] = nsnodes;
if (File.Exists (ns_summary_file)) {
XmlDocument nsSummaryFile = new XmlDocument ();
nsSummaryFile.Load (ns_summary_file);
namespace_realpath [tn] = ns_summary_file;
XmlNode ns_summary = nsSummaryFile.SelectSingleNode ("Namespace/Docs/summary");
if (ns_summary != null && ns_summary.InnerText.Trim () != "To be added." && ns_summary.InnerText != "") {
namespace_summaries [tn] = detached.ImportNode (ns_summary, true);
namespace_remarks [tn] = detached.ImportNode (nsSummaryFile.SelectSingleNode ("Namespace/Docs/remarks"), true);
}
} else if (!namespace_summaries.ContainsKey (tn)) {
namespace_summaries [tn] = null;
namespace_remarks [tn] = null;
}
}
tree.HelpSource.Message (TraceLevel.Verbose, " Processing input file {0}", Path.GetFileName (file));
PopulateClass (tree, tn, ns_node, file);
}
// Sort the list of types in each namespace
foreach (Node ns_node2 in nsnodes.Keys)
ns_node2.Sort();
}
}