package org.jetbrains.plugins.cucumber.psi.impl; import com.intellij.openapi.util.TextRange; import com.intellij.psi.PsiElement; import com.intellij.psi.PsiNamedElement; import com.intellij.psi.PsiReference; import com.intellij.util.ArrayUtil; import com.intellij.util.IncorrectOperationException; import org.jetbrains.annotations.NotNull; import org.jetbrains.plugins.cucumber.psi.GherkinPsiElement; public class GherkinSimpleReference implements PsiReference { private GherkinPsiElement myElement; public GherkinSimpleReference(GherkinPsiElement element) { myElement = element; } @Override public PsiElement getElement() { return myElement; } @Override public TextRange getRangeInElement() { return new TextRange(0, myElement.getTextLength()); } @Override public PsiElement resolve() { return myElement; } @NotNull @Override public String getCanonicalText() { return myElement.getText(); } @Override public PsiElement handleElementRename(String newElementName) throws IncorrectOperationException { if (myElement instanceof PsiNamedElement) { ((PsiNamedElement) myElement).setName(newElementName); } return myElement; } @Override public PsiElement bindToElement(@NotNull PsiElement element) throws IncorrectOperationException { return myElement; } @Override public boolean isReferenceTo(PsiElement element) { PsiElement myResolved = resolve(); PsiElement resolved = element.getReference() != null ? element.getReference().resolve() : null; if (resolved == null) { resolved = element; } return resolved != null && myResolved != null && resolved.equals(myResolved); } @NotNull @Override public Object[] getVariants() { return ArrayUtil.EMPTY_OBJECT_ARRAY; } @Override public boolean isSoft() { return false; } }