package org.fandev.lang.fan.psi.impl.statements.typedefs; import com.intellij.lang.ASTNode; import com.intellij.openapi.util.Pair; import com.intellij.psi.*; import com.intellij.psi.tree.IElementType; import com.intellij.psi.javadoc.PsiDocComment; import com.intellij.util.IncorrectOperationException; import org.fandev.icons.Icons; import org.fandev.lang.fan.FanElementTypes; import org.fandev.lang.fan.psi.api.statements.typeDefs.FanBuildScriptDefinition; import org.fandev.lang.fan.psi.api.statements.typeDefs.members.FanField; import org.fandev.lang.fan.psi.api.statements.typeDefs.members.FanMethod; import org.fandev.lang.fan.psi.api.statements.typeDefs.members.FanSlot; import org.fandev.lang.fan.psi.stubs.FanTypeDefinitionStub; import org.fandev.utils.FanUtil; import org.jetbrains.annotations.NonNls; import org.jetbrains.annotations.NotNull; import org.jetbrains.annotations.Nullable; import javax.swing.Icon; import java.util.ArrayList; import java.util.Collection; import java.util.List; /** * Date: July 29, 2009 * @author Fred Simon */ public class FanBuildScriptDefinitionImpl extends FanTypeDefinitionImpl implements FanBuildScriptDefinition { FanField[] fanFields; public FanBuildScriptDefinitionImpl(final FanTypeDefinitionStub stubElement) { super(stubElement, FanElementTypes.BUILDSCRIPT_DEFINITION); } public FanBuildScriptDefinitionImpl(final ASTNode astNode) { super(astNode); } public String toString() { return "BuildScript definition"; } public PsiElement setName(@NonNls final String name) throws IncorrectOperationException { // TODO rename return this; } public boolean isInterface() { return false; } public boolean isAnnotationType() { return false; } public boolean isEnum() { return false; } public PsiClass[] getInterfaces() { return PsiClass.EMPTY_ARRAY; } @Override public void subtreeChanged() { this.fanFields = null; super.subtreeChanged(); } @NotNull public PsiField[] getFields() { return getFanFields(); } @NotNull @Override public FanField[] getFanFields() { if (fanFields == null) { final List<FanField> list = new ArrayList<FanField>(); final PsiElement element = findChildByType(getBodyElementType()); if (element != null) { final PsiElement[] bodyEls = element.getChildren(); for (final PsiElement bodyEl : bodyEls) { if (FanUtil.isFanField(bodyEl)) { list.add((FanField) bodyEl); } } } fanFields = list.toArray(new FanField[0]); } return fanFields; } @NotNull public PsiMethod[] getMethods() { return FanMethod.EMPTY_ARRAY; } @NotNull public FanMethod[] getFanMethods() { return FanMethod.EMPTY_ARRAY; } @NotNull public FanSlot[] getSlots() { return getFanFields(); } @NotNull public PsiMethod[] getConstructors() { return PsiMethod.EMPTY_ARRAY; } @NotNull public PsiClass[] getInnerClasses() { return PsiClass.EMPTY_ARRAY; } @NotNull public PsiClassInitializer[] getInitializers() { return PsiClassInitializer.EMPTY_ARRAY; } @NotNull public PsiField[] getAllFields() { return PsiField.EMPTY_ARRAY; } @NotNull public PsiMethod[] getAllMethods() { return PsiMethod.EMPTY_ARRAY; } @NotNull public PsiClass[] getAllInnerClasses() { return PsiClass.EMPTY_ARRAY; } public PsiField findFieldByName(@NonNls final String name, final boolean checkBases) { return null; } public PsiMethod findMethodBySignature(final PsiMethod patternMethod, final boolean checkBases) { return null; } @NotNull public PsiMethod[] findMethodsBySignature(final PsiMethod patternMethod, final boolean checkBases) { return PsiMethod.EMPTY_ARRAY; } @NotNull public PsiMethod[] findMethodsByName(@NonNls final String name, final boolean checkBases) { return PsiMethod.EMPTY_ARRAY; } @NotNull public List<Pair<PsiMethod, PsiSubstitutor>> findMethodsAndTheirSubstitutorsByName(@NonNls final String name, final boolean checkBases) { return null; } @NotNull public List<Pair<PsiMethod, PsiSubstitutor>> getAllMethodsAndTheirSubstitutors() { return null; } public PsiClass findInnerClassByName(@NonNls final String name, final boolean checkBases) { return null; } public PsiJavaToken getLBrace() { return null; } public PsiJavaToken getRBrace() { return null; } public PsiElement getScope() { return null; } public boolean isInheritor(@NotNull final PsiClass baseClass, final boolean checkDeep) { return false; } public boolean isInheritorDeep(final PsiClass baseClass, @Nullable final PsiClass classToByPass) { return false; } public PsiClass getContainingClass() { return null; } @NotNull public Collection<HierarchicalMethodSignature> getVisibleSignatures() { return null; } public PsiDocComment getDocComment() { return null; } public boolean isDeprecated() { return false; } public boolean hasTypeParameters() { return false; } public PsiTypeParameterList getTypeParameterList() { return null; } @NotNull public PsiTypeParameter[] getTypeParameters() { return PsiTypeParameter.EMPTY_ARRAY; } @Override protected Icon getIconInner() { return Icons.POD; } protected IElementType getBodyElementType() { return FanElementTypes.BUILDSCRIPT_BODY; } @Override public boolean hasModifierProperty(@Modifier final String name) { return false; } }