package org.jetbrains.plugins.cucumber.groovy.steps.search; import com.intellij.navigation.ItemPresentation; import com.intellij.navigation.ItemPresentationProvider; import com.intellij.navigation.ItemPresentationProviders; import com.intellij.openapi.diagnostic.Logger; import com.intellij.psi.PsiFile; import org.jetbrains.annotations.NotNull; import org.jetbrains.annotations.Nullable; import org.jetbrains.plugins.cucumber.CucumberBundle; import org.jetbrains.plugins.cucumber.groovy.GrCucumberUtil; import org.jetbrains.plugins.groovy.lang.psi.api.statements.expressions.GrMethodCall; import javax.swing.*; /** * @author Max Medvedev */ public class GrStepDefinitionPresentationProvider implements ItemPresentationProvider<GrMethodCall> { private static final Logger LOG = Logger.getInstance(GrStepDefinitionPresentationProvider.class); @Nullable @Override public ItemPresentation getPresentation(@NotNull final GrMethodCall item) { if (!GrCucumberUtil.isStepDefinition(item)) return null; return new ItemPresentation() { @Nullable @Override public String getPresentableText() { final String stepRef = GrCucumberUtil.getCucumberStepRef(item).getText(); final String pattern = GrCucumberUtil.getStepDefinitionPattern(item).getText(); return CucumberBundle.message("step.definition.0.1", stepRef, pattern); } @Nullable @Override public String getLocationString() { final PsiFile file = item.getContainingFile(); final ItemPresentation presentation = ItemPresentationProviders.getItemPresentation(file); LOG.assertTrue(presentation != null, file.getClass().getName()); return presentation.getPresentableText(); } @Nullable @Override public Icon getIcon(boolean unused) { return null; } }; } }