| 2431 | |
| 2432 | |
| 2433 | public void insertRow(int insert, Object[] columnData) { |
| 2434 | for (int col = 0; col < columns.length; col++) { |
| 2435 | switch (columnTypes[col]) { |
| 2436 | case CATEGORY: |
| 2437 | case INT: { |
| 2438 | int[] intTemp = new int[rowCount+1]; |
| 2439 | System.arraycopy(columns[col], 0, intTemp, 0, insert); |
| 2440 | System.arraycopy(columns[col], insert, intTemp, insert+1, rowCount - insert); |
| 2441 | columns[col] = intTemp; |
| 2442 | break; |
| 2443 | } |
| 2444 | case LONG: { |
| 2445 | long[] longTemp = new long[rowCount+1]; |
| 2446 | System.arraycopy(columns[col], 0, longTemp, 0, insert); |
| 2447 | System.arraycopy(columns[col], insert, longTemp, insert+1, rowCount - insert); |
| 2448 | columns[col] = longTemp; |
| 2449 | break; |
| 2450 | } |
| 2451 | case FLOAT: { |
| 2452 | float[] floatTemp = new float[rowCount+1]; |
| 2453 | System.arraycopy(columns[col], 0, floatTemp, 0, insert); |
| 2454 | System.arraycopy(columns[col], insert, floatTemp, insert+1, rowCount - insert); |
| 2455 | columns[col] = floatTemp; |
| 2456 | break; |
| 2457 | } |
| 2458 | case DOUBLE: { |
| 2459 | double[] doubleTemp = new double[rowCount+1]; |
| 2460 | System.arraycopy(columns[col], 0, doubleTemp, 0, insert); |
| 2461 | System.arraycopy(columns[col], insert, doubleTemp, insert+1, rowCount - insert); |
| 2462 | columns[col] = doubleTemp; |
| 2463 | break; |
| 2464 | } |
| 2465 | case STRING: { |
| 2466 | String[] stringTemp = new String[rowCount+1]; |
| 2467 | System.arraycopy(columns[col], 0, stringTemp, 0, insert); |
| 2468 | System.arraycopy(columns[col], insert, stringTemp, insert+1, rowCount - insert); |
| 2469 | columns[col] = stringTemp; |
| 2470 | break; |
| 2471 | } |
| 2472 | } |
| 2473 | } |
| 2474 | // Need to increment before setRow(), because it calls ensureBounds() |
| 2475 | // https://github.com/processing/processing/issues/5406 |
| 2476 | ++rowCount; |
| 2477 | setRow(insert, columnData); |
| 2478 | } |
| 2479 | |
| 2480 | |
| 2481 | /** |