CCM NG: SitesAdmin for Vaadin prototype

git-svn-id: https://svn.libreccm.org/ccm/ccm_ng@5102 8810af33-2d31-482b-a856-94f89814c4df
jensp 2017-11-07 19:46:20 +00:00
parent 657e7fddd5
commit bfd06d1b41
7 changed files with 78 additions and 10 deletions

View File

@ -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<String> 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);
}
}
});

View File

@ -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);

View File

@ -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);
}

View File

@ -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}"?

View File

@ -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?

View File

@ -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}"?

View File

@ -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}"?