Browse Source
Rename - Ctrl+R (Replace changed Ctrl+R -> Alt+R), Find references - F12 (VS uses F12 for Go to definition) Go to derived class / override - F11 Go to base class - no shortcut To make these shortcuts work, added items to "Search" menu. Modified AbstractEntity.IsOverridable to return true also for interface members. git-svn-id: svn://svn.sharpdevelop.net/sharpdevelop/trunk@6093 1ccf3a8d-04fe-1044-b7c0-cef0b8235c61pull/1/head
16 changed files with 269 additions and 94 deletions
@ -0,0 +1,30 @@
@@ -0,0 +1,30 @@
|
||||
// <file>
|
||||
// <copyright see="prj:///doc/copyright.txt"/>
|
||||
// <license see="prj:///doc/license.txt"/>
|
||||
// <owner name="Martin Konicek" email="martin.konicek@gmail.com"/>
|
||||
// <version>$Revision: $</version>
|
||||
// </file>
|
||||
using System; |
||||
using ICSharpCode.SharpDevelop.Dom; |
||||
using ICSharpCode.SharpDevelop.Refactoring; |
||||
|
||||
namespace ICSharpCode.SharpDevelop.Editor.Commands |
||||
{ |
||||
/// <summary>
|
||||
/// Description of FindBaseClasses.
|
||||
/// </summary>
|
||||
public class FindBaseClasses : SymbolUnderCaretCommand |
||||
{ |
||||
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; |
||||
ContextActionsHelper.MakePopupWithBaseClasses(classUnderCaret).Open(editor); |
||||
} |
||||
} |
||||
} |
||||
} |
||||
@ -0,0 +1,36 @@
@@ -0,0 +1,36 @@
|
||||
// <file>
|
||||
// <copyright see="prj:///doc/copyright.txt"/>
|
||||
// <license see="prj:///doc/license.txt"/>
|
||||
// <owner name="Martin Konicek" email="martin.konicek@gmail.com"/>
|
||||
// <version>$Revision: $</version>
|
||||
// </file>
|
||||
using System; |
||||
using ICSharpCode.SharpDevelop.Dom; |
||||
using ICSharpCode.SharpDevelop.Refactoring; |
||||
|
||||
namespace ICSharpCode.SharpDevelop.Editor.Commands |
||||
{ |
||||
/// <summary>
|
||||
/// Description of FindDerivedClassesOrOverrides.
|
||||
/// </summary>
|
||||
public class FindDerivedClassesOrOverrides : SymbolUnderCaretCommand |
||||
{ |
||||
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; |
||||
ContextActionsHelper.MakePopupWithDerivedClasses(classUnderCaret).Open(editor); |
||||
} |
||||
if (symbol is MemberResolveResult) { |
||||
IMember memberUnderCaret = ((MemberResolveResult)symbol).ResolvedMember as IMember; |
||||
if (memberUnderCaret != null && memberUnderCaret.IsOverridable) { |
||||
ContextActionsHelper.MakePopupWithOverrides(memberUnderCaret).Open(editor); |
||||
} |
||||
} |
||||
} |
||||
} |
||||
} |
||||
@ -0,0 +1,36 @@
@@ -0,0 +1,36 @@
|
||||
// <file>
|
||||
// <copyright see="prj:///doc/copyright.txt"/>
|
||||
// <license see="prj:///doc/license.txt"/>
|
||||
// <owner name="Martin Konicek" email="martin.konicek@gmail.com"/>
|
||||
// <version>$Revision: $</version>
|
||||
// </file>
|
||||
using System; |
||||
using ICSharpCode.SharpDevelop.Dom; |
||||
using ICSharpCode.SharpDevelop.Refactoring; |
||||
|
||||
namespace ICSharpCode.SharpDevelop.Editor.Commands |
||||
{ |
||||
/// <summary>
|
||||
/// Description of FindReferences.
|
||||
/// </summary>
|
||||
public class FindReferences : SymbolUnderCaretCommand |
||||
{ |
||||
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; |
||||
FindReferencesAndRenameHelper.RunFindReferences(classUnderCaret); |
||||
} |
||||
if (symbol is MemberResolveResult) { |
||||
IMember memberUnderCaret = ((MemberResolveResult)symbol).ResolvedMember as IMember; |
||||
if (memberUnderCaret == null) |
||||
return; |
||||
FindReferencesAndRenameHelper.RunFindReferences(memberUnderCaret); |
||||
} |
||||
} |
||||
} |
||||
} |
||||
@ -0,0 +1,35 @@
@@ -0,0 +1,35 @@
|
||||
// <file>
|
||||
// <copyright see="prj:///doc/copyright.txt"/>
|
||||
// <license see="prj:///doc/license.txt"/>
|
||||
// <owner name="Martin Konicek" email="martin.konicek@gmail.com"/>
|
||||
// <version>$Revision: $</version>
|
||||
// </file>
|
||||
using System; |
||||
using ICSharpCode.Core; |
||||
using ICSharpCode.SharpDevelop.Dom; |
||||
using ICSharpCode.SharpDevelop.Gui; |
||||
|
||||
namespace ICSharpCode.SharpDevelop.Editor.Commands |
||||
{ |
||||
/// <summary>
|
||||
/// A menu command that uses the symbol under the editor's caret.
|
||||
/// </summary>
|
||||
public abstract class SymbolUnderCaretCommand : AbstractMenuCommand |
||||
{ |
||||
public override void Run() |
||||
{ |
||||
ITextEditorProvider editorProvider = WorkbenchSingleton.Workbench.ActiveViewContent as ITextEditorProvider; |
||||
if (editorProvider != null) { |
||||
Run(editorProvider.TextEditor, editorProvider.TextEditor.Caret.Offset); |
||||
} |
||||
} |
||||
|
||||
public void Run(ITextEditor editor, int caretOffset) |
||||
{ |
||||
var resolveResult = ParserService.Resolve(caretOffset, editor.Document, editor.FileName); |
||||
RunImpl(editor, caretOffset, resolveResult); |
||||
} |
||||
|
||||
protected abstract void RunImpl(ITextEditor editor, int caretOffset, ResolveResult symbol); |
||||
} |
||||
} |
||||
Loading…
Reference in new issue