package com.github.ompc.greys.core.textui; import java.util.ArrayList; import java.util.List; import static org.apache.commons.lang3.StringUtils.repeat; /** * 阶梯缩进控件 * Created by oldmanpushcart@gmail.com on 15/5/8. */ public class TLadder implements TComponent { // 分隔符 private static final String LADDER_CHAR = "`-"; // 缩进符 private static final String STEP_CHAR = " "; // 缩进长度 private static final int INDENT_STEP = 2; private final List<String> items = new ArrayList<String>(); @Override public String rendering() { final StringBuilder ladderSB = new StringBuilder(); int deep = 0; for (String item : items) { // 第一个条目不需要分隔符 if (deep == 0) { ladderSB .append(item) .append("\n"); } // 其他的需要添加分隔符 else { ladderSB .append(repeat(STEP_CHAR, deep * INDENT_STEP)) .append(LADDER_CHAR) .append(item) .append("\n"); } deep++; } return ladderSB.toString(); } /** * 添加一个项目 * * @param item 项目 * @return this */ public TLadder addItem(String item) { items.add(item); return this; } }