in tobago-core/src/main/java/org/apache/myfaces/tobago/internal/layout/Grid.java [206:434]
public String gridAsString() {
final StringBuilder builder = new StringBuilder();
// top of grid
for (int i = 0; i < columnCount; i++) {
if (i == 0) {
if (getCell(i, 0) != null) {
builder.append("┏");
} else {
builder.append("┌");
}
} else {
final Cell c = getCell(i - 1, 0);
final Cell d = getCell(i, 0);
if (c == null && d == null) {
builder.append("┬");
} else {
if (connected(c, d)) {
builder.append("┯");
} else {
if (c == null) {
builder.append("┲");
} else if (d == null) {
builder.append("┱");
} else {
builder.append("┳");
}
}
}
}
if (getCell(i, 0) != null) {
builder.append("━");
} else {
builder.append("─");
}
}
if (getCell(columnCount - 1, 0) != null) {
builder.append("┓");
} else {
builder.append("┐");
}
builder.append("\n");
for (int j = 0; j < rowCount; j++) {
// between the cells
if (j != 0) {
for (int i = 0; i < columnCount; i++) {
if (i == 0) {
final Cell b = getCell(0, j - 1);
final Cell d = getCell(0, j);
if (b == null && d == null) {
builder.append("├");
} else {
if (connected(b, d)) {
builder.append("┠");
} else {
if (b == null) {
builder.append("┢");
} else if (d == null) {
builder.append("┡");
} else {
builder.append("┣");
}
}
}
} else {
final Cell a = getCell(i - 1, j - 1);
final Cell b = getCell(i, j - 1);
final Cell c = getCell(i - 1, j);
final Cell d = getCell(i, j);
// a│b
// ─┼─
// c│d
if (connected(a, b)) {
if (connected(c, d)) {
if (connected(a, c)) {
builder.append("┼");
} else {
builder.append("┿");
}
} else {
builder.append("╈");
}
} else {
if (connected(c, d)) {
if (connected(a, c)) {
builder.append("╄");
} else if (connected(b, d)) {
builder.append("╃");
} else {
builder.append("╇");
}
} else {
if (connected(a, c)) {
if (connected(b, d)) {
builder.append("╂");
} else {
builder.append("╊");
}
} else {
if (connected(b, d)) {
builder.append("╉");
} else {
builder.append("╋");
}
}
}
}
}
final Cell a = getCell(i, j - 1);
final Cell c = getCell(i, j);
if (connected(a, c)) {
builder.append("─");
} else {
builder.append("━");
}
}
final Cell a = getCell(columnCount - 1, j - 1);
final Cell c = getCell(columnCount - 1, j);
if (a == null && c == null) {
builder.append("┤");
} else {
if (connected(a, c)) {
builder.append("┨");
} else {
if (a == null) {
builder.append("┪");
} else if (c == null) {
builder.append("┩");
} else {
builder.append("┫");
}
}
}
builder.append("\n");
}
// cell
for (int i = 0; i < columnCount; i++) {
if (i == 0) {
if (getCell(i, j) != null) {
builder.append("┃");
} else {
builder.append("│");
}
} else {
final Cell c = getCell(i - 1, j);
final Cell d = getCell(i, j);
if (connected(c, d)) {
builder.append("│");
} else {
builder.append("┃");
}
}
if (hasError(i, j)) {
builder.append("✖"); //↯
} else {
if (getCell(i, j) instanceof OriginCell) {
builder.append("█");
} else if (getCell(i, j) instanceof SpanCell) {
if (j == 0) {
builder.append("➞");
} else {
final Cell a = getCell(i, j - 1);
final Cell c = getCell(i, j);
if (connected(a, c)) {
builder.append("⬇");
} else {
builder.append("➞");
}
}
} else {
builder.append("◌");
}
}
}
if (getCell(columnCount - 1, j) != null) {
builder.append("┃");
} else {
builder.append("│");
}
builder.append("\n");
}
//last bottom
for (int i = 0; i < columnCount; i++) {
if (i == 0) {
if (getCell(0, rowCount - 1) != null) {
builder.append("┗");
} else {
builder.append("└");
}
} else {
final Cell a = getCell(i - 1, rowCount - 1);
final Cell b = getCell(i, rowCount - 1);
if (a == null && b == null) {
builder.append("┴");
} else {
if (connected(a, b)) {
builder.append("┷");
} else {
if (a == null) {
builder.append("┺");
} else if (b == null) {
builder.append("┹");
} else {
builder.append("┻");
}
}
}
}
if (getCell(i, rowCount - 1) != null) {
builder.append("━");
} else {
builder.append("─");
}
}
if (getCell(columnCount - 1, rowCount - 1) != null) {
builder.append("┛");
} else {
builder.append("┘");
}
builder.append("\n");
return builder.toString();
}