Skip to content

Commit b72fb51

Browse files
Merge branch '4.2.2-develop' of github.com:magento/magento2-phpstorm-plugin into 620-exclude-test-files-from-search
2 parents 1030afe + 48f5dce commit b72fb51

File tree

3 files changed

+74
-10
lines changed

3 files changed

+74
-10
lines changed
Lines changed: 47 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,47 @@
1+
/*
2+
* Copyright © Magento, Inc. All rights reserved.
3+
* See COPYING.txt for license details.
4+
*/
5+
6+
package com.magento.idea.magento2plugin.linemarker;
7+
8+
import com.intellij.codeInsight.daemon.GutterIconNavigationHandler;
9+
import com.intellij.codeInsight.daemon.impl.PsiElementListNavigator;
10+
import com.intellij.ide.util.DefaultPsiElementCellRenderer;
11+
import com.intellij.psi.NavigatablePsiElement;
12+
import com.intellij.psi.PsiElement;
13+
import java.awt.event.MouseEvent;
14+
import java.util.Collection;
15+
import org.jetbrains.annotations.NotNull;
16+
17+
public class SearchGutterIconNavigationHandler<T extends PsiElement>
18+
implements GutterIconNavigationHandler<T> {
19+
20+
private final Collection<? extends NavigatablePsiElement> myReferences;
21+
private final @NotNull String popupTitle;
22+
23+
/**
24+
* Search gutter icon navigation handler constructor.
25+
*
26+
* @param references Collection
27+
* @param popupTitle String
28+
*/
29+
public SearchGutterIconNavigationHandler(
30+
final Collection<? extends NavigatablePsiElement> references,
31+
final @NotNull String popupTitle
32+
) {
33+
this.popupTitle = popupTitle;
34+
myReferences = references;
35+
}
36+
37+
@Override
38+
public void navigate(final MouseEvent event, final T elt) {
39+
PsiElementListNavigator.openTargets(
40+
event,
41+
myReferences.toArray(NavigatablePsiElement.EMPTY_NAVIGATABLE_ELEMENT_ARRAY),
42+
popupTitle,
43+
"Open in Find Tool Window",// Ignored
44+
new DefaultPsiElementCellRenderer()
45+
);
46+
}
47+
}

src/com/magento/idea/magento2plugin/linemarker/php/PluginLineMarkerProvider.java

Lines changed: 14 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -5,17 +5,20 @@
55

66
package com.magento.idea.magento2plugin.linemarker.php;
77

8+
import com.intellij.codeInsight.daemon.GutterIconNavigationHandler;
89
import com.intellij.codeInsight.daemon.LineMarkerInfo;
910
import com.intellij.codeInsight.daemon.LineMarkerProvider;
1011
import com.intellij.codeInsight.navigation.NavigationGutterIconBuilder;
1112
import com.intellij.icons.AllIcons;
13+
import com.intellij.psi.NavigatablePsiElement;
1214
import com.intellij.psi.PsiElement;
1315
import com.intellij.psi.search.GlobalSearchScope;
1416
import com.intellij.psi.util.PsiTreeUtil;
1517
import com.intellij.util.indexing.FileBasedIndex;
1618
import com.jetbrains.php.PhpIndex;
1719
import com.jetbrains.php.lang.psi.elements.Method;
1820
import com.jetbrains.php.lang.psi.elements.PhpClass;
21+
import com.magento.idea.magento2plugin.linemarker.SearchGutterIconNavigationHandler;
1922
import com.magento.idea.magento2plugin.project.Settings;
2023
import com.magento.idea.magento2plugin.stubs.indexes.PluginIndex;
2124
import java.util.ArrayList;
@@ -39,6 +42,7 @@ public class PluginLineMarkerProvider implements LineMarkerProvider {
3942
}
4043

4144
@Override
45+
@SuppressWarnings("PMD.AvoidInstantiatingObjectsInLoops")
4246
public void collectSlowLineMarkers(
4347
final @NotNull List<? extends PsiElement> psiElements,
4448
final @NotNull Collection<? super LineMarkerInfo<?>> collection
@@ -69,12 +73,21 @@ public void collectSlowLineMarkers(
6973
}
7074

7175
if (!results.isEmpty()) {
76+
final GutterIconNavigationHandler<PsiElement> navigationHandler =
77+
new SearchGutterIconNavigationHandler<>(
78+
(Collection<? extends NavigatablePsiElement>) results,
79+
TOOLTIP_TEXT
80+
);
81+
7282
collection.add(
7383
NavigationGutterIconBuilder
7484
.create(AllIcons.Nodes.Plugin)
7585
.setTargets(results)
7686
.setTooltipText(TOOLTIP_TEXT)
77-
.createLineMarkerInfo(PsiTreeUtil.getDeepestFirst(psiElement))
87+
.createLineMarkerInfo(
88+
PsiTreeUtil.getDeepestFirst(psiElement),
89+
navigationHandler
90+
)
7891
);
7992
}
8093
}

src/com/magento/idea/magento2plugin/reference/provider/PhpClassReferenceProvider.java

Lines changed: 13 additions & 9 deletions
Original file line numberDiff line numberDiff line change
@@ -74,16 +74,20 @@ public class PhpClassReferenceProvider extends PsiReferenceProvider {
7474
psiReferences.add(new PolyVariantReferenceBase(element, range, references));
7575
}
7676
}
77-
7877
final String className = classFQN.substring(classFQN.lastIndexOf(92) + 1);
79-
final Collection<PhpClass> classes = phpIndex.getAnyByFQN(classFQN);
80-
81-
if (!classes.isEmpty()) {
82-
final TextRange range = new TextRange(
83-
origValue.lastIndexOf(92) + 1,
84-
origValue.lastIndexOf(92) + 1 + className.length()
85-
);
86-
psiReferences.add(new PolyVariantReferenceBase(element, range, classes));
78+
79+
try {
80+
final Collection<PhpClass> classes = phpIndex.getAnyByFQN(classFQN);
81+
82+
if (!classes.isEmpty()) {
83+
final TextRange range = new TextRange(
84+
origValue.lastIndexOf(92) + 1,
85+
origValue.lastIndexOf(92) + 1 + className.length()
86+
);
87+
psiReferences.add(new PolyVariantReferenceBase(element, range, classes));
88+
}
89+
} catch (Exception exception) { //NOPMD
90+
return psiReferences.toArray(new PsiReference[0]);
8791
}
8892

8993
return psiReferences.toArray(new PsiReference[0]);

0 commit comments

Comments
 (0)