code: private String[][] getDataTokens(Relation frame) {
          if (frame.rowCount() == 0) return new String[0][0];
          final int rowCount = Math.min(maxRows, frame.rowCount());
          final boolean truncated = frame.rowCount() > maxRows;
          final int colCount = frame.columnCount();
          final String[][] data;
          if (truncated) {
              data = new String[rowCount + 1][colCount];
              int i;
              for (i = 0; i < Math.ceil((double) rowCount / 2); i++) {
                  for (int j = 0; j < colCount; j++) {
                      data[i][j] = frame.getString(i, j);
                  }
              }
              for (int j = 0; j < colCount; j++) {
                  data[i][j] = "...";
              }
              for (++i; i <= rowCount; i++) {
                  for (int j = 0; j < colCount; j++) {
                      data[i][j] = frame.getString(frame.rowCount() - maxRows + i - 1, j);
                  }
              }
          } else {
              data = new String[rowCount][colCount];
              for (int i = 0; i < rowCount; i++) {
                  for (int j = 0; j < colCount; j++) {
                      String value = frame.getString(i, j);
                      data[i][j] = value == null ? "" : value;
                  }
              }
          }
          return data;
      }
docs: Returns the 2-D array of data tokens from the frame specified
  
  @param frame the DataFrame from which to create 2D array of formatted tokens
  @return the array of data tokens