Example #1
0
        void DocumentTreeView_NodeActivated(object sender, DocumentTreeNodeActivatedEventArgs e)
        {
            e.Handled = true;

            var asmRefNode = e.Node as IAssemblyReferenceNode;

            if (asmRefNode != null)
            {
                var asm = DocumentTreeView.DocumentService.Resolve(asmRefNode.AssemblyRef, asmRefNode.GetModule());
                Dispatcher.CurrentDispatcher.BeginInvoke(DispatcherPriority.Background, new Action(() => {
                    var asmNode = DocumentTreeView.FindNode(asm);
                    if (asmNode != null)
                    {
                        DocumentTreeView.TreeView.SelectItems(new ITreeNodeData[] { asmNode });
                    }
                }));
                return;
            }

            var derivedTypeNode = e.Node as IDerivedTypeNode;

            if (derivedTypeNode != null)
            {
                var td = derivedTypeNode.TypeDef;
                Debug.Assert(td != null);
                Dispatcher.CurrentDispatcher.BeginInvoke(DispatcherPriority.Background, new Action(() => {
                    var typeNode = DocumentTreeView.FindNode(td);
                    if (typeNode != null)
                    {
                        DocumentTreeView.TreeView.SelectItems(new ITreeNodeData[] { typeNode });
                    }
                }));
                return;
            }

            var baseTypeNode = e.Node as IBaseTypeNode;

            if (baseTypeNode != null)
            {
                var tdr = baseTypeNode.TypeDefOrRef;
                Debug.Assert(tdr != null);
                var td = tdr?.ScopeType.ResolveTypeDef();
                Dispatcher.CurrentDispatcher.BeginInvoke(DispatcherPriority.Background, new Action(() => {
                    var typeNode = DocumentTreeView.FindNode(td);
                    if (typeNode != null)
                    {
                        DocumentTreeView.TreeView.SelectItems(new ITreeNodeData[] { typeNode });
                    }
                }));
                return;
            }

            var tab = ActiveTabContentImpl;

            if (tab == null)
            {
                return;
            }
            SetFocus(tab);
        }
Example #2
0
        public bool RaiseNodeActivated(DocumentTreeNodeData node)
        {
            if (node == null)
            {
                throw new ArgumentNullException(nameof(node));
            }
            if (NodeActivated == null)
            {
                return(false);
            }
            var e = new DocumentTreeNodeActivatedEventArgs(node);

            NodeActivated(this, e);
            return(e.Handled);
        }