diff --git a/CHANGELOG.md b/CHANGELOG.md index 7a5c2af67..d8d3f0633 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -12,6 +12,7 @@ The format is based on [Keep a Changelog](https://keepachangelog.com/en/1.0.0). Replaced hardcoded Magento versions with dynamic fetching via Packagist API. Fixed UI icon references. Updated Run command. +- java.lang.Throwable: Assertion failed: Do not use PsiElement for popup model. See PsiTargetNavigator [#2485](https://github.com/magento/magento2-phpstorm-plugin/pull/2485) ### Changed diff --git a/src/main/java/com/magento/idea/magento2plugin/linemarker/SearchGutterIconNavigationHandler.java b/src/main/java/com/magento/idea/magento2plugin/linemarker/SearchGutterIconNavigationHandler.java deleted file mode 100644 index 8f235a241..000000000 --- a/src/main/java/com/magento/idea/magento2plugin/linemarker/SearchGutterIconNavigationHandler.java +++ /dev/null @@ -1,47 +0,0 @@ -/* - * Copyright © Magento, Inc. All rights reserved. - * See COPYING.txt for license details. - */ - -package com.magento.idea.magento2plugin.linemarker; - -import com.intellij.codeInsight.daemon.GutterIconNavigationHandler; -import com.intellij.codeInsight.daemon.impl.PsiElementListNavigator; -import com.intellij.ide.util.DefaultPsiElementCellRenderer; -import com.intellij.psi.NavigatablePsiElement; -import com.intellij.psi.PsiElement; -import java.awt.event.MouseEvent; -import java.util.Collection; -import org.jetbrains.annotations.NotNull; - -public class SearchGutterIconNavigationHandler - implements GutterIconNavigationHandler { - - private final Collection myReferences; - private final @NotNull String popupTitle; - - /** - * Search gutter icon navigation handler constructor. - * - * @param references Collection - * @param popupTitle String - */ - public SearchGutterIconNavigationHandler( - final Collection references, - final @NotNull String popupTitle - ) { - this.popupTitle = popupTitle; - myReferences = references; - } - - @Override - public void navigate(final MouseEvent event, final T elt) { - PsiElementListNavigator.openTargets( - event, - myReferences.toArray(NavigatablePsiElement.EMPTY_NAVIGATABLE_ELEMENT_ARRAY), - popupTitle, - "Open in Find Tool Window",// Ignored - new DefaultPsiElementCellRenderer() - ); - } -} diff --git a/src/main/java/com/magento/idea/magento2plugin/linemarker/php/PluginLineMarkerProvider.java b/src/main/java/com/magento/idea/magento2plugin/linemarker/php/PluginLineMarkerProvider.java index d29689ded..775d61f3f 100644 --- a/src/main/java/com/magento/idea/magento2plugin/linemarker/php/PluginLineMarkerProvider.java +++ b/src/main/java/com/magento/idea/magento2plugin/linemarker/php/PluginLineMarkerProvider.java @@ -5,19 +5,17 @@ package com.magento.idea.magento2plugin.linemarker.php; -import com.intellij.codeInsight.daemon.GutterIconNavigationHandler; import com.intellij.codeInsight.daemon.LineMarkerInfo; import com.intellij.codeInsight.daemon.LineMarkerProvider; import com.intellij.codeInsight.navigation.NavigationGutterIconBuilder; import com.intellij.icons.AllIcons; -import com.intellij.psi.NavigatablePsiElement; +import com.intellij.lang.ASTNode; import com.intellij.psi.PsiElement; import com.intellij.psi.search.GlobalSearchScope; -import com.intellij.psi.util.PsiTreeUtil; import com.intellij.util.indexing.FileBasedIndex; +import com.jetbrains.php.lang.lexer.PhpTokenTypes; import com.jetbrains.php.lang.psi.elements.Method; import com.jetbrains.php.lang.psi.elements.PhpClass; -import com.magento.idea.magento2plugin.linemarker.SearchGutterIconNavigationHandler; import com.magento.idea.magento2plugin.linemarker.php.data.PluginMethodData; import com.magento.idea.magento2plugin.project.Settings; import com.magento.idea.magento2plugin.stubs.indexes.PluginIndex; @@ -74,22 +72,16 @@ public void collectSlowLineMarkers( } if (!results.isEmpty()) { - final GutterIconNavigationHandler navigationHandler = - new SearchGutterIconNavigationHandler<>( - (Collection) results, - TOOLTIP_TEXT - ); - - collection.add( - NavigationGutterIconBuilder - .create(AllIcons.Nodes.Plugin) - .setTargets(results) - .setTooltipText(TOOLTIP_TEXT) - .createLineMarkerInfo( - PsiTreeUtil.getDeepestFirst(psiElement), - navigationHandler - ) - ); + final ASTNode node = psiElement.getNode() + .findChildByType(PhpTokenTypes.IDENTIFIER); + if (node != null) { + // Add the property to a collection of line marker info + final NavigationGutterIconBuilder builder = + NavigationGutterIconBuilder.create(AllIcons.Nodes.Plugin) + .setTargets(results) + .setTooltipText(TOOLTIP_TEXT); + collection.add(builder.createLineMarkerInfo(node.getPsi())); + } } } }