|
2 | 2 | * Copyright © Magento, Inc. All rights reserved.
|
3 | 3 | * See COPYING.txt for license details.
|
4 | 4 | */
|
| 5 | + |
5 | 6 | package com.magento.idea.magento2plugin.reference.provider;
|
6 | 7 |
|
7 | 8 | import com.intellij.openapi.util.text.StringUtil;
|
|
15 | 16 | import com.intellij.util.indexing.FileBasedIndex;
|
16 | 17 | import com.jetbrains.php.lang.PhpFileType;
|
17 | 18 | import com.jetbrains.php.lang.psi.PhpFile;
|
18 |
| -import com.magento.idea.magento2plugin.util.php.PhpPatternsHelper; |
19 | 19 | import com.magento.idea.magento2plugin.reference.xml.PolyVariantReferenceBase;
|
20 | 20 | import com.magento.idea.magento2plugin.stubs.indexes.EventNameIndex;
|
21 |
| -import org.jetbrains.annotations.NotNull; |
22 |
| - |
| 21 | +import com.magento.idea.magento2plugin.util.php.PhpPatternsHelper; |
23 | 22 | import java.util.ArrayList;
|
24 | 23 | import java.util.Collection;
|
25 | 24 | import java.util.List;
|
| 25 | +import org.jetbrains.annotations.NotNull; |
26 | 26 |
|
27 | 27 | public class EventNameReferenceProvider extends PsiReferenceProvider {
|
28 | 28 |
|
29 | 29 | @NotNull
|
30 | 30 | @Override
|
31 |
| - public PsiReference[] getReferencesByElement(@NotNull PsiElement element, @NotNull ProcessingContext context) { |
32 |
| - String value = StringUtil.unquoteString(element.getText()); |
33 |
| - Collection<VirtualFile> containingFiles = FileBasedIndex.getInstance() |
34 |
| - .getContainingFiles(EventNameIndex.KEY, value, |
35 |
| - GlobalSearchScope.getScopeRestrictedByFileTypes( |
36 |
| - GlobalSearchScope.allScope(element.getProject()), |
37 |
| - PhpFileType.INSTANCE |
38 |
| - ) |
39 |
| - ); |
| 31 | + public PsiReference[] getReferencesByElement( |
| 32 | + @NotNull final PsiElement element, |
| 33 | + @NotNull final ProcessingContext context |
| 34 | + ) { |
| 35 | + final String value = StringUtil.unquoteString(element.getText()); |
| 36 | + final List<PsiReference> psiReferences = new ArrayList<>(); |
| 37 | + final Collection<VirtualFile> containingFiles = FileBasedIndex.getInstance() |
| 38 | + .getContainingFiles( |
| 39 | + EventNameIndex.KEY, |
| 40 | + value, |
| 41 | + GlobalSearchScope.getScopeRestrictedByFileTypes( |
| 42 | + GlobalSearchScope.allScope(element.getProject()), |
| 43 | + PhpFileType.INSTANCE |
| 44 | + ) |
| 45 | + ); |
40 | 46 |
|
41 |
| - PsiManager psiManager = PsiManager.getInstance(element.getProject()); |
42 |
| - for (VirtualFile virtualFile: containingFiles) { |
43 |
| - PhpFile phpFile = (PhpFile) psiManager.findFile(virtualFile); |
| 47 | + final PsiManager psiManager = PsiManager.getInstance(element.getProject()); |
| 48 | + final List<PsiElement> psiElements = new ArrayList<>(); |
| 49 | + for (final VirtualFile virtualFile: containingFiles) { |
| 50 | + final PhpFile phpFile = (PhpFile) psiManager.findFile(virtualFile); |
44 | 51 | if (phpFile != null) {
|
45 |
| - List<PsiElement> psiElements = new ArrayList<>(); |
46 | 52 | recursiveFill(psiElements, phpFile, value);
|
47 |
| - if (psiElements.size() > 0) { |
48 |
| - return new PsiReference[] {new PolyVariantReferenceBase(element, psiElements)}; |
| 53 | + if (!psiElements.isEmpty()) { |
| 54 | + psiReferences.add(new PolyVariantReferenceBase(element, psiElements));//NOPMD |
| 55 | + break; |
49 | 56 | }
|
50 | 57 | }
|
51 | 58 | }
|
52 |
| - return PsiReference.EMPTY_ARRAY; |
| 59 | + |
| 60 | + return psiReferences.toArray(new PsiReference[0]); |
53 | 61 | }
|
54 | 62 |
|
55 |
| - private void recursiveFill(List<PsiElement> psiElements, PsiElement psiElement, String typeName) { |
| 63 | + private void recursiveFill( |
| 64 | + final List<PsiElement> psiElements, |
| 65 | + final PsiElement psiElement, |
| 66 | + final String typeName |
| 67 | + ) { |
56 | 68 | if (PhpPatternsHelper.STRING_METHOD_ARGUMENT.accepts(psiElement)) {
|
57 | 69 | if (StringUtil.unquoteString(psiElement.getText()).equals(typeName)) {
|
58 | 70 | psiElements.add(psiElement);
|
59 | 71 | }
|
60 | 72 | return;
|
61 | 73 | }
|
62 | 74 |
|
63 |
| - for (PsiElement child: psiElement.getChildren()) { |
| 75 | + for (final PsiElement child: psiElement.getChildren()) { |
64 | 76 | recursiveFill(psiElements, child, typeName);
|
65 | 77 | }
|
66 | 78 | }
|
|
0 commit comments