RowSynchronizer extends BaseSynchronizer<RowMetaData, RowMetaData, RowMetaData> { @Override public void insert(final RowMetaData metaData) throws VetoException { if (!handlesAppend(metaData)) { return; } final int rowIndex = metaData.getRowIndex(); final List<DTCellValue52> modelRow = new ArrayList<DTCellValue52>(); model.getData().add(rowIndex, modelRow); final GridRow uiModelRow = new BaseGridRow(GuidedDecisionTableView.ROW_HEIGHT); uiModel.insertRow(rowIndex, uiModelRow); initialiseRowData(rowIndex); }  @Override boolean handlesAppend(final MetaData metaData); @Override void append(final RowMetaData metaData); @Override boolean handlesInsert(final MetaData metaData); @Override void insert(final RowMetaData metaData); @Override boolean handlesUpdate(final MetaData metaData); @Override List<BaseColumnFieldDiff> update(final RowMetaData originalMetaData,
                                            final RowMetaData editedMetaData); @Override boolean handlesDelete(final MetaData metaData); @Override void delete(final RowMetaData metaData); @Override boolean handlesMoveColumnsTo(final List<? extends MetaData> metaData); @Override void moveColumnsTo(final List<MoveColumnToMetaData> metaData); @Override boolean handlesMoveRowsTo(final List<? extends MetaData> metaData); @Override void moveRowsTo(final List<MoveRowToMetaData> metaData);  }
@Test public void testInsert() throws VetoException { modelSynchronizer.appendRow(); modelSynchronizer.insertRow(0); assertEquals(2, model.getData().size()); assertEquals(2, uiModel.getRowCount()); assertEquals(GuidedDecisionTableView.ROW_HEIGHT, uiModel.getRow(0).getHeight(), 0.0); assertEquals(GuidedDecisionTableView.ROW_HEIGHT, uiModel.getRow(1).getHeight(), 0.0); }