package com.constellio.app.modules.rm.ui.pages.folder; import static com.constellio.app.ui.i18n.i18n.$; import com.constellio.app.modules.rm.ui.components.folder.FolderForm; import com.constellio.app.modules.rm.ui.components.folder.FolderFormImpl; import com.constellio.app.modules.rm.ui.components.folder.fields.CustomFolderField; import com.constellio.app.ui.entities.RecordVO; import com.constellio.app.ui.pages.base.BaseViewImpl; import com.constellio.model.frameworks.validation.ValidationException; import com.vaadin.data.Buffered.SourceException; import com.vaadin.data.Property.ValueChangeEvent; import com.vaadin.data.Property.ValueChangeListener; import com.vaadin.data.Validator.InvalidValueException; import com.vaadin.navigator.ViewChangeListener.ViewChangeEvent; import com.vaadin.ui.Component; import com.vaadin.ui.Field; public class AddEditFolderViewImpl extends BaseViewImpl implements AddEditFolderView { private RecordVO recordVO; private FolderFormImpl recordForm; private AddEditFolderPresenter presenter; public AddEditFolderViewImpl() { presenter = new AddEditFolderPresenter(this); } @Override protected void initBeforeCreateComponents(ViewChangeEvent event) { presenter.forParams(event.getParameters()); } @Override protected void afterViewAssembled(ViewChangeEvent event) { presenter.viewAssembled(); } @Override public void setRecord(RecordVO recordVO) { this.recordVO = recordVO; } @Override protected String getTitle() { String titleKey; if (presenter.isAddView()) { if (presenter.isSubfolder()) { titleKey = "AddEditFolderView.addSubFolderViewTitle"; } else { titleKey = "AddEditFolderView.addViewTitle"; } } else { if (presenter.isSubfolder()) { titleKey = "AddEditFolderView.editSubFolderViewTitle"; } else { titleKey = "AddEditFolderView.editViewTitle"; } } return $(titleKey); } private FolderFormImpl newForm() { recordForm = new FolderFormImpl(recordVO) { @Override protected void saveButtonClick(RecordVO viewObject) throws ValidationException { presenter.saveButtonClicked(); } @Override protected void cancelButtonClick(RecordVO viewObject) { presenter.cancelButtonClicked(); } @Override public void reload() { replaceComponent(this, newForm()); } @Override public void commit() { for (Field<?> field : fieldGroup.getFields()) { try { field.commit(); } catch (SourceException | InvalidValueException e) { } } } }; for (final Field<?> field : recordForm.getFields()) { if (field instanceof CustomFolderField) { field.addValueChangeListener(new ValueChangeListener() { @Override public void valueChange(ValueChangeEvent event) { presenter.customFieldValueChanged((CustomFolderField<?>) field); } }); } } return recordForm; } @Override protected Component buildMainComponent(ViewChangeEvent event) { return newForm(); } @Override public FolderForm getForm() { return recordForm; } @Override protected boolean isFullWidthIfActionMenuAbsent() { return true; } }