public void edit(int rowIndex, PositionColumnValues columnToValues, boolean fireEvent, boolean trackUndo) {
if (rowIndex == getRowCount())
return;
if(trackUndo) {
List<Object> previousValues = new ArrayList<>(columnToValues.getColumnIndices().size());
for (int columnIndex : columnToValues.getColumnIndices()) {
previousValues.add(trim(getStringAt(rowIndex, columnIndex)));
}
columnToValues.setPreviousValues(previousValues);
}
delegate.edit(rowIndex, columnToValues, fireEvent, trackUndo);
if (trackUndo)
undoManager.addEdit(new EditPosition(this, rowIndex, columnToValues));
}