package com.constellio.app.modules.es.ui.pages;
import static com.constellio.app.ui.i18n.i18n.$;
import com.constellio.app.modules.es.model.connectors.ConnectorType;
import com.constellio.app.ui.entities.RecordVO;
import com.constellio.app.ui.framework.components.RecordForm;
import com.constellio.app.ui.framework.components.fields.record.RecordComboBox;
import com.constellio.app.ui.framework.data.RecordVODataProvider;
import com.constellio.app.ui.pages.base.BaseViewImpl;
import com.constellio.model.frameworks.validation.ValidationException;
import com.vaadin.data.Property.ValueChangeEvent;
import com.vaadin.data.Property.ValueChangeListener;
import com.vaadin.navigator.ViewChangeListener.ViewChangeEvent;
import com.vaadin.ui.Button.ClickEvent;
import com.vaadin.ui.Button.ClickListener;
import com.vaadin.ui.Component;
import com.vaadin.ui.VerticalLayout;
public class WizardConnectorInstanceViewImpl extends BaseViewImpl implements WizardConnectorInstanceView {
private VerticalLayout mainLayout;
private RecordVODataProvider connectorTypeDataProvider;
private RecordVO recordVO;
private RecordComboBox connectorTypeField;
private RecordForm connectorForm;
private WizardConnectorInstancePresenter presenter;
public WizardConnectorInstanceViewImpl() {
presenter = new WizardConnectorInstancePresenter(this);
}
@Override
protected ClickListener getBackButtonClickListener() {
return new ClickListener() {
@Override
public void buttonClick(ClickEvent event) {
presenter.backButtonClicked();
}
};
}
@Override
protected void initBeforeCreateComponents(ViewChangeEvent event) {
presenter.forParams(event.getParameters());
}
@Override
protected Component buildMainComponent(ViewChangeEvent event) {
mainLayout = new VerticalLayout();
mainLayout.setSizeFull();
mainLayout.setSpacing(true);
connectorTypeField = new RecordComboBox(ConnectorType.DEFAULT_SCHEMA);
connectorTypeField.setCaption($("WizardConnectorInstanceView.connectorType"));
connectorTypeField.setDataProvider(connectorTypeDataProvider);
connectorTypeField.addValueChangeListener(new ValueChangeListener() {
@Override
public void valueChange(ValueChangeEvent event) {
String connectorTypeId = (String) connectorTypeField.getValue();
presenter.connectorTypeSelected(connectorTypeId);
}
});
mainLayout.addComponents(connectorTypeField);
if (recordVO != null) {
connectorForm = newForm();
mainLayout.addComponent(connectorForm);
}
return mainLayout;
}
@Override
public void setConnectorTypeDataProvider(RecordVODataProvider connectorTypeDataProvider) {
this.connectorTypeDataProvider = connectorTypeDataProvider;
}
@Override
public void refreshConnectorForm() {
if (recordVO == null) {
mainLayout.removeComponent(connectorForm);
connectorForm = null;
} else {
RecordForm newConnectorForm = newForm();
if (connectorForm != null) {
mainLayout.replaceComponent(connectorForm, newConnectorForm);
} else {
mainLayout.addComponent(newConnectorForm);
}
connectorForm = newConnectorForm;
}
}
@Override
public void setRecordVO(RecordVO recordVO) {
this.recordVO = recordVO;
}
private RecordForm newForm() {
RecordForm recordForm = new RecordForm(recordVO, new ConnectorInstanceFieldFactory()) {
@Override
protected void saveButtonClick(RecordVO viewObject)
throws ValidationException {
presenter.saveButtonClicked(viewObject);
}
@Override
protected void cancelButtonClick(RecordVO viewObject) {
presenter.cancelButtonClicked();
}
};
return recordForm;
}
@Override
protected String getTitle() {
return presenter.getTitle();
}
}