package com.constellio.app.modules.tasks.ui.pages.tasks; import com.constellio.app.modules.tasks.model.wrappers.request.BorrowRequest; import com.constellio.app.modules.tasks.ui.components.fields.CustomTaskField; import com.constellio.app.modules.tasks.ui.components.fields.TaskForm; import com.constellio.app.modules.tasks.ui.components.fields.TaskFormImpl; import com.constellio.app.modules.tasks.ui.entities.TaskVO; import com.constellio.app.ui.entities.RecordVO; import com.constellio.app.ui.framework.components.fields.BooleanOptionGroup; 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 AddEditTaskViewImpl extends BaseViewImpl implements AddEditTaskView { private final AddEditTaskPresenter presenter; private TaskFormImpl recordForm; private TaskVO taskVO; public AddEditTaskViewImpl() { presenter = new AddEditTaskPresenter(this); } @Override public void setRecord(TaskVO taskVO) { this.taskVO = taskVO; } @Override public void adjustAcceptedField(boolean isVisible) { BooleanOptionGroup field = (BooleanOptionGroup) getForm().getCustomField(BorrowRequest.ACCEPTED); if(isVisible) { field.setVisible(true); field.setRequired(true); } else if(field != null){ field.setVisible(false); field.setRequired(false); } } @Override protected void initBeforeCreateComponents(ViewChangeEvent event) { presenter.initTaskVO(event.getParameters()); } protected String getTitle() { return presenter.getViewTitle(); } @Override protected void afterViewAssembled(ViewChangeEvent event) { presenter.viewAssembled(); } @Override protected Component buildMainComponent(ViewChangeEvent event) { return newForm(); } private TaskFormImpl newForm() { recordForm = new TaskFormImpl(taskVO) { @Override protected void saveButtonClick(RecordVO viewObject) throws ValidationException { presenter.saveButtonClicked(viewObject); } @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 CustomTaskField) { field.addValueChangeListener(new ValueChangeListener() { @Override public void valueChange(ValueChangeEvent event) { presenter.customFieldValueChanged((CustomTaskField<?>) field); } }); } } return recordForm; } @Override public TaskForm getForm() { return recordForm; } }