package org.jetbrains.plugins.clojure.structure; import com.intellij.ide.structureView.TextEditorBasedStructureViewModel; import com.intellij.ide.structureView.StructureViewTreeElement; import com.intellij.ide.util.treeView.smartTree.Grouper; import com.intellij.ide.util.treeView.smartTree.Sorter; import com.intellij.ide.util.treeView.smartTree.Filter; import com.intellij.psi.PsiFile; import org.jetbrains.annotations.NotNull; import org.jetbrains.plugins.clojure.psi.api.defs.ClDef; /** * @author ilyas */ public class ClojureStructureViewModel extends TextEditorBasedStructureViewModel { private PsiFile myFile; public ClojureStructureViewModel(final PsiFile file) { super(file); myFile = file; } @NotNull public StructureViewTreeElement getRoot() { return new ClojureStructureViewElement(myFile); } @NotNull public Grouper[] getGroupers() { return Grouper.EMPTY_ARRAY; } @NotNull public Sorter[] getSorters() { return new Sorter[]{Sorter.ALPHA_SORTER}; } @NotNull public Filter[] getFilters() { return Filter.EMPTY_ARRAY; } protected PsiFile getPsiFile() { return myFile; } @NotNull protected Class[] getSuitableClasses() { return new Class[]{ClDef.class}; } }