Skip to content

Commit 9a4bacc

Browse files
committed
closes #350
1 parent 43a47d0 commit 9a4bacc

File tree

3 files changed

+57
-5
lines changed

3 files changed

+57
-5
lines changed

RetailCoder.VBE/UI/Refactorings/Rename/RenamePresenter.cs

Lines changed: 33 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -56,31 +56,59 @@ public void Show(Declaration target)
5656

5757
private void OnOkButtonClicked(object sender, EventArgs e)
5858
{
59+
// must rename usages first; if target is a module or a project,
60+
// then renaming the declaration first would invalidate the parse results.
61+
RenameUsages();
62+
5963
if (ModuleDeclarationTypes.Contains(_view.Target.DeclarationType))
6064
{
6165
RenameModule();
6266
}
6367
else
6468
{
65-
RenameDeclaration();
69+
if (_view.Target.DeclarationType == DeclarationType.Project)
70+
{
71+
RenameProject();
72+
}
73+
else
74+
{
75+
RenameDeclaration();
76+
}
6677
}
67-
68-
RenameUsages();
6978
}
7079

7180
private void RenameModule()
7281
{
7382
try
7483
{
75-
var module = _vbe.FindCodeModules(_view.Target.QualifiedName.QualifiedModuleName).Single();
76-
module.Name = _view.NewName;
84+
var module = _vbe.FindCodeModules(_view.Target.QualifiedName.QualifiedModuleName).SingleOrDefault();
85+
if (module != null)
86+
{
87+
module.Name = _view.NewName;
88+
}
7789
}
7890
catch (COMException)
7991
{
8092
MessageBox.Show(RubberduckUI.RenameDialog_ModuleRenameError, RubberduckUI.RenameDialog_Caption);
8193
}
8294
}
8395

96+
private void RenameProject()
97+
{
98+
try
99+
{
100+
var project = _vbe.VBProjects.Cast<VBProject>().FirstOrDefault(p => p.Name == _view.Target.IdentifierName);
101+
if (project != null)
102+
{
103+
project.Name = _view.NewName;
104+
}
105+
}
106+
catch (COMException)
107+
{
108+
MessageBox.Show(RubberduckUI.RenameDialog_ProjectRenameError, RubberduckUI.RenameDialog_Caption);
109+
}
110+
}
111+
84112
private void RenameDeclaration()
85113
{
86114
if (_view.Target.DeclarationType == DeclarationType.Control)

RetailCoder.VBE/UI/RubberduckUI.Designer.cs

Lines changed: 18 additions & 0 deletions
Some generated files are not rendered by default. Learn more about customizing how changed files appear on GitHub.

RetailCoder.VBE/UI/RubberduckUI.resx

Lines changed: 6 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -213,4 +213,10 @@
213213
<data name="SettingsInstructions_ToDoSettings" xml:space="preserve">
214214
<value>Configure markers to be recognized in comments.</value>
215215
</data>
216+
<data name="RenameDialog_ProjectRenameError" xml:space="preserve">
217+
<value>Could not rename project.</value>
218+
</data>
219+
<data name="DeclarationType_Project" xml:space="preserve">
220+
<value>project</value>
221+
</data>
216222
</root>

0 commit comments

Comments
 (0)