package org.jetbrains.plugins.cucumber.psi.impl; import com.intellij.psi.PsiElement; import com.intellij.psi.util.PsiTreeUtil; import org.jetbrains.plugins.cucumber.psi.*; public class GherkinStepParameterReference extends GherkinSimpleReference { public GherkinStepParameterReference(GherkinStepParameter stepParameter) { super(stepParameter); } @Override public GherkinStepParameter getElement() { return (GherkinStepParameter)super.getElement(); } //@Override //public TextRange getRangeInElement() { // TextRange superRange = super.getRangeInElement(); // return new TextRange(1, superRange.getEndOffset() - 1); //} @Override public PsiElement resolve() { final GherkinScenarioOutline scenario = PsiTreeUtil.getParentOfType(getElement(), GherkinScenarioOutline.class); if (scenario != null) { final GherkinExamplesBlock exampleBlock = PsiTreeUtil.getChildOfType(scenario, GherkinExamplesBlock.class); if (exampleBlock != null) { final GherkinTable table = PsiTreeUtil.getChildOfType(exampleBlock, GherkinTable.class); if (table != null) { final GherkinTableHeaderRowImpl header = PsiTreeUtil.getChildOfType(table, GherkinTableHeaderRowImpl.class); if (header != null) { for (PsiElement cell : header.getChildren()) { if (cell instanceof GherkinTableCell) { final String cellText = cell.getText(); if (cellText.equals(getElement().getName())) { return cell; } } } } } } } return null; } }