2
2
3
3
import com .intellij .patterns .XmlPatterns ;
4
4
import com .intellij .psi .*;
5
- import com .magento .idea .magento2plugin .php .util .ImplementationMatcher ;
6
- import com .magento .idea .magento2plugin .php .util .MagentoTypes ;
5
+ import com .intellij .util .ProcessingContext ;
7
6
import com .magento .idea .magento2plugin .xml .XmlHelperUtility ;
8
7
import com .magento .idea .magento2plugin .xml .di .reference .provider .XmlReferenceProvider ;
9
8
import com .magento .idea .magento2plugin .xml .layout .LayoutUtility ;
10
9
import com .magento .idea .magento2plugin .xml .layout .reference .fill .BlockResultsFiller ;
11
10
import com .magento .idea .magento2plugin .xml .layout .reference .fill .ContainerResultsFiller ;
11
+ import com .magento .idea .magento2plugin .xml .reference .TypeReference ;
12
12
import com .magento .idea .magento2plugin .xml .reference .util .ClassesResultsFiller ;
13
- import com .magento .idea .magento2plugin .xml .reference .util .ImplementationContextDecorator ;
14
13
import com .magento .idea .magento2plugin .xml .reference .util .ReferenceResultsFiller ;
15
14
import com .magento .idea .magento2plugin .xml .reference .util .VirtualTypesResultsFiller ;
16
15
import org .jetbrains .annotations .NotNull ;
@@ -27,12 +26,9 @@ public void registerReferenceProviders(@NotNull PsiReferenceRegistrar psiReferen
27
26
// <block class="\BlockClass" />
28
27
psiReferenceRegistrar .registerReferenceProvider (
29
28
XmlHelperUtility .getTagAttributeValuePattern ("block" , "class" ),
30
- new XmlReferenceProvider (
29
+ new LayoutReferenceProvider (
31
30
new ReferenceResultsFiller []{
32
- new ImplementationContextDecorator (
33
- ClassesResultsFiller .INSTANCE ,
34
- new ImplementationMatcher (MagentoTypes .BLOCK_TYPE )
35
- ),
31
+ ClassesResultsFiller .INSTANCE ,
36
32
VirtualTypesResultsFiller .INSTANCE
37
33
}
38
34
)
@@ -49,7 +45,7 @@ public void registerReferenceProviders(@NotNull PsiReferenceRegistrar psiReferen
49
45
XmlHelperUtility .getTagAttributeValuePattern ("move" , "before" ),
50
46
XmlHelperUtility .getTagAttributeValuePattern ("move" , "after" )
51
47
),
52
- new XmlReferenceProvider (
48
+ new LayoutReferenceProvider (
53
49
new ReferenceResultsFiller []{
54
50
new BlockResultsFiller ()
55
51
}
@@ -58,7 +54,7 @@ public void registerReferenceProviders(@NotNull PsiReferenceRegistrar psiReferen
58
54
59
55
psiReferenceRegistrar .registerReferenceProvider (
60
56
XmlHelperUtility .getTagAttributeValuePattern ("referenceContainer" , "name" ),
61
- new XmlReferenceProvider (
57
+ new LayoutReferenceProvider (
62
58
new ReferenceResultsFiller []{
63
59
new ContainerResultsFiller ()
64
60
}
@@ -67,7 +63,7 @@ public void registerReferenceProviders(@NotNull PsiReferenceRegistrar psiReferen
67
63
68
64
psiReferenceRegistrar .registerReferenceProvider (
69
65
XmlHelperUtility .getTagAttributeValuePattern ("update" , "handle" ),
70
- new XmlReferenceProvider (
66
+ new LayoutReferenceProvider (
71
67
new ReferenceResultsFiller []{
72
68
new ReferenceResultsFiller () {
73
69
@ Override
@@ -85,4 +81,25 @@ public void fillResolveResults(PsiElement psiElement, List<ResolveResult> result
85
81
)
86
82
);
87
83
}
84
+
85
+ private class LayoutReferenceProvider extends PsiReferenceProvider {
86
+ private final ReferenceResultsFiller [] resultsFillers ;
87
+
88
+ public LayoutReferenceProvider (ReferenceResultsFiller [] resultsFillers ) {
89
+ super ();
90
+ this .resultsFillers = resultsFillers ;
91
+ }
92
+
93
+ @ NotNull
94
+ @ Override
95
+ public PsiReference [] getReferencesByElement (@ NotNull PsiElement psiElement , @ NotNull ProcessingContext processingContext ) {
96
+ PsiFile containingFile = psiElement .getContainingFile ();
97
+ if (!LayoutUtility .isLayoutFile (containingFile )) {
98
+ return new PsiReference [0 ];
99
+ }
100
+
101
+ return new PsiReference []{new TypeReference (psiElement , resultsFillers )};
102
+ }
103
+ }
104
+
88
105
}
0 commit comments