Skip to content

Commit 6f11c67

Browse files
committed
This should work...
1 parent d41e7ba commit 6f11c67

9 files changed

+129
-61
lines changed

RetailCoder.VBE/Root/CommandBarsModule.cs

Lines changed: 4 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -8,6 +8,7 @@
88
using Ninject;
99
using Ninject.Extensions.NamedScope;
1010
using Ninject.Modules;
11+
using Ninject.Parameters;
1112
using Rubberduck.Navigation;
1213
using Rubberduck.UI.Command;
1314
using Rubberduck.UI.Command.MenuItems;
@@ -182,7 +183,7 @@ private IMenuItem GetRefactoringsParentMenu()
182183
{
183184
var items = new IMenuItem[]
184185
{
185-
_kernel.Get<RefactorRenameCommandMenuItem>(),
186+
_kernel.Get<CodePaneRefactorRenameCommandMenuItem>(),
186187
_kernel.Get<RefactorExtractMethodCommandMenuItem>(),
187188
_kernel.Get<RefactorReorderParametersCommandMenuItem>(),
188189
_kernel.Get<RefactorRemoveParametersCommandMenuItem>(),
@@ -238,15 +239,15 @@ private IEnumerable<IMenuItem> GetFormDesignerContextMenuItems()
238239
{
239240
return new IMenuItem[]
240241
{
241-
_kernel.Get<RefactorRenameCommandMenuItem>(),
242+
_kernel.Get<FormDesignerRefactorRenameCommandMenuItem>(),
242243
};
243244
}
244245

245246
private IEnumerable<IMenuItem> GetProjectWindowContextMenuItems()
246247
{
247248
return new IMenuItem[]
248249
{
249-
_kernel.Get<RefactorRenameCommandMenuItem>(),
250+
_kernel.Get<ProjectExplorerRefactorRenameCommandMenuItem>(),
250251
_kernel.Get<FindSymbolCommandMenuItem>(),
251252
_kernel.Get<FindAllReferencesCommandMenuItem>(),
252253
_kernel.Get<FindAllImplementationsCommandMenuItem>(),

RetailCoder.VBE/Rubberduck.csproj

Lines changed: 6 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -439,6 +439,8 @@
439439
<Compile Include="UI\Command\MenuItems\AddTestMethodCommandMenuItem.cs" />
440440
<Compile Include="UI\Command\MenuItems\AddTestMethodExpectedErrorCommandMenuItem.cs" />
441441
<Compile Include="UI\Command\MenuItems\AddTestModuleCommandMenuItem.cs" />
442+
<Compile Include="UI\Command\MenuItems\ProjectExplorerRefactorRenameCommandMenuItem.cs" />
443+
<Compile Include="UI\Command\MenuItems\FormDesignerRefactorRenameCommandMenuItem.cs" />
442444
<Compile Include="UI\Command\MenuItems\FindAllReferencesCommandMenuItem.cs" />
443445
<Compile Include="UI\Command\MenuItems\FindSymbolCommandMenuItem.cs" />
444446
<Compile Include="UI\Command\MenuItems\FindAllImplementationsCommandMenuItem.cs" />
@@ -475,14 +477,16 @@
475477
<Compile Include="UI\Command\MenuItems\RefactorExtractMethodCommandMenuItem.cs" />
476478
<Compile Include="UI\Command\MenuItems\ParentMenus\RefactoringsParentMenu.cs" />
477479
<Compile Include="UI\Command\MenuItems\RefactorRemoveParametersCommandMenuItem.cs" />
480+
<Compile Include="UI\Command\Refactorings\FormDesignerRefactorRenameCommand.cs" />
481+
<Compile Include="UI\Command\Refactorings\ProjectExplorerRefactorRenameCommand.cs" />
478482
<Compile Include="UI\Command\Refactorings\RefactorEncapsulateFieldCommand.cs" />
479483
<Compile Include="UI\Command\Refactorings\RefactorImplementInterfaceCommand.cs" />
480484
<Compile Include="UI\Command\Refactorings\RefactorExtractInterfaceCommand.cs" />
481485
<Compile Include="UI\Command\Refactorings\RefactorIntroduceFieldCommand.cs" />
482486
<Compile Include="UI\Command\Refactorings\RefactorIntroduceParameterCommand.cs" />
483487
<Compile Include="UI\Command\Refactorings\RefactorMoveCloserToUsageCommand.cs" />
484-
<Compile Include="UI\Command\Refactorings\RefactorRenameCommand.cs" />
485-
<Compile Include="UI\Command\MenuItems\RefactorRenameCommandMenuItem.cs" />
488+
<Compile Include="UI\Command\Refactorings\CodePaneRefactorRenameCommand.cs" />
489+
<Compile Include="UI\Command\MenuItems\CodePaneRefactorRenameCommandMenuItem.cs" />
486490
<Compile Include="UI\Command\Refactorings\RefactorReorderParametersCommand.cs" />
487491
<Compile Include="UI\Command\MenuItems\RefactorReorderParametersCommandMenuItem.cs" />
488492
<Compile Include="UI\Command\MenuItems\ParentMenus\RubberduckParentMenu.cs" />

RetailCoder.VBE/UI/Command/MenuItems/RefactorRenameCommandMenuItem.cs renamed to RetailCoder.VBE/UI/Command/MenuItems/CodePaneRefactorRenameCommandMenuItem.cs

Lines changed: 2 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -1,13 +1,12 @@
1-
using System;
21
using System.Windows.Input;
32
using Rubberduck.Parsing.VBA;
43
using Rubberduck.UI.Command.MenuItems.ParentMenus;
54

65
namespace Rubberduck.UI.Command.MenuItems
76
{
8-
public class RefactorRenameCommandMenuItem : CommandMenuItemBase
7+
public class CodePaneRefactorRenameCommandMenuItem : CommandMenuItemBase
98
{
10-
public RefactorRenameCommandMenuItem(ICommand command)
9+
public CodePaneRefactorRenameCommandMenuItem(ICommand command)
1110
: base(command)
1211
{
1312
}
Lines changed: 22 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,22 @@
1+
using System.Windows.Input;
2+
using Rubberduck.Parsing.VBA;
3+
using Rubberduck.UI.Command.MenuItems.ParentMenus;
4+
5+
namespace Rubberduck.UI.Command.MenuItems
6+
{
7+
public class FormDesignerRefactorRenameCommandMenuItem : CommandMenuItemBase
8+
{
9+
public FormDesignerRefactorRenameCommandMenuItem(ICommand command)
10+
: base(command)
11+
{
12+
}
13+
14+
public override string Key { get { return "RefactorMenu_Rename"; } }
15+
public override int DisplayOrder { get { return (int)RefactoringsMenuItemDisplayOrder.RenameIdentifier; } }
16+
17+
public override bool EvaluateCanExecute(RubberduckParserState state)
18+
{
19+
return state.Status == ParserState.Ready;
20+
}
21+
}
22+
}

RetailCoder.VBE/UI/Command/MenuItems/ParentMenus/NavigateParentMenu.cs

Lines changed: 0 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,4 @@
11
using System.Collections.Generic;
2-
using System.Linq;
32

43
namespace Rubberduck.UI.Command.MenuItems.ParentMenus
54
{

RetailCoder.VBE/UI/Command/MenuItems/ParserStateCommandBar.cs

Lines changed: 0 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -1,11 +1,4 @@
11
using System;
2-
using System.Collections.Generic;
3-
using System.Drawing;
4-
using System.Linq;
5-
using System.Text;
6-
using System.Threading.Tasks;
7-
using System.Windows.Forms;
8-
using System.Windows.Threading;
92
using Microsoft.Office.Core;
103
using Microsoft.Vbe.Interop;
114
using Rubberduck.Parsing;
Lines changed: 22 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,22 @@
1+
using System.Windows.Input;
2+
using Rubberduck.Parsing.VBA;
3+
using Rubberduck.UI.Command.MenuItems.ParentMenus;
4+
5+
namespace Rubberduck.UI.Command.MenuItems
6+
{
7+
public class ProjectExplorerRefactorRenameCommandMenuItem : CommandMenuItemBase
8+
{
9+
public ProjectExplorerRefactorRenameCommandMenuItem(ICommand command)
10+
: base(command)
11+
{
12+
}
13+
14+
public override string Key { get { return "RefactorMenu_Rename"; } }
15+
public override int DisplayOrder { get { return (int)RefactoringsMenuItemDisplayOrder.RenameIdentifier; } }
16+
17+
public override bool EvaluateCanExecute(RubberduckParserState state)
18+
{
19+
return state.Status == ParserState.Ready;
20+
}
21+
}
22+
}
Lines changed: 65 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,65 @@
1+
using System.Linq;
2+
using Microsoft.Vbe.Interop;
3+
using Rubberduck.VBEditor;
4+
using Rubberduck.VBEditor.VBEInterfaces.RubberduckCodePane;
5+
using System.Runtime.InteropServices;
6+
using Rubberduck.Parsing.Symbols;
7+
using Rubberduck.Parsing.VBA;
8+
using Rubberduck.Refactorings.Rename;
9+
using Rubberduck.UI.Refactorings;
10+
11+
namespace Rubberduck.UI.Command.Refactorings
12+
{
13+
[ComVisible(false)]
14+
public class FormDesignerRefactorRenameCommand : RefactorCommandBase
15+
{
16+
private readonly RubberduckParserState _state;
17+
private readonly ICodePaneWrapperFactory _wrapperWrapperFactory;
18+
19+
public FormDesignerRefactorRenameCommand(VBE vbe, RubberduckParserState state, IActiveCodePaneEditor editor, ICodePaneWrapperFactory wrapperWrapperFactory)
20+
: base (vbe, editor)
21+
{
22+
_state = state;
23+
_wrapperWrapperFactory = wrapperWrapperFactory;
24+
}
25+
26+
public override void Execute(object parameter)
27+
{
28+
using (var view = new RenameDialog())
29+
{
30+
var factory = new RenamePresenterFactory(Vbe, view, _state, new MessageBox(), _wrapperWrapperFactory);
31+
var refactoring = new RenameRefactoring(factory, Editor, new MessageBox(), _state);
32+
33+
var target = GetTarget();
34+
35+
if (target != null)
36+
{
37+
refactoring.Refactor(target);
38+
}
39+
}
40+
}
41+
42+
private Declaration GetTarget()
43+
{
44+
if (Vbe.SelectedVBComponent != null && Vbe.SelectedVBComponent.Designer != null)
45+
{
46+
var designer = (dynamic)Vbe.SelectedVBComponent.Designer;
47+
48+
foreach (var control in designer.Controls)
49+
{
50+
if (!control.InSelection)
51+
{
52+
continue;
53+
}
54+
55+
return _state.AllUserDeclarations
56+
.FirstOrDefault(item => item.IdentifierName == control.Name &&
57+
item.ComponentName == Vbe.SelectedVBComponent.Name &&
58+
Vbe.ActiveVBProject.Equals(item.Project));
59+
}
60+
}
61+
62+
return null;
63+
}
64+
}
65+
}

RetailCoder.VBE/UI/Command/Refactorings/RefactorRenameCommand.cs renamed to RetailCoder.VBE/UI/Command/Refactorings/ProjectExplorerRefactorRenameCommand.cs

Lines changed: 8 additions & 45 deletions
Original file line numberDiff line numberDiff line change
@@ -11,12 +11,12 @@
1111
namespace Rubberduck.UI.Command.Refactorings
1212
{
1313
[ComVisible(false)]
14-
public class RefactorRenameCommand : RefactorCommandBase
14+
public class ProjectExplorerRefactorRenameCommand : RefactorCommandBase
1515
{
1616
private readonly RubberduckParserState _state;
1717
private readonly ICodePaneWrapperFactory _wrapperWrapperFactory;
1818

19-
public RefactorRenameCommand(VBE vbe, RubberduckParserState state, IActiveCodePaneEditor editor, ICodePaneWrapperFactory wrapperWrapperFactory)
19+
public ProjectExplorerRefactorRenameCommand(VBE vbe, RubberduckParserState state, IActiveCodePaneEditor editor, ICodePaneWrapperFactory wrapperWrapperFactory)
2020
: base (vbe, editor)
2121
{
2222
_state = state;
@@ -30,63 +30,27 @@ public override void Execute(object parameter)
3030
var factory = new RenamePresenterFactory(Vbe, view, _state, new MessageBox(), _wrapperWrapperFactory);
3131
var refactoring = new RenameRefactoring(factory, Editor, new MessageBox(), _state);
3232

33-
var target = GetTarget(parameter);
33+
var target = GetTarget();
3434

35-
if (target == null)
36-
{
37-
refactoring.Refactor();
38-
}
39-
else
35+
if (target != null)
4036
{
4137
refactoring.Refactor(target);
4238
}
4339
}
4440
}
4541

46-
private Declaration GetTarget(object parameter)
42+
private Declaration GetTarget()
4743
{
48-
var target = parameter as Declaration;
49-
if (target != null)
50-
{
51-
return target;
52-
}
53-
54-
// rename project
5544
if (Vbe.SelectedVBComponent == null)
5645
{
5746
return
5847
_state.AllUserDeclarations.SingleOrDefault(d =>
5948
d.DeclarationType == DeclarationType.Project && d.IdentifierName == Vbe.ActiveVBProject.Name);
6049
}
61-
62-
// selected component is not active
50+
6351
if (Vbe.ActiveCodePane == null || Vbe.ActiveCodePane.CodeModule != Vbe.SelectedVBComponent.CodeModule)
6452
{
65-
// selected pane is userform - see if there are selected controls
66-
if (Vbe.SelectedVBComponent.Designer != null)
67-
{
68-
var designer = (dynamic)Vbe.SelectedVBComponent.Designer;
69-
70-
foreach (var control in designer.Controls)
71-
{
72-
if (!control.InSelection)
73-
{
74-
continue;
75-
}
76-
77-
target = _state.AllUserDeclarations
78-
.FirstOrDefault(item => item.IdentifierName == control.Name &&
79-
item.ComponentName == Vbe.SelectedVBComponent.Name &&
80-
Vbe.ActiveVBProject.Equals(item.Project));
81-
82-
break;
83-
}
84-
}
85-
86-
// user form is not designer or there were no selected controls
87-
if (target == null)
88-
{
89-
target = _state.AllUserDeclarations.SingleOrDefault(
53+
return _state.AllUserDeclarations.SingleOrDefault(
9054
t => t.IdentifierName == Vbe.SelectedVBComponent.Name &&
9155
t.Project == Vbe.ActiveVBProject &&
9256
new[]
@@ -96,10 +60,9 @@ private Declaration GetTarget(object parameter)
9660
DeclarationType.Module,
9761
DeclarationType.UserForm
9862
}.Contains(t.DeclarationType));
99-
}
10063
}
10164

102-
return target;
65+
return null;
10366
}
10467
}
10568
}

0 commit comments

Comments
 (0)