package org.fandev.lang.fan.psi.impl; import com.intellij.psi.PsiClassType; import com.intellij.psi.PsiClass; import com.intellij.psi.PsiType; import com.intellij.psi.search.GlobalSearchScope; import com.intellij.pom.java.LanguageLevel; import org.jetbrains.annotations.NotNull; import org.jetbrains.annotations.NonNls; import org.fandev.lang.fan.psi.api.statements.typeDefs.FanEnumDefinition; /** * Date: Sep 8, 2009 * Time: 8:51:12 AM * * @author Dror Bereznitsky */ public class FanEnumReferenceType extends PsiClassType { private final FanEnumDefinition myEnum; public FanEnumReferenceType(final FanEnumDefinition myEnum) { this(LanguageLevel.JDK_1_6, myEnum); } public FanEnumReferenceType(final LanguageLevel languageLevel, final FanEnumDefinition myEnum) { super(languageLevel); this.myEnum = myEnum; } public PsiClass resolve() { return myEnum; } public String getClassName() { return myEnum.getName(); } @NotNull public PsiType[] getParameters() { return PsiType.EMPTY_ARRAY; } @NotNull public ClassResolveResult resolveGenerics() { return ClassResolveResult.EMPTY; } @NotNull public PsiClassType rawType() { return this; } public String getPresentableText() { return myEnum.getName(); } public String getCanonicalText() { return myEnum.getName(); } public String getInternalCanonicalText() { return getCanonicalText(); } public boolean isValid() { return myEnum.isValid(); } public boolean equalsToText(@NonNls final String text) { return text.endsWith(getPresentableText()) && //optimization text.equals(getCanonicalText()); } @NotNull public GlobalSearchScope getResolveScope() { return myEnum.getResolveScope(); } @NotNull public LanguageLevel getLanguageLevel() { return myLanguageLevel; } public PsiClassType setLanguageLevel(final LanguageLevel languageLevel) { return new FanEnumReferenceType(languageLevel, myEnum); } }