package com.siberika.idea.pascal.editor.structure; import com.intellij.ide.structureView.StructureViewTreeElement; import com.intellij.ide.structureView.impl.common.PsiTreeElementBase; import com.siberika.idea.pascal.PascalIcons; import com.siberika.idea.pascal.lang.psi.PasModule; import org.apache.commons.lang.StringUtils; import org.jetbrains.annotations.NotNull; import org.jetbrains.annotations.Nullable; import javax.swing.*; import java.util.Collection; /** * Author: George Bakhtadze * Date: 06/05/2015 */ public class PasModuleStructureTreeElement extends PsiTreeElementBase<PasModule> { protected PasModuleStructureTreeElement(PasModule psiElement) { super(psiElement); } @NotNull @Override public Collection<StructureViewTreeElement> getChildrenBase() { return PasStructureViewTreeElement.collectChildren(getElement()); } @Override public Icon getIcon(boolean open) { if (getElement() != null) { switch (getElement().getModuleType()) { case PACKAGE: case LIBRARY: return PascalIcons.MODULE; case PROGRAM: return PascalIcons.PROGRAM; case UNIT: return PascalIcons.UNIT; } } return null; } @Nullable @Override public String getPresentableText() { String name = getElement() != null ? getElement().getName() : "-"; if (StringUtils.isEmpty(name)) { name = getElement().getContainingFile().getName(); } return name; } }