示例#1
0
        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);
                    }
                }
            }
        }
示例#2
0
        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]));
        }