package com.constellio.app.ui.pages.management.taxonomy; import static com.constellio.app.ui.i18n.i18n.$; import java.util.Map; import com.constellio.app.ui.entities.TaxonomyVO; import com.constellio.app.ui.framework.components.BaseForm; import com.constellio.app.ui.framework.components.fields.ListOptionGroup; import com.constellio.app.ui.framework.components.fields.list.ListAddRemoveRecordLookupField; import com.constellio.app.ui.pages.base.BaseViewImpl; import com.constellio.app.ui.params.ParamUtils; import com.constellio.model.entities.Taxonomy; import com.constellio.model.entities.records.wrappers.Group; import com.constellio.model.entities.records.wrappers.User; import com.constellio.model.frameworks.validation.ValidationException; 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.TextField; public class AddEditTaxonomyViewImpl extends BaseViewImpl implements AddEditTaxonomyView { public static final String FOLDER = "folderObject"; public static final String DOCUMENT = "documentObject"; private AddEditTaxonomyPresenter presenter; private TaxonomyVO taxonomyVO; @PropertyId("title") private TextField titleField; @PropertyId("userIds") private ListAddRemoveRecordLookupField userIdsField; @PropertyId("groupIds") private ListAddRemoveRecordLookupField groupIdsField; @PropertyId("visibleInHomePage") private CheckBox visibleInHomePageField; @PropertyId("classifiedObjects") private ListOptionGroup classifiedObjectsField; public AddEditTaxonomyViewImpl() { this.presenter = new AddEditTaxonomyPresenter(this); } @Override protected void initBeforeCreateComponents(ViewChangeEvent event) { setupParamsAndVO(event); } private void setupParamsAndVO(ViewChangeEvent event) { Map<String, String> params = ParamUtils.getParamsMap(event.getParameters()); String taxonomyCode = params.get("taxonomyCode"); if (taxonomyCode != null) { presenter.setEditAction(true); Taxonomy taxonomy = presenter.fetchTaxonomy(taxonomyCode); taxonomyVO = presenter.newTaxonomyVO(taxonomy); } else { taxonomyVO = new TaxonomyVO(); } } @Override protected String getTitle() { return $("AddEditTaxonomyView.viewTitle"); } @Override protected Component buildMainComponent(ViewChangeEvent event) { titleField = new TextField(); titleField.setCaption($("AddEditTaxonomyView.title")); titleField.setRequired(true); titleField.setNullRepresentation(""); titleField.setId("title"); titleField.addStyleName("title"); userIdsField = new ListAddRemoveRecordLookupField(User.SCHEMA_TYPE); userIdsField.setCaption($("AddEditTaxonomyView.users")); userIdsField.setRequired(false); userIdsField.setId("userIds"); userIdsField.addStyleName("userIds"); groupIdsField = new ListAddRemoveRecordLookupField(Group.SCHEMA_TYPE); groupIdsField.setCaption($("AddEditTaxonomyView.groups")); groupIdsField.setRequired(false); groupIdsField.setId("groupIds"); groupIdsField.addStyleName("groupIds"); visibleInHomePageField = new CheckBox($("AddEditTaxonomyView.visibleInHomePageField")); visibleInHomePageField.setCaption($("AddEditTaxonomyView.visibleInHomePageField")); visibleInHomePageField.setRequired(false); visibleInHomePageField.setId("visibleInHomePageField"); visibleInHomePageField.addStyleName("visibleInHomePageField"); classifiedObjectsField = new ListOptionGroup($("AddEditTaxonomyView.classifiedObjectsField")); classifiedObjectsField.setEnabled(presenter.canEditClassifiedObjects(taxonomyVO)); classifiedObjectsField.setCaption($("AddEditTaxonomyView.classifiedObjectsField")); classifiedObjectsField.setRequired(false); classifiedObjectsField.setMultiSelect(true); classifiedObjectsField.setId("classifiedObjects"); classifiedObjectsField.addStyleName("classifiedObjects"); classifiedObjectsField.addItem(FOLDER); classifiedObjectsField.setItemCaption(FOLDER, $("AddEditTaxonomyView.classifiedObject.folder")); classifiedObjectsField.addItem(DOCUMENT); classifiedObjectsField.setItemCaption(DOCUMENT, $("AddEditTaxonomyView.classifiedObject.document")); return new BaseForm<TaxonomyVO>(taxonomyVO, this, titleField, userIdsField, groupIdsField, visibleInHomePageField, classifiedObjectsField) { @Override protected void saveButtonClick(TaxonomyVO taxonomyVO) throws ValidationException { presenter.saveButtonClicked(taxonomyVO); } @Override protected void cancelButtonClick(TaxonomyVO taxonomyVO) { presenter.cancelButtonClicked(); } }; } }