package com.constellio.app.modules.rm.ui.components.decommissioning; import static com.constellio.app.ui.i18n.i18n.$; import org.vaadin.dialogs.ConfirmDialog; import com.constellio.app.modules.rm.ui.pages.decommissioning.DecommissioningListPresenter; import com.constellio.app.modules.rm.wrappers.structures.DecomListValidation; import com.constellio.app.ui.framework.buttons.DeleteButton; import com.constellio.app.ui.framework.components.BooleanLabel; import com.constellio.app.ui.framework.components.LocalDateLabel; import com.constellio.app.ui.framework.components.display.ReferenceDisplay; import com.constellio.app.ui.framework.components.table.BaseTable; import com.vaadin.ui.Component; import com.vaadin.ui.Table; import com.vaadin.ui.Table.ColumnGenerator; public class ValidationsGenerator implements ColumnGenerator { public static final String VALIDATOR = "validator"; public static final String VALIDATION_REQUEST_DATE = "validationRequestDate"; public static final String VALIDATED = "validated"; public static final String VALIDATION_DATE = "validationDate"; public static final String REMOVE = "remove"; private final DecommissioningListPresenter presenter; public ValidationsGenerator(DecommissioningListPresenter presenter) { this.presenter = presenter; } public BaseTable attachTo(BaseTable table) { table.addGeneratedColumn(VALIDATOR, this); table.setColumnHeader(VALIDATOR, $("DecomValidatorsTable.username")); table.setColumnExpandRatio(VALIDATOR, 1); table.addGeneratedColumn(VALIDATION_REQUEST_DATE, this); table.setColumnHeader(VALIDATION_REQUEST_DATE, $("DecomValidatorsTable.requestDate")); table.addGeneratedColumn(VALIDATED, this); table.setColumnHeader(VALIDATED, $("DecomValidatorsTable.valid")); table.addGeneratedColumn(VALIDATION_DATE, this); table.setColumnHeader(VALIDATION_DATE, $("DecomValidatorsTable.validationDate")); if (presenter.canRemoveValidationRequest()) { table.addGeneratedColumn(REMOVE, this); table.setColumnHeader(REMOVE, ""); table.setColumnWidth(REMOVE, 50); table.setVisibleColumns( VALIDATOR, VALIDATION_REQUEST_DATE, VALIDATED, VALIDATION_DATE, REMOVE); } else { table.setVisibleColumns(VALIDATOR, VALIDATION_REQUEST_DATE, VALIDATED, VALIDATION_DATE); } return table; } @Override public Object generateCell(Table source, Object itemId, Object columnId) { DecomListValidation validation = (DecomListValidation) itemId; switch ((String) columnId) { case VALIDATOR: return new ReferenceDisplay(validation.getUserId()); case VALIDATION_REQUEST_DATE: return new LocalDateLabel(validation.getRequestDate()); case VALIDATED: return new BooleanLabel(validation.isValidated()); case VALIDATION_DATE: return new LocalDateLabel(validation.getValidationDate()); case REMOVE: return buildRemove(validation); } return null; } private Component buildRemove(final DecomListValidation validation) { DeleteButton button = new DeleteButton() { @Override protected void confirmButtonClick(ConfirmDialog dialog) { presenter.validationRemoved(validation); } }; button.setEnabled(!validation.isValidated()); return button; } }