| package com.intellij.psi; |
| |
| import com.intellij.openapi.util.TextRange; |
| import com.intellij.util.IncorrectOperationException; |
| import org.jetbrains.annotations.NotNull; |
| |
| /** |
| * @author traff |
| */ |
| public class PsiReferenceWrapper implements PsiReference { |
| private final PsiReference myOriginalPsiReference; |
| |
| public PsiReferenceWrapper(PsiReference originalPsiReference) { |
| myOriginalPsiReference = originalPsiReference; |
| } |
| |
| @Override |
| public PsiElement getElement() { |
| return myOriginalPsiReference.getElement(); |
| } |
| |
| @Override |
| public TextRange getRangeInElement() { |
| return myOriginalPsiReference.getRangeInElement(); |
| } |
| |
| @Override |
| public PsiElement resolve() { |
| return myOriginalPsiReference.resolve(); |
| } |
| |
| @NotNull |
| @Override |
| public String getCanonicalText() { |
| return myOriginalPsiReference.getCanonicalText(); |
| } |
| |
| @Override |
| public PsiElement handleElementRename(String newElementName) throws IncorrectOperationException { |
| return myOriginalPsiReference.handleElementRename(newElementName); |
| } |
| |
| @Override |
| public PsiElement bindToElement(@NotNull PsiElement element) throws IncorrectOperationException { |
| return myOriginalPsiReference.bindToElement(element); |
| } |
| |
| @Override |
| public boolean isReferenceTo(PsiElement element) { |
| return myOriginalPsiReference.isReferenceTo(element); |
| } |
| |
| @NotNull |
| @Override |
| public Object[] getVariants() { |
| return myOriginalPsiReference.getVariants(); |
| } |
| |
| @Override |
| public boolean isSoft() { |
| return myOriginalPsiReference.isSoft(); |
| } |
| |
| public <T extends PsiReference> boolean isInstance(Class<T> clazz) { |
| if (myOriginalPsiReference instanceof PsiReferenceWrapper) { |
| return ((PsiReferenceWrapper)myOriginalPsiReference).isInstance(clazz); |
| } |
| return clazz.isInstance(myOriginalPsiReference); |
| } |
| |
| public <T extends PsiReference> T cast(Class<T> clazz) { |
| if (myOriginalPsiReference instanceof PsiReferenceWrapper) { |
| return ((PsiReferenceWrapper)myOriginalPsiReference).cast(clazz); |
| } |
| return clazz.cast(myOriginalPsiReference); |
| } |
| } |