diff --git a/src/Main/Base/Project/ICSharpCode.SharpDevelop.addin b/src/Main/Base/Project/ICSharpCode.SharpDevelop.addin index 6448f620b2..388d298d64 100755 --- a/src/Main/Base/Project/ICSharpCode.SharpDevelop.addin +++ b/src/Main/Base/Project/ICSharpCode.SharpDevelop.addin @@ -2028,8 +2028,6 @@ - - @@ -2058,6 +2056,8 @@ + + diff --git a/src/Main/Base/Project/Src/Editor/Commands/DeclaringTypeSubMenuBuilder.cs b/src/Main/Base/Project/Src/Editor/Commands/DeclaringTypeSubMenuBuilder.cs index dc5a7a5bdf..2a474ae27e 100644 --- a/src/Main/Base/Project/Src/Editor/Commands/DeclaringTypeSubMenuBuilder.cs +++ b/src/Main/Base/Project/Src/Editor/Commands/DeclaringTypeSubMenuBuilder.cs @@ -8,31 +8,44 @@ using System.Windows.Controls; using ICSharpCode.Core; using ICSharpCode.Core.Presentation; using ICSharpCode.NRefactory.Semantics; +using ICSharpCode.NRefactory.TypeSystem; namespace ICSharpCode.SharpDevelop.Editor.Commands { /// - /// Description of DeclaringTypeSubMenuBuilder. + /// Builds context menu items with commands related to the declaring type of a member. /// public class DeclaringTypeSubMenuBuilder : IMenuItemBuilder { - public DeclaringTypeSubMenuBuilder() - { - } - - public System.Collections.Generic.IEnumerable BuildItems(Codon codon, object parameter) + public IEnumerable BuildItems(Codon codon, object parameter) { MemberResolveResult resolveResult = GetResolveResult() as MemberResolveResult; if (resolveResult == null) { return null; } - var items = new List(); - items.Add(new MenuItem() { - Header = "TEST" - }); + IMember member = resolveResult.Member; + IType declaringType = member.DeclaringTypeDefinition; + if (declaringType == null) { + return null; + } + + var items = new List(); + var declaringTypeItem = new MenuItem() { + Header = "Declaring type: " + declaringType.Name, + Icon = ClassBrowserIconService.GetIcon(declaringType).ImageSource + }; + + var subItems = MenuService.CreateMenuItems( + null, new TypeResolveResult(declaringType), "/SharpDevelop/ViewContent/TextEditor/ContextMenu/TypeContextMenu"); + if (subItems != null) { + foreach (var item in subItems) { + declaringTypeItem.Items.Add(item); + } + } -// var items = MenuService.CreateMenuItems((UIElement) SD.Workbench, SD.Workbench, ""); + items.Add(declaringTypeItem); + items.Add(new Separator()); return items; }