diff --git a/src/Main/Base/Project/Src/Editor/Commands/FindBaseClasses.cs b/src/Main/Base/Project/Src/Editor/Commands/FindBaseClasses.cs
index 00ab0bf8b3..24a25aaa3c 100644
--- a/src/Main/Base/Project/Src/Editor/Commands/FindBaseClasses.cs
+++ b/src/Main/Base/Project/Src/Editor/Commands/FindBaseClasses.cs
@@ -5,6 +5,7 @@
// $Revision: $
//
using System;
+using ICSharpCode.Core;
using ICSharpCode.SharpDevelop.Dom;
using ICSharpCode.SharpDevelop.Refactoring;
@@ -17,14 +18,13 @@ namespace ICSharpCode.SharpDevelop.Editor.Commands
{
protected override void RunImpl(ITextEditor editor, int offset, ResolveResult symbol)
{
- if (symbol == null)
- return;
- if (symbol is TypeResolveResult) {
- var classUnderCaret = ((TypeResolveResult)symbol).ResolvedClass;
- if (classUnderCaret == null)
- return;
+ var classUnderCaret = GetClass(symbol);
+ if (classUnderCaret != null)
+ {
ContextActionsHelper.MakePopupWithBaseClasses(classUnderCaret).Open(editor);
+ return;
}
+ MessageService.ShowError("${res:ICSharpCode.Refactoring.NoClassUnderCursorError}");
}
}
}
diff --git a/src/Main/Base/Project/Src/Editor/Commands/FindDerivedClassesOrOverrides.cs b/src/Main/Base/Project/Src/Editor/Commands/FindDerivedClassesOrOverrides.cs
index 7906842b54..98bf5cdcca 100644
--- a/src/Main/Base/Project/Src/Editor/Commands/FindDerivedClassesOrOverrides.cs
+++ b/src/Main/Base/Project/Src/Editor/Commands/FindDerivedClassesOrOverrides.cs
@@ -5,6 +5,7 @@
// $Revision: $
//
using System;
+using ICSharpCode.Core;
using ICSharpCode.SharpDevelop.Dom;
using ICSharpCode.SharpDevelop.Refactoring;
@@ -17,20 +18,18 @@ namespace ICSharpCode.SharpDevelop.Editor.Commands
{
protected override void RunImpl(ITextEditor editor, int offset, ResolveResult symbol)
{
- if (symbol == null)
- return;
- if (symbol is TypeResolveResult) {
- var classUnderCaret = ((TypeResolveResult)symbol).ResolvedClass;
- if (classUnderCaret == null)
- return;
+ var classUnderCaret = GetClass(symbol);
+ if (classUnderCaret != null) {
ContextActionsHelper.MakePopupWithDerivedClasses(classUnderCaret).Open(editor);
+ return;
}
- if (symbol is MemberResolveResult) {
- IMember memberUnderCaret = ((MemberResolveResult)symbol).ResolvedMember as IMember;
- if (memberUnderCaret != null && memberUnderCaret.IsOverridable) {
- ContextActionsHelper.MakePopupWithOverrides(memberUnderCaret).Open(editor);
- }
+ var memberUnderCaret = GetMember(symbol);
+ if (memberUnderCaret != null && memberUnderCaret.IsOverridable)
+ {
+ ContextActionsHelper.MakePopupWithOverrides(memberUnderCaret).Open(editor);
+ return;
}
+ MessageService.ShowError("${res:ICSharpCode.Refactoring.NoClassOrOverridableSymbolUnderCursorError}");
}
}
}
diff --git a/src/Main/Base/Project/Src/Editor/Commands/FindReferences.cs b/src/Main/Base/Project/Src/Editor/Commands/FindReferences.cs
index bb0cb31815..9ac795f323 100644
--- a/src/Main/Base/Project/Src/Editor/Commands/FindReferences.cs
+++ b/src/Main/Base/Project/Src/Editor/Commands/FindReferences.cs
@@ -17,19 +17,19 @@ namespace ICSharpCode.SharpDevelop.Editor.Commands
{
protected override void RunImpl(ITextEditor editor, int offset, ResolveResult symbol)
{
- if (symbol == null)
- return;
- if (symbol is TypeResolveResult) {
- var classUnderCaret = ((TypeResolveResult)symbol).ResolvedClass;
- if (classUnderCaret == null)
- return;
+ var classUnderCaret = GetClass(symbol);
+ if (classUnderCaret != null) {
FindReferencesAndRenameHelper.RunFindReferences(classUnderCaret);
+ return;
}
- if (symbol is MemberResolveResult) {
- IMember memberUnderCaret = ((MemberResolveResult)symbol).ResolvedMember as IMember;
- if (memberUnderCaret == null)
- return;
+ var memberUnderCaret = GetMember(symbol);
+ if (memberUnderCaret != null)
+ {
FindReferencesAndRenameHelper.RunFindReferences(memberUnderCaret);
+ return;
+ }
+ if (symbol is LocalResolveResult) {
+ FindReferencesAndRenameHelper.RunFindReferences((LocalResolveResult)symbol);
}
}
}
diff --git a/src/Main/Base/Project/Src/Editor/Commands/SymbolUnderCaretCommand.cs b/src/Main/Base/Project/Src/Editor/Commands/SymbolUnderCaretCommand.cs
index 1770079dea..cc7630d55b 100644
--- a/src/Main/Base/Project/Src/Editor/Commands/SymbolUnderCaretCommand.cs
+++ b/src/Main/Base/Project/Src/Editor/Commands/SymbolUnderCaretCommand.cs
@@ -30,6 +30,22 @@ namespace ICSharpCode.SharpDevelop.Editor.Commands
RunImpl(editor, caretOffset, resolveResult);
}
+ public IClass GetClass(ResolveResult symbol)
+ {
+ if (symbol == null || !(symbol is TypeResolveResult)) {
+ return null;
+ }
+ return ((TypeResolveResult)symbol).ResolvedClass;
+ }
+
+ public IMember GetMember(ResolveResult symbol)
+ {
+ if (symbol == null || !(symbol is MemberResolveResult)) {
+ return null;
+ }
+ return ((MemberResolveResult)symbol).ResolvedMember;
+ }
+
protected abstract void RunImpl(ITextEditor editor, int caretOffset, ResolveResult symbol);
}
}
diff --git a/src/Main/Base/Project/Src/Services/RefactoringService/FindReferencesAndRenameHelper.cs b/src/Main/Base/Project/Src/Services/RefactoringService/FindReferencesAndRenameHelper.cs
index a801085def..8a9b7a71c7 100644
--- a/src/Main/Base/Project/Src/Services/RefactoringService/FindReferencesAndRenameHelper.cs
+++ b/src/Main/Base/Project/Src/Services/RefactoringService/FindReferencesAndRenameHelper.cs
@@ -545,11 +545,20 @@ namespace ICSharpCode.SharpDevelop.Refactoring
}
}
+ public static void RunFindReferences(LocalResolveResult local)
+ {
+ FindReferencesAndRenameHelper.ShowAsSearchResults(
+ StringParser.Parse("${res:SharpDevelop.Refactoring.ReferencesTo}",
+ new string[,] {{ "Name", local.VariableName }}),
+ RefactoringService.FindReferences(local, null)
+ );
+ }
+
public static ICSharpCode.Core.WinForms.MenuCommand MakeFindReferencesMenuCommand(EventHandler handler)
{
return new ICSharpCode.Core.WinForms.MenuCommand("${res:SharpDevelop.Refactoring.FindReferencesCommand}", handler) {
- ShortcutKeys = System.Windows.Forms.Keys.F12
- };
+ ShortcutKeys = System.Windows.Forms.Keys.F12
+ };
}
#endregion
}
diff --git a/src/Main/Base/Project/Src/Services/RefactoringService/LocalVariableRefactoring.cs b/src/Main/Base/Project/Src/Services/RefactoringService/LocalVariableRefactoring.cs
index 3cd85e865f..aa4f89700b 100644
--- a/src/Main/Base/Project/Src/Services/RefactoringService/LocalVariableRefactoring.cs
+++ b/src/Main/Base/Project/Src/Services/RefactoringService/LocalVariableRefactoring.cs
@@ -18,11 +18,7 @@ namespace ICSharpCode.SharpDevelop.Refactoring
{
RefactoringMenuContext context = (RefactoringMenuContext)Owner;
LocalResolveResult local = (LocalResolveResult)context.ResolveResult;
- FindReferencesAndRenameHelper.ShowAsSearchResults(
- StringParser.Parse("${res:SharpDevelop.Refactoring.ReferencesTo}",
- new string[,] {{ "Name", local.VariableName }}),
- RefactoringService.FindReferences(local, null)
- );
+ FindReferencesAndRenameHelper.RunFindReferences(local);
}
}