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); } }