mirror of
https://github.com/JetBrains/intellij-sdk-code-samples.git
synced 2025-07-28 01:07:49 +08:00
57 lines
1.8 KiB
Java
57 lines
1.8 KiB
Java
package com.simpleplugin;
|
|
|
|
import com.intellij.formatting.*;
|
|
import com.intellij.lang.ASTNode;
|
|
import com.intellij.psi.TokenType;
|
|
import com.intellij.psi.formatter.common.AbstractBlock;
|
|
import com.simpleplugin.psi.SimpleTypes;
|
|
import org.jetbrains.annotations.NotNull;
|
|
import org.jetbrains.annotations.Nullable;
|
|
|
|
import java.util.ArrayList;
|
|
import java.util.List;
|
|
|
|
public class SimpleBlock extends AbstractBlock {
|
|
private SpacingBuilder spacingBuilder;
|
|
|
|
protected SimpleBlock(@NotNull ASTNode node, @Nullable Wrap wrap, @Nullable Alignment alignment,
|
|
SpacingBuilder spacingBuilder) {
|
|
super(node, wrap, alignment);
|
|
this.spacingBuilder = spacingBuilder;
|
|
}
|
|
|
|
@Override
|
|
protected List<Block> buildChildren() {
|
|
List<Block> blocks = new ArrayList<Block>();
|
|
ASTNode child = myNode.getFirstChildNode();
|
|
ASTNode previousChild = null;
|
|
while (child != null) {
|
|
if (child.getElementType() != TokenType.WHITE_SPACE &&
|
|
(previousChild == null || previousChild.getElementType() != SimpleTypes.CRLF ||
|
|
child.getElementType() != SimpleTypes.CRLF)) {
|
|
Block block = new SimpleBlock(child, Wrap.createWrap(WrapType.NONE, false), Alignment.createAlignment(),
|
|
spacingBuilder);
|
|
blocks.add(block);
|
|
}
|
|
previousChild = child;
|
|
child = child.getTreeNext();
|
|
}
|
|
return blocks;
|
|
}
|
|
|
|
@Override
|
|
public Indent getIndent() {
|
|
return Indent.getNoneIndent();
|
|
}
|
|
|
|
@Nullable
|
|
@Override
|
|
public Spacing getSpacing(@Nullable Block child1, @NotNull Block child2) {
|
|
return spacingBuilder.getSpacing(this, child1, child2);
|
|
}
|
|
|
|
@Override
|
|
public boolean isLeaf() {
|
|
return myNode.getFirstChildNode() == null;
|
|
}
|
|
} |