package com.constellio.app.modules.robots.ui.pages; import static com.constellio.app.ui.i18n.i18n.$; import org.vaadin.dialogs.ConfirmDialog; import com.constellio.app.ui.entities.RecordVO; 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.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.pages.base.BaseViewImpl; import com.vaadin.navigator.ViewChangeListener.ViewChangeEvent; import com.vaadin.ui.Alignment; 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.Table; import com.vaadin.ui.VerticalLayout; public class ListRootRobotsViewImpl extends BaseViewImpl implements ListRootRobotsView { private final ListRootRobotsPresenter presenter; public ListRootRobotsViewImpl() { this.presenter = new ListRootRobotsPresenter(this); } @Override protected String getTitle() { return $("ListRootRobotsView.viewTitle"); } @Override protected Component buildMainComponent(ViewChangeEvent event) { VerticalLayout layout = new VerticalLayout(); layout.setSizeFull(); Button addButton = new AddButton() { @Override protected void buttonClick(ClickEvent event) { presenter.addButtonClicked(); } }; Table table = buildTable(); layout.addComponents(addButton, table); layout.setExpandRatio(table, 1); layout.setComponentAlignment(addButton, Alignment.TOP_RIGHT); return layout; } private Table buildTable() { RecordVOLazyContainer container = new RecordVOLazyContainer(presenter.getRootRobotsDataProvider()); final ButtonsContainer<RecordVOLazyContainer> buttonsContainer = new ButtonsContainer<>(container); buttonsContainer.addButton(new ContainerButton() { @Override protected Button newButtonInstance(final Object itemId, ButtonsContainer<?> container) { return new DisplayButton() { @Override protected void buttonClick(ClickEvent event) { RecordVO recordVO = buttonsContainer.getNestedContainer().getRecordVO((int) itemId); presenter.displayButtonClicked(recordVO); } }; } }); buttonsContainer.addButton(new ContainerButton() { @Override protected Button newButtonInstance(final Object itemId, ButtonsContainer<?> container) { DeleteButton deleteButton = new DeleteButton() { @Override protected void confirmButtonClick(ConfirmDialog dialog) { RecordVO recordVO = buttonsContainer.getNestedContainer().getRecordVO((int) itemId); presenter.deleteButtonClicked(recordVO); } }; return deleteButton; } }); RecordVOTable table = new RecordVOTable($("ListRootRobotsView.tableCaption", container.size()), buttonsContainer); table.setColumnHeader(ButtonsContainer.DEFAULT_BUTTONS_PROPERTY_ID, ""); table.setColumnWidth(ButtonsContainer.DEFAULT_BUTTONS_PROPERTY_ID, 90); table.setPageLength(Math.min(15, container.size())); table.setWidth("100%"); return table; } @Override protected ClickListener getBackButtonClickListener() { return new ClickListener() { @Override public void buttonClick(ClickEvent event) { presenter.backButtonClicked(); } }; } }