diff --git a/AddIns/ICSharpCode.SharpDevelop.addin b/AddIns/ICSharpCode.SharpDevelop.addin
index 0a19df0712..74ddcaf64b 100644
--- a/AddIns/ICSharpCode.SharpDevelop.addin
+++ b/AddIns/ICSharpCode.SharpDevelop.addin
@@ -1462,6 +1462,31 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/src/Main/Base/Project/ICSharpCode.SharpDevelop.csproj b/src/Main/Base/Project/ICSharpCode.SharpDevelop.csproj
index aa380a5f22..5605a48881 100644
--- a/src/Main/Base/Project/ICSharpCode.SharpDevelop.csproj
+++ b/src/Main/Base/Project/ICSharpCode.SharpDevelop.csproj
@@ -672,7 +672,6 @@
-
@@ -700,6 +699,8 @@
+
+
diff --git a/src/Main/Base/Project/Src/Dom/Implementations/CombinedReturnType.cs b/src/Main/Base/Project/Src/Dom/Implementations/CombinedReturnType.cs
index 1aeda69faf..2f3984799d 100644
--- a/src/Main/Base/Project/Src/Dom/Implementations/CombinedReturnType.cs
+++ b/src/Main/Base/Project/Src/Dom/Implementations/CombinedReturnType.cs
@@ -14,7 +14,7 @@ namespace ICSharpCode.SharpDevelop.Dom
///
/// Combines multiple return types.
///
- public class CombinedReturnType : IReturnType
+ public sealed class CombinedReturnType : IReturnType
{
IList baseTypes;
@@ -23,6 +23,31 @@ namespace ICSharpCode.SharpDevelop.Dom
string @namespace;
string dotnetName;
+ public override bool Equals(object obj)
+ {
+ CombinedReturnType combined = obj as CombinedReturnType;
+ if (combined == null) return false;
+ if (baseTypes.Count != combined.baseTypes.Count) return false;
+ for (int i = 0; i < baseTypes.Count; i++) {
+ if (!baseTypes[i].Equals(combined.baseTypes[i])) {
+ return false;
+ }
+ }
+ return true;
+ }
+
+ public override int GetHashCode()
+ {
+ unchecked {
+ int res = 0;
+ foreach (IReturnType rt in baseTypes) {
+ res *= 27;
+ res += rt.GetHashCode();
+ }
+ return res;
+ }
+ }
+
public CombinedReturnType(IList baseTypes, string fullName, string name, string @namespace, string dotnetName)
{
this.baseTypes = baseTypes;
diff --git a/src/Main/Base/Project/Src/Dom/Implementations/DefaultTypeParameter.cs b/src/Main/Base/Project/Src/Dom/Implementations/DefaultTypeParameter.cs
index 787bb79eda..a2e8f7e883 100644
--- a/src/Main/Base/Project/Src/Dom/Implementations/DefaultTypeParameter.cs
+++ b/src/Main/Base/Project/Src/Dom/Implementations/DefaultTypeParameter.cs
@@ -103,6 +103,27 @@ namespace ICSharpCode.SharpDevelop.Dom
}
}
+ public override bool Equals(object obj)
+ {
+ DefaultTypeParameter tp = obj as DefaultTypeParameter;
+ if (tp == null) return false;
+ if (tp.index != index) return false;
+ if (tp.name != name) return false;
+ if (tp.hasConstructableContraint != hasConstructableContraint) return false;
+ if (tp.method != method) {
+ if (tp.method == null || method == null) return false;
+ if (tp.method.FullyQualifiedName == method.FullyQualifiedName) return false;
+ } else {
+ if (tp.targetClass.FullyQualifiedName == targetClass.FullyQualifiedName) return false;
+ }
+ return true;
+ }
+
+ public override int GetHashCode()
+ {
+ return base.GetHashCode();
+ }
+
public override string ToString()
{
return String.Format("[{0}: {1}]", GetType().Name, name);
diff --git a/src/Main/Base/Project/Src/Dom/Implementations/SearchClassReturnType.cs b/src/Main/Base/Project/Src/Dom/Implementations/SearchClassReturnType.cs
index e332b4ca9c..af415d3900 100644
--- a/src/Main/Base/Project/Src/Dom/Implementations/SearchClassReturnType.cs
+++ b/src/Main/Base/Project/Src/Dom/Implementations/SearchClassReturnType.cs
@@ -56,7 +56,9 @@ namespace ICSharpCode.SharpDevelop.Dom
public override int GetHashCode()
{
- return declaringClass.GetHashCode() ^ name.GetHashCode();
+ unchecked {
+ return declaringClass.GetHashCode() ^ name.GetHashCode() ^ caretLine << 8 + caretColumn;
+ }
}
// we need to use a static Dictionary as cache to provide a easy was to clear all cached
diff --git a/src/Main/Base/Project/Src/Dom/MemberLookupHelper.cs b/src/Main/Base/Project/Src/Dom/MemberLookupHelper.cs
index 43a908ca32..9e9811f35a 100644
--- a/src/Main/Base/Project/Src/Dom/MemberLookupHelper.cs
+++ b/src/Main/Base/Project/Src/Dom/MemberLookupHelper.cs
@@ -515,7 +515,7 @@ namespace ICSharpCode.SharpDevelop.Dom
// Identity conversion:
if (from == to) return true;
- if (from == null) return false;
+ if (from == null || to == null) return false;
if (from.Equals(to)) {
return true;
}
@@ -554,7 +554,7 @@ namespace ICSharpCode.SharpDevelop.Dom
if (toIsDefault && (fromIsDefault || from.ArrayDimensions > 0)) {
IClass c1 = from.GetUnderlyingClass();
IClass c2 = to.GetUnderlyingClass();
- if (c1.IsTypeInInheritanceTree(c2)) {
+ if (c1 != null && c1.IsTypeInInheritanceTree(c2)) {
return true;
}
}
@@ -578,6 +578,10 @@ namespace ICSharpCode.SharpDevelop.Dom
///
public static int GetBetterConversion(IReturnType from, IReturnType to1, IReturnType to2)
{
+ if (from == null) return 0;
+ if (to1 == null) return 2;
+ if (to2 == null) return 1;
+
// See ECMA-334, § 14.4.2.3
// If T1 and T2 are the same type, neither conversion is better.
diff --git a/src/Main/Base/Project/Src/Services/ClassBrowserIcons/ClassBrowserIconService.cs b/src/Main/Base/Project/Src/Services/ClassBrowserIcons/ClassBrowserIconService.cs
index 589efe6cb5..5138398e6b 100644
--- a/src/Main/Base/Project/Src/Services/ClassBrowserIcons/ClassBrowserIconService.cs
+++ b/src/Main/Base/Project/Src/Services/ClassBrowserIcons/ClassBrowserIconService.cs
@@ -26,6 +26,9 @@ namespace ICSharpCode.Core
public const int LiteralIndex = 15;
public const int GotoArrowIndex = 13;
+ public const int LocalVariableIndex = FieldIndex + privateModifierOffset;
+ public const int ParameterIndex = FieldIndex + privateModifierOffset;
+
public const int ClassIndex = 16;
public const int StructIndex = ClassIndex + 1 * 4;
public const int InterfaceIndex = ClassIndex + 2 * 4;
diff --git a/src/Main/Base/Project/Src/TextEditor/Commands/ParserBookmarkMenuBuilderBase.cs b/src/Main/Base/Project/Src/Services/RefactoringService/FindReferencesAndRenameHelper.cs
similarity index 87%
rename from src/Main/Base/Project/Src/TextEditor/Commands/ParserBookmarkMenuBuilderBase.cs
rename to src/Main/Base/Project/Src/Services/RefactoringService/FindReferencesAndRenameHelper.cs
index 5d1d604d32..c4ab6aa7a0 100644
--- a/src/Main/Base/Project/Src/TextEditor/Commands/ParserBookmarkMenuBuilderBase.cs
+++ b/src/Main/Base/Project/Src/Services/RefactoringService/FindReferencesAndRenameHelper.cs
@@ -19,13 +19,12 @@ using ICSharpCode.SharpDevelop.Bookmarks;
using ICSharpCode.SharpDevelop.Gui;
using SearchAndReplace;
using ICSharpCode.SharpDevelop.DefaultEditor.Commands;
-using ICSharpCode.SharpDevelop.Refactoring;
-namespace ICSharpCode.SharpDevelop.DefaultEditor.Commands
+namespace ICSharpCode.SharpDevelop.Refactoring
{
- public class ParserBookmarkMenuBuilderBase
+ public static class FindReferencesAndRenameHelper
{
- protected ProvidedDocumentInformation GetDocumentInformation(string fileName)
+ public static ProvidedDocumentInformation GetDocumentInformation(string fileName)
{
foreach (IViewContent content in WorkbenchSingleton.Workbench.ViewContentCollection) {
if (content is ITextEditorControlProvider &&
@@ -39,12 +38,12 @@ namespace ICSharpCode.SharpDevelop.DefaultEditor.Commands
return new ProvidedDocumentInformation(strategy, fileName, 0);
}
- protected bool IsReadOnly(IClass c)
+ public static bool IsReadOnly(IClass c)
{
return c.CompilationUnit.FileName == null;
}
- protected TextEditorControl JumpToDefinition(IMember member)
+ public static TextEditorControl JumpToDefinition(IMember member)
{
IViewContent viewContent = null;
ICompilationUnit cu = member.DeclaringType.CompilationUnit;
@@ -62,7 +61,7 @@ namespace ICSharpCode.SharpDevelop.DefaultEditor.Commands
return (tecp == null) ? null : tecp.TextEditorControl;
}
- protected TextEditorControl JumpBehindDefinition(IMember member)
+ public static TextEditorControl JumpBehindDefinition(IMember member)
{
IViewContent viewContent = null;
ICompilationUnit cu = member.DeclaringType.CompilationUnit;
@@ -80,7 +79,7 @@ namespace ICSharpCode.SharpDevelop.DefaultEditor.Commands
return (tecp == null) ? null : tecp.TextEditorControl;
}
- protected bool CheckName(string name)
+ public static bool CheckName(string name)
{
if (name == null || name.Length == 0)
return false;
@@ -97,7 +96,7 @@ namespace ICSharpCode.SharpDevelop.DefaultEditor.Commands
return true;
}
- protected struct Modification
+ public struct Modification
{
public IDocument Document;
public int Offset;
@@ -111,7 +110,7 @@ namespace ICSharpCode.SharpDevelop.DefaultEditor.Commands
}
}
- protected void ModifyDocument(List modifications, IDocument doc, int offset, int length, string newName)
+ public static void ModifyDocument(List modifications, IDocument doc, int offset, int length, string newName)
{
foreach (Modification m in modifications) {
if (m.Document == doc) {
@@ -135,7 +134,7 @@ namespace ICSharpCode.SharpDevelop.DefaultEditor.Commands
}
}
- protected void ShowAsSearchResults(string pattern, List list)
+ public static void ShowAsSearchResults(string pattern, List list)
{
if (list == null) return;
List results = new List(list.Count);
@@ -147,7 +146,7 @@ namespace ICSharpCode.SharpDevelop.DefaultEditor.Commands
SearchReplaceInFilesManager.ShowSearchResults(pattern, results);
}
- protected void RenameReferences(List list, string newName)
+ public static void RenameReferences(List list, string newName)
{
List modifiedContents = new List();
List modifications = new List();
diff --git a/src/Main/Base/Project/Src/Services/RefactoringService/LocalVariableRefactoring.cs b/src/Main/Base/Project/Src/Services/RefactoringService/LocalVariableRefactoring.cs
new file mode 100644
index 0000000000..7697944b3d
--- /dev/null
+++ b/src/Main/Base/Project/Src/Services/RefactoringService/LocalVariableRefactoring.cs
@@ -0,0 +1,39 @@
+//
+// 2002-2005 AlphaSierraPapa
+// GNU General Public License
+//
+// $Revision$
+//
+
+using System;
+using System.Collections.Generic;
+using ICSharpCode.Core;
+using ICSharpCode.SharpDevelop;
+using ICSharpCode.SharpDevelop.Dom;
+
+namespace ICSharpCode.SharpDevelop.Refactoring
+{
+ public class FindLocalVariableReferencesCommand : AbstractMenuCommand
+ {
+ public override void Run()
+ {
+ LocalResolveResult local = (LocalResolveResult)Owner;
+ List list = RefactoringService.FindReferences(local, null);
+ FindReferencesAndRenameHelper.ShowAsSearchResults("References to " + local.Field.Name, list);
+ }
+ }
+
+ public class RenameLocalVariableCommand : AbstractMenuCommand
+ {
+ public override void Run()
+ {
+ LocalResolveResult local = (LocalResolveResult)Owner;
+ string newName = MessageService.ShowInputBox("${res:SharpDevelop.Refactoring.Rename}", "${res:SharpDevelop.Refactoring.RenameMemberText}", local.Field.Name);
+ if (!FindReferencesAndRenameHelper.CheckName(newName)) return;
+
+ List list = RefactoringService.FindReferences(local, null);
+ if (list == null) return;
+ FindReferencesAndRenameHelper.RenameReferences(list, newName);
+ }
+ }
+}
diff --git a/src/Main/Base/Project/Src/Services/RefactoringService/RefactoringMenuBuilder.cs b/src/Main/Base/Project/Src/Services/RefactoringService/RefactoringMenuBuilder.cs
index c79cd4c6cd..3351ae7d1a 100644
--- a/src/Main/Base/Project/Src/Services/RefactoringService/RefactoringMenuBuilder.cs
+++ b/src/Main/Base/Project/Src/Services/RefactoringService/RefactoringMenuBuilder.cs
@@ -73,9 +73,14 @@ namespace ICSharpCode.SharpDevelop.Refactoring
item = MakeItem(definitions, ((MemberResolveResult)rr).ResolvedMember);
} else if (rr is TypeResolveResult) {
item = MakeItem(definitions, ((TypeResolveResult)rr).ResolvedClass);
+ } else if (rr is LocalResolveResult) {
+ item = MakeItem((LocalResolveResult)rr, caretLine + 1 == ((LocalResolveResult)rr).Field.Region.BeginLine);
}
if (item != null) {
- resultItems.Add(item);
+ if (rr is LocalResolveResult)
+ resultItems.Insert(0, item);
+ else
+ resultItems.Add(item);
}
// Include menu for current class and method
@@ -100,8 +105,6 @@ namespace ICSharpCode.SharpDevelop.Refactoring
}
}
- // TODO XML.TextAreaContextMenu.Refactoring
-
if (resultItems.Count == 0) {
return new ToolStripItem[0];
} else {
@@ -128,6 +131,19 @@ namespace ICSharpCode.SharpDevelop.Refactoring
return null;
}
+ ToolStripMenuItem MakeItem(LocalResolveResult local, bool isDefinition)
+ {
+ ToolStripMenuItem item = MakeItemInternal(MemberNode.GetText(local.Field),
+ local.IsParameter ? ClassBrowserIconService.ParameterIndex : ClassBrowserIconService.LocalVariableIndex,
+ local.CallingClass.CompilationUnit,
+ isDefinition ? DomRegion.Empty : local.Field.Region);
+ string treePath = "/SharpDevelop/ViewContent/DefaultTextEditor/Refactoring/";
+ treePath += local.IsParameter ? "Parameter" : "LocalVariable";
+ if (isDefinition) treePath += "Definition";
+ MenuService.AddItemsToMenu(item.DropDown.Items, local, treePath);
+ return item;
+ }
+
ToolStripMenuItem MakeItem(List definitions, IMember member)
{
if (member == null) return null;
@@ -143,7 +159,6 @@ namespace ICSharpCode.SharpDevelop.Refactoring
return item;
}
-
ToolStripMenuItem MakeItem(List definitions, IClass c)
{
if (c == null) return null;
@@ -154,9 +169,9 @@ namespace ICSharpCode.SharpDevelop.Refactoring
return MakeItem(c.FullyQualifiedName, new ClassNode(c.ProjectContent.Project, c), c.CompilationUnit, c.Region);
}
- ToolStripMenuItem MakeItem(string title, ExtTreeNode classBrowserTreeNode, ICompilationUnit cu, DomRegion region)
+ ToolStripMenuItem MakeItemInternal(string title, int imageIndex, ICompilationUnit cu, DomRegion region)
{
- ToolStripMenuItem item = new ToolStripMenuItem(classBrowserTreeNode.Text, ClassBrowserIconService.ImageList.Images[classBrowserTreeNode.ImageIndex]);
+ ToolStripMenuItem item = new ToolStripMenuItem(title, ClassBrowserIconService.ImageList.Images[imageIndex]);
//ToolStripMenuItem titleItem = new ToolStripMenuItem(title);
//titleItem.Enabled = false;
@@ -173,7 +188,12 @@ namespace ICSharpCode.SharpDevelop.Refactoring
item.DropDown.Items.Add(gotoDefinitionItem);
item.DropDown.Items.Add(new ToolStripSeparator());
}
-
+ return item;
+ }
+
+ ToolStripMenuItem MakeItem(string title, ExtTreeNode classBrowserTreeNode, ICompilationUnit cu, DomRegion region)
+ {
+ ToolStripMenuItem item = MakeItemInternal(classBrowserTreeNode.Text, classBrowserTreeNode.ImageIndex, cu, region);
MenuService.AddItemsToMenu(item.DropDown.Items, classBrowserTreeNode, classBrowserTreeNode.ContextmenuAddinTreePath);
return item;
}
diff --git a/src/Main/Base/Project/Src/Services/RefactoringService/RefactoringService.cs b/src/Main/Base/Project/Src/Services/RefactoringService/RefactoringService.cs
index 0a745c0d08..668b69a3f2 100644
--- a/src/Main/Base/Project/Src/Services/RefactoringService/RefactoringService.cs
+++ b/src/Main/Base/Project/Src/Services/RefactoringService/RefactoringService.cs
@@ -71,7 +71,7 @@ namespace ICSharpCode.SharpDevelop.Refactoring
///
public static List FindReferences(IMember member, IProgressMonitor progressMonitor)
{
- return RunFindReferences(member.DeclaringType, member, progressMonitor);
+ return RunFindReferences(member.DeclaringType, member, false, progressMonitor);
}
///
@@ -79,16 +79,35 @@ namespace ICSharpCode.SharpDevelop.Refactoring
///
public static List FindReferences(IClass @class, IProgressMonitor progressMonitor)
{
- return RunFindReferences(@class, null, progressMonitor);
+ return RunFindReferences(@class, null, false, progressMonitor);
}
- static List RunFindReferences(IClass ownerClass, IMember member, IProgressMonitor progressMonitor)
+ ///
+ /// Find all references to the specified local variable.
+ ///
+ public static List FindReferences(LocalResolveResult local, IProgressMonitor progressMonitor)
+ {
+ return RunFindReferences(local.CallingClass, local.Field, true, progressMonitor);
+ }
+
+ ///
+ /// This method can be used in three modes:
+ /// 1. Find references to classes (parentClass = targetClass, member = null, isLocal = false)
+ /// 2. Find references to members (parentClass = parent, member = member, isLocal = false)
+ /// 3. Find references to local variables (parentClass = parent, member = local var as field, isLocal = true)
+ ///
+ static List RunFindReferences(IClass ownerClass, IMember member,
+ bool isLocal,
+ IProgressMonitor progressMonitor)
{
if (ParserService.LoadSolutionProjectsThreadRunning) {
MessageService.ShowMessage("${res:SharpDevelop.Refactoring.LoadSolutionProjectsThreadRunning}");
return null;
}
- ownerClass = FixClass(ownerClass);
+ if (!isLocal) {
+ // for local va
+ ownerClass = FixClass(ownerClass);
+ }
List files = GetPossibleFiles(ownerClass, member);
ParseableFileContentEnumerator enumerator = new ParseableFileContentEnumerator(files.ToArray());
List references = new List();
@@ -106,7 +125,7 @@ namespace ICSharpCode.SharpDevelop.Refactoring
progressMonitor.WorkDone = enumerator.Index;
}
- AddReferences(references, ownerClass, member, enumerator.CurrentFileName, enumerator.CurrentFileContent);
+ AddReferences(references, ownerClass, member, isLocal, enumerator.CurrentFileName, enumerator.CurrentFileContent);
}
} finally {
if (progressMonitor != null) {
@@ -117,7 +136,13 @@ namespace ICSharpCode.SharpDevelop.Refactoring
return references;
}
- static void AddReferences(List list, IClass parentClass, IMember member, string fileName, string fileContent)
+ ///
+ /// This method can be used in three modes (like RunFindReferences)
+ ///
+ static void AddReferences(List list,
+ IClass parentClass, IMember member,
+ bool isLocal,
+ string fileName, string fileContent)
{
string lowerFileContent = fileContent.ToLower();
string searchedText; // the text that is searched for
@@ -157,7 +182,12 @@ namespace ICSharpCode.SharpDevelop.Refactoring
// found in this file (the resolver should parse all methods at once)
ResolveResult rr = ParserService.Resolve(expr, position.Y, position.X, fileName, fileContent);
MemberResolveResult mrr = rr as MemberResolveResult;
- if (member != null) {
+ if (isLocal) {
+ // find reference to local variable
+ if (IsReferenceToLocalVariable(rr, member)) {
+ list.Add(new Reference(fileName, pos, searchedText.Length, expr.Expression, rr));
+ }
+ } else if (member != null) {
// find reference to member
if (IsReferenceToMember(member, rr)) {
list.Add(new Reference(fileName, pos, searchedText.Length, expr.Expression, rr));
@@ -304,6 +334,20 @@ namespace ICSharpCode.SharpDevelop.Refactoring
}
#endregion
+ public static bool IsReferenceToLocalVariable(ResolveResult rr, IMember variable)
+ {
+ LocalResolveResult local = rr as LocalResolveResult;
+ if (local == null) {
+ return false;
+ } else {
+ return local.Field.Region.BeginLine == variable.Region.BeginLine
+ && local.Field.Region.BeginColumn == variable.Region.BeginColumn;
+ }
+ }
+
+ ///
+ /// Gets if is a reference to .
+ ///
public static bool IsReferenceToMember(IMember member, ResolveResult rr)
{
MemberResolveResult mrr = rr as MemberResolveResult;
diff --git a/src/Main/Base/Project/Src/TextEditor/Commands/ClassBookmarkMenuBuilder.cs b/src/Main/Base/Project/Src/TextEditor/Commands/ClassBookmarkMenuBuilder.cs
index 02d10ea248..b06a0517a9 100644
--- a/src/Main/Base/Project/Src/TextEditor/Commands/ClassBookmarkMenuBuilder.cs
+++ b/src/Main/Base/Project/Src/TextEditor/Commands/ClassBookmarkMenuBuilder.cs
@@ -26,7 +26,7 @@ namespace ICSharpCode.SharpDevelop.DefaultEditor.Commands
///
/// Build context menu for class members in the text editor.
///
- public class ClassBookmarkMenuBuilder : ParserBookmarkMenuBuilderBase, ISubmenuBuilder
+ public class ClassBookmarkMenuBuilder : ISubmenuBuilder
{
public ToolStripItem[] BuildSubmenu(Codon codon, object owner)
{
@@ -41,7 +41,7 @@ namespace ICSharpCode.SharpDevelop.DefaultEditor.Commands
}
List list = new List();
- if (!IsReadOnly(c)) {
+ if (!FindReferencesAndRenameHelper.IsReadOnly(c)) {
cmd = new MenuCommand("${res:SharpDevelop.Refactoring.RenameCommand}", Rename);
cmd.Tag = c;
list.Add(cmd);
@@ -85,7 +85,7 @@ namespace ICSharpCode.SharpDevelop.DefaultEditor.Commands
IClass c = (IClass)item.Tag;
c = c.DefaultReturnType.GetUnderlyingClass(); // get compound class if class is partial
string newName = MessageService.ShowInputBox("${res:SharpDevelop.Refactoring.Rename}", "${res:SharpDevelop.Refactoring.RenameClassText}", c.Name);
- if (!CheckName(newName)) return;
+ if (!FindReferencesAndRenameHelper.CheckName(newName)) return;
List list = RefactoringService.FindReferences(c, null);
if (list == null) return;
@@ -102,14 +102,14 @@ namespace ICSharpCode.SharpDevelop.DefaultEditor.Commands
}
}
- RenameReferences(list, newName);
+ FindReferencesAndRenameHelper.RenameReferences(list, newName);
}
void AddDeclarationAsReference(List list, string fileName, DomRegion region, string name)
{
if (fileName == null)
return;
- ProvidedDocumentInformation documentInformation = GetDocumentInformation(fileName);
+ ProvidedDocumentInformation documentInformation = FindReferencesAndRenameHelper.GetDocumentInformation(fileName);
int offset = documentInformation.Document.PositionToOffset(new Point(region.BeginColumn - 1, region.BeginLine - 1));
string text = documentInformation.TextBuffer.GetText(offset, Math.Min(name.Length + 30, documentInformation.TextBuffer.Length - offset - 1));
int offsetChange = text.IndexOf(name);
@@ -148,7 +148,7 @@ namespace ICSharpCode.SharpDevelop.DefaultEditor.Commands
if (derivedClass.CompilationUnit.FileName == null) continue;
SearchResult res = new SimpleSearchResult(derivedClass.FullyQualifiedName, new Point(derivedClass.Region.BeginColumn - 1, derivedClass.Region.BeginLine - 1));
- res.ProvidedDocumentInformation = GetDocumentInformation(derivedClass.CompilationUnit.FileName);
+ res.ProvidedDocumentInformation = FindReferencesAndRenameHelper.GetDocumentInformation(derivedClass.CompilationUnit.FileName);
results.Add(res);
}
SearchReplaceInFilesManager.ShowSearchResults("Classes deriving from " + c.Name, results);
@@ -158,7 +158,7 @@ namespace ICSharpCode.SharpDevelop.DefaultEditor.Commands
{
MenuCommand item = (MenuCommand)sender;
IClass c = (IClass)item.Tag;
- ShowAsSearchResults("References to " + c.Name, RefactoringService.FindReferences(c, null));
+ FindReferencesAndRenameHelper.ShowAsSearchResults("References to " + c.Name, RefactoringService.FindReferences(c, null));
}
}
}
diff --git a/src/Main/Base/Project/Src/TextEditor/Commands/ClassMemberMenuBuilder.cs b/src/Main/Base/Project/Src/TextEditor/Commands/ClassMemberMenuBuilder.cs
index eaf68bd701..4ba49643a9 100644
--- a/src/Main/Base/Project/Src/TextEditor/Commands/ClassMemberMenuBuilder.cs
+++ b/src/Main/Base/Project/Src/TextEditor/Commands/ClassMemberMenuBuilder.cs
@@ -25,7 +25,7 @@ namespace ICSharpCode.SharpDevelop.DefaultEditor.Commands
///
/// Build context menu for class members in the text editor.
///
- public class ClassMemberMenuBuilder : ParserBookmarkMenuBuilderBase, ISubmenuBuilder
+ public class ClassMemberMenuBuilder : ISubmenuBuilder
{
public ToolStripItem[] BuildSubmenu(Codon codon, object owner)
{
@@ -42,7 +42,7 @@ namespace ICSharpCode.SharpDevelop.DefaultEditor.Commands
List list = new List();
if (method == null || !method.IsConstructor) {
- if (!IsReadOnly(member.DeclaringType)) {
+ if (!FindReferencesAndRenameHelper.IsReadOnly(member.DeclaringType)) {
cmd = new MenuCommand("${res:SharpDevelop.Refactoring.RenameCommand}", Rename);
cmd.Tag = member;
list.Add(cmd);
@@ -70,7 +70,7 @@ namespace ICSharpCode.SharpDevelop.DefaultEditor.Commands
cmd.Tag = foundProperty;
list.Add(cmd);
} else {
- if (!IsReadOnly(member.DeclaringType)) {
+ if (!FindReferencesAndRenameHelper.IsReadOnly(member.DeclaringType)) {
cmd = new MenuCommand("${res:SharpDevelop.Refactoring.CreateGetter}", CreateGetter);
cmd.Tag = member;
list.Add(cmd);
@@ -112,7 +112,7 @@ namespace ICSharpCode.SharpDevelop.DefaultEditor.Commands
{
MenuCommand item = (MenuCommand)sender;
IMember member = (IMember)item.Tag;
- TextEditorControl textEditor = JumpBehindDefinition(member);
+ TextEditorControl textEditor = FindReferencesAndRenameHelper.JumpBehindDefinition(member);
AbstractPropertyCodeGenerator generator;
if (includeSetter)
@@ -132,7 +132,7 @@ namespace ICSharpCode.SharpDevelop.DefaultEditor.Commands
void GotoTagMember(object sender, EventArgs e)
{
- JumpToDefinition((IMember)(sender as MenuCommand).Tag);
+ FindReferencesAndRenameHelper.JumpToDefinition((IMember)(sender as MenuCommand).Tag);
}
void GoToBase(object sender, EventArgs e)
@@ -141,7 +141,7 @@ namespace ICSharpCode.SharpDevelop.DefaultEditor.Commands
IMember member = (IMember)item.Tag;
IMember baseMember = RefactoringService.FindBaseMember(member);
if (baseMember != null) {
- JumpToDefinition(baseMember);
+ FindReferencesAndRenameHelper.JumpToDefinition(baseMember);
}
}
@@ -150,11 +150,11 @@ namespace ICSharpCode.SharpDevelop.DefaultEditor.Commands
MenuCommand item = (MenuCommand)sender;
IMember member = (IMember)item.Tag;
string newName = MessageService.ShowInputBox("${res:SharpDevelop.Refactoring.Rename}", "${res:SharpDevelop.Refactoring.RenameMemberText}", member.Name);
- if (!CheckName(newName)) return;
+ if (!FindReferencesAndRenameHelper.CheckName(newName)) return;
List list = RefactoringService.FindReferences(member, null);
if (list == null) return;
- RenameReferences(list, newName);
+ FindReferencesAndRenameHelper.RenameReferences(list, newName);
if (member is IField) {
IProperty property = FindProperty((IField)member);
@@ -164,7 +164,7 @@ namespace ICSharpCode.SharpDevelop.DefaultEditor.Commands
if (MessageService.AskQuestionFormatted("${res:SharpDevelop.Refactoring.Rename}", "${res:SharpDevelop.Refactoring.RenameFieldAndProperty}", property.FullyQualifiedName, newPropertyName)) {
list = RefactoringService.FindReferences(property, null);
if (list != null) {
- RenameReferences(list, newPropertyName);
+ FindReferencesAndRenameHelper.RenameReferences(list, newPropertyName);
}
}
}
@@ -184,7 +184,7 @@ namespace ICSharpCode.SharpDevelop.DefaultEditor.Commands
IMember m = RefactoringService.FindSimilarMember(derivedClass, member);
if (m != null && !m.Region.IsEmpty) {
SearchResult res = new SimpleSearchResult(m.FullyQualifiedName, new Point(m.Region.BeginColumn - 1, m.Region.BeginLine - 1));
- res.ProvidedDocumentInformation = GetDocumentInformation(derivedClass.CompilationUnit.FileName);
+ res.ProvidedDocumentInformation = FindReferencesAndRenameHelper.GetDocumentInformation(derivedClass.CompilationUnit.FileName);
results.Add(res);
}
}
@@ -195,7 +195,7 @@ namespace ICSharpCode.SharpDevelop.DefaultEditor.Commands
{
MenuCommand item = (MenuCommand)sender;
IMember member = (IMember)item.Tag;
- ShowAsSearchResults("References to " + member.Name, RefactoringService.FindReferences(member, null));
+ FindReferencesAndRenameHelper.ShowAsSearchResults("References to " + member.Name, RefactoringService.FindReferences(member, null));
}
}
}