package org.elixir_lang.structure_view;
import com.intellij.ide.structureView.StructureViewBuilder;
import com.intellij.ide.structureView.StructureViewModel;
import com.intellij.ide.structureView.TreeBasedStructureViewBuilder;
import com.intellij.lang.PsiStructureViewFactory;
import com.intellij.openapi.editor.Editor;
import com.intellij.psi.PsiFile;
import org.elixir_lang.psi.ElixirFile;
import org.jetbrains.annotations.NotNull;
import org.jetbrains.annotations.Nullable;
public class Factory implements PsiStructureViewFactory {
@Nullable
public static StructureViewBuilder structureViewBuilder(@NotNull final PsiFile psiFile) {
StructureViewBuilder structureViewBuilder = null;
if (psiFile instanceof ElixirFile) {
final ElixirFile elixirFile = (ElixirFile) psiFile;
structureViewBuilder = new TreeBasedStructureViewBuilder() {
@NotNull
@Override
public StructureViewModel createStructureViewModel(@Nullable Editor editor) {
return new Model(elixirFile, editor);
}
@Override
public boolean isRootNodeShown() {
return false;
}
};
}
return structureViewBuilder;
}
@Nullable
@Override
public StructureViewBuilder getStructureViewBuilder(@NotNull final PsiFile psiFile) {
return structureViewBuilder(psiFile);
}
}