package com.constellio.app.modules.rm.ui.pages.cart;
import com.constellio.app.ui.entities.RecordVO;
import com.constellio.app.ui.framework.buttons.*;
import com.constellio.app.ui.framework.components.fields.BaseTextField;
import com.constellio.app.ui.framework.components.table.RecordVOTable;
import com.constellio.app.ui.framework.containers.ButtonsContainer;
import com.constellio.app.ui.framework.containers.RecordVOLazyContainer;
import com.constellio.app.ui.pages.base.BaseViewImpl;
import com.vaadin.navigator.ViewChangeListener;
import com.vaadin.ui.*;
import com.vaadin.ui.themes.ValoTheme;
import org.vaadin.dialogs.ConfirmDialog;
import static com.constellio.app.ui.i18n.i18n.$;
public class CartsListViewImpl extends BaseViewImpl implements CartsListView{
private final CartsListPresenter presenter;
public CartsListViewImpl() {
presenter = new CartsListPresenter(this);
}
@Override
protected String getTitle() {
return $("CartsListView.viewTitle");
}
@Override
protected Component buildMainComponent(ViewChangeListener.ViewChangeEvent event) {
VerticalLayout layout = new VerticalLayout();
layout.setSizeFull();
TabSheet tabSheet = new TabSheet();
tabSheet.addTab(buildOwnedCartsTab());
tabSheet.addTab(buildSharedCartsTab());
layout.addComponent(tabSheet);
return layout;
}
private Layout buildOwnedCartsTab() {
VerticalLayout tabLayout = new VerticalLayout();
tabLayout.setCaption($("CartView.ownedCarts"));
Button addButton = new WindowButton($("add"),$("CartsListView.creatingCart")) {
@Override
protected Component buildWindowContent() {
VerticalLayout layout = new VerticalLayout();
final BaseTextField titleField = new BaseTextField($("CartsListView.cartTitleField"));
BaseButton saveButton = new BaseButton($("save")) {
@Override
protected void buttonClick(ClickEvent event) {
presenter.saveButtonClicked(titleField.getValue());
getWindow().close();
}
};
saveButton.addStyleName(ValoTheme.BUTTON_PRIMARY);
layout.addComponent(titleField);
layout.addComponent(saveButton);
layout.setSpacing(true);
return layout;
}
};
Table table = buildTable();
tabLayout.addComponents(addButton, table);
tabLayout.setExpandRatio(table, 1);
tabLayout.setComponentAlignment(addButton, Alignment.TOP_RIGHT);
return tabLayout;
}
private Table buildTable() {
RecordVOLazyContainer container = new RecordVOLazyContainer(presenter.getOwnedCartsDataProvider());
final ButtonsContainer<RecordVOLazyContainer> buttonsContainer = new ButtonsContainer<>(container);
buttonsContainer.addButton(new ButtonsContainer.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 ButtonsContainer.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("", 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;
}
private Layout buildSharedCartsTab() {
VerticalLayout tabLayout = new VerticalLayout();
tabLayout.setCaption($("CartView.sharedCarts"));
RecordVOLazyContainer container = new RecordVOLazyContainer(presenter.getSharedCartsDataProvider());
final ButtonsContainer<RecordVOLazyContainer> buttonsContainer = new ButtonsContainer<>(container);
buttonsContainer.addButton(new ButtonsContainer.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 ButtonsContainer.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("",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%");
tabLayout.addComponent(table);
tabLayout.setExpandRatio(table, 1);
return tabLayout;
}
}