package org.activityinfo.ui.client.component.importDialog.validation;
import com.google.gwt.dom.client.Style;
import com.google.gwt.user.cellview.client.DataGrid;
import com.google.gwt.user.cellview.client.TextHeader;
import com.google.gwt.user.client.ui.ResizeComposite;
import org.activityinfo.core.shared.importing.strategy.FieldImporterColumn;
import org.activityinfo.core.shared.importing.validation.ValidatedRow;
import org.activityinfo.core.shared.importing.validation.ValidatedRowTable;
import org.activityinfo.ui.client.style.table.DataGridResources;
import org.activityinfo.ui.client.util.GwtUtil;
/**
* A second DataGrid that allows the user to the resolve
* any problems before import
*/
public class ValidationGrid extends ResizeComposite {
private DataGrid<ValidatedRow> dataGrid;
public ValidationGrid() {
this.dataGrid = new DataGrid<>(100, DataGridResources.INSTANCE);
initWidget(dataGrid);
this.dataGrid.setWidth("100%");
this.dataGrid.setHeight("100%");
}
public void refresh(ValidatedRowTable table) {
while (dataGrid.getColumnCount() > 0) {
dataGrid.removeColumn(0);
}
for(int i = 0; i< table.getColumns().size(); i++) {
final FieldImporterColumn column = table.getColumns().get(i);
String columnHeader = column.getAccessor().getHeading();
dataGrid.addColumn(new ValidationRowGridColumn(column.getAccessor(), i),
new TextHeader(columnHeader));
dataGrid.setColumnWidth(i, GwtUtil.columnWidthInEm(columnHeader), Style.Unit.EM);
}
dataGrid.setRowData(table.getRows());
}
public int getInvalidRowsCount() {
int invalidRowsCount = 0;
for (ValidatedRow row : dataGrid.getVisibleItems()) {
if (!row.isValid()) {
invalidRowsCount++;
}
}
return invalidRowsCount;
}
}