package org.jetbrains.plugins.cucumber.groovy.steps;
import com.intellij.codeHighlighting.Pass;
import com.intellij.codeInsight.daemon.LineMarkerInfo;
import com.intellij.codeInsight.daemon.LineMarkerProvider;
import com.intellij.psi.PsiElement;
import com.intellij.util.Function;
import icons.CucumberIcons;
import org.jetbrains.annotations.NotNull;
import org.jetbrains.annotations.Nullable;
import org.jetbrains.plugins.cucumber.groovy.GrCucumberUtil;
import org.jetbrains.plugins.groovy.lang.psi.api.statements.expressions.GrMethodCall;
import java.util.Collection;
import java.util.List;
/**
* @author Max Medvedev
*/
public class GrCucumberLineMarkerProvider implements LineMarkerProvider {
private static final Function<GrMethodCall, String> TOOLTIP_PROVIDER = stepDef -> stepDef.getPresentation().getPresentableText();
@Nullable
@Override
public LineMarkerInfo getLineMarkerInfo(@NotNull PsiElement element) {
if (GrCucumberUtil.isStepDefinition(element)) {
return new LineMarkerInfo<>(
((GrMethodCall)element),
element.getTextRange().getStartOffset(),
CucumberIcons.Cucumber,
Pass.LINE_MARKERS,
TOOLTIP_PROVIDER,
null
);
}
else {
return null;
}
}
@Override
public void collectSlowLineMarkers(@NotNull List<PsiElement> elements, @NotNull Collection<LineMarkerInfo> result) {
}
}