package com.constellio.app.modules.es.ui.pages;
import static com.constellio.app.ui.i18n.i18n.$;
import org.vaadin.dialogs.ConfirmDialog;
import com.constellio.app.modules.es.model.connectors.ConnectorInstance;
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.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.constellio.model.entities.schemas.Metadata;
import com.vaadin.data.Container;
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 ListConnectorInstancesViewImpl extends BaseViewImpl implements ListConnectorInstancesView {
private ListConnectorInstancesPresenter presenter;
private VerticalLayout viewLayout;
private Table table;
private Button addButton;
public ListConnectorInstancesViewImpl() {
this.presenter = new ListConnectorInstancesPresenter(this);
}
@Override
protected String getTitle() {
return $("ListConnectorInstancesView.viewTitle");
}
@Override
protected Component buildMainComponent(ViewChangeEvent event) {
viewLayout = new VerticalLayout();
viewLayout.setSizeFull();
addButton = new AddButton() {
@Override
public void buttonClick(ClickEvent event) {
presenter.addButtonClicked();
}
};
table = buildRecordsTables();
viewLayout.addComponents(addButton, table);
viewLayout.setComponentAlignment(addButton, Alignment.TOP_RIGHT);
return viewLayout;
}
private Table buildRecordsTables() {
final RecordVODataProvider dataProvider = presenter.getDataProvider();
Container recordsContainer = new RecordVOLazyContainer(dataProvider);
for(Metadata toRemove: presenter.columnToRemove()) {
recordsContainer.removeContainerProperty(toRemove);
}
ButtonsContainer buttonsContainer = new ButtonsContainer(recordsContainer, "buttons");
buttonsContainer.addButton(new ContainerButton() {
@Override
protected Button newButtonInstance(final Object itemId, ButtonsContainer<?> container) {
return new DisplayButton() {
@Override
protected void buttonClick(ClickEvent event) {
Integer index = (Integer) itemId;
RecordVO entity = dataProvider.getRecordVO(index);
presenter.displayButtonClicked(entity);
}
};
}
});
buttonsContainer.addButton(new ContainerButton() {
@Override
protected Button newButtonInstance(final Object itemId, ButtonsContainer<?> container) {
return new EditButton() {
@Override
protected void buttonClick(ClickEvent event) {
Integer index = (Integer) itemId;
RecordVO entity = dataProvider.getRecordVO(index);
presenter.editButtonClicked(entity);
}
};
}
});
// buttonsContainer.addButton(new ContainerButton() {
// @Override
// protected Button newButtonInstance(final Object itemId) {
// return new EditSchemaButton() {
// @Override
// protected void buttonClick(ClickEvent event) {
// Integer index = (Integer) itemId;
// RecordVO entity = dataProvider.getRecordVO(index);
// presenter.editSchemasButtonClicked(entity);
// }
// };
// }
// });
buttonsContainer.addButton(new ContainerButton() {
@Override
protected Button newButtonInstance(final Object itemId, ButtonsContainer<?> container) {
return new DeleteButton() {
@Override
protected void confirmButtonClick(ConfirmDialog dialog) {
Integer index = (Integer) itemId;
RecordVO entity = dataProvider.getRecordVO(index);
presenter.deleteButtonClicked(entity);
}
};
}
});
recordsContainer = buttonsContainer;
RecordVOTable table = new RecordVOTable(
$("ListConnectorInstancesView.tableTitle", dataProvider.size(), dataProvider.getSchema().getLabel(
getSessionContext().getCurrentLocale())),
recordsContainer);
table.setWidth("100%");
table.setColumnHeader("buttons", "");
table.setColumnHeader(ConnectorInstance.CODE, $("code"));
table.setColumnHeader(ConnectorInstance.CONNECTOR_TYPE, $("connectorType"));
table.setColumnHeader(ConnectorInstance.ENABLED, $("enable"));
//table.setColumnHeader(ConnectorInstance.TRAVERSAL_CODE, $("traversalCode"));
table.setColumnHeader(ConnectorInstance.LAST_TRAVERSAL_ON, $("lastTraversalOn"));
table.setColumnHeader("documentsCount", $("documentsCount"));
table.setColumnWidth(dataProvider.getSchema().getCode() + "_id", 200);
table.setColumnWidth("buttons", 200);
table.setPageLength(table.getItemIds().size());
table.setCaption(table.getPageLength() + " " + table.getCaption());
return table;
}
public void refreshTable() {
Table newTable = buildRecordsTables();
viewLayout.replaceComponent(table, newTable);
table = newTable;
}
@Override
protected ClickListener getBackButtonClickListener() {
return new ClickListener() {
@Override
public void buttonClick(ClickEvent event) {
navigateTo().adminModule();
}
};
}
}