diff --git a/ccm-core/src/main/java/org/libreccm/admin/ui/ConfirmDiscardDialog.java b/ccm-core/src/main/java/org/libreccm/admin/ui/ConfirmDiscardDialog.java new file mode 100644 index 000000000..8183d7926 --- /dev/null +++ b/ccm-core/src/main/java/org/libreccm/admin/ui/ConfirmDiscardDialog.java @@ -0,0 +1,71 @@ +/* + * Copyright (C) 2017 LibreCCM Foundation. + * + * This library is free software; you can redistribute it and/or + * modify it under the terms of the GNU Lesser General Public + * License as published by the Free Software Foundation; either + * version 2.1 of the License, or (at your option) any later version. + * + * This library is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU + * Lesser General Public License for more details. + * + * You should have received a copy of the GNU Lesser General Public + * License along with this library; if not, write to the Free Software + * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, + * MA 02110-1301 USA + */ +package org.libreccm.admin.ui; + +import com.arsdigita.ui.admin.AdminUiConstants; + +import com.vaadin.ui.Button; +import com.vaadin.ui.HorizontalLayout; +import com.vaadin.ui.Label; +import com.vaadin.ui.UI; +import com.vaadin.ui.VerticalLayout; +import com.vaadin.ui.Window; + +import java.util.ResourceBundle; + +/** + * + * @author Jens Pelzetter + */ +public class ConfirmDiscardDialog extends Window { + + private static final long serialVersionUID = 7270363517221672796L; + + public ConfirmDiscardDialog(final Window window, + final String message) { + + if (window == this) { + throw new IllegalArgumentException("ConfirmDiscardDialog can't be " + + "used with itself."); + } + + final Label label = new Label(message); + + final ResourceBundle bundle = ResourceBundle + .getBundle(AdminUiConstants.ADMIN_BUNDLE, + UI.getCurrent().getLocale()); + + final Button yesButton = new Button(bundle.getString("ui.admin.yes")); + yesButton.addClickListener(event -> { + close(); + UI.getCurrent().removeWindow(window); + }); + + final Button noButton = new Button(bundle.getString("ui.admin.no")); + noButton.addClickListener(event -> close()); + + final HorizontalLayout buttonsLayout = new HorizontalLayout(yesButton, + noButton); + final VerticalLayout layout = new VerticalLayout(label, + buttonsLayout); + + setContent(layout); + } + +} diff --git a/ccm-core/src/main/java/org/libreccm/admin/ui/usersgroupsroles/UserEditor.java b/ccm-core/src/main/java/org/libreccm/admin/ui/usersgroupsroles/UserEditor.java index 2559f3350..07a4bf09a 100644 --- a/ccm-core/src/main/java/org/libreccm/admin/ui/usersgroupsroles/UserEditor.java +++ b/ccm-core/src/main/java/org/libreccm/admin/ui/usersgroupsroles/UserEditor.java @@ -34,6 +34,7 @@ import com.vaadin.ui.TextField; import com.vaadin.ui.UI; import com.vaadin.ui.VerticalLayout; import com.vaadin.ui.Window; +import org.libreccm.admin.ui.ConfirmDiscardDialog; import org.libreccm.core.UnexpectedErrorException; import org.libreccm.security.User; import org.libreccm.security.UserManager; @@ -72,9 +73,11 @@ public class UserEditor extends Window { private CheckBox passwordResetRequired; private CheckBox banned; - public UserEditor(final UserRepository userRepo, + public UserEditor(final UserRepository userRepo, final UserManager userManager) { + super("Create new user"); + user = null; this.userRepo = userRepo; this.userManager = userManager; @@ -86,6 +89,8 @@ public class UserEditor extends Window { final UserRepository userRepo, final UserManager userManager) { + super(String.format("Edit user %s", user.getName())); + this.user = user; this.userRepo = userRepo; this.userManager = userManager; @@ -98,7 +103,7 @@ public class UserEditor extends Window { final ResourceBundle bundle = ResourceBundle .getBundle(AdminUiConstants.ADMIN_BUNDLE, UI.getCurrent().getLocale()); - + userName = new TextField(bundle .getString("ui.admin.user_edit.username.label")); userName.setRequiredIndicatorVisible(true); @@ -188,7 +193,7 @@ public class UserEditor extends Window { banned = new CheckBox(bundle .getString("ui.admin.user_edit.banned.label")); - + if (user == null) { banned.setVisible(false); banned.setEnabled(false); @@ -203,6 +208,7 @@ public class UserEditor extends Window { } final Button cancel = new Button(bundle.getString("ui.admin.cancel")); + cancel.addClickListener(event -> close()); final HorizontalLayout buttons = new HorizontalLayout(submit, cancel); @@ -229,5 +235,15 @@ public class UserEditor extends Window { setContent(panel); } + + @Override + public void close() { + + final ConfirmDiscardDialog dialog = new ConfirmDiscardDialog( + this, "Are you sure to discard the changes made this user?"); + dialog.setModal(true); + UI.getCurrent().addWindow(dialog); + + } } diff --git a/ccm-core/src/main/resources/com/arsdigita/ui/admin/AdminResources.properties b/ccm-core/src/main/resources/com/arsdigita/ui/admin/AdminResources.properties index 4bdc53b5a..0378c3791 100644 --- a/ccm-core/src/main/resources/com/arsdigita/ui/admin/AdminResources.properties +++ b/ccm-core/src/main/resources/com/arsdigita/ui/admin/AdminResources.properties @@ -572,3 +572,5 @@ ui.admin.users.table.filter.screenname.description=Filter users by user name ui.admin.user_set_password_confirm.label=Confirm password ui.admin.user_edit.password_options.generate_and_send=Generate and send to user ui.admin.user_edit.password_options.set=Set password +ui.admin.yes=Yes +ui.admin.no=No diff --git a/ccm-core/src/main/resources/com/arsdigita/ui/admin/AdminResources_de.properties b/ccm-core/src/main/resources/com/arsdigita/ui/admin/AdminResources_de.properties index 74ee23d0a..03969e056 100644 --- a/ccm-core/src/main/resources/com/arsdigita/ui/admin/AdminResources_de.properties +++ b/ccm-core/src/main/resources/com/arsdigita/ui/admin/AdminResources_de.properties @@ -576,3 +576,5 @@ ui.admin.users.table.filter.screenname.description=Filter users by user name ui.admin.user_set_password_confirm.label=Passwort best\u00e4tigen ui.admin.user_edit.password_options.generate_and_send=Generieren und an Benutzer senden ui.admin.user_edit.password_options.set=Passwort setzen +ui.admin.yes=Ja +ui.admin.no=Nein diff --git a/ccm-core/src/main/resources/com/arsdigita/ui/admin/AdminResources_en.properties b/ccm-core/src/main/resources/com/arsdigita/ui/admin/AdminResources_en.properties index 2026225d7..2ced8d20a 100755 --- a/ccm-core/src/main/resources/com/arsdigita/ui/admin/AdminResources_en.properties +++ b/ccm-core/src/main/resources/com/arsdigita/ui/admin/AdminResources_en.properties @@ -569,3 +569,5 @@ ui.admin.users.table.filter.screenname.description=Filter users by user name ui.admin.user_set_password_confirm.label=Confirm password ui.admin.user_edit.password_options.generate_and_send=Generate and send to user ui.admin.user_edit.password_options.set=Set password +ui.admin.yes=Yes +ui.admin.no=No diff --git a/ccm-core/src/main/resources/com/arsdigita/ui/admin/AdminResources_fr.properties b/ccm-core/src/main/resources/com/arsdigita/ui/admin/AdminResources_fr.properties index 0fa36dd98..18deb5867 100755 --- a/ccm-core/src/main/resources/com/arsdigita/ui/admin/AdminResources_fr.properties +++ b/ccm-core/src/main/resources/com/arsdigita/ui/admin/AdminResources_fr.properties @@ -560,3 +560,5 @@ ui.admin.users.table.filter.screenname.description=Filter users by user name ui.admin.user_set_password_confirm.label=Confirm password ui.admin.user_edit.password_options.generate_and_send=Generate and send to user ui.admin.user_edit.password_options.set=Set password +ui.admin.yes=Yes +ui.admin.no=No