package com.yiistorm.references;
import com.intellij.openapi.project.Project;
import com.intellij.openapi.util.TextRange;
import com.intellij.openapi.vfs.VirtualFile;
import com.intellij.psi.PsiElement;
import com.intellij.psi.PsiManager;
import com.intellij.psi.PsiReference;
import com.intellij.util.IncorrectOperationException;
import org.jetbrains.annotations.NotNull;
import org.jetbrains.annotations.Nullable;
public class I18nFileReference implements PsiReference {
protected PsiElement element;
protected TextRange textRange;
protected Project project;
protected String path;
protected VirtualFile virtualFile;
public I18nFileReference(VirtualFile virtualFile, PsiElement element, TextRange textRange, Project project) {
this.element = element;
this.textRange = textRange;
this.project = project;
this.virtualFile = virtualFile;
}
@Override
public String toString() {
return getCanonicalText();
}
public PsiElement getElement() {
return this.element;
}
public TextRange getRangeInElement() {
return new TextRange(1, element.getTextLength() - 1);
}
public PsiElement handleElementRename(String newElementName)
throws IncorrectOperationException {
// TODO: Implement this method
throw new IncorrectOperationException();
}
public PsiElement bindToElement(@NotNull PsiElement element) throws IncorrectOperationException {
// TODO: Implement this method
throw new IncorrectOperationException();
}
public boolean isReferenceTo(PsiElement element) {
return resolve() == element;
}
@NotNull
public Object[] getVariants() {
// TODO: Implement this method
return new Object[0];
}
public boolean isSoft() {
return false;
}
@Nullable
public PsiElement resolve() {
Project project = element.getProject();
if (this.virtualFile != null) {
return PsiManager.getInstance(project).findFile(virtualFile);
}
return null;
}
@NotNull
@Override
public String getCanonicalText() {
return virtualFile.getCanonicalPath();
}
}