private void recomputeEverythingAfter(int firstRow) {
getSeries().setFireSeriesChanged(false);
int itemCount = getSeries().getItemCount();
if (itemCount > 0 && firstRow < itemCount - 1)
getSeries().delete(firstRow, itemCount - 1);
BaseRoute route = getPositions().getRoute();
if (route == null)
return;
int lastRow = getPositions().getRowCount() - 1;
if (firstRow <= lastRow && lastRow >= 0) {
if(getXAxisMode().equals(Distance)) {
double[] distances = route.getDistancesFromStart(firstRow, lastRow);
for (int i = firstRow; i < lastRow + 1; i++) {
getSeries().add(formatDistance(distances[i - firstRow]), formatYValue(getPositions().getPosition(i)), false);
}
} else {
long[] times = route.getTimesFromStart(firstRow, lastRow);
for (int i = firstRow; i < lastRow + 1; i++) {
getSeries().add(formatTime(times[i - firstRow]), formatYValue(getPositions().getPosition(i)), false);
}
}
}
getSeries().setFireSeriesChanged(true);
getSeries().fireSeriesChanged();
}