/// <summary> /// Create node for a type (class or interface) /// - defer subnodes population to user selection /// </summary> /// <param name="nodes">In package</param> /// <param name="model">Model information</param> private void AddModel(TreeNodeCollection nodes, FileModel model) { if (model.Members != null) { PluginUI.AddMembers(nodes, model.Members); } if (model.Classes != null) { foreach (ClassModel aClass in model.Classes) { if (aClass.IndexType == null) { TypeTreeNode node = new TypeTreeNode(aClass); AddExplore(node); allTypes.Add(node); nodes.Add(node); } } } }
/// <summary> /// Describe types on user selection /// </summary> /// <param name="node"></param> private void outlineTreeView_BeforeExpand(object sender, TreeViewCancelEventArgs e) { if (e.Node.Nodes.Count == 1 && e.Node.Nodes[0] is ExploreTreeNode) { outlineTreeView.BeginUpdate(); try { e.Node.Nodes.Clear(); ClassModel theClass = ResolveClass(e.Node); if (theClass.IsVoid()) { return; } PluginUI.AddMembers(e.Node.Nodes, SelectMembers(theClass.Members, FlagType.Variable)); PluginUI.AddMembers(e.Node.Nodes, SelectMembers(theClass.Members, FlagType.Getter | FlagType.Setter)); PluginUI.AddMembers(e.Node.Nodes, SelectMembers(theClass.Members, FlagType.Function)); } finally { outlineTreeView.EndUpdate(); } } }