Browse Source

When renaming a field, ask the user if he also wants to the rename the property.

git-svn-id: svn://svn.sharpdevelop.net/sharpdevelop/trunk@472 1ccf3a8d-04fe-1044-b7c0-cef0b8235c61
shortcuts
Daniel Grunwald 21 years ago
parent
commit
3f4c0950f2
  1. 19
      src/AddIns/Misc/SubversionAddIn/Project/Src/Commands/AutostartCommands.cs
  2. 8
      src/Libraries/NRefactory/Project/Src/Parser/Visitors/AbstractASTVisitor.cs
  3. 4
      src/Main/Base/Project/Src/Dom/NRefactoryResolver/NRefactoryResolver.cs
  4. 43
      src/Main/Base/Project/Src/TextEditor/Commands/ClassMemberMenuBuilder.cs
  5. BIN
      src/Main/StartUp/Project/Resources/StringResources.resources

19
src/AddIns/Misc/SubversionAddIn/Project/Src/Commands/AutostartCommands.cs

@ -1,4 +1,4 @@
// <file> // <file>
// <copyright see="prj:///doc/copyright.txt">2002-2005 AlphaSierraPapa</copyright> // <copyright see="prj:///doc/copyright.txt">2002-2005 AlphaSierraPapa</copyright>
// <license see="prj:///doc/license.txt">GNU General Public License</license> // <license see="prj:///doc/license.txt">GNU General Public License</license>
// <owner name="none" email=""/> // <owner name="none" email=""/>
@ -83,10 +83,23 @@ namespace ICSharpCode.Svn.Commands
void FileRemoving(object sender, FileCancelEventArgs e) void FileRemoving(object sender, FileCancelEventArgs e)
{ {
if (e.Cancel) return; if (e.Cancel) return;
if (e.IsDirectory) return;
if (!AddInOptions.AutomaticallyDeleteFiles) return;
string fullName = Path.GetFullPath(e.FileName); string fullName = Path.GetFullPath(e.FileName);
if (!CanBeVersionControlled(fullName)) return; if (!CanBeVersionControlled(fullName)) return;
if (e.IsDirectory) {
Status status = SvnClient.Instance.Client.SingleStatus(fullName);
switch (status.TextStatus) {
case StatusKind.None:
case StatusKind.Unversioned:
break;
default:
MessageService.ShowMessage("SubversionAddIn cannot delete directories, it is only removed from the project.");
e.OperationAlreadyDone = true;
break;
}
return;
}
// show "cannot delete directories" message even if auto-delete files is off!
if (!AddInOptions.AutomaticallyDeleteFiles) return;
try { try {
Status status = SvnClient.Instance.Client.SingleStatus(fullName); Status status = SvnClient.Instance.Client.SingleStatus(fullName);
switch (status.TextStatus) { switch (status.TextStatus) {

8
src/Libraries/NRefactory/Project/Src/Parser/Visitors/AbstractASTVisitor.cs

@ -1,4 +1,4 @@
// <file> // <file>
// <copyright see="prj:///doc/copyright.txt">2002-2005 AlphaSierraPapa</copyright> // <copyright see="prj:///doc/copyright.txt">2002-2005 AlphaSierraPapa</copyright>
// <license see="prj:///doc/license.txt">GNU General Public License</license> // <license see="prj:///doc/license.txt">GNU General Public License</license>
// <owner name="none" email=""/> // <owner name="none" email=""/>
@ -480,9 +480,9 @@ namespace ICSharpCode.NRefactory.Parser
{ {
Debug.Assert(raiseEventStatement != null); Debug.Assert(raiseEventStatement != null);
Debug.Assert(raiseEventStatement.Parameters != null); Debug.Assert(raiseEventStatement.Parameters != null);
foreach (ParameterDeclarationExpression p in raiseEventStatement.Parameters) { foreach (Expression e in raiseEventStatement.Parameters) {
Debug.Assert(p != null); Debug.Assert(e != null);
p.AcceptVisitor(this, data); e.AcceptVisitor(this, data);
} }
return data; return data;
} }

4
src/Main/Base/Project/Src/Dom/NRefactoryResolver/NRefactoryResolver.cs

@ -650,12 +650,12 @@ namespace ICSharpCode.SharpDevelop.Dom.NRefactoryResolver
if (callingClass == null) if (callingClass == null)
return null; return null;
foreach (IMethod method in callingClass.Methods) { foreach (IMethod method in callingClass.Methods) {
if (method.BodyRegion.IsInside(caretLine, caretColumn)) { if (method.Region.IsInside(caretLine, caretColumn) || method.BodyRegion.IsInside(caretLine, caretColumn)) {
return method; return method;
} }
} }
foreach (IProperty property in callingClass.Properties) { foreach (IProperty property in callingClass.Properties) {
if (property.BodyRegion.IsInside(caretLine, caretColumn)) { if (property.Region.IsInside(caretLine, caretColumn) || property.BodyRegion.IsInside(caretLine, caretColumn)) {
return property; return property;
} }
} }

43
src/Main/Base/Project/Src/TextEditor/Commands/ClassMemberMenuBuilder.cs

@ -64,17 +64,9 @@ namespace ICSharpCode.SharpDevelop.DefaultEditor.Commands
list.Add(cmd); list.Add(cmd);
if (member is IField) { if (member is IField) {
string propertyName = AbstractPropertyCodeGenerator.GetPropertyName(member.Name); IProperty foundProperty = FindProperty(member as IField);
LanguageProperties language = member.DeclaringType.ProjectContent.Language;
IProperty foundProperty = null;
foreach (IProperty prop in member.DeclaringType.Properties) {
if (language.NameComparer.Equals(propertyName, prop.Name)) {
foundProperty = prop;
break;
}
}
if (foundProperty != null) { if (foundProperty != null) {
cmd = new MenuCommand("${res:SharpDevelop.Refactoring.GoToProperty}", GotoProperty); cmd = new MenuCommand("${res:SharpDevelop.Refactoring.GoToProperty}", GotoTagMember);
cmd.Tag = foundProperty; cmd.Tag = foundProperty;
list.Add(cmd); list.Add(cmd);
} else { } else {
@ -92,6 +84,20 @@ namespace ICSharpCode.SharpDevelop.DefaultEditor.Commands
return list.ToArray(); return list.ToArray();
} }
IProperty FindProperty(IField field)
{
string propertyName = AbstractPropertyCodeGenerator.GetPropertyName(field.Name);
LanguageProperties language = field.DeclaringType.ProjectContent.Language;
IProperty foundProperty = null;
foreach (IProperty prop in field.DeclaringType.Properties) {
if (language.NameComparer.Equals(propertyName, prop.Name)) {
foundProperty = prop;
break;
}
}
return foundProperty;
}
void CreateProperty(object sender, EventArgs e) void CreateProperty(object sender, EventArgs e)
{ {
CreateProperty(sender, e, true); CreateProperty(sender, e, true);
@ -124,7 +130,7 @@ namespace ICSharpCode.SharpDevelop.DefaultEditor.Commands
generator.GenerateCode(textEditor.ActiveTextAreaControl.TextArea, list); generator.GenerateCode(textEditor.ActiveTextAreaControl.TextArea, list);
} }
void GotoProperty(object sender, EventArgs e) void GotoTagMember(object sender, EventArgs e)
{ {
JumpToDefinition((IMember)(sender as MenuCommand).Tag); JumpToDefinition((IMember)(sender as MenuCommand).Tag);
} }
@ -149,6 +155,21 @@ namespace ICSharpCode.SharpDevelop.DefaultEditor.Commands
List<Reference> list = RefactoringService.FindReferences(member, null); List<Reference> list = RefactoringService.FindReferences(member, null);
if (list == null) return; if (list == null) return;
RenameReferences(list, newName); RenameReferences(list, newName);
if (member is IField) {
IProperty property = FindProperty((IField)member);
if (property != null) {
string newPropertyName = AbstractPropertyCodeGenerator.GetPropertyName(newName);
if (newPropertyName != newName && newPropertyName != property.Name) {
if (MessageService.AskQuestionFormatted("${res:SharpDevelop.Refactoring.Rename}", "${res:SharpDevelop.Refactoring.RenameFieldAndProperty}", property.FullyQualifiedName, newPropertyName)) {
list = RefactoringService.FindReferences(property, null);
if (list != null) {
RenameReferences(list, newPropertyName);
}
}
}
}
}
} }
void FindOverrides(object sender, EventArgs e) void FindOverrides(object sender, EventArgs e)

BIN
src/Main/StartUp/Project/Resources/StringResources.resources

Binary file not shown.
Loading…
Cancel
Save