| 2388 | |
| 2389 | |
| 2390 | public void insertRow(int insert, Object[] columnData) { |
| 2391 | for (int col = 0; col < columns.length; col++) { |
| 2392 | switch (columnTypes[col]) { |
| 2393 | case CATEGORY: |
| 2394 | case INT: { |
| 2395 | int[] intTemp = new int[rowCount+1]; |
| 2396 | System.arraycopy(columns[col], 0, intTemp, 0, insert); |
| 2397 | System.arraycopy(columns[col], insert, intTemp, insert+1, rowCount - insert); |
| 2398 | columns[col] = intTemp; |
| 2399 | break; |
| 2400 | } |
| 2401 | case LONG: { |
| 2402 | long[] longTemp = new long[rowCount+1]; |
| 2403 | System.arraycopy(columns[col], 0, longTemp, 0, insert); |
| 2404 | System.arraycopy(columns[col], insert, longTemp, insert+1, rowCount - insert); |
| 2405 | columns[col] = longTemp; |
| 2406 | break; |
| 2407 | } |
| 2408 | case FLOAT: { |
| 2409 | float[] floatTemp = new float[rowCount+1]; |
| 2410 | System.arraycopy(columns[col], 0, floatTemp, 0, insert); |
| 2411 | System.arraycopy(columns[col], insert, floatTemp, insert+1, rowCount - insert); |
| 2412 | columns[col] = floatTemp; |
| 2413 | break; |
| 2414 | } |
| 2415 | case DOUBLE: { |
| 2416 | double[] doubleTemp = new double[rowCount+1]; |
| 2417 | System.arraycopy(columns[col], 0, doubleTemp, 0, insert); |
| 2418 | System.arraycopy(columns[col], insert, doubleTemp, insert+1, rowCount - insert); |
| 2419 | columns[col] = doubleTemp; |
| 2420 | break; |
| 2421 | } |
| 2422 | case STRING: { |
| 2423 | String[] stringTemp = new String[rowCount+1]; |
| 2424 | System.arraycopy(columns[col], 0, stringTemp, 0, insert); |
| 2425 | System.arraycopy(columns[col], insert, stringTemp, insert+1, rowCount - insert); |
| 2426 | columns[col] = stringTemp; |
| 2427 | break; |
| 2428 | } |
| 2429 | } |
| 2430 | } |
| 2431 | // Need to increment before setRow(), because it calls ensureBounds() |
| 2432 | // https://github.com/processing/processing/issues/5406 |
| 2433 | ++rowCount; |
| 2434 | setRow(insert, columnData); |
| 2435 | } |
| 2436 | |
| 2437 | |
| 2438 | /** |