protected override void Update (CommandArrayInfo ainfo) { var doc = IdeApp.Workbench.ActiveDocument; if (doc == null || doc.FileName == FilePath.Null || doc.ParsedDocument == null) return; var caretOffset = doc.Editor.Caret.Offset; DomRegion region; var resolveResult = doc.GetLanguageItem (caretOffset, out region); if (resolveResult == null) return; var resolveMenu = new CommandInfoSet (); resolveMenu.Text = GettextCatalog.GetString ("Resolve"); var possibleNamespaces = GetPossibleNamespaces (doc, resolveResult); bool addUsing = !(resolveResult is AmbiguousTypeResolveResult); if (addUsing) { foreach (string ns in possibleNamespaces) { var info = resolveMenu.CommandInfos.Add (GettextCatalog.GetString ("Import Namespace {0}", ns), new System.Action (new AddImport (doc, resolveResult, ns, true).Run)); info.Icon = MonoDevelop.Ide.Gui.Stock.AddNamespace; } } bool resolveDirect = !(resolveResult is UnknownMemberResolveResult); if (resolveDirect) { if (resolveMenu.CommandInfos.Count > 0) resolveMenu.CommandInfos.AddSeparator (); foreach (string ns in possibleNamespaces) { resolveMenu.CommandInfos.Add (GettextCatalog.GetString ("Use {0}", ns + "." + doc.Editor.GetTextBetween (region.Begin, region.End)), new System.Action (new AddImport (doc, resolveResult, ns, false).Run)); } } if (resolveMenu.CommandInfos.Count > 0) ainfo.Insert (0, resolveMenu); }
protected override void Update (CommandArrayInfo ainfo) { var doc = IdeApp.Workbench.ActiveDocument; if (doc == null || doc.FileName == FilePath.Null || doc.ParsedDocument == null) return; ResolveResult resolveResult; AstNode node; if (!ResolveAt (doc, out resolveResult, out node)) return; var resolveMenu = new CommandInfoSet (); resolveMenu.Text = GettextCatalog.GetString ("Resolve"); var possibleNamespaces = GetPossibleNamespaces (doc, node, ref resolveResult); foreach (var t in possibleNamespaces.Where (tp => tp.OnlyAddReference)) { var reference = t.Reference; var info = resolveMenu.CommandInfos.Add ( t.GetImportText (), new System.Action (new AddImport (doc, resolveResult, null, reference, true, node).Run) ); info.Icon = MonoDevelop.Ide.Gui.Stock.AddNamespace; } bool addUsing = !(resolveResult is AmbiguousTypeResolveResult); if (addUsing) { foreach (var t in possibleNamespaces.Where (tp => tp.IsAccessibleWithGlobalUsing)) { string ns = t.Namespace; var reference = t.Reference; var info = resolveMenu.CommandInfos.Add ( t.GetImportText (), new System.Action (new AddImport (doc, resolveResult, ns, reference, true, node).Run) ); info.Icon = MonoDevelop.Ide.Gui.Stock.AddNamespace; } } bool resolveDirect = !(resolveResult is UnknownMemberResolveResult); if (resolveDirect) { if (resolveMenu.CommandInfos.Count > 0) resolveMenu.CommandInfos.AddSeparator (); foreach (var t in possibleNamespaces) { string ns = t.Namespace; var reference = t.Reference; resolveMenu.CommandInfos.Add (t.GetInsertNamespaceText (doc.Editor.GetTextBetween (node.StartLocation, node.EndLocation)), new System.Action (new AddImport (doc, resolveResult, ns, reference, false, node).Run)); } } if (resolveMenu.CommandInfos.Count > 0) ainfo.Insert (0, resolveMenu); }
protected override void Update (CommandArrayInfo ainfo) { var doc = IdeApp.Workbench.ActiveDocument; if (doc == null || doc.FileName == FilePath.Null || doc.ParsedDocument == null) return; ResolveResult resolveResult; AstNode node; if (!ResolveAt (doc, out resolveResult, out node)) return; var resolveMenu = new CommandInfoSet (); resolveMenu.Text = GettextCatalog.GetString ("Resolve"); var possibleNamespaces = GetPossibleNamespaces (doc, node, resolveResult); bool addUsing = !(resolveResult is AmbiguousTypeResolveResult); if (addUsing) { foreach (string ns in possibleNamespaces) { var info = resolveMenu.CommandInfos.Add ( string.Format ("using {0};", ns), new System.Action (new AddImport (doc, resolveResult, ns, true).Run) ); info.Icon = MonoDevelop.Ide.Gui.Stock.AddNamespace; } } bool resolveDirect = !(resolveResult is UnknownMemberResolveResult); if (resolveDirect) { if (resolveMenu.CommandInfos.Count > 0) resolveMenu.CommandInfos.AddSeparator (); foreach (string ns in possibleNamespaces) { resolveMenu.CommandInfos.Add (string.Format ("{0}", ns + "." + doc.Editor.GetTextBetween (node.StartLocation, node.EndLocation)), new System.Action (new AddImport (doc, resolveResult, ns, false).Run)); } } if (resolveMenu.CommandInfos.Count > 0) ainfo.Insert (0, resolveMenu); }
protected override void Update (CommandArrayInfo ainfo) { var doc = IdeApp.Workbench.ActiveDocument; if (doc == null || doc.FileName == FilePath.Null || doc.ParsedDocument == null) return; ResolveResult resolveResult; AstNode node; if (!ResolveAt (doc, out resolveResult, out node)) { var location = RefactoringService.GetCorrectResolveLocation (doc, doc.Editor.Caret.Location); resolveResult = GetHeuristicResult (doc, location, ref node); if (resolveResult == null) return; } var resolveMenu = new CommandInfoSet (); resolveMenu.Text = GettextCatalog.GetString ("Resolve"); var possibleNamespaces = GetPossibleNamespaces (doc, node, ref resolveResult); bool addUsing = !(resolveResult is AmbiguousTypeResolveResult); if (addUsing) { foreach (var t in possibleNamespaces.Where (tp => tp.Item2)) { string ns = t.Item1; var info = resolveMenu.CommandInfos.Add ( string.Format ("using {0};", ns), new System.Action (new AddImport (doc, resolveResult, ns, true, node).Run) ); info.Icon = MonoDevelop.Ide.Gui.Stock.AddNamespace; } } bool resolveDirect = !(resolveResult is UnknownMemberResolveResult); if (resolveDirect) { if (resolveMenu.CommandInfos.Count > 0) resolveMenu.CommandInfos.AddSeparator (); if (node is ObjectCreateExpression) node = ((ObjectCreateExpression)node).Type; foreach (var t in possibleNamespaces) { string ns = t.Item1; resolveMenu.CommandInfos.Add (string.Format ("{0}", ns + "." + doc.Editor.GetTextBetween (node.StartLocation, node.EndLocation)), new System.Action (new AddImport (doc, resolveResult, ns, false, node).Run)); } } if (resolveMenu.CommandInfos.Count > 0) ainfo.Insert (0, resolveMenu); }