PsiReferenceBase.createSelfReference(PsiElement, PsiElement, TextRange)

This commit is contained in:
peter
2010-07-28 23:49:45 +01:00
parent 48c4b185cd
commit 68d4b5d86c
@@ -107,23 +107,11 @@ public abstract class PsiReferenceBase<T extends PsiElement> implements PsiRefer
}
public static <T extends PsiElement> PsiReferenceBase<T> createSelfReference(T element, final PsiElement resolveTo) {
return new Immediate<T>(element, true, resolveTo);
}
return new PsiReferenceBase<T>(element,true) {
//do nothing. the element will be renamed via PsiMetaData (com.intellij.refactoring.rename.RenameUtil.doRenameGenericNamedElement())
public PsiElement handleElementRename(final String newElementName) throws IncorrectOperationException {
return getElement();
}
@Nullable
public PsiElement resolve() {
return resolveTo;
}
@NotNull
public Object[] getVariants() {
return EMPTY_ARRAY;
}
};
public static <T extends PsiElement> PsiReferenceBase<T> createSelfReference(T element, TextRange range, final PsiElement resolveTo) {
return new Immediate<T>(element, range, resolveTo);
}
@Nullable
@@ -165,4 +153,43 @@ public abstract class PsiReferenceBase<T extends PsiElement> implements PsiRefer
return resolveResults.length == 1 ? resolveResults[0].getElement() : null;
}
}
public static class Immediate<T extends PsiElement> extends PsiReferenceBase<T> {
private final PsiElement myResolveTo;
public Immediate(T element, TextRange range, boolean soft, PsiElement resolveTo) {
super(element, range, soft);
myResolveTo = resolveTo;
}
public Immediate(T element, TextRange range, PsiElement resolveTo) {
super(element, range);
myResolveTo = resolveTo;
}
public Immediate(T element, boolean soft, PsiElement resolveTo) {
super(element, soft);
myResolveTo = resolveTo;
}
public Immediate(@NotNull T element, PsiElement resolveTo) {
super(element);
myResolveTo = resolveTo;
}
//do nothing. the element will be renamed via PsiMetaData (com.intellij.refactoring.rename.RenameUtil.doRenameGenericNamedElement())
public PsiElement handleElementRename(final String newElementName) throws IncorrectOperationException {
return getElement();
}
@Nullable
public PsiElement resolve() {
return myResolveTo;
}
@NotNull
public Object[] getVariants() {
return EMPTY_ARRAY;
}
}
}