diff --git a/plugins/IdeaTestAssistant/src/com/intellij/testAssistant/TestDataLineMarkerProvider.java b/plugins/IdeaTestAssistant/src/com/intellij/testAssistant/TestDataLineMarkerProvider.java index 81d754357a21..73776916edf3 100644 --- a/plugins/IdeaTestAssistant/src/com/intellij/testAssistant/TestDataLineMarkerProvider.java +++ b/plugins/IdeaTestAssistant/src/com/intellij/testAssistant/TestDataLineMarkerProvider.java @@ -17,19 +17,24 @@ package com.intellij.testAssistant; import com.intellij.codeHighlighting.Pass; import com.intellij.codeInsight.AnnotationUtil; +import com.intellij.codeInsight.daemon.GutterIconNavigationHandler; import com.intellij.codeInsight.daemon.LineMarkerInfo; import com.intellij.codeInsight.daemon.LineMarkerProvider; import com.intellij.openapi.application.ApplicationManager; import com.intellij.openapi.editor.markup.GutterIconRenderer; +import com.intellij.openapi.fileEditor.OpenFileDescriptor; import com.intellij.openapi.project.Project; import com.intellij.openapi.roots.ProjectFileIndex; import com.intellij.openapi.roots.ProjectRootManager; +import com.intellij.openapi.vfs.VfsUtil; import com.intellij.openapi.vfs.VirtualFile; import com.intellij.psi.*; import com.intellij.util.PlatformIcons; import org.jetbrains.annotations.NotNull; import org.jetbrains.annotations.Nullable; +import java.awt.event.MouseEvent; +import java.io.File; import java.util.Collection; import java.util.Collections; import java.util.List; @@ -53,6 +58,22 @@ public class TestDataLineMarkerProvider implements LineMarkerProvider { method, method.getModifierList().getTextRange(), PlatformIcons.TEST_SOURCE_FOLDER, Pass.UPDATE_ALL, null, new TestDataNavigationHandler(), GutterIconRenderer.Alignment.LEFT); } + } else if (element instanceof PsiClass) { + final PsiClass psiClass = (PsiClass)element; + final String basePath = getTestDataBasePath(psiClass); + if (basePath != null) { + return new LineMarkerInfo( + psiClass, psiClass.getModifierList().getTextRange(), PlatformIcons.TEST_SOURCE_FOLDER, Pass.UPDATE_ALL, null, new GutterIconNavigationHandler() { + @Override + public void navigate(MouseEvent e, PsiClass elt) { + final VirtualFile baseDir = VfsUtil.findFileByIoFile(new File(basePath), true); + if (baseDir != null) { + new OpenFileDescriptor(psiClass.getProject(), baseDir).navigate(true); + } + } + }, + GutterIconRenderer.Alignment.LEFT); + } } return null; }