package org.fandev.lang.fan.structure.elements.impl; import com.intellij.ide.util.treeView.smartTree.TreeElement; import com.intellij.navigation.ItemPresentation; import org.fandev.lang.fan.psi.api.statements.typeDefs.FanClassDefinition; import org.fandev.lang.fan.psi.api.statements.typeDefs.FanTypeDefinition; import org.fandev.lang.fan.psi.api.statements.typeDefs.FanEnumDefinition; 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.api.statements.typeDefs.members.FanEnumValue; import org.fandev.lang.fan.structure.elements.FanStructureViewElement; import org.fandev.lang.fan.structure.elements.itemsPresentations.impl.FanTypeDefinitionItemPresentation; import java.util.ArrayList; import java.util.List; /** * @author Dror Bereznitsky * @date Jan 7, 2009 4:43:19 PM */ public class FanTypeDefinitionStructureViewElement extends FanStructureViewElement { FanTypeDefinition myElement; public FanTypeDefinitionStructureViewElement(final FanTypeDefinition element) { super(element); myElement = element; } public ItemPresentation getPresentation() { return new FanTypeDefinitionItemPresentation(myElement); } public TreeElement[] getChildren() { final List<FanStructureViewElement> children = new ArrayList<FanStructureViewElement>(); final FanSlot[] fanSlots = myElement.getSlots(); for (final FanSlot fanSlot : fanSlots) { if (fanSlot instanceof FanMethod) { children.add(new FanMethodDefinitionStructureViewElement(fanSlot)); } else if (fanSlot instanceof FanField) { children.add(new FanFieldDefinitionStructureViewElement(fanSlot)); } } if (myElement instanceof FanEnumDefinition) { final FanEnumValue[] enumValues = ((FanEnumDefinition)myElement).getEnumValues(); for (final FanEnumValue enumValue : enumValues) { children.add(new FanEnumValueDefinitionStructureViewElement(enumValue)); } } return children.toArray(new FanStructureViewElement[0]); } }