/* * Copyright 2017 Red Hat, Inc. and/or its affiliates. * * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. * You may obtain a copy of the License at * * http://www.apache.org/licenses/LICENSE-2.0 * * Unless required by applicable law or agreed to in writing, software * distributed under the License is distributed on an "AS IS" BASIS, * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. * See the License for the specific language governing permissions and * limitations under the License. */ package org.kie.workbench.common.screens.library.client.screens.organizationalunit.popup; import javax.inject.Inject; import org.guvnor.structure.organizationalunit.OrganizationalUnit; import org.gwtbootstrap3.client.ui.Button; import org.gwtbootstrap3.client.ui.ModalFooter; import org.gwtbootstrap3.client.ui.constants.ButtonType; import org.jboss.errai.common.client.dom.Div; import org.jboss.errai.common.client.dom.Input; import org.jboss.errai.common.client.dom.Span; import org.jboss.errai.ui.client.local.api.IsElement; import org.jboss.errai.ui.client.local.spi.TranslationService; import org.jboss.errai.ui.shared.api.annotations.DataField; import org.jboss.errai.ui.shared.api.annotations.Templated; import org.kie.workbench.common.screens.library.client.resources.i18n.LibraryConstants; import org.kie.workbench.common.screens.library.client.util.TranslationUtils; import org.uberfire.ext.editor.commons.client.file.popups.CommonModalBuilder; import org.uberfire.ext.widgets.common.client.common.BusyPopup; import org.uberfire.ext.widgets.common.client.common.popups.BaseModal; import org.uberfire.ext.widgets.common.client.common.popups.footers.GenericModalFooter; import org.uberfire.mvp.Command; @Templated public class OrganizationalUnitPopUpView implements OrganizationalUnitPopUpPresenter.View, IsElement { @Inject private TranslationService ts; @Inject private TranslationUtils translationUtils; private OrganizationalUnitPopUpPresenter presenter; private BaseModal modal; @Inject @DataField("body") Div body; @Inject @DataField("error") Div error; @Inject @DataField("error-message") Span errorMessage; @Inject @DataField("name") Input name; @Inject @DataField("default-group-id") Input defaultGroupId; @Inject @DataField("owner") Input owner; @Override public void init(OrganizationalUnitPopUpPresenter presenter) { this.presenter = presenter; modalSetup(); } @Override public void showAddPopUp() { errorSetup(); modal.show(); } @Override public void showEditPopUp(final OrganizationalUnit organizationalUnit) { this.name.setValue(organizationalUnit.getName()); this.name.setDisabled(true); this.defaultGroupId.setValue(organizationalUnit.getDefaultGroupId()); this.owner.setValue(organizationalUnit.getOwner()); showAddPopUp(); } @Override public void hide() { modal.hide(); } @Override public void clear() { name.setValue(""); defaultGroupId.setValue(""); owner.setValue(""); } @Override public void showError(final String errorMessage) { this.errorMessage.setTextContent(errorMessage); this.error.setHidden(false); } @Override public String getName() { return this.name.getValue(); } @Override public String getDefaultGroupId() { return this.defaultGroupId.getValue(); } @Override public String getOwner() { return this.owner.getValue(); } @Override public String getEmptyNameValidationMessage() { final String name = ts.format(LibraryConstants.Name); return ts.format(LibraryConstants.EmptyFieldValidation, name); } @Override public String getEmptyDefaultGroupIdValidationMessage() { final String name = ts.format(LibraryConstants.DefaultGroupId); return ts.format(LibraryConstants.EmptyFieldValidation, name); } @Override public String getInvalidDefaultGroupIdValidationMessage() { final String name = ts.format(LibraryConstants.DefaultGroupId); return ts.format(LibraryConstants.InvalidFieldValidation, name); } @Override public String getDuplicatedOrganizationalUnitValidationMessage() { return ts.format(LibraryConstants.DuplicatedOrganizationalUnitValidation, translationUtils.getOrganizationalUnitAliasInSingular().toLowerCase()); } @Override public String getSavingMessage() { return ts.format(LibraryConstants.Saving); } @Override public String getSaveSuccessMessage() { return ts.format(LibraryConstants.OrganizationalUnitSaveSuccess, translationUtils.getOrganizationalUnitAliasInSingular().toLowerCase()); } private void modalSetup() { this.modal = new CommonModalBuilder() .addHeader(translationUtils.getOrganizationalUnitAliasInSingular()) .addBody(body) .addFooter(footer()) .build(); } private ModalFooter footer() { GenericModalFooter footer = new GenericModalFooter(); footer.add(saveButton()); footer.add(cancelButton()); return footer; } private Button saveButton() { return button(ts.format(LibraryConstants.Save), () -> presenter.save(), ButtonType.PRIMARY); } private Button cancelButton() { return button(ts.format(LibraryConstants.Cancel), () -> presenter.cancel(), ButtonType.DEFAULT); } private void errorSetup() { this.error.setHidden(true); } private Button button(final String text, final Command command, final ButtonType type) { Button button = new Button(text, event -> command.execute()); button.setType(type); return button; } @Override public void showBusyIndicator(final String message) { BusyPopup.showMessage(message); } @Override public void hideBusyIndicator() { BusyPopup.close(); } }