private void outlineTreeView_Click(object sender, EventArgs e) { if (outlineTreeView.SelectedNode == null) { return; } TreeNode node = outlineTreeView.SelectedNode; TypeTreeNode tnode; if (node is TypeTreeNode) { tnode = node as TypeTreeNode; string filename = (tnode.Tag as string).Split('@')[0]; FileModel model = OpenFile(filename); if (model != null) { ClassModel theClass = model.GetClassByName(tnode.Text); if (!theClass.IsVoid()) { int line = theClass.LineFrom; ScintillaNet.ScintillaControl sci = PluginBase.MainForm.CurrentDocument.SciControl; if (sci != null && !theClass.IsVoid() && line > 0 && line < sci.LineCount) { sci.GotoLineIndent(line); } } } } else if (node is MemberTreeNode && node.Parent is TypeTreeNode) { tnode = node.Parent as TypeTreeNode; string filename = (tnode.Tag as string).Split('@')[0]; FileModel model = OpenFile(filename); if (model != null) { ClassModel theClass = model.GetClassByName(tnode.Text); string memberName = (node.Tag as String).Split('@')[0]; MemberModel member = theClass.Members.Search(memberName, 0, 0); if (member == null) { return; } int line = member.LineFrom; ScintillaNet.ScintillaControl sci = PluginBase.MainForm.CurrentDocument.SciControl; if (sci != null && line > 0 && line < sci.LineCount) { sci.GotoLineIndent(line); } } } }
private ClassModel ResolveClass(TreeNode node) { if (!(node is TypeTreeNode) || node.Tag == null) { return(ClassModel.VoidClass); } ResolvedPath resolved = ResolvePath(node); if (resolved.model == null) { return(ClassModel.VoidClass); } string[] info = (node.Tag as string).Split('@'); FileModel model = resolved.model.GetFile(info[0]); return(model.GetClassByName(info[1])); }