package ee.edio.garmin.formatter;
import com.google.common.collect.Lists;
import com.intellij.formatting.*;
import com.intellij.lang.ASTNode;
import com.intellij.openapi.util.TextRange;
import com.intellij.psi.PsiElement;
import com.intellij.psi.PsiFile;
import com.intellij.psi.codeStyle.CodeStyleSettings;
import com.intellij.psi.formatter.common.AbstractBlock;
import org.jetbrains.annotations.NotNull;
import org.jetbrains.annotations.Nullable;
import java.util.List;
public class MonkeyFormattingModelBuilder implements FormattingModelBuilder {
@NotNull
@Override
public FormattingModel createModel(PsiElement element, CodeStyleSettings settings) {
final MCFormattingBlock mCFormattingBlock = new MCFormattingBlock(element.getNode(), null, null);
return FormattingModelProvider.createFormattingModelForPsiFile(element.getContainingFile(), mCFormattingBlock, settings);
}
@Nullable
@Override
public TextRange getRangeAffectingIndent(PsiFile file, int offset, ASTNode elementAtOffset) {
return null;
}
public static class MCFormattingBlock extends AbstractBlock {
protected MCFormattingBlock(@NotNull ASTNode node, @Nullable Wrap wrap, @Nullable Alignment alignment) {
super(node, wrap, alignment);
}
@Override
protected List<Block> buildChildren() {
return Lists.newArrayList();
}
@Nullable
@Override
public Spacing getSpacing(@Nullable Block child1, @NotNull Block child2) {
return null;
}
@Override
public boolean isLeaf() {
return getNode().getFirstChildNode() == null;
}
}
}