Example #1
0
 public static void ExpandHandler(TreeNode expandedNode, TreeViewHandler treeViewHandler)
 {
     if (expandedNode.HasVirtualNode())
     {
         var processor = new NodeDevirtualizer(expandedNode, treeViewHandler);
         processor.ProcessNode();
         VirtualNodeHandler.VirtualNodes--;
         expandedNode.Nodes.Remove(expandedNode.FindVirtualNode());
     }
 }
Example #2
0
        public void LoadAssembly(ModuleDefMD manifestModule, string path, bool clear)
        {
            AnalysisHandler.Reset();
            RefNode       = null;
            CurrentModule = null;

            if (clear)
            {
                CurrentTreeView.Nodes.Clear();
            }

            TreeNode file = NewFile(manifestModule, path);

            file.AddTo(CurrentTreeView);

            ModuleDefMD module = manifestModule;

            NameSpaceList.Clear();

            TreeNode moduleNode = NewModule(module);

            moduleNode.AddTo(file);

            CurrentModule = moduleNode;

            if (module.Types.Any())
            {
                foreach (TypeDef type in module.Types.OrderBy(t => t.Name.ToLower()))
                {
                    new TypeHandler(this).HandleType(type, false);
                }
            }

            CurrentModule = moduleNode;

            if (module.GetAssemblyRefs().Any())
            {
                new ReferenceHandler(this).HandleReferences(module.GetAssemblyRefs());
            }

            var processor = new NodeDevirtualizer(RefNode, this);

            processor.ProcessNode();
            processor.WorkerFinished += processor_WorkerFinished;
            RefNode = processor.Node;
        }
Example #3
0
        private void BrowseAndExpandMember()
        {
            object member = _searchPath.FirstOrDefault();

            if (member == null)
            {
                CurrentTreeView.Focus();
                _currentSearchNode.EnsureVisible();
                CurrentTreeView.SelectedNode = _currentSearchNode;

                MainForm.HandleExpand = true;
                return;
            }

            if (member is TypeDef)
            {
                _currentSearchNode =
                   _currentSearchNode.Nodes.Cast<TreeNode>().First(n => n.Text == NewType(member as TypeDef).Text);

                _currentSearchNode.Expand();
            }
            else if (member is MethodDef)
            {
                var method = (MethodDef) member;

                TreeNode newNode = _currentSearchNode.Nodes.Cast<TreeNode>().FirstOrDefault(n => n.Text == NewMethod(method).Text);

                if (newNode != null)
                    _currentSearchNode = newNode;
                else
                {
                    foreach (TreeNode node in _currentSearchNode.Nodes.Cast<TreeNode>().Where(n => n.Tag is PropertyDef || n.Tag is EventDef))
                    {
                        newNode = node.Nodes.Cast<TreeNode>().FirstOrDefault(n => n.Text == NewMethod(method).Text);

                        if (newNode != null)
                        {
                            _currentSearchNode = newNode;
                            break;
                        }
                    }

                    if (newNode == null)
                    {
                        _searchPath.Clear();
                        BrowseAndExpandMember();
                    }
                }

                treeView_NodeMouseClick(this,
                    new TreeNodeMouseClickEventArgs(_currentSearchNode, MouseButtons.Left, 1,
                        _currentSearchNode.Bounds.X, _currentSearchNode.Bounds.Y));

                DataGridViewHandler.SelectTab();
            }
            else if (member is FieldDef)
            {
                _currentSearchNode =
                    _currentSearchNode.Nodes.Cast<TreeNode>().First(n => n.Text == NewField(member as FieldDef).Text);

                treeView_NodeMouseClick(this,
                    new TreeNodeMouseClickEventArgs(_currentSearchNode, MouseButtons.Left, 1,
                        _currentSearchNode.Bounds.X, _currentSearchNode.Bounds.Y));

                DataGridViewHandler.SelectTab();
            }
            else if (member is PropertyDef)
            {
                _currentSearchNode =
                    _currentSearchNode.Nodes.Cast<TreeNode>().First(n => n.Text == NewProperty(member as PropertyDef).Text);

                _currentSearchNode.Expand();
            }
            else if (member is EventDef)
            {
                _currentSearchNode =
                    _currentSearchNode.Nodes.Cast<TreeNode>().First(n => n.Text == NewEvent(member as EventDef).Text);

                _currentSearchNode.Expand();
            }

            _searchPath.RemoveAt(0);

            if (_currentSearchNode.HasVirtualNode())
            {
                var processor = new NodeDevirtualizer(_currentSearchNode, this);
                processor.WorkerFinished += searchProcessor_WorkerFinished;
                processor.ProcessNode();
                VirtualNodeHandler.VirtualNodes--;
                _currentSearchNode.Nodes.Remove(_currentSearchNode.FindVirtualNode());
            }
            else
            {
                BrowseAndExpandMember();
            }
        }
Example #4
0
        public void LoadAssembly(ModuleDefMD manifestModule, string path, bool clear)
        {
            AnalysisHandler.Reset();
            RefNode = null;
            CurrentModule = null;

            if (clear)
                CurrentTreeView.Nodes.Clear();

            TreeNode file = NewFile(manifestModule, path);
            file.AddTo(CurrentTreeView);

            ModuleDefMD module = manifestModule;
            NameSpaceList.Clear();

            TreeNode moduleNode = NewModule(module);

            moduleNode.AddTo(file);

            CurrentModule = moduleNode;

            if (module.Types.Any())
            {
                foreach (TypeDef type in module.Types.OrderBy(t => t.Name.ToLower()))
                {
                    new TypeHandler(this).HandleType(type, false);
                }
            }

            CurrentModule = moduleNode;

            if (module.GetAssemblyRefs().Any())
            {
                new ReferenceHandler(this).HandleReferences(module.GetAssemblyRefs());
            }

            var processor = new NodeDevirtualizer(RefNode, this);
            processor.ProcessNode();
            processor.WorkerFinished += processor_WorkerFinished;
            RefNode = processor.Node;
        }
Example #5
0
        private void BrowseAndExpandMember()
        {
            object member = _searchPath.FirstOrDefault();

            if (member == null)
            {
                CurrentTreeView.Focus();
                _currentSearchNode.EnsureVisible();
                CurrentTreeView.SelectedNode = _currentSearchNode;

                MainForm.HandleExpand = true;
                return;
            }

            if (member is TypeDef)
            {
                _currentSearchNode =
                    _currentSearchNode.Nodes.Cast <TreeNode>().First(n => n.Text == NewType(member as TypeDef).Text);

                _currentSearchNode.Expand();
            }
            else if (member is MethodDef)
            {
                var method = (MethodDef)member;

                TreeNode newNode = _currentSearchNode.Nodes.Cast <TreeNode>().FirstOrDefault(n => n.Text == NewMethod(method).Text);

                if (newNode != null)
                {
                    _currentSearchNode = newNode;
                }
                else
                {
                    foreach (TreeNode node in _currentSearchNode.Nodes.Cast <TreeNode>().Where(n => n.Tag is PropertyDef || n.Tag is EventDef))
                    {
                        newNode = node.Nodes.Cast <TreeNode>().FirstOrDefault(n => n.Text == NewMethod(method).Text);

                        if (newNode != null)
                        {
                            _currentSearchNode = newNode;
                            break;
                        }
                    }

                    if (newNode == null)
                    {
                        _searchPath.Clear();
                        BrowseAndExpandMember();
                    }
                }

                treeView_NodeMouseClick(this,
                                        new TreeNodeMouseClickEventArgs(_currentSearchNode, MouseButtons.Left, 1,
                                                                        _currentSearchNode.Bounds.X, _currentSearchNode.Bounds.Y));

                DataGridViewHandler.SelectTab();
            }
            else if (member is FieldDef)
            {
                _currentSearchNode =
                    _currentSearchNode.Nodes.Cast <TreeNode>().First(n => n.Text == NewField(member as FieldDef).Text);

                treeView_NodeMouseClick(this,
                                        new TreeNodeMouseClickEventArgs(_currentSearchNode, MouseButtons.Left, 1,
                                                                        _currentSearchNode.Bounds.X, _currentSearchNode.Bounds.Y));

                DataGridViewHandler.SelectTab();
            }
            else if (member is PropertyDef)
            {
                _currentSearchNode =
                    _currentSearchNode.Nodes.Cast <TreeNode>().First(n => n.Text == NewProperty(member as PropertyDef).Text);

                _currentSearchNode.Expand();
            }
            else if (member is EventDef)
            {
                _currentSearchNode =
                    _currentSearchNode.Nodes.Cast <TreeNode>().First(n => n.Text == NewEvent(member as EventDef).Text);

                _currentSearchNode.Expand();
            }

            _searchPath.RemoveAt(0);

            if (_currentSearchNode.HasVirtualNode())
            {
                var processor = new NodeDevirtualizer(_currentSearchNode, this);
                processor.WorkerFinished += searchProcessor_WorkerFinished;
                processor.ProcessNode();
                VirtualNodeHandler.VirtualNodes--;
                _currentSearchNode.Nodes.Remove(_currentSearchNode.FindVirtualNode());
            }
            else
            {
                BrowseAndExpandMember();
            }
        }
 public static void ExpandHandler(TreeNode expandedNode, TreeViewHandler treeViewHandler)
 {
     if (expandedNode.HasVirtualNode())
     {
         var processor = new NodeDevirtualizer(expandedNode, treeViewHandler);
         processor.ProcessNode();
         VirtualNodeHandler.VirtualNodes--;
         expandedNode.Nodes.Remove(expandedNode.FindVirtualNode());
     }
 }