package com.constellio.app.ui.pages.management.schemas.schema; import com.constellio.app.ui.entities.FormMetadataSchemaVO; import com.constellio.app.ui.framework.components.BaseForm; import com.constellio.app.ui.framework.components.fields.BaseTextField; import com.constellio.app.ui.framework.components.fields.MultilingualTextField; import com.constellio.app.ui.pages.base.BaseViewImpl; import com.constellio.app.ui.params.ParamUtils; import com.constellio.model.frameworks.validation.ValidationException; import com.vaadin.data.Validator; import com.vaadin.data.fieldgroup.PropertyId; import com.vaadin.navigator.ViewChangeListener.ViewChangeEvent; import com.vaadin.ui.CheckBox; import com.vaadin.ui.Component; import com.vaadin.ui.VerticalLayout; import java.util.Map; import static com.constellio.app.ui.i18n.i18n.$; public class AddEditSchemaViewImpl extends BaseViewImpl implements AddEditSchemaView { private FormMetadataSchemaVO schemaVO; AddEditSchemaPresenter presenter; @PropertyId("localCode") private BaseTextField localCodeField; @PropertyId("labels") private MultilingualTextField labelsField; @PropertyId("advancedSearch") private CheckBox advancedSearch; public AddEditSchemaViewImpl() { this.presenter = new AddEditSchemaPresenter(this); } @Override protected String getTitle() { return $("AddEditSchemaView.viewTitle"); } @Override protected Component buildMainComponent(ViewChangeEvent event) { Map<String, String> paramsMap = ParamUtils.getParamsMap(event.getParameters()); presenter.setParameters(paramsMap); VerticalLayout viewLayout = new VerticalLayout(); viewLayout.setSizeFull(); viewLayout.addComponents(buildForm()); return viewLayout; } @Override public void setSchemaVO(FormMetadataSchemaVO schemaVO) { this.schemaVO = schemaVO; } private Component buildForm() { localCodeField = new BaseTextField($("AddEditSchemaView.localCode")); localCodeField.setId("localCode"); localCodeField.addStyleName("localCode"); localCodeField.setEnabled(presenter.isCodeEditable()); localCodeField.setRequired(true); labelsField = new MultilingualTextField(true); labelsField.setId("labels"); labelsField.addStyleName("labels"); labelsField.setRequired(true); advancedSearch = new CheckBox($("AddEditSchemaView.advancedSearch")); return new BaseForm<FormMetadataSchemaVO>(schemaVO, this, localCodeField, labelsField, advancedSearch) { @Override protected void saveButtonClick(FormMetadataSchemaVO schemaVO) throws ValidationException { try { labelsField.validateFields(); } catch (Validator.InvalidValueException e) { showErrorMessage(e.getMessage()); return; } presenter.saveButtonClicked(); } @Override protected void cancelButtonClick(FormMetadataSchemaVO metadataVO) { presenter.cancelButtonClicked(); } }; } }