2424package com.shopify.testify.extensions
2525
2626import com.intellij.codeInsight.daemon.GutterIconNavigationHandler
27+ import com.intellij.ide.DataManager
2728import com.intellij.openapi.actionSystem.DefaultActionGroup
28- import com.intellij.openapi.actionSystem.impl.SimpleDataContext
2929import com.intellij.openapi.editor.Editor
3030import com.intellij.openapi.fileEditor.FileEditorManager
31- import com.intellij.openapi.project.Project
3231import com.intellij.openapi.ui.popup.JBPopup
3332import com.intellij.openapi.ui.popup.JBPopupFactory
3433import com.intellij.openapi.vfs.VirtualFile
@@ -43,12 +42,15 @@ import com.shopify.testify.actions.screenshot.ScreenshotRecordAction
4342import com.shopify.testify.actions.screenshot.ScreenshotTestAction
4443import com.shopify.testify.actions.utility.DeleteBaselineAction
4544import com.shopify.testify.actions.utility.RevealBaselineAction
45+ import java.awt.event.ComponentEvent
4646import java.awt.event.MouseEvent
4747
4848class ScreenshotInstrumentationAnnotationNavHandler (private val anchorElement : PsiElement ) :
4949 GutterIconNavigationHandler <PsiElement > {
5050
5151 override fun navigate (e : MouseEvent ? , nameIdentifier : PsiElement ) {
52+ if (e == null ) return
53+
5254 val listOwner = nameIdentifier.parent
5355 val containingFile = listOwner.containingFile
5456 val virtualFile: VirtualFile ? = PsiUtilCore .getVirtualFile(listOwner)
@@ -59,14 +61,14 @@ class ScreenshotInstrumentationAnnotationNavHandler(private val anchorElement: P
5961 editor.caretModel.moveToOffset(nameIdentifier.textOffset)
6062 val file: PsiFile ? = PsiDocumentManager .getInstance(project).getPsiFile(editor.document)
6163 if (file != null && virtualFile == file.virtualFile) {
62- val popup: JBPopup ? = createActionGroupPopup(anchorElement, project )
63- popup? .show(RelativePoint (e!! ))
64+ val popup: JBPopup = createActionGroupPopup(e, anchorElement )
65+ popup.show(RelativePoint (e))
6466 }
6567 }
6668 }
6769 }
6870
69- private fun createActionGroupPopup (anchorElement : PsiElement , project : Project ): JBPopup ? {
71+ private fun createActionGroupPopup (event : ComponentEvent , anchorElement : PsiElement ): JBPopup {
7072
7173 val group = DefaultActionGroup (
7274 ScreenshotTestAction (anchorElement),
@@ -76,11 +78,11 @@ class ScreenshotInstrumentationAnnotationNavHandler(private val anchorElement: P
7678 RevealBaselineAction (anchorElement),
7779 DeleteBaselineAction (anchorElement)
7880 )
79-
81+ val dataContext = DataManager .getInstance().getDataContext(event.component)
8082 return JBPopupFactory .getInstance().createActionGroupPopup(
8183 " " ,
8284 group,
83- SimpleDataContext .getProjectContext(project) ,
85+ dataContext ,
8486 true ,
8587 null ,
8688 group.childrenCount
0 commit comments