From f75a207c9703672e21c558600666995fd5e5660f Mon Sep 17 00:00:00 2001 From: jensp Date: Tue, 7 Nov 2017 19:46:20 +0000 Subject: [PATCH] CCM NG: SitesAdmin for Vaadin prototype git-svn-id: https://svn.libreccm.org/ccm/ccm_ng@5102 8810af33-2d31-482b-a856-94f89814c4df --- .../org/libreccm/admin/ui/SiteEditor.java | 34 ++++++++++++++++--- .../java/org/libreccm/admin/ui/SitesTab.java | 19 ++++++++--- .../java/org/libreccm/ui/ConfirmDialog.java | 3 +- .../ui/admin/AdminResources.properties | 8 +++++ .../ui/admin/AdminResources_de.properties | 8 +++++ .../ui/admin/AdminResources_en.properties | 8 +++++ .../ui/admin/AdminResources_fr.properties | 8 +++++ 7 files changed, 78 insertions(+), 10 deletions(-) diff --git a/ccm-core/src/main/java/org/libreccm/admin/ui/SiteEditor.java b/ccm-core/src/main/java/org/libreccm/admin/ui/SiteEditor.java index 7e132975f..4cedee61f 100644 --- a/ccm-core/src/main/java/org/libreccm/admin/ui/SiteEditor.java +++ b/ccm-core/src/main/java/org/libreccm/admin/ui/SiteEditor.java @@ -26,14 +26,18 @@ import com.vaadin.ui.CheckBox; import com.vaadin.ui.FormLayout; import com.vaadin.ui.HorizontalLayout; import com.vaadin.ui.NativeSelect; +import com.vaadin.ui.Notification; import com.vaadin.ui.TextField; +import com.vaadin.ui.UI; import com.vaadin.ui.VerticalLayout; import com.vaadin.ui.Window; +import com.vaadin.ui.themes.ValoTheme; import org.libreccm.l10n.LocalizedTextsUtil; import org.libreccm.sites.Site; import org.libreccm.theming.ThemeInfo; import java.util.List; +import java.util.Objects; import java.util.stream.Collectors; /** @@ -47,12 +51,14 @@ class SiteEditor extends Window { private final Site site; private final AdminViewController controller; + private final boolean isNewSite; private boolean dataHasChanged = false; public SiteEditor(final AdminViewController controller) { super(); - this.site = null; + this.site = new Site(); + isNewSite = true; this.controller = controller; addWidgets(); @@ -63,6 +69,7 @@ class SiteEditor extends Window { super(); this.site = site; + isNewSite = false; this.controller = controller; addWidgets(); @@ -82,12 +89,14 @@ class SiteEditor extends Window { final TextField domainOfSiteField = new TextField( adminTextsUtil.getText("ui.admin.sites.domain_of_site")); + domainOfSiteField.setValue(site.getDomainOfSite()); domainOfSiteField.addValueChangeListener(event -> { dataHasChanged = true; }); final CheckBox isDefaultSiteCheckBox = new CheckBox( adminTextsUtil.getText("ui.admin.sites.is_default_site")); + isDefaultSiteCheckBox.setValue(site.isDefaultSite()); isDefaultSiteCheckBox.addValueChangeListener(event -> { dataHasChanged = true; }); @@ -102,6 +111,7 @@ class SiteEditor extends Window { final NativeSelect defaultThemeSelect = new NativeSelect<>( adminTextsUtil.getText("ui.admin.sites.default_theme"), themes); + defaultThemeSelect.setValue(site.getDefaultTheme()); defaultThemeSelect.addValueChangeListener(event -> { dataHasChanged = true; }); @@ -114,6 +124,7 @@ class SiteEditor extends Window { saveButton.setCaption(adminTextsUtil.getText( "ui.admin.sites.buttons.save.changed")); } + saveButton.addStyleName(ValoTheme.BUTTON_PRIMARY); saveButton.addClickListener(event -> { if (dataHasChanged) { @@ -127,18 +138,20 @@ class SiteEditor extends Window { "ui.admin.sites.domain_of_site.error.empty"))); return; } - - if (!controller.getSitesController().isUnique(domainOfSite)) { + + if (!controller.getSitesController().isUnique(domainOfSite) + && (!Objects.equals(site.getDomainOfSite(), + domainOfSiteField.getValue()))) { domainOfSiteField.setComponentError(new UserError( adminTextsUtil.getText( "ui.admin.sites.domain_of_site.error.not_unique"))); return; } - + site.setDomainOfSite(domainOfSite); site.setDefaultSite(isDefaultSiteCheckBox.getValue()); site.setDefaultTheme(defaultThemeSelect.getValue()); - + controller .getSitesController() .getSiteRepository() @@ -148,6 +161,17 @@ class SiteEditor extends Window { .getSitesTableDataProvider() .refreshAll(); close(); + if (isNewSite) { + Notification.show(adminTextsUtil + .getText("ui.admin.sites.created_new_site", + new Object[]{domainOfSite}), + Notification.Type.TRAY_NOTIFICATION); + } else { + Notification.show(adminTextsUtil + .getText("ui.admin.sites.save_changes", + new Object[]{domainOfSite}), + Notification.Type.TRAY_NOTIFICATION); + } } }); diff --git a/ccm-core/src/main/java/org/libreccm/admin/ui/SitesTab.java b/ccm-core/src/main/java/org/libreccm/admin/ui/SitesTab.java index 198b00505..4f6d191fe 100644 --- a/ccm-core/src/main/java/org/libreccm/admin/ui/SitesTab.java +++ b/ccm-core/src/main/java/org/libreccm/admin/ui/SitesTab.java @@ -27,11 +27,11 @@ import com.vaadin.ui.CustomComponent; import com.vaadin.ui.Grid; import com.vaadin.ui.HorizontalLayout; import com.vaadin.ui.Label; +import com.vaadin.ui.Notification; import com.vaadin.ui.UI; import com.vaadin.ui.components.grid.HeaderCell; import com.vaadin.ui.components.grid.HeaderRow; import com.vaadin.ui.themes.ValoTheme; -import org.libreccm.cdi.utils.CdiUtil; import org.libreccm.l10n.LocalizedTextsUtil; import org.libreccm.sites.Site; import org.libreccm.ui.ConfirmDialog; @@ -115,9 +115,10 @@ class SitesTab extends CustomComponent { sitesGrid .addComponentColumn(row -> { if (row.isDeletable()) { - final Button deleteButton = new Button(adminTextsUtil - .getText("ui.admin.sites.table.buttons.delete"), - VaadinIcons.EDIT); + final Button deleteButton = new Button( + adminTextsUtil + .getText("ui.admin.sites.table.buttons.delete"), + VaadinIcons.MINUS_CIRCLE_O); deleteButton.addClickListener(event -> { final ConfirmDialog dialog = new ConfirmDialog(() -> { @@ -125,8 +126,18 @@ class SitesTab extends CustomComponent { .getSitesController() .delete(row.getSiteId()); + Notification.show(adminTextsUtil + .getText("ui.admin.sites.site_deleted", + new Object[]{row.getDomainOfSite()}), + Notification.Type.TRAY_NOTIFICATION); return null; }); + dialog.setMessage(adminTextsUtil + .getText("ui.admin.sites.site_delete.confirm", + new Object[]{row.getDomainOfSite()})); + dialog.setModal(true); + dialog.center(); + UI.getCurrent().addWindow(dialog); }); deleteButton.addStyleNames(ValoTheme.BUTTON_TINY, ValoTheme.BUTTON_DANGER); diff --git a/ccm-core/src/main/java/org/libreccm/ui/ConfirmDialog.java b/ccm-core/src/main/java/org/libreccm/ui/ConfirmDialog.java index 51fa86956..1f9cccb09 100644 --- a/ccm-core/src/main/java/org/libreccm/ui/ConfirmDialog.java +++ b/ccm-core/src/main/java/org/libreccm/ui/ConfirmDialog.java @@ -47,7 +47,6 @@ public class ConfirmDialog extends Window { this.confirmedAction = confirmedAction; this.cancelAction = () -> { - close(); return null; }; addWidgets(); @@ -70,6 +69,7 @@ public class ConfirmDialog extends Window { confirmButton.addClickListener(event -> { try { confirmedAction.call(); + close(); } catch (Exception ex) { throw new UnexpectedErrorException(ex); } @@ -79,6 +79,7 @@ public class ConfirmDialog extends Window { cancelButton.addClickListener(event -> { try { cancelAction.call(); + close(); } catch (Exception ex) { throw new UnexpectedErrorException(ex); } 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 1da378f6a..e5cbca0eb 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 @@ -633,3 +633,11 @@ ui.admin.sites.domain_of_site.error.not_unique=The domain of the Site is not uni ui.admin.sites.domain_of_site.error.empty=The domain of a Site can't be empty. ui.admin.sites.table.buttons.edit=Edit ui.admin.sites.table.buttons.delete=Delete +ui.admin.sites.default_theme=Theme +ui.admin.sites.buttons.save.create=Create Site +ui.admin.sites.buttons.save.changed=Save +ui.admin.sites.buttons.cancel=Cancel +ui.admin.sites.created_new_site=Create new site "{0}" +ui.admin.sites.saved_changes=Saved changes to site "{0}" +ui.admin.sites.site_deleted=Site "{0}" deleted +ui.admin.sites.site_delete.confirm=Are you sure to delete Site "{0}"? 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 d6545b966..19518014f 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 @@ -637,3 +637,11 @@ ui.admin.sites.domain_of_site.error.not_unique=Die Domain der Site ist nicht ein ui.admin.sites.domain_of_site.error.empty=The Domain einer Site darf nicht leer sein. ui.admin.sites.table.buttons.edit=Bearbeiten ui.admin.sites.table.buttons.delete=L\u00f6schen +ui.admin.sites.default_theme=Theme +ui.admin.sites.buttons.save.create=Site anlegen +ui.admin.sites.buttons.save.changed=Speichern +ui.admin.sites.buttons.cancel=Abbrechen +ui.admin.sites.created_new_site=Neue Site "{0}" angelegt +ui.admin.sites.saved_changes=\u00c4nderungen an Seite "{0}" gespeichert +ui.admin.sites.site_deleted=Site "{0}" gel\u00f6scht +ui.admin.sites.site_delete.confirm=Sind Sie sicher, dass Sie die Site "{0}" l\u00f6schen wollen? 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 34feb7c8b..ead9a7111 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 @@ -630,3 +630,11 @@ ui.admin.sites.domain_of_site.error.not_unique=The domain of the Site is not uni ui.admin.sites.domain_of_site.error.empty=The domain of a Site can't be empty. ui.admin.sites.table.buttons.edit=Edit ui.admin.sites.table.buttons.delete=Delete +ui.admin.sites.default_theme=Theme\t +ui.admin.sites.buttons.save.create=Create Site +ui.admin.sites.buttons.save.changed=Save +ui.admin.sites.buttons.cancel=Cancel +ui.admin.sites.created_new_site=Create new site "{0}" +ui.admin.sites.saved_changes=Saved changes to site "{0}" +ui.admin.sites.site_deleted=Site "{0}" deleted +ui.admin.sites.site_delete.confirm=Are you sure to delete Site "{0}"? 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 33e85d866..a1aa11ce1 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 @@ -621,3 +621,11 @@ ui.admin.sites.domain_of_site.error.not_unique=The domain of the Site is not uni ui.admin.sites.domain_of_site.error.empty=The domain of a Site can't be empty. ui.admin.sites.table.buttons.edit=Edit ui.admin.sites.table.buttons.delete=Delete +ui.admin.sites.default_theme=Theme\t +ui.admin.sites.buttons.save.create=Create Site +ui.admin.sites.buttons.save.changed=Save +ui.admin.sites.buttons.cancel=Cancel +ui.admin.sites.created_new_site=Create new site "{0}" +ui.admin.sites.saved_changes=Saved changes to site "{0}" +ui.admin.sites.site_deleted=Site "{0}" deleted +ui.admin.sites.site_delete.confirm=Are you sure to delete Site "{0}"?