|
|
@ -4,6 +4,7 @@ |
|
|
|
using System; |
|
|
|
using System; |
|
|
|
using ICSharpCode.Core; |
|
|
|
using ICSharpCode.Core; |
|
|
|
using ICSharpCode.NRefactory.Semantics; |
|
|
|
using ICSharpCode.NRefactory.Semantics; |
|
|
|
|
|
|
|
using ICSharpCode.SharpDevelop; |
|
|
|
using ICSharpCode.SharpDevelop.Editor.Dialogs; |
|
|
|
using ICSharpCode.SharpDevelop.Editor.Dialogs; |
|
|
|
using ICSharpCode.SharpDevelop.Gui; |
|
|
|
using ICSharpCode.SharpDevelop.Gui; |
|
|
|
using ICSharpCode.SharpDevelop.Refactoring; |
|
|
|
using ICSharpCode.SharpDevelop.Refactoring; |
|
|
@ -37,34 +38,33 @@ namespace ICSharpCode.SharpDevelop.Editor.Commands |
|
|
|
{ |
|
|
|
{ |
|
|
|
var entity = GetEntity(symbol); |
|
|
|
var entity = GetEntity(symbol); |
|
|
|
if (entity != null) { |
|
|
|
if (entity != null) { |
|
|
|
RenameSymbolDialog renameDialog = new RenameSymbolDialog(CheckName) |
|
|
|
var project = entity.ParentAssembly.GetProject(); |
|
|
|
{ |
|
|
|
if (project != null) { |
|
|
|
Owner = SD.Workbench.MainWindow, |
|
|
|
var languageBinding = project.LanguageBinding; |
|
|
|
OldSymbolName = entity.Name, |
|
|
|
|
|
|
|
NewSymbolName = entity.Name |
|
|
|
RenameSymbolDialog renameDialog = new RenameSymbolDialog(name => CheckName(name, languageBinding)) |
|
|
|
}; |
|
|
|
{ |
|
|
|
if ((bool) renameDialog.ShowDialog()) { |
|
|
|
Owner = SD.Workbench.MainWindow, |
|
|
|
using (IProgressMonitor progressMonitor = AsynchronousWaitDialog.ShowWaitDialog("${res:SharpDevelop.Refactoring.Rename}")) |
|
|
|
OldSymbolName = entity.Name, |
|
|
|
FindReferenceService.RenameSymbol(entity, renameDialog.NewSymbolName, progressMonitor) |
|
|
|
NewSymbolName = entity.Name |
|
|
|
.ObserveOnUIThread() |
|
|
|
}; |
|
|
|
.Subscribe(error => SD.MessageService.ShowError(error.Message), ex => SD.MessageService.ShowException(ex), () => {}); |
|
|
|
if ((bool) renameDialog.ShowDialog()) { |
|
|
|
|
|
|
|
using (IProgressMonitor progressMonitor = AsynchronousWaitDialog.ShowWaitDialog("${res:SharpDevelop.Refactoring.Rename}")) |
|
|
|
|
|
|
|
FindReferenceService.RenameSymbol(entity, renameDialog.NewSymbolName, progressMonitor) |
|
|
|
|
|
|
|
.ObserveOnUIThread() |
|
|
|
|
|
|
|
.Subscribe(error => SD.MessageService.ShowError(error.Message), ex => SD.MessageService.ShowException(ex), () => {}); |
|
|
|
|
|
|
|
} |
|
|
|
} |
|
|
|
} |
|
|
|
} |
|
|
|
} |
|
|
|
} |
|
|
|
} |
|
|
|
|
|
|
|
|
|
|
|
bool CheckName(string name) |
|
|
|
bool CheckName(string name, ILanguageBinding language) |
|
|
|
{ |
|
|
|
{ |
|
|
|
// TODO implement for current language!
|
|
|
|
|
|
|
|
if (string.IsNullOrEmpty(name)) |
|
|
|
if (string.IsNullOrEmpty(name)) |
|
|
|
return false; |
|
|
|
return false; |
|
|
|
|
|
|
|
|
|
|
|
for (int i = 0; i < name.Length; i++) { |
|
|
|
if ((language.CodeDomProvider == null) || !language.CodeDomProvider.IsValidIdentifier(name)) |
|
|
|
char thisChar = name[i]; |
|
|
|
return false; |
|
|
|
if (!Char.IsLetter(thisChar) |
|
|
|
|
|
|
|
&& !Char.IsDigit(thisChar) |
|
|
|
|
|
|
|
&& (thisChar != '_')) |
|
|
|
|
|
|
|
return false; |
|
|
|
|
|
|
|
} |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
return true; |
|
|
|
return true; |
|
|
|
} |
|
|
|
} |
|
|
|