@Override public String toString() { final StringBuilder builder = new StringBuilder(); for (int row = 1; row <= currentRow; row += 1) { final StringBuilder top = new StringBuilder(); final StringBuilder middle = new StringBuilder(); final StringBuilder bottom = new StringBuilder(); for (int column = 1; column <= maxColumn; column += 1) { final GridPosition position = new GridPosition(row, column); final TableCell cell = grid.get(position); if (cell == null) { top.append(" "); middle.append(" "); bottom.append(" "); } else { final GridArea gridArea = cell.getGridArea(); if (row == gridArea.startRow) { top.append("-----"); } else { top.append(" "); } if (row == gridArea.endRow) { bottom.append("-----"); } else { bottom.append(" "); } if (column == gridArea.startColumn) { middle.append("|"); } else { middle.append(" "); } middle.append(Long.toString(cell.hashCode()).substring(0, 3)); if (column == gridArea.endColumn) { middle.append("|"); } else { middle.append(" "); } } } builder.append(top.toString()).append("\n"); builder.append(middle.toString()).append("\n"); builder.append(bottom.toString()).append("\n"); } return builder.toString(); }