package com.constellio.app.ui.pages.management.authorizations; import static com.constellio.app.ui.i18n.i18n.$; import com.constellio.app.ui.entities.AuthorizationVO; import com.constellio.app.ui.entities.RecordVO; 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.date.JodaDateField; import com.constellio.app.ui.framework.components.fields.list.ListAddRemoveRecordLookupField; import com.constellio.app.ui.pages.base.BaseViewImpl; 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.Button.ClickEvent; import com.vaadin.ui.Button.ClickListener; import com.vaadin.ui.Component; public class ShareContentViewImpl extends BaseViewImpl implements ShareContentView { private final ShareContentPresenter presenter; private RecordVO record; @PropertyId("users") private ListAddRemoveRecordLookupField users; @PropertyId("groups") private ListAddRemoveRecordLookupField groups; @PropertyId("accessRoles") private ListOptionGroup accessRoles; @PropertyId("userRoles") private ListOptionGroup userRoles; @PropertyId("startDate") private JodaDateField startDate; @PropertyId("endDate") private JodaDateField endDate; public ShareContentViewImpl() { presenter = new ShareContentPresenter(this); } @Override protected void initBeforeCreateComponents(ViewChangeEvent event) { record = presenter.forRequestParams(event.getParameters()).getRecordVO(); } @Override protected String getTitle() { return $("ShareContentView.viewTitle", record.getTitle()); } @Override protected ClickListener getBackButtonClickListener() { return new ClickListener() { @Override public void buttonClick(ClickEvent event) { returnFromPage(); } }; } @Override protected Component buildMainComponent(ViewChangeEvent event) { buildUsersAndGroupsField(); buildAccessField(); buildRolesField(); buildDateFields(); return new BaseForm<AuthorizationVO>( AuthorizationVO.forContent(record.getId()), this, users, groups, accessRoles, userRoles, startDate, endDate) { @Override protected void saveButtonClick(AuthorizationVO authorization) throws ValidationException { presenter.authorizationCreationRequested(authorization); } @Override protected void cancelButtonClick(AuthorizationVO authorization) { returnFromPage(); } }; } @Override public void returnFromPage() { presenter.backButtonClicked(record.getSchema().getCode()); } private void buildUsersAndGroupsField() { users = new ListAddRemoveRecordLookupField(User.SCHEMA_TYPE); users.setCaption($("AuthorizationsView.users")); users.setId("users"); groups = new ListAddRemoveRecordLookupField(Group.SCHEMA_TYPE); groups.setCaption($("AuthorizationsView.groups")); groups.setId("groups"); } private void buildAccessField() { accessRoles = new ListOptionGroup($("AuthorizationsView.access")); for (String accessCode : presenter.getAllowedAccesses()) { accessRoles.addItem(accessCode); accessRoles.setItemCaption(accessCode, $("AuthorizationsView." + accessCode)); } accessRoles.setRequired(true); accessRoles.setMultiSelect(true); accessRoles.setId("accessRoles"); } private void buildRolesField() { userRoles = new ListOptionGroup($("AuthorizationsView.userRoles")); for (String roleCode : presenter.getAllowedRoles()) { userRoles.addItem(roleCode); userRoles.setItemCaption(roleCode, roleCode); } userRoles.setEnabled(presenter.seeRolesField()); userRoles.setVisible(presenter.seeRolesField()); userRoles.setMultiSelect(true); userRoles.setId("userRoles"); } private void buildDateFields() { startDate = new JodaDateField(); startDate.setCaption($("AuthorizationsView.startDate")); startDate.setId("startDate"); endDate = new JodaDateField(); endDate.setCaption($("AuthorizationsView.endDate")); endDate.setId("endDate"); } }