@@ -52,35 +52,43 @@ public class RenameSymbolCommand : ResolveResultMenuCommand
5252 {
5353 public override void Run ( ResolveResult symbol )
5454 {
55- var entity = GetSymbol ( symbol ) ;
56- if ( ( entity is IMember ) && ( ( entity . SymbolKind == SymbolKind . Constructor ) || ( entity . SymbolKind == SymbolKind . Destructor ) ) ) {
55+ RunRename ( GetSymbol ( symbol ) ) ;
56+ }
57+
58+ public static void RunRename ( ISymbol symbol , string newName = null )
59+ {
60+ if ( ( symbol is IMember ) && ( ( symbol . SymbolKind == SymbolKind . Constructor ) || ( symbol . SymbolKind == SymbolKind . Destructor ) ) ) {
5761 // Don't rename constructors/destructors, rename their declaring type instead
58- entity = ( ( IMember ) entity ) . DeclaringType . GetDefinition ( ) ;
62+ symbol = ( ( IMember ) symbol ) . DeclaringType . GetDefinition ( ) ;
5963 }
60- if ( entity != null ) {
61- var project = GetProjectFromSymbol ( entity ) ;
64+ if ( symbol != null ) {
65+ var project = GetProjectFromSymbol ( symbol ) ;
6266 if ( project != null ) {
6367 var languageBinding = project . LanguageBinding ;
64-
65- RenameSymbolDialog renameDialog = new RenameSymbolDialog ( name => CheckName ( name , languageBinding ) )
66- {
67- Owner = SD . Workbench . MainWindow ,
68- OldSymbolName = entity . Name ,
69- NewSymbolName = entity . Name
70- } ;
71- if ( ( bool ) renameDialog . ShowDialog ( ) ) {
72- AsynchronousWaitDialog . ShowWaitDialogForAsyncOperation (
73- "${res:SharpDevelop.Refactoring.Rename}" ,
74- progressMonitor =>
75- FindReferenceService . RenameSymbol ( entity , renameDialog . NewSymbolName , progressMonitor )
76- . ObserveOnUIThread ( )
77- . Subscribe ( error => SD . MessageService . ShowError ( error . Message ) , ex => SD . MessageService . ShowException ( ex ) , ( ) => { } ) ) ;
68+ if ( newName == null ) {
69+ RenameSymbolDialog renameDialog = new RenameSymbolDialog ( name => CheckName ( name , languageBinding ) )
70+ {
71+ Owner = SD . Workbench . MainWindow ,
72+ OldSymbolName = symbol . Name ,
73+ NewSymbolName = symbol . Name
74+ } ;
75+ if ( renameDialog . ShowDialog ( ) == true ) {
76+ newName = renameDialog . NewSymbolName ;
77+ } else {
78+ return ;
79+ }
7880 }
81+ AsynchronousWaitDialog . ShowWaitDialogForAsyncOperation (
82+ "${res:SharpDevelop.Refactoring.Rename}" ,
83+ progressMonitor =>
84+ FindReferenceService . RenameSymbol ( symbol , newName , progressMonitor )
85+ . ObserveOnUIThread ( )
86+ . Subscribe ( error => SD . MessageService . ShowError ( error . Message ) , ex => SD . MessageService . ShowException ( ex ) , ( ) => { } ) ) ;
7987 }
8088 }
8189 }
8290
83- ICSharpCode . SharpDevelop . Project . IProject GetProjectFromSymbol ( ISymbol symbol )
91+ static ICSharpCode . SharpDevelop . Project . IProject GetProjectFromSymbol ( ISymbol symbol )
8492 {
8593 switch ( symbol . SymbolKind ) {
8694 case SymbolKind . None :
@@ -113,7 +121,7 @@ ICSharpCode.SharpDevelop.Project.IProject GetProjectFromSymbol(ISymbol symbol)
113121 }
114122 }
115123
116- bool CheckName ( string name , ILanguageBinding language )
124+ static bool CheckName ( string name , ILanguageBinding language )
117125 {
118126 if ( string . IsNullOrEmpty ( name ) )
119127 return false ;
0 commit comments