Skip to content

Commit 13a48b0

Browse files
committed
Make NoIndentCommand use the ISelectedDeclarationService
This also enhances the ISelectedDeclarationService by adding SelectedModule.
1 parent 9075d18 commit 13a48b0

File tree

4 files changed

+21
-22
lines changed

4 files changed

+21
-22
lines changed

Rubberduck.Core/UI/Command/ComCommands/NoIndentAnnotationCommand.cs

Lines changed: 4 additions & 20 deletions
Original file line numberDiff line numberDiff line change
@@ -5,32 +5,24 @@
55
using Rubberduck.Parsing.Symbols;
66
using Rubberduck.Parsing.VBA;
77
using Rubberduck.VBEditor.Events;
8-
using Rubberduck.VBEditor.SafeComWrappers.Abstract;
9-
using Rubberduck.VBEditor.Utility;
108

119
namespace Rubberduck.UI.Command.ComCommands
1210
{
1311
[ComVisible(false)]
1412
public class NoIndentAnnotationCommand : ComCommandBase
1513
{
16-
private readonly IVBE _vbe;
17-
private readonly IDeclarationFinderProvider _declarationFinderProvider;
18-
private readonly ISelectionService _selectionService;
14+
private readonly ISelectedDeclarationService _selectedDeclarationService;
1915
private readonly IAnnotationUpdater _annotationUpdater;
2016
private readonly IRewritingManager _rewritingManager;
2117

2218
public NoIndentAnnotationCommand(
23-
IVBE vbe,
24-
IDeclarationFinderProvider declarationFinderProvider,
25-
ISelectionService selectionService,
19+
ISelectedDeclarationService selectedDeclarationService,
2620
IRewritingManager rewritingManager,
2721
IAnnotationUpdater annotationUpdater,
2822
IVbeEvents vbeEvents)
2923
: base(vbeEvents)
3024
{
31-
_vbe = vbe;
32-
_declarationFinderProvider = declarationFinderProvider;
33-
_selectionService = selectionService;
25+
_selectedDeclarationService = selectedDeclarationService;
3426
_rewritingManager = rewritingManager;
3527
_annotationUpdater = annotationUpdater;
3628

@@ -65,15 +57,7 @@ private Declaration FindTarget(object parameter)
6557
return declaration;
6658
}
6759

68-
var activeSelection = _selectionService.ActiveSelection();
69-
if (!activeSelection.HasValue)
70-
{
71-
return null;
72-
}
73-
74-
return _declarationFinderProvider.DeclarationFinder?
75-
.UserDeclarations(DeclarationType.Module)
76-
.FirstOrDefault(module => module.QualifiedModuleName.Equals(activeSelection.Value.QualifiedName));
60+
return _selectedDeclarationService.SelectedModule();
7761
}
7862
}
7963
}

Rubberduck.Parsing/VBA/ISelectedDeclarationService.cs

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -8,5 +8,6 @@ public interface ISelectedDeclarationService
88
Declaration SelectedDeclaration();
99
Declaration SelectedDeclaration(QualifiedModuleName module);
1010
Declaration SelectedDeclaration(QualifiedSelection qualifiedSelection);
11+
ModuleDeclaration SelectedModule();
1112
}
1213
}

Rubberduck.Parsing/VBA/SelectedDeclarationService.cs

Lines changed: 13 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,4 +1,5 @@
1-
using Rubberduck.Parsing.Symbols;
1+
using System.Linq;
2+
using Rubberduck.Parsing.Symbols;
23
using Rubberduck.VBEditor;
34
using Rubberduck.VBEditor.Utility;
45

@@ -45,5 +46,16 @@ public Declaration SelectedDeclaration(QualifiedSelection qualifiedSelection)
4546
{
4647
return _declarationFinderProvider.DeclarationFinder?.FindSelectedDeclaration(qualifiedSelection);
4748
}
49+
50+
public ModuleDeclaration SelectedModule()
51+
{
52+
var activeSelection = _selectionService.ActiveSelection();
53+
return activeSelection.HasValue
54+
? _declarationFinderProvider.DeclarationFinder?
55+
.UserDeclarations(DeclarationType.Module)
56+
.OfType<ModuleDeclaration>()
57+
.FirstOrDefault(module => module.QualifiedModuleName.Equals(activeSelection.Value.QualifiedName))
58+
: null;
59+
}
4860
}
4961
}

RubberduckTests/Commands/MockIndenter.cs

Lines changed: 3 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -41,7 +41,9 @@ internal static NoIndentAnnotationCommand ArrangeNoIndentAnnotationCommand(Mock<
4141

4242
internal static NoIndentAnnotationCommand ArrangeNoIndentAnnotationCommand(Mock<IVBE> vbe, RubberduckParserState state, IRewritingManager rewritingManager, Mock<IVbeEvents> vbeEvents)
4343
{
44-
return new NoIndentAnnotationCommand(vbe.Object, state, new SelectionService(vbe.Object, state.ProjectsProvider), rewritingManager, new AnnotationUpdater(), vbeEvents.Object);
44+
var selectionService = new SelectionService(vbe.Object, state.ProjectsProvider);
45+
var selectedDeclarationService = new SelectedDeclarationService(selectionService, state);
46+
return new NoIndentAnnotationCommand(selectedDeclarationService, rewritingManager, new AnnotationUpdater(), vbeEvents.Object);
4547
}
4648

4749
internal static IndentCurrentProcedureCommand ArrangeIndentCurrentProcedureCommand(Mock<IVBE> vbe,

0 commit comments

Comments
 (0)