Example #1
0
        public SymbolItem Add(ISymbol symbol, ISymbol containerType)
        {
            var item = new SymbolItem(symbol, this, containerType);

            _Symbols.Add(item);
            return(item);
        }
Example #2
0
        public SymbolItem Add(Location location)
        {
            var item = new SymbolItem(location, this);

            _Symbols.Add(item);
            return(item);
        }
Example #3
0
        public SymbolItem Add(SyntaxNode node)
        {
            var item = new SymbolItem(node, this);

            _Symbols.Add(item);
            return(item);
        }
Example #4
0
        public SymbolItem Add(ISymbol symbol, bool includeContainerType)
        {
            var item = new SymbolItem(symbol, this, includeContainerType);

            _Symbols.Add(item);
            return(item);
        }
Example #5
0
 void SetupContextMenu(CSharpSymbolContextMenu menu, SymbolItem item)
 {
     if (item.SyntaxNode != null)
     {
         SetupMenuCommand(item, IconIds.SelectCode, R.CMD_SelectCode, s => {
             if (s.IsExternal)
             {
                 s.SyntaxNode.SelectNode(true);
             }
             else
             {
                 s.Container.SemanticContext.View.SelectNode(s.SyntaxNode, true);
             }
         });
         //SetupMenuCommand(item, KnownImageIds.Copy, "Copy Code", s => Clipboard.SetText(s.SyntaxNode.ToFullString()));
         item.SetSymbolToSyntaxNode();
     }
     if (item.Symbol != null)
     {
         if (item.SyntaxNode == null && item.Symbol.HasSource())
         {
             menu.AddSymbolNodeCommands();
         }
         else
         {
             menu.AddSymbolCommands();
         }
         menu.Items.Add(new Separator());
         menu.SyntaxNode = item.SyntaxNode;
         menu.Symbol     = item.Symbol;
         menu.AddAnalysisCommands();
     }
 }
Example #6
0
        internal static bool FilterByUsage(MemberFilterTypes filterTypes, SymbolItem item)
        {
            var m = MemberFilterTypes.None;

            if (item.Usage.HasAnyFlag(SymbolUsageKind.Usage) == false)
            {
                return(false);
            }
            if (item.Usage.MatchFlags(SymbolUsageKind.Write))
            {
                m |= MemberFilterTypes.Write;
            }
            if (item.Usage.MatchFlags(SymbolUsageKind.TypeCast))
            {
                m |= MemberFilterTypes.TypeCast;
            }
            if (item.Usage.HasAnyFlag(SymbolUsageKind.TypeParameter | SymbolUsageKind.Catch))
            {
                m |= MemberFilterTypes.TypeReference;
            }
            if (item.Usage.HasAnyFlag(SymbolUsageKind.Delegate | SymbolUsageKind.Attach | SymbolUsageKind.Detach))
            {
                m |= MemberFilterTypes.Read;
            }
            return(filterTypes.HasAnyFlag(m));
        }
Example #7
0
        void SetupMenuCommand(SymbolItem item, int imageId, string title, Action <SymbolItem> action)
        {
            var mi = new ThemedMenuItem(imageId, title, (s, args) => {
                var i = (ValueTuple <SymbolItem, Action <SymbolItem> >)((MenuItem)s).Tag;
                i.Item2(i.Item1);
            })
            {
                Tag = (item, action)
            };

            ContextMenu.Items.Add(mi);
        }
Example #8
0
        void SetupMenuCommand(SymbolItem item, int imageId, string title, Action <SymbolItem> action)
        {
            var mi = new ThemedMenuItem {
                Icon   = ThemeHelper.GetImage(imageId),
                Header = new ThemedMenuText(title),
                Tag    = (item, action)
            };

            mi.Click += (s, args) => {
                var i = (ValueTuple <SymbolItem, Action <SymbolItem> >)((MenuItem)s).Tag;
                i.Item2(i.Item1);
            };
            ContextMenu.Items.Add(mi);
        }
Example #9
0
 void SetupContextMenu(CSharpSymbolContextMenu menu, SymbolItem item)
 {
     if (item.SyntaxNode != null)
     {
         SetupMenuCommand(item, KnownImageIds.BlockSelection, "Select Code", s => s.Container.SemanticContext.View.SelectNode(s.SyntaxNode, true));
         //SetupMenuCommand(item, KnownImageIds.Copy, "Copy Code", s => Clipboard.SetText(s.SyntaxNode.ToFullString()));
         item.SetSymbolToSyntaxNode();
     }
     if (item.Symbol != null)
     {
         if (item.SyntaxNode == null && item.Symbol.HasSource())
         {
             SetupMenuCommand(item, KnownImageIds.GoToDefinition, "Go to Definition", s => s.Symbol.GoToSource());
             SetupMenuCommand(item, KnownImageIds.BlockSelection, "Select Code", s => s.Symbol.GetSyntaxNode().SelectNode(true));
         }
         menu.AddSymbolCommands();
         menu.Items.Add(new Separator());
         menu.SyntaxNode = item.SyntaxNode;
         menu.Symbol     = item.Symbol;
         menu.AddAnalysisCommands();
     }
 }
Example #10
0
 public SymbolItem Add(SymbolItem item)
 {
     _Symbols.Add(item);
     return(item);
 }