Skip to content

Commit f58251a

Browse files
committed
Merge pull request #1025 from Hosch250/BugBlipper
Bug blipper
2 parents b60ea5a + bfc582b commit f58251a

11 files changed

+190
-24
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/ParentMenus/ParentMenuItemBase.cs

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -117,7 +117,7 @@ private CommandBarControl InitializeChildControl(ICommandMenuItem item)
117117
SetButtonImage(child, item.Image, item.Mask);
118118

119119
child.BeginGroup = item.BeginGroup;
120-
child.Tag = item.Key;
120+
child.Tag = item.GetType().FullName;
121121
child.Caption = item.Caption.Invoke();
122122

123123
Debug.WriteLine("Menu item '{0}' created; hash code: {1} (command hash code {2})", child.Caption, child.GetHashCode(), item.Command.GetHashCode());
@@ -131,7 +131,7 @@ private CommandBarControl InitializeChildControl(ICommandMenuItem item)
131131

132132
private void child_Click(CommandBarButton Ctrl, ref bool CancelDefault)
133133
{
134-
var item = _items.Select(kvp => kvp.Key).SingleOrDefault(menu => menu.Key == Ctrl.Tag) as ICommandMenuItem;
134+
var item = _items.Select(kvp => kvp.Key).SingleOrDefault(menu => menu.GetType().FullName == Ctrl.Tag) as ICommandMenuItem;
135135
if (item == null || Ctrl.GetHashCode() == _lastHashCode)
136136
{
137137
return;

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+
}

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

Lines changed: 4 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -10,12 +10,12 @@
1010
namespace Rubberduck.UI.Command.Refactorings
1111
{
1212
[ComVisible(false)]
13-
public class RefactorRenameCommand : RefactorCommandBase
13+
public class CodePaneRefactorRenameCommand : RefactorCommandBase
1414
{
1515
private readonly RubberduckParserState _state;
1616
private readonly ICodePaneWrapperFactory _wrapperWrapperFactory;
1717

18-
public RefactorRenameCommand(VBE vbe, RubberduckParserState state, IActiveCodePaneEditor editor, ICodePaneWrapperFactory wrapperWrapperFactory)
18+
public CodePaneRefactorRenameCommand(VBE vbe, RubberduckParserState state, IActiveCodePaneEditor editor, ICodePaneWrapperFactory wrapperWrapperFactory)
1919
: base (vbe, editor)
2020
{
2121
_state = state;
@@ -24,17 +24,15 @@ public RefactorRenameCommand(VBE vbe, RubberduckParserState state, IActiveCodePa
2424

2525
public override void Execute(object parameter)
2626
{
27-
if (Vbe.ActiveCodePane == null)
28-
{
29-
return;
30-
}
27+
if (Vbe.ActiveCodePane == null) { return; }
3128

3229
using (var view = new RenameDialog())
3330
{
3431
var factory = new RenamePresenterFactory(Vbe, view, _state, new MessageBox(), _wrapperWrapperFactory);
3532
var refactoring = new RenameRefactoring(factory, Editor, new MessageBox(), _state);
3633

3734
var target = parameter as Declaration;
35+
3836
if (target == null)
3937
{
4038
refactoring.Refactor();
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+
}

0 commit comments

Comments
 (0)