package com.constellio.app.modules.tasks.ui.pages.workflow; import static com.constellio.app.ui.i18n.i18n.$; import java.util.List; import org.vaadin.dialogs.ConfirmDialog; import com.constellio.app.ui.framework.buttons.AddButton; import com.constellio.app.ui.framework.buttons.DeleteButton; import com.constellio.app.ui.framework.buttons.DisplayButton; import com.constellio.app.ui.framework.buttons.EditButton; import com.constellio.app.ui.framework.components.table.RecordVOTable; import com.constellio.app.ui.framework.containers.ButtonsContainer; import com.constellio.app.ui.framework.containers.ButtonsContainer.ContainerButton; import com.constellio.app.ui.framework.containers.RecordVOLazyContainer; import com.constellio.app.ui.framework.data.RecordVODataProvider; import com.constellio.app.ui.pages.base.BaseViewImpl; import com.vaadin.data.Container; import com.vaadin.navigator.ViewChangeListener.ViewChangeEvent; import com.vaadin.ui.Button; import com.vaadin.ui.Button.ClickEvent; import com.vaadin.ui.Button.ClickListener; import com.vaadin.ui.Component; import com.vaadin.ui.VerticalLayout; public class ListWorkflowsViewImpl extends BaseViewImpl implements ListWorkflowsView { private final ListWorkflowsPresenter presenter; public ListWorkflowsViewImpl() { this.presenter = new ListWorkflowsPresenter(this); } @Override protected String getTitle() { return $("ListWorkflowsView.viewTitle"); } @Override protected ClickListener getBackButtonClickListener() { return new ClickListener() { @Override public void buttonClick(ClickEvent event) { presenter.backButtonClicked(); } }; } @Override protected List<Button> buildActionMenuButtons(ViewChangeEvent event) { List<Button> buttons = super.buildActionMenuButtons(event); buttons.add(new AddButton() { @Override protected void buttonClick(ClickEvent event) { presenter.addButtonClicked(); } }); return buttons; } @Override protected Component buildMainComponent(ViewChangeEvent event) { Container workflows = buildContainer(presenter.getWorkflows()); RecordVOTable table = new RecordVOTable($("ListWorkflowsView.workflows", workflows.size()), workflows); table.setColumnHeader(ButtonsContainer.DEFAULT_BUTTONS_PROPERTY_ID, ""); table.setColumnWidth(ButtonsContainer.DEFAULT_BUTTONS_PROPERTY_ID, 130); table.setPageLength(Math.min(15, workflows.size())); table.setWidth("100%"); VerticalLayout layout = new VerticalLayout(table); layout.setSizeFull(); return layout; } private Container buildContainer(RecordVODataProvider provider) { final RecordVOLazyContainer records = new RecordVOLazyContainer(provider); ButtonsContainer<RecordVOLazyContainer> container = new ButtonsContainer<>(records); container.addButton(new ContainerButton() { @Override protected Button newButtonInstance(final Object itemId, ButtonsContainer<?> container) { return new DisplayButton() { @Override protected void buttonClick(ClickEvent event) { int index = (int) itemId; presenter.displayButtonClicked(records.getRecordVO(index)); } }; } }); container.addButton(new ContainerButton() { @Override protected Button newButtonInstance(final Object itemId, ButtonsContainer<?> container) { return new EditButton() { @Override protected void buttonClick(ClickEvent event) { int index = (int) itemId; presenter.editButtonClicked(records.getRecordVO(index)); } }; } }); container.addButton(new ContainerButton() { @Override protected Button newButtonInstance(final Object itemId, ButtonsContainer<?> container) { return new DeleteButton() { @Override protected void confirmButtonClick(ConfirmDialog dialog) { int index = (int) itemId; presenter.deleteButtonClicked(records.getRecordVO(index)); } }; } }); return container; } }