| package org.jetbrains.android.augment; |
| |
| import com.intellij.lang.java.JavaLanguage; |
| import com.intellij.navigation.ItemPresentation; |
| import com.intellij.navigation.ItemPresentationProviders; |
| import com.intellij.openapi.util.Iconable; |
| import com.intellij.openapi.util.Pair; |
| import com.intellij.psi.*; |
| import com.intellij.psi.impl.InheritanceImplUtil; |
| import com.intellij.psi.impl.PsiClassImplUtil; |
| import com.intellij.psi.impl.PsiImplUtil; |
| import com.intellij.psi.impl.light.LightElement; |
| import com.intellij.psi.impl.light.LightEmptyImplementsList; |
| import com.intellij.psi.impl.light.LightModifierList; |
| import com.intellij.psi.impl.light.LightTypeParameterListBuilder; |
| import com.intellij.psi.javadoc.PsiDocComment; |
| import com.intellij.psi.scope.PsiScopeProcessor; |
| import com.intellij.psi.search.SearchScope; |
| import com.intellij.psi.util.PsiUtil; |
| import com.intellij.util.IncorrectOperationException; |
| import org.jetbrains.annotations.NonNls; |
| import org.jetbrains.annotations.NotNull; |
| import org.jetbrains.annotations.Nullable; |
| |
| import javax.swing.*; |
| import java.util.Collection; |
| import java.util.Collections; |
| import java.util.List; |
| |
| /** |
| * @author Eugene.Kudelevsky |
| */ |
| public abstract class AndroidLightClassBase extends LightElement implements PsiClass, SyntheticElement { |
| protected AndroidLightClassBase(@NotNull PsiManager psiManager) { |
| super(psiManager, JavaLanguage.INSTANCE); |
| } |
| |
| @Override |
| public void checkAdd(@NotNull PsiElement element) throws IncorrectOperationException { |
| throw new IncorrectOperationException("Cannot add elements to R class"); |
| } |
| |
| @Override |
| public PsiElement add(@NotNull PsiElement element) throws IncorrectOperationException { |
| throw new IncorrectOperationException(); |
| } |
| |
| @Override |
| public PsiElement addBefore(@NotNull PsiElement element, PsiElement anchor) throws IncorrectOperationException { |
| throw new IncorrectOperationException(); |
| } |
| |
| @Override |
| public PsiElement addAfter(@NotNull PsiElement element, PsiElement anchor) throws IncorrectOperationException { |
| throw new IncorrectOperationException(); |
| } |
| |
| @Override |
| public boolean isInterface() { |
| return false; |
| } |
| |
| @Override |
| public boolean isAnnotationType() { |
| return false; |
| } |
| |
| @Override |
| public boolean isEnum() { |
| return false; |
| } |
| |
| @Override |
| public PsiReferenceList getExtendsList() { |
| return new LightEmptyImplementsList(myManager); |
| } |
| |
| @Override |
| public PsiReferenceList getImplementsList() { |
| return new LightEmptyImplementsList(myManager); |
| } |
| |
| @NotNull |
| @Override |
| public PsiClassType[] getExtendsListTypes() { |
| return PsiClassType.EMPTY_ARRAY; |
| } |
| |
| @NotNull |
| @Override |
| public PsiClassType[] getImplementsListTypes() { |
| return PsiClassType.EMPTY_ARRAY; |
| } |
| |
| @Override |
| public PsiClass getSuperClass() { |
| return null; |
| } |
| |
| @Override |
| public PsiClass[] getInterfaces() { |
| return PsiClass.EMPTY_ARRAY; |
| } |
| |
| @NotNull |
| @Override |
| public PsiClass[] getSupers() { |
| return PsiClass.EMPTY_ARRAY; |
| } |
| |
| @NotNull |
| @Override |
| public PsiClassType[] getSuperTypes() { |
| return PsiClassType.EMPTY_ARRAY; |
| } |
| |
| @NotNull |
| @Override |
| public PsiField[] getFields() { |
| return PsiField.EMPTY_ARRAY; |
| } |
| |
| @NotNull |
| @Override |
| public PsiMethod[] getMethods() { |
| return PsiMethod.EMPTY_ARRAY; |
| } |
| |
| @NotNull |
| @Override |
| public PsiMethod[] getConstructors() { |
| return PsiMethod.EMPTY_ARRAY; |
| } |
| |
| @NotNull |
| @Override |
| public PsiClass[] getInnerClasses() { |
| return PsiClass.EMPTY_ARRAY; |
| } |
| |
| @NotNull |
| @Override |
| public PsiClassInitializer[] getInitializers() { |
| return PsiClassInitializer.EMPTY_ARRAY; |
| } |
| |
| @NotNull |
| @Override |
| public PsiField[] getAllFields() { |
| return getFields(); |
| } |
| |
| @NotNull |
| @Override |
| public PsiMethod[] getAllMethods() { |
| return PsiMethod.EMPTY_ARRAY; |
| } |
| |
| @NotNull |
| @Override |
| public PsiClass[] getAllInnerClasses() { |
| return getInnerClasses(); |
| } |
| |
| @Override |
| public PsiField findFieldByName(@NonNls String name, boolean checkBases) { |
| final PsiField[] fields = getFields(); |
| for (final PsiField field : fields) { |
| if (name.equals(field.getName())) return field; |
| } |
| return null; |
| } |
| |
| @Override |
| public PsiMethod findMethodBySignature(PsiMethod patternMethod, boolean checkBases) { |
| return null; |
| } |
| |
| @NotNull |
| @Override |
| public PsiMethod[] findMethodsBySignature(PsiMethod patternMethod, boolean checkBases) { |
| return PsiMethod.EMPTY_ARRAY; |
| } |
| |
| @NotNull |
| @Override |
| public PsiMethod[] findMethodsByName(@NonNls String name, boolean checkBases) { |
| return PsiMethod.EMPTY_ARRAY; |
| } |
| |
| @NotNull |
| @Override |
| public List<Pair<PsiMethod, PsiSubstitutor>> findMethodsAndTheirSubstitutorsByName(@NonNls String name, boolean checkBases) { |
| return Collections.emptyList(); |
| } |
| |
| @NotNull |
| @Override |
| public List<Pair<PsiMethod, PsiSubstitutor>> getAllMethodsAndTheirSubstitutors() { |
| return Collections.emptyList(); |
| } |
| |
| @Override |
| public PsiClass findInnerClassByName(@NonNls String name, boolean checkBases) { |
| return null; |
| } |
| |
| @Override |
| public PsiElement getLBrace() { |
| return null; |
| } |
| |
| @Override |
| public PsiElement getRBrace() { |
| return null; |
| } |
| |
| @Override |
| public PsiIdentifier getNameIdentifier() { |
| return null; |
| } |
| |
| @Nullable |
| @Override |
| public PsiElement getScope() { |
| return null; |
| } |
| |
| @Override |
| public boolean isInheritor(@NotNull PsiClass baseClass, boolean checkDeep) { |
| return InheritanceImplUtil.isInheritor(this, baseClass, checkDeep); |
| } |
| |
| @Override |
| public boolean isInheritorDeep(PsiClass baseClass, @Nullable PsiClass classToByPass) { |
| return InheritanceImplUtil.isInheritorDeep(this, baseClass, classToByPass); |
| } |
| |
| @NotNull |
| @Override |
| public Collection<HierarchicalMethodSignature> getVisibleSignatures() { |
| return Collections.emptyList(); |
| } |
| |
| @Override |
| public PsiElement setName(@NonNls @NotNull String name) throws IncorrectOperationException { |
| throw new IncorrectOperationException("Cannot change the name of " + getQualifiedName() + " class"); |
| } |
| |
| @Override |
| public PsiDocComment getDocComment() { |
| return null; |
| } |
| |
| @Override |
| public boolean isDeprecated() { |
| return false; |
| } |
| |
| @Override |
| public boolean hasTypeParameters() { |
| return false; |
| } |
| |
| @Override |
| public PsiTypeParameterList getTypeParameterList() { |
| return new LightTypeParameterListBuilder(myManager, getLanguage()); |
| } |
| |
| @NotNull |
| @Override |
| public PsiTypeParameter[] getTypeParameters() { |
| return PsiTypeParameter.EMPTY_ARRAY; |
| } |
| |
| @Override |
| public PsiModifierList getModifierList() { |
| return new LightModifierList(myManager, getLanguage(), PsiModifier.PUBLIC, PsiModifier.STATIC, PsiModifier.FINAL); |
| } |
| |
| @Override |
| public boolean hasModifierProperty(@PsiModifier.ModifierConstant @NonNls @NotNull String name) { |
| final PsiModifierList list = getModifierList(); |
| return list != null && list.hasModifierProperty(name); |
| } |
| |
| @Override |
| protected boolean isVisibilitySupported() { |
| return true; |
| } |
| |
| @Override |
| protected Icon getElementIcon(@Iconable.IconFlags int flags) { |
| return PsiClassImplUtil.getClassIcon(flags, this); |
| } |
| |
| @Override |
| public boolean isEquivalentTo(PsiElement another) { |
| return PsiClassImplUtil.isClassEquivalentTo(this, another); |
| } |
| |
| @NotNull |
| @Override |
| public SearchScope getUseScope() { |
| return PsiImplUtil.getMemberUseScope(this); |
| } |
| |
| @Override |
| public ItemPresentation getPresentation() { |
| return ItemPresentationProviders.getItemPresentation(this); |
| } |
| |
| @Nullable |
| @Override |
| public PsiFile getContainingFile() { |
| final PsiClass containingClass = getContainingClass(); |
| return containingClass == null ? null : containingClass.getContainingFile(); |
| } |
| |
| @Override |
| public boolean processDeclarations(@NotNull final PsiScopeProcessor processor, |
| @NotNull final ResolveState state, |
| final PsiElement lastParent, |
| @NotNull final PsiElement place) { |
| return PsiClassImplUtil.processDeclarationsInClass(this, processor, state, null, lastParent, place, PsiUtil.getLanguageLevel(place), false); |
| } |
| } |