package com.constellio.app.ui.pages.management.sequence;
import static com.constellio.app.ui.i18n.i18n.$;
import java.util.Collection;
import java.util.List;
import com.constellio.app.ui.entities.SequenceVO;
import com.constellio.app.ui.framework.buttons.BaseButton;
import com.constellio.app.ui.framework.buttons.SaveButton;
import com.constellio.app.ui.framework.components.fields.number.BaseLongField;
import com.constellio.app.ui.pages.base.BaseViewImpl;
import com.vaadin.data.Item;
import com.vaadin.data.util.MethodProperty;
import com.vaadin.navigator.ViewChangeListener.ViewChangeEvent;
import com.vaadin.ui.Alignment;
import com.vaadin.ui.Button;
import com.vaadin.ui.Component;
import com.vaadin.ui.HorizontalLayout;
import com.vaadin.ui.Table;
import com.vaadin.ui.TextField;
import com.vaadin.ui.UI;
import com.vaadin.ui.VerticalLayout;
import com.vaadin.ui.Window;
import com.vaadin.ui.themes.ValoTheme;
public class ListSequencesViewImpl extends BaseViewImpl implements ListSequencesView {
private String recordId;
private List<SequenceVO> sequenceVOs;
private ListSequencesPresenter presenter;
public ListSequencesViewImpl(String recordId) {
this.recordId = recordId;
presenter = new ListSequencesPresenter(this);
}
@Override
public String getRecordId() {
return recordId;
}
@Override
public void setSequenceVOs(List<SequenceVO> sequenceVOs) {
this.sequenceVOs = sequenceVOs;
}
@SuppressWarnings("unchecked")
@Override
protected Component buildMainComponent(ViewChangeEvent event) {
VerticalLayout mainLayout = new VerticalLayout();
// mainLayout.setSizeFull();
mainLayout.setSpacing(true);
Table table = new Table();
table.setWidth("100%");
table.setPageLength(sequenceVOs.size());
table.addContainerProperty("id", String.class, "");
table.addContainerProperty("title", String.class, "");
table.addContainerProperty("value", TextField.class, null);
table.setColumnExpandRatio("title", 1);
table.setColumnHeader("id", $("ListSequencesView.table.id"));
table.setColumnHeader("title", $("ListSequencesView.table.title"));
table.setColumnHeader("value", $("ListSequencesView.table.value"));
for (SequenceVO sequenceVO : sequenceVOs) {
TextField valueField = new BaseLongField(new MethodProperty<>(sequenceVO, "sequenceValue"));
Item item = table.addItem(sequenceVO);
item.getItemProperty("id").setValue(sequenceVO.getSequenceId());
item.getItemProperty("title").setValue(sequenceVO.getSequenceTitle());
item.getItemProperty("value").setValue(valueField);
}
HorizontalLayout buttonsLayout = new HorizontalLayout();
buttonsLayout.setSpacing(true);
Button saveButton = new SaveButton(false) {
@Override
protected void buttonClick(ClickEvent event) {
presenter.saveButtonClicked();
}
};
saveButton.addStyleName(ValoTheme.BUTTON_PRIMARY);
Button cancelButton = new BaseButton($("cancel")) {
@Override
protected void buttonClick(ClickEvent event) {
presenter.cancelButtonClicked();
}
};
mainLayout.addComponents(table, buttonsLayout);
mainLayout.setExpandRatio(table, 1);
mainLayout.setComponentAlignment(buttonsLayout, Alignment.TOP_CENTER);
buttonsLayout.addComponents(saveButton, cancelButton);
return mainLayout;
}
@Override
protected String getTitle() {
return $("ListSequencesView.viewTitle");
}
@Override
public void closeWindow() {
Collection<Window> windows = UI.getCurrent().getWindows();
for (Window window : windows) {
window.close();
}
}
}