Skip to content

Commit 5bf0f14

Browse files
committed
Fix and rewire MoveCloserToUsage
1 parent e940bd9 commit 5bf0f14

File tree

9 files changed

+393
-169
lines changed

9 files changed

+393
-169
lines changed

Rubberduck.CodeAnalysis/QuickFixes/MoveFieldCloserToUsageQuickFix.cs

Lines changed: 5 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -7,20 +7,21 @@
77
using Rubberduck.Refactorings.MoveCloserToUsage;
88
using Rubberduck.Resources.Inspections;
99
using Rubberduck.VBEditor.SafeComWrappers.Abstract;
10+
using Rubberduck.VBEditor.Utility;
1011

1112
namespace Rubberduck.Inspections.QuickFixes
1213
{
1314
public sealed class MoveFieldCloserToUsageQuickFix : QuickFixBase
1415
{
15-
private readonly IVBE _vbe;
16+
private readonly ISelectionService _selectionService;
1617
private readonly RubberduckParserState _state;
1718
private readonly IRewritingManager _rewritingManager;
1819
private readonly IMessageBox _messageBox;
1920

20-
public MoveFieldCloserToUsageQuickFix(IVBE vbe, RubberduckParserState state, IMessageBox messageBox, IRewritingManager rewritingManager)
21+
public MoveFieldCloserToUsageQuickFix(RubberduckParserState state, IMessageBox messageBox, IRewritingManager rewritingManager, ISelectionService selectionService)
2122
: base(typeof(MoveFieldCloserToUsageInspection))
2223
{
23-
_vbe = vbe;
24+
_selectionService = selectionService;
2425
_state = state;
2526
_rewritingManager = rewritingManager;
2627
_messageBox = messageBox;
@@ -29,7 +30,7 @@ public MoveFieldCloserToUsageQuickFix(IVBE vbe, RubberduckParserState state, IMe
2930
//The rewriteSession is optional since it is not used in this particular quickfix because it is a refactoring quickfix.
3031
public override void Fix(IInspectionResult result, IRewriteSession rewriteSession = null)
3132
{
32-
var refactoring = new MoveCloserToUsageRefactoring(_vbe, _state, _messageBox, _rewritingManager);
33+
var refactoring = new MoveCloserToUsageRefactoring(_state, _messageBox, _rewritingManager, _selectionService);
3334
refactoring.Refactor(result.Target);
3435
}
3536

Rubberduck.Core/UI/Command/Refactorings/RefactorMoveCloserToUsageCommand.cs

Lines changed: 22 additions & 16 deletions
Original file line numberDiff line numberDiff line change
@@ -5,6 +5,7 @@
55
using Rubberduck.Parsing.VBA;
66
using Rubberduck.Refactorings.MoveCloserToUsage;
77
using Rubberduck.VBEditor.SafeComWrappers.Abstract;
8+
using Rubberduck.VBEditor.Utility;
89

910
namespace Rubberduck.UI.Command.Refactorings
1011
{
@@ -13,41 +14,46 @@ public class RefactorMoveCloserToUsageCommand : RefactorCommandBase
1314
private readonly RubberduckParserState _state;
1415
private readonly IRewritingManager _rewritingManager;
1516
private readonly IMessageBox _msgbox;
17+
private readonly ISelectionService _selectionService;
1618

17-
public RefactorMoveCloserToUsageCommand(IVBE vbe, RubberduckParserState state, IMessageBox msgbox, IRewritingManager rewritingManager)
19+
public RefactorMoveCloserToUsageCommand(IVBE vbe, RubberduckParserState state, IMessageBox msgbox, IRewritingManager rewritingManager, ISelectionService selectionService)
1820
:base(vbe)
1921
{
2022
_state = state;
2123
_rewritingManager = rewritingManager;
2224
_msgbox = msgbox;
25+
_selectionService = selectionService;
2326
}
2427

2528
protected override bool EvaluateCanExecute(object parameter)
2629
{
27-
using (var activePane = Vbe.ActiveCodePane)
30+
if (_state.Status != ParserState.Ready)
2831
{
29-
if (activePane == null || activePane .IsWrappingNullReference || _state.Status != ParserState.Ready)
30-
{
31-
return false;
32-
}
32+
return false;
33+
}
3334

34-
var target = _state.FindSelectedDeclaration(activePane);
35-
return target != null
36-
&& !_state.IsNewOrModified(target.QualifiedModuleName)
37-
&& (target.DeclarationType == DeclarationType.Variable ||
38-
target.DeclarationType == DeclarationType.Constant)
39-
&& target.References.Any();
35+
var activeSelection = _selectionService.ActiveSelection();
36+
if (!activeSelection.HasValue)
37+
{
38+
return false;
4039
}
40+
41+
var target = _state.DeclarationFinder.FindSelectedDeclaration(activeSelection.Value);
42+
return target != null
43+
&& !_state.IsNewOrModified(target.QualifiedModuleName)
44+
&& (target.DeclarationType == DeclarationType.Variable
45+
|| target.DeclarationType == DeclarationType.Constant)
46+
&& target.References.Any();
4147
}
4248

4349
protected override void OnExecute(object parameter)
4450
{
45-
var selection = Vbe.GetActiveSelection();
51+
var activeSelection = _selectionService.ActiveSelection();
4652

47-
if (selection.HasValue)
53+
if (activeSelection.HasValue)
4854
{
49-
var refactoring = new MoveCloserToUsageRefactoring(Vbe, _state, _msgbox, _rewritingManager);
50-
refactoring.Refactor(selection.Value);
55+
var refactoring = new MoveCloserToUsageRefactoring(_state, _msgbox, _rewritingManager, _selectionService);
56+
refactoring.Refactor(activeSelection.Value);
5157
}
5258
}
5359
}

0 commit comments

Comments
 (0)