8
8
using Rubberduck . Parsing . VBA ;
9
9
using Rubberduck . Parsing . VBA . Parsing ;
10
10
using Rubberduck . Refactorings . AddInterfaceImplementations ;
11
+ using Rubberduck . VBEditor . ComManagement ;
11
12
using Rubberduck . VBEditor . SafeComWrappers ;
13
+ using Rubberduck . VBEditor . SafeComWrappers . Abstract ;
12
14
13
15
namespace Rubberduck . Refactorings . ExtractInterface
14
16
{
15
17
public class ExtractInterfaceBaseRefactoring : BaseRefactoringWithSuspensionBase < ExtractInterfaceModel >
16
18
{
17
19
private readonly ICodeOnlyBaseRefactoring < AddInterfaceImplementationsModel > _addImplementationsRefactoring ;
18
20
private readonly IParseTreeProvider _parseTreeProvider ;
21
+ private readonly IProjectsProvider _projectsProvider ;
19
22
20
23
public ExtractInterfaceBaseRefactoring (
21
24
AddInterFaceImplementationsBaseRefactoring addImplementationsRefactoring ,
22
25
IParseTreeProvider parseTreeProvider ,
23
26
IParseManager parseManager ,
24
- IRewritingManager rewritingManager )
27
+ IRewritingManager rewritingManager ,
28
+ IProjectsProvider projectsProvider )
25
29
: base ( parseManager , rewritingManager )
26
30
{
27
31
_addImplementationsRefactoring = addImplementationsRefactoring ;
28
32
_parseTreeProvider = parseTreeProvider ;
33
+ _projectsProvider = projectsProvider ;
29
34
}
30
35
31
36
protected override bool RequiresSuspension ( ExtractInterfaceModel model )
@@ -40,20 +45,19 @@ protected override void Refactor(ExtractInterfaceModel model, IRewriteSession re
40
45
41
46
private void AddInterface ( ExtractInterfaceModel model , IRewriteSession rewriteSession )
42
47
{
43
- var targetProject = model . TargetDeclaration . Project ;
48
+ var targetProject = _projectsProvider . Project ( model . TargetDeclaration . ProjectId ) ;
44
49
if ( targetProject == null )
45
50
{
46
51
return ; //The target project is not available.
47
52
}
48
53
49
- AddInterfaceClass ( model . TargetDeclaration , model . InterfaceName , GetInterfaceModuleBody ( model ) ) ;
54
+ AddInterfaceClass ( targetProject , model . InterfaceName , GetInterfaceModuleBody ( model ) ) ;
50
55
AddImplementsStatement ( model , rewriteSession ) ;
51
56
AddInterfaceMembersToClass ( model , rewriteSession ) ;
52
57
}
53
58
54
- private void AddInterfaceClass ( Declaration implementingClass , string interfaceName , string interfaceBody )
59
+ private void AddInterfaceClass ( IVBProject targetProject , string interfaceName , string interfaceBody )
55
60
{
56
- var targetProject = implementingClass . Project ;
57
61
using ( var components = targetProject . VBComponents )
58
62
{
59
63
using ( var interfaceComponent = components . Add ( ComponentType . ClassModule ) )
@@ -120,8 +124,6 @@ private void AddImplementsStatement(ExtractInterfaceModel model, IRewriteSession
120
124
return ( - 1 , false ) ;
121
125
}
122
126
123
-
124
-
125
127
private void AddInterfaceMembersToClass ( ExtractInterfaceModel model , IRewriteSession rewriteSession )
126
128
{
127
129
var targetModule = model . TargetDeclaration . QualifiedModuleName ;
0 commit comments