CCM NG: Code cleanup Vaadin prototype
git-svn-id: https://svn.libreccm.org/ccm/ccm_ng@5091 8810af33-2d31-482b-a856-94f89814c4df
parent
3903b7dbd9
commit
a971ddc7b1
|
|
@ -21,18 +21,14 @@ package org.librecms.ui;
|
||||||
import com.vaadin.icons.VaadinIcons;
|
import com.vaadin.icons.VaadinIcons;
|
||||||
import com.vaadin.ui.Button;
|
import com.vaadin.ui.Button;
|
||||||
import com.vaadin.ui.Component;
|
import com.vaadin.ui.Component;
|
||||||
import com.vaadin.ui.FormLayout;
|
|
||||||
import com.vaadin.ui.Grid;
|
import com.vaadin.ui.Grid;
|
||||||
import com.vaadin.ui.HorizontalLayout;
|
import com.vaadin.ui.HorizontalLayout;
|
||||||
import com.vaadin.ui.Label;
|
import com.vaadin.ui.Label;
|
||||||
import com.vaadin.ui.TextField;
|
|
||||||
import com.vaadin.ui.Window;
|
|
||||||
import com.vaadin.ui.components.grid.HeaderCell;
|
import com.vaadin.ui.components.grid.HeaderCell;
|
||||||
import com.vaadin.ui.components.grid.HeaderRow;
|
import com.vaadin.ui.components.grid.HeaderRow;
|
||||||
import com.vaadin.ui.themes.ValoTheme;
|
import com.vaadin.ui.themes.ValoTheme;
|
||||||
import org.libreccm.security.PermissionChecker;
|
import org.libreccm.security.PermissionChecker;
|
||||||
import org.librecms.contentsection.ContentSection;
|
import org.librecms.contentsection.ContentSection;
|
||||||
import org.librecms.contentsection.Folder;
|
|
||||||
import org.librecms.contentsection.privileges.AdminPrivileges;
|
import org.librecms.contentsection.privileges.AdminPrivileges;
|
||||||
import org.librecms.contentsection.privileges.ItemPrivileges;
|
import org.librecms.contentsection.privileges.ItemPrivileges;
|
||||||
|
|
||||||
|
|
|
||||||
|
|
@ -19,6 +19,7 @@
|
||||||
package org.libreccm.admin.ui;
|
package org.libreccm.admin.ui;
|
||||||
|
|
||||||
import com.arsdigita.ui.admin.AdminUiConstants;
|
import com.arsdigita.ui.admin.AdminUiConstants;
|
||||||
|
|
||||||
import com.vaadin.cdi.CDIView;
|
import com.vaadin.cdi.CDIView;
|
||||||
import com.vaadin.navigator.View;
|
import com.vaadin.navigator.View;
|
||||||
import com.vaadin.navigator.ViewChangeListener;
|
import com.vaadin.navigator.ViewChangeListener;
|
||||||
|
|
@ -27,13 +28,11 @@ import com.vaadin.ui.CssLayout;
|
||||||
import com.vaadin.ui.CustomComponent;
|
import com.vaadin.ui.CustomComponent;
|
||||||
import com.vaadin.ui.TabSheet;
|
import com.vaadin.ui.TabSheet;
|
||||||
import com.vaadin.ui.VerticalLayout;
|
import com.vaadin.ui.VerticalLayout;
|
||||||
import org.apache.shiro.subject.Subject;
|
|
||||||
import org.libreccm.l10n.GlobalizationHelper;
|
|
||||||
import org.libreccm.security.*;
|
|
||||||
|
|
||||||
import javax.annotation.PostConstruct;
|
import javax.annotation.PostConstruct;
|
||||||
import javax.inject.Inject;
|
import javax.inject.Inject;
|
||||||
import javax.servlet.ServletContext;
|
import javax.servlet.ServletContext;
|
||||||
|
|
||||||
import java.util.ResourceBundle;
|
import java.util.ResourceBundle;
|
||||||
|
|
||||||
/**
|
/**
|
||||||
|
|
@ -48,52 +47,11 @@ public class AdminView extends CustomComponent implements View {
|
||||||
|
|
||||||
public static final String VIEWNAME = "admin";
|
public static final String VIEWNAME = "admin";
|
||||||
|
|
||||||
@Inject
|
|
||||||
private JpqlConsoleController jpqlConsoleController;
|
|
||||||
|
|
||||||
@Inject
|
|
||||||
private Subject subject;
|
|
||||||
|
|
||||||
@Inject
|
|
||||||
private PermissionChecker permissionChecker;
|
|
||||||
|
|
||||||
@Inject
|
|
||||||
private GlobalizationHelper globalizationHelper;
|
|
||||||
|
|
||||||
@Inject
|
|
||||||
private UserRepository userRepo;
|
|
||||||
|
|
||||||
@Inject
|
|
||||||
private UserManager userManager;
|
|
||||||
|
|
||||||
@Inject
|
|
||||||
private GroupRepository groupRepo;
|
|
||||||
|
|
||||||
@Inject
|
|
||||||
private GroupManager groupManager;
|
|
||||||
|
|
||||||
@Inject
|
|
||||||
private RoleRepository roleRepo;
|
|
||||||
|
|
||||||
@Inject
|
|
||||||
private RoleManager roleManager;
|
|
||||||
|
|
||||||
@Inject
|
|
||||||
private UsersTableDataProvider usersTableDataProvider;
|
|
||||||
|
|
||||||
@Inject
|
|
||||||
private GroupsTableDataProvider groupsTableDataProvider;
|
|
||||||
|
|
||||||
@Inject
|
|
||||||
private RolesTableDataProvider rolesTableDataProvider;
|
|
||||||
|
|
||||||
@Inject
|
|
||||||
private ConfigurationsTabController configurationsTabController;
|
|
||||||
|
|
||||||
private ResourceBundle bundle;
|
private ResourceBundle bundle;
|
||||||
|
|
||||||
|
private final AdminViewController controller;
|
||||||
|
|
||||||
private final TabSheet tabSheet;
|
private final TabSheet tabSheet;
|
||||||
// private final Grid<User> usersTable;
|
|
||||||
private final TabSheet.Tab tabUsersGroupsRoles;
|
private final TabSheet.Tab tabUsersGroupsRoles;
|
||||||
private final UsersGroupsRolesTab usersGroupsRoles;
|
private final UsersGroupsRolesTab usersGroupsRoles;
|
||||||
|
|
||||||
|
|
@ -101,19 +59,28 @@ public class AdminView extends CustomComponent implements View {
|
||||||
|
|
||||||
private final ConfigurationTab configurationTab;
|
private final ConfigurationTab configurationTab;
|
||||||
|
|
||||||
public AdminView() {
|
@Inject
|
||||||
|
protected AdminView(final AdminViewController controller) {
|
||||||
|
|
||||||
|
this.controller = controller;
|
||||||
|
|
||||||
|
bundle = ResourceBundle
|
||||||
|
.getBundle(AdminUiConstants.ADMIN_BUNDLE,
|
||||||
|
controller.getGlobalizationHelper().getNegotiatedLocale());
|
||||||
|
|
||||||
tabSheet = new TabSheet();
|
tabSheet = new TabSheet();
|
||||||
|
|
||||||
usersGroupsRoles = new UsersGroupsRolesTab(this);
|
usersGroupsRoles = new UsersGroupsRolesTab(controller
|
||||||
tabUsersGroupsRoles = tabSheet.addTab(usersGroupsRoles,
|
.getUsersGroupsRolesController());
|
||||||
"Users/Groups/Roles");
|
tabUsersGroupsRoles = tabSheet
|
||||||
|
.addTab(usersGroupsRoles,
|
||||||
|
bundle.getString("ui.admin.tab.users_groups_roles.title"));
|
||||||
|
|
||||||
final ServletContext servletContext = VaadinServlet
|
final ServletContext servletContext = VaadinServlet
|
||||||
.getCurrent()
|
.getCurrent()
|
||||||
.getServletContext();
|
.getServletContext();
|
||||||
if ("true".equals(servletContext.getInitParameter("ccm.develmode"))) {
|
if ("true".equals(servletContext.getInitParameter("ccm.develmode"))) {
|
||||||
jpqlConsole = new JpqlConsole(this);
|
jpqlConsole = new JpqlConsole(controller.getJpqlConsoleController());
|
||||||
tabSheet.addTab(jpqlConsole, "JPQL Console");
|
tabSheet.addTab(jpqlConsole, "JPQL Console");
|
||||||
} else {
|
} else {
|
||||||
jpqlConsole = null;
|
jpqlConsole = null;
|
||||||
|
|
@ -122,42 +89,7 @@ public class AdminView extends CustomComponent implements View {
|
||||||
configurationTab = new ConfigurationTab();
|
configurationTab = new ConfigurationTab();
|
||||||
tabSheet.addTab(configurationTab, "Configuration");
|
tabSheet.addTab(configurationTab, "Configuration");
|
||||||
|
|
||||||
// final GridLayout header = new GridLayout(5, 1);
|
|
||||||
// header.setWidth("100%");
|
|
||||||
// header.addStyleName("libreccm-header");
|
|
||||||
//
|
|
||||||
// final Label headerInfoLine = new Label("LibreCCM");
|
|
||||||
// headerInfoLine.setId("libreccm-headerinfoline");
|
|
||||||
// header.addComponent(headerInfoLine, 3, 0, 4, 0);
|
|
||||||
// header.setComponentAlignment(headerInfoLine, Alignment.TOP_RIGHT);
|
|
||||||
//
|
|
||||||
// final String logoPath;
|
|
||||||
// switch (servletContext.getInitParameter("ccm.distribution")
|
|
||||||
// .toLowerCase()) {
|
|
||||||
// case "libreccm":
|
|
||||||
// logoPath = "/themes/libreccm-default/images/libreccm.png";
|
|
||||||
// break;
|
|
||||||
// case "librecms":
|
|
||||||
// logoPath = "/themes/libreccm-default/images/librecms.png";
|
|
||||||
// break;
|
|
||||||
// case "aplaws":
|
|
||||||
// logoPath = "/themes/libreccm-default/images/aplaws.png";
|
|
||||||
// break;
|
|
||||||
// case "scientificcms":
|
|
||||||
// logoPath = "/themes/libreccm-default/images/scientificcms.png";
|
|
||||||
// break;
|
|
||||||
// default:
|
|
||||||
// logoPath = "/themes/libreccm-default/images/libreccm.png";
|
|
||||||
// break;
|
|
||||||
// }
|
|
||||||
//
|
|
||||||
// final Image logo = new Image(null, new ClassResource(logoPath));
|
|
||||||
// logo.setId("libreccm-logo");
|
|
||||||
// logo.addStyleName("libreccm-logo");
|
|
||||||
// header.addComponent(logo, 0, 0);
|
|
||||||
// header.setComponentAlignment(logo, Alignment.MIDDLE_LEFT);
|
|
||||||
final CssLayout footer = new CssLayout();
|
final CssLayout footer = new CssLayout();
|
||||||
// footer.setWidth("100%");
|
|
||||||
footer.setHeight("5em");
|
footer.setHeight("5em");
|
||||||
|
|
||||||
final VerticalLayout viewLayout = new VerticalLayout(new Header(),
|
final VerticalLayout viewLayout = new VerticalLayout(new Header(),
|
||||||
|
|
@ -169,64 +101,7 @@ public class AdminView extends CustomComponent implements View {
|
||||||
super.setCompositionRoot(viewLayout);
|
super.setCompositionRoot(viewLayout);
|
||||||
}
|
}
|
||||||
|
|
||||||
@PostConstruct
|
|
||||||
public void postConstruct() {
|
|
||||||
bundle = ResourceBundle
|
|
||||||
.getBundle(AdminUiConstants.ADMIN_BUNDLE,
|
|
||||||
globalizationHelper.getNegotiatedLocale());
|
|
||||||
|
|
||||||
usersGroupsRoles.setUsersTableDataProvider(usersTableDataProvider);
|
|
||||||
usersGroupsRoles.setGroupsTableDataProvider(groupsTableDataProvider);
|
|
||||||
usersGroupsRoles.setRolesTableDataProvider(rolesTableDataProvider);
|
|
||||||
|
|
||||||
tabUsersGroupsRoles.setCaption(bundle
|
|
||||||
.getString("ui.admin.tab.users_groups_roles.title"));
|
|
||||||
|
|
||||||
usersGroupsRoles.localize();
|
|
||||||
|
|
||||||
configurationTab.init(configurationsTabController);
|
|
||||||
}
|
|
||||||
|
|
||||||
@Override
|
|
||||||
public void enter(final ViewChangeListener.ViewChangeEvent event) {
|
|
||||||
|
|
||||||
// usersGroupsRoles.setUsers(userRepo.findAll());
|
|
||||||
}
|
|
||||||
|
|
||||||
protected GlobalizationHelper getGlobalizationHelper() {
|
|
||||||
return globalizationHelper;
|
|
||||||
}
|
|
||||||
|
|
||||||
protected JpqlConsoleController getJpqlConsoleController() {
|
|
||||||
return jpqlConsoleController;
|
|
||||||
}
|
|
||||||
|
|
||||||
protected ConfigurationsTabController getConfigurationsTabController() {
|
|
||||||
return configurationsTabController;
|
|
||||||
}
|
|
||||||
|
|
||||||
public UserRepository getUserRepository() {
|
|
||||||
return userRepo;
|
|
||||||
}
|
|
||||||
|
|
||||||
public UserManager getUserManager() {
|
|
||||||
return userManager;
|
|
||||||
}
|
|
||||||
|
|
||||||
public GroupRepository getGroupRepository() {
|
|
||||||
return groupRepo;
|
|
||||||
}
|
|
||||||
|
|
||||||
public GroupManager getGroupManager() {
|
|
||||||
return groupManager;
|
|
||||||
}
|
|
||||||
|
|
||||||
public RoleRepository getRoleRepository() {
|
|
||||||
return roleRepo;
|
|
||||||
}
|
|
||||||
|
|
||||||
public RoleManager getRoleManager() {
|
|
||||||
return roleManager;
|
|
||||||
}
|
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
|
||||||
|
|
@ -32,46 +32,36 @@ import javax.inject.Inject;
|
||||||
@ViewScoped
|
@ViewScoped
|
||||||
class AdminViewController {
|
class AdminViewController {
|
||||||
|
|
||||||
protected AdminViewController() {
|
@Inject
|
||||||
super();
|
private ConfigurationsTabController confTabController;
|
||||||
}
|
|
||||||
|
|
||||||
|
|
||||||
@Inject
|
@Inject
|
||||||
private GlobalizationHelper globalizationHelper;
|
private GlobalizationHelper globalizationHelper;
|
||||||
|
|
||||||
@Inject
|
|
||||||
private GroupsController groupsController;
|
|
||||||
|
|
||||||
@Inject
|
@Inject
|
||||||
private JpqlConsoleController jpqlConsoleController;
|
private JpqlConsoleController jpqlConsoleController;
|
||||||
|
|
||||||
@Inject
|
@Inject
|
||||||
private RolesManager rolesManager;
|
private UsersGroupsRolesController usersGroupsRolesController;
|
||||||
|
|
||||||
@Inject
|
protected AdminViewController() {
|
||||||
private UsersController usersController;
|
super();
|
||||||
|
}
|
||||||
|
|
||||||
|
public ConfigurationsTabController getConfTabController() {
|
||||||
|
return confTabController;
|
||||||
|
}
|
||||||
|
|
||||||
protected GlobalizationHelper getGlobalizationHelper() {
|
protected GlobalizationHelper getGlobalizationHelper() {
|
||||||
return globalizationHelper;
|
return globalizationHelper;
|
||||||
}
|
}
|
||||||
|
|
||||||
protected GroupsController getGroupsController() {
|
|
||||||
return groupsController;
|
|
||||||
}
|
|
||||||
|
|
||||||
protected JpqlConsoleController getJpqlConsoleController() {
|
protected JpqlConsoleController getJpqlConsoleController() {
|
||||||
return jpqlConsoleController;
|
return jpqlConsoleController;
|
||||||
}
|
}
|
||||||
|
|
||||||
protected RolesManager getRolesManager() {
|
protected UsersGroupsRolesController getUsersGroupsRolesController() {
|
||||||
return rolesManager;
|
return usersGroupsRolesController;
|
||||||
}
|
}
|
||||||
|
|
||||||
protected UsersController getUsersController() {
|
|
||||||
return usersController;
|
|
||||||
}
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
|
||||||
|
|
@ -19,17 +19,34 @@
|
||||||
package org.libreccm.admin.ui;
|
package org.libreccm.admin.ui;
|
||||||
|
|
||||||
import com.arsdigita.ui.admin.AdminUiConstants;
|
import com.arsdigita.ui.admin.AdminUiConstants;
|
||||||
|
|
||||||
import com.vaadin.data.HasValue;
|
import com.vaadin.data.HasValue;
|
||||||
import com.vaadin.icons.VaadinIcons;
|
import com.vaadin.icons.VaadinIcons;
|
||||||
import com.vaadin.server.Page;
|
import com.vaadin.server.Page;
|
||||||
import com.vaadin.server.UserError;
|
import com.vaadin.server.UserError;
|
||||||
import com.vaadin.ui.*;
|
import com.vaadin.ui.Button;
|
||||||
|
import com.vaadin.ui.FormLayout;
|
||||||
|
import com.vaadin.ui.Grid;
|
||||||
|
import com.vaadin.ui.HorizontalLayout;
|
||||||
|
import com.vaadin.ui.Label;
|
||||||
|
import com.vaadin.ui.Notification;
|
||||||
|
import com.vaadin.ui.Panel;
|
||||||
|
import com.vaadin.ui.TabSheet;
|
||||||
|
import com.vaadin.ui.TextField;
|
||||||
|
import com.vaadin.ui.UI;
|
||||||
|
import com.vaadin.ui.VerticalLayout;
|
||||||
|
import com.vaadin.ui.Window;
|
||||||
import com.vaadin.ui.components.grid.HeaderCell;
|
import com.vaadin.ui.components.grid.HeaderCell;
|
||||||
import com.vaadin.ui.components.grid.HeaderRow;
|
import com.vaadin.ui.components.grid.HeaderRow;
|
||||||
import com.vaadin.ui.renderers.ButtonRenderer;
|
import com.vaadin.ui.renderers.ButtonRenderer;
|
||||||
import com.vaadin.ui.themes.ValoTheme;
|
import com.vaadin.ui.themes.ValoTheme;
|
||||||
import org.libreccm.cdi.utils.CdiUtil;
|
import org.libreccm.cdi.utils.CdiUtil;
|
||||||
import org.libreccm.security.*;
|
import org.libreccm.security.Group;
|
||||||
|
import org.libreccm.security.GroupRepository;
|
||||||
|
import org.libreccm.security.Role;
|
||||||
|
import org.libreccm.security.RoleRepository;
|
||||||
|
import org.libreccm.security.User;
|
||||||
|
import org.libreccm.security.UserRepository;
|
||||||
|
|
||||||
import java.util.ResourceBundle;
|
import java.util.ResourceBundle;
|
||||||
|
|
||||||
|
|
@ -37,7 +54,7 @@ import java.util.ResourceBundle;
|
||||||
*
|
*
|
||||||
* @author <a href="mailto:jens.pelzetter@googlemail.com">Jens Pelzetter</a>
|
* @author <a href="mailto:jens.pelzetter@googlemail.com">Jens Pelzetter</a>
|
||||||
*/
|
*/
|
||||||
public class GroupDetails extends Window {
|
class GroupDetails extends Window {
|
||||||
|
|
||||||
private static final long serialVersionUID = 4252189590984878037L;
|
private static final long serialVersionUID = 4252189590984878037L;
|
||||||
|
|
||||||
|
|
@ -50,7 +67,6 @@ public class GroupDetails extends Window {
|
||||||
private static final String COL_ROLE_NAME = "role_name";
|
private static final String COL_ROLE_NAME = "role_name";
|
||||||
private static final String COL_ROLE_REMOVE = "remove";
|
private static final String COL_ROLE_REMOVE = "remove";
|
||||||
|
|
||||||
private final UsersGroupsRolesTab usersGroupsRoles;
|
|
||||||
private final Group group;
|
private final Group group;
|
||||||
private final GroupRepository groupRepo;
|
private final GroupRepository groupRepo;
|
||||||
|
|
||||||
|
|
@ -61,14 +77,12 @@ public class GroupDetails extends Window {
|
||||||
private Button editButton;
|
private Button editButton;
|
||||||
private HorizontalLayout saveCancelButtons;
|
private HorizontalLayout saveCancelButtons;
|
||||||
|
|
||||||
public GroupDetails(final Group group,
|
protected GroupDetails(final Group group,
|
||||||
final UsersGroupsRolesTab usersGroupsRoles,
|
|
||||||
final GroupRepository groupRepo) {
|
final GroupRepository groupRepo) {
|
||||||
|
|
||||||
super(String.format("Edit group %s", group.getName()));
|
super(String.format("Edit group %s", group.getName()));
|
||||||
|
|
||||||
this.group = group;
|
this.group = group;
|
||||||
this.usersGroupsRoles = usersGroupsRoles;
|
|
||||||
this.groupRepo = groupRepo;
|
this.groupRepo = groupRepo;
|
||||||
|
|
||||||
addWidgets();
|
addWidgets();
|
||||||
|
|
@ -175,7 +189,6 @@ public class GroupDetails extends Window {
|
||||||
final UserSelector userSelector = new UserSelector(
|
final UserSelector userSelector = new UserSelector(
|
||||||
"Select users to add to group",
|
"Select users to add to group",
|
||||||
"Add selected users to group",
|
"Add selected users to group",
|
||||||
usersGroupsRoles,
|
|
||||||
userRepo.findByGroup(group),
|
userRepo.findByGroup(group),
|
||||||
(selectedUsers -> {
|
(selectedUsers -> {
|
||||||
selectedUsers.forEach(user -> {
|
selectedUsers.forEach(user -> {
|
||||||
|
|
@ -184,6 +197,9 @@ public class GroupDetails extends Window {
|
||||||
membersGrid.getDataProvider().refreshAll();
|
membersGrid.getDataProvider().refreshAll();
|
||||||
});
|
});
|
||||||
}));
|
}));
|
||||||
|
userSelector.addCloseListener(closeEvent -> {
|
||||||
|
membersGrid.getDataProvider().refreshAll();
|
||||||
|
});
|
||||||
userSelector.center();
|
userSelector.center();
|
||||||
userSelector.setWidth("80%");
|
userSelector.setWidth("80%");
|
||||||
UI.getCurrent().addWindow(userSelector);
|
UI.getCurrent().addWindow(userSelector);
|
||||||
|
|
@ -231,7 +247,6 @@ public class GroupDetails extends Window {
|
||||||
final RoleSelector roleSelector = new RoleSelector(
|
final RoleSelector roleSelector = new RoleSelector(
|
||||||
"Select role(s) to add to group",
|
"Select role(s) to add to group",
|
||||||
"Add selected role(s) to group",
|
"Add selected role(s) to group",
|
||||||
usersGroupsRoles,
|
|
||||||
roleRepo.findByParty(group),
|
roleRepo.findByParty(group),
|
||||||
(selectedRoles -> {
|
(selectedRoles -> {
|
||||||
selectedRoles.forEach(role -> {
|
selectedRoles.forEach(role -> {
|
||||||
|
|
@ -239,6 +254,9 @@ public class GroupDetails extends Window {
|
||||||
rolesGrid.getDataProvider().refreshAll();
|
rolesGrid.getDataProvider().refreshAll();
|
||||||
});
|
});
|
||||||
}));
|
}));
|
||||||
|
roleSelector.addCloseListener(closeEvent -> {
|
||||||
|
rolesGrid.getDataProvider().refreshAll();
|
||||||
|
});
|
||||||
roleSelector.center();
|
roleSelector.center();
|
||||||
roleSelector.setWidth("80%");
|
roleSelector.setWidth("80%");
|
||||||
UI.getCurrent().addWindow(roleSelector);
|
UI.getCurrent().addWindow(roleSelector);
|
||||||
|
|
@ -310,9 +328,6 @@ public class GroupDetails extends Window {
|
||||||
groupRepo.save(group);
|
groupRepo.save(group);
|
||||||
|
|
||||||
dataHasChanged = false;
|
dataHasChanged = false;
|
||||||
if (usersGroupsRoles != null) {
|
|
||||||
usersGroupsRoles.refreshGroups();
|
|
||||||
}
|
|
||||||
close();
|
close();
|
||||||
new Notification(notificationText, Notification.Type.TRAY_NOTIFICATION)
|
new Notification(notificationText, Notification.Type.TRAY_NOTIFICATION)
|
||||||
.show(Page.getCurrent());
|
.show(Page.getCurrent());
|
||||||
|
|
|
||||||
|
|
@ -19,12 +19,20 @@
|
||||||
package org.libreccm.admin.ui;
|
package org.libreccm.admin.ui;
|
||||||
|
|
||||||
import com.arsdigita.ui.admin.AdminUiConstants;
|
import com.arsdigita.ui.admin.AdminUiConstants;
|
||||||
|
|
||||||
import com.vaadin.data.HasValue;
|
import com.vaadin.data.HasValue;
|
||||||
import com.vaadin.server.Page;
|
import com.vaadin.server.Page;
|
||||||
import com.vaadin.server.UserError;
|
import com.vaadin.server.UserError;
|
||||||
import com.vaadin.ui.*;
|
import com.vaadin.ui.Button;
|
||||||
|
import com.vaadin.ui.FormLayout;
|
||||||
|
import com.vaadin.ui.HorizontalLayout;
|
||||||
|
import com.vaadin.ui.Notification;
|
||||||
|
import com.vaadin.ui.Panel;
|
||||||
|
import com.vaadin.ui.TextField;
|
||||||
|
import com.vaadin.ui.UI;
|
||||||
|
import com.vaadin.ui.VerticalLayout;
|
||||||
|
import com.vaadin.ui.Window;
|
||||||
import org.libreccm.security.Group;
|
import org.libreccm.security.Group;
|
||||||
import org.libreccm.security.GroupManager;
|
|
||||||
import org.libreccm.security.GroupRepository;
|
import org.libreccm.security.GroupRepository;
|
||||||
|
|
||||||
import java.util.ResourceBundle;
|
import java.util.ResourceBundle;
|
||||||
|
|
@ -33,44 +41,34 @@ import java.util.ResourceBundle;
|
||||||
*
|
*
|
||||||
* @author <a href="mailto:jens.pelzetter@googlemail.com">Jens Pelzetter</a>
|
* @author <a href="mailto:jens.pelzetter@googlemail.com">Jens Pelzetter</a>
|
||||||
*/
|
*/
|
||||||
public class GroupEditor extends Window {
|
class GroupEditor extends Window {
|
||||||
|
|
||||||
private static final long serialVersionUID = -5834095844674226692L;
|
private static final long serialVersionUID = -5834095844674226692L;
|
||||||
|
|
||||||
private final UsersGroupsRolesTab usersGroupsRoles;
|
|
||||||
private final Group group;
|
private final Group group;
|
||||||
private final GroupRepository groupRepo;
|
private final GroupRepository groupRepo;
|
||||||
private final GroupManager groupManager;
|
|
||||||
|
|
||||||
private boolean dataHasChanged = false;
|
private boolean dataHasChanged = false;
|
||||||
|
|
||||||
private TextField groupName;
|
private TextField groupName;
|
||||||
|
|
||||||
public GroupEditor(final UsersGroupsRolesTab usersGroupsRoles,
|
protected GroupEditor(final GroupRepository groupRepo) {
|
||||||
final GroupRepository groupRepo,
|
|
||||||
final GroupManager groupManager) {
|
|
||||||
|
|
||||||
super("Create new group");
|
super("Create new group");
|
||||||
|
|
||||||
this.usersGroupsRoles = usersGroupsRoles;
|
|
||||||
group = null;
|
group = null;
|
||||||
this.groupRepo = groupRepo;
|
this.groupRepo = groupRepo;
|
||||||
this.groupManager = groupManager;
|
|
||||||
|
|
||||||
addWidgets();
|
addWidgets();
|
||||||
}
|
}
|
||||||
|
|
||||||
public GroupEditor(final Group group,
|
public GroupEditor(final Group group,
|
||||||
final UsersGroupsRolesTab usersGroupsRoles,
|
final GroupRepository groupRepo) {
|
||||||
final GroupRepository groupRepo,
|
|
||||||
final GroupManager groupManager) {
|
|
||||||
|
|
||||||
super(String.format("Edit group %s", group.getName()));
|
super(String.format("Edit group %s", group.getName()));
|
||||||
|
|
||||||
this.group = group;
|
this.group = group;
|
||||||
this.usersGroupsRoles = usersGroupsRoles;
|
|
||||||
this.groupRepo = groupRepo;
|
this.groupRepo = groupRepo;
|
||||||
this.groupManager = groupManager;
|
|
||||||
|
|
||||||
addWidgets();
|
addWidgets();
|
||||||
}
|
}
|
||||||
|
|
@ -179,9 +177,6 @@ public class GroupEditor extends Window {
|
||||||
groupRepo.save(currentGroup);
|
groupRepo.save(currentGroup);
|
||||||
|
|
||||||
dataHasChanged = false;
|
dataHasChanged = false;
|
||||||
if (usersGroupsRoles != null) {
|
|
||||||
usersGroupsRoles.refreshGroups();
|
|
||||||
}
|
|
||||||
close();
|
close();
|
||||||
new Notification(notificationText, Notification.Type.TRAY_NOTIFICATION)
|
new Notification(notificationText, Notification.Type.TRAY_NOTIFICATION)
|
||||||
.show(Page.getCurrent());
|
.show(Page.getCurrent());
|
||||||
|
|
|
||||||
|
|
@ -35,15 +35,14 @@ import java.util.List;
|
||||||
*
|
*
|
||||||
* @author <a href="mailto:jens.pelzetter@googlemail.com">Jens Pelzetter</a>
|
* @author <a href="mailto:jens.pelzetter@googlemail.com">Jens Pelzetter</a>
|
||||||
*/
|
*/
|
||||||
public class GroupSelector extends Window {
|
class GroupSelector extends Window {
|
||||||
|
|
||||||
private static final long serialVersionUID = -6227551833159691370L;
|
private static final long serialVersionUID = -6227551833159691370L;
|
||||||
|
|
||||||
private static final String COL_NAME = "groupname";
|
private static final String COL_NAME = "groupname";
|
||||||
|
|
||||||
public GroupSelector(final String caption,
|
protected GroupSelector(final String caption,
|
||||||
final String actionLabel,
|
final String actionLabel,
|
||||||
final UsersGroupsRolesTab usersGroupsRoles,
|
|
||||||
final List<Group> excludedGroups,
|
final List<Group> excludedGroups,
|
||||||
final GroupSelectionAction action) {
|
final GroupSelectionAction action) {
|
||||||
|
|
||||||
|
|
|
||||||
|
|
@ -19,8 +19,16 @@
|
||||||
package org.libreccm.admin.ui;
|
package org.libreccm.admin.ui;
|
||||||
|
|
||||||
import com.arsdigita.ui.admin.AdminUiConstants;
|
import com.arsdigita.ui.admin.AdminUiConstants;
|
||||||
|
|
||||||
import com.vaadin.icons.VaadinIcons;
|
import com.vaadin.icons.VaadinIcons;
|
||||||
import com.vaadin.ui.*;
|
import com.vaadin.ui.Button;
|
||||||
|
import com.vaadin.ui.Grid;
|
||||||
|
import com.vaadin.ui.HorizontalLayout;
|
||||||
|
import com.vaadin.ui.Label;
|
||||||
|
import com.vaadin.ui.TextField;
|
||||||
|
import com.vaadin.ui.UI;
|
||||||
|
import com.vaadin.ui.VerticalLayout;
|
||||||
|
import com.vaadin.ui.Window;
|
||||||
import com.vaadin.ui.components.grid.HeaderCell;
|
import com.vaadin.ui.components.grid.HeaderCell;
|
||||||
import com.vaadin.ui.components.grid.HeaderRow;
|
import com.vaadin.ui.components.grid.HeaderRow;
|
||||||
import com.vaadin.ui.renderers.ButtonRenderer;
|
import com.vaadin.ui.renderers.ButtonRenderer;
|
||||||
|
|
@ -35,7 +43,7 @@ import java.util.ResourceBundle;
|
||||||
*
|
*
|
||||||
* @author <a href="mailto:jens.pelzetter@googlemail.com">Jens Pelzetter</a>
|
* @author <a href="mailto:jens.pelzetter@googlemail.com">Jens Pelzetter</a>
|
||||||
*/
|
*/
|
||||||
public class GroupsTable extends Grid<Group> {
|
class GroupsTable extends Grid<Group> {
|
||||||
|
|
||||||
private static final long serialVersionUID = 2731047837262813862L;
|
private static final long serialVersionUID = 2731047837262813862L;
|
||||||
|
|
||||||
|
|
@ -47,25 +55,25 @@ public class GroupsTable extends Grid<Group> {
|
||||||
private final Button clearFiltersButton;
|
private final Button clearFiltersButton;
|
||||||
private final Button createGroupButton;
|
private final Button createGroupButton;
|
||||||
|
|
||||||
public GroupsTable(final AdminView view,
|
protected GroupsTable(final UsersGroupsRolesController controller) {
|
||||||
final UsersGroupsRolesTab usersGroupsRoles) {
|
|
||||||
|
|
||||||
super();
|
super();
|
||||||
|
|
||||||
|
super.setDataProvider(controller.getGroupsTableDataProvider());
|
||||||
|
|
||||||
final ResourceBundle bundle = ResourceBundle
|
final ResourceBundle bundle = ResourceBundle
|
||||||
.getBundle(AdminUiConstants.ADMIN_BUNDLE,
|
.getBundle(AdminUiConstants.ADMIN_BUNDLE,
|
||||||
UI.getCurrent().getLocale());
|
UI.getCurrent().getLocale());
|
||||||
|
|
||||||
addColumn(Group::getName)
|
addColumn(Group::getName)
|
||||||
.setId(COL_NAME)
|
.setId(COL_NAME)
|
||||||
.setCaption("Name");
|
.setCaption(bundle.getString("ui.admin.groups.table.name"));
|
||||||
addColumn(user -> bundle.getString("ui.admin.groups.table.edit"),
|
addColumn(user -> bundle.getString("ui.admin.groups.table.edit"),
|
||||||
new ButtonRenderer<>(event -> {
|
new ButtonRenderer<>(event -> {
|
||||||
// final GroupEditor groupEditor = new GroupEditor(
|
// final GroupEditor groupEditor = new GroupEditor(
|
||||||
final GroupDetails groupDetails = new GroupDetails(
|
final GroupDetails groupDetails = new GroupDetails(
|
||||||
event.getItem(),
|
event.getItem(),
|
||||||
usersGroupsRoles,
|
controller.getGroupRepository());
|
||||||
view.getGroupRepository());
|
|
||||||
groupDetails.center();
|
groupDetails.center();
|
||||||
groupDetails.setWidth("50%");
|
groupDetails.setWidth("50%");
|
||||||
groupDetails.setHeight("100%");
|
groupDetails.setHeight("100%");
|
||||||
|
|
@ -77,8 +85,7 @@ public class GroupsTable extends Grid<Group> {
|
||||||
final ConfirmDeleteDialog dialog
|
final ConfirmDeleteDialog dialog
|
||||||
= new ConfirmDeleteDialog(
|
= new ConfirmDeleteDialog(
|
||||||
event.getItem(),
|
event.getItem(),
|
||||||
usersGroupsRoles,
|
controller.getGroupRepository());
|
||||||
view.getGroupRepository());
|
|
||||||
dialog.center();
|
dialog.center();
|
||||||
UI.getCurrent().addWindow(dialog);
|
UI.getCurrent().addWindow(dialog);
|
||||||
}))
|
}))
|
||||||
|
|
@ -87,8 +94,10 @@ public class GroupsTable extends Grid<Group> {
|
||||||
final HeaderRow filterRow = appendHeaderRow();
|
final HeaderRow filterRow = appendHeaderRow();
|
||||||
final HeaderCell GroupNameFilterCell = filterRow.getCell(COL_NAME);
|
final HeaderCell GroupNameFilterCell = filterRow.getCell(COL_NAME);
|
||||||
groupNameFilter = new TextField();
|
groupNameFilter = new TextField();
|
||||||
groupNameFilter.setPlaceholder("Group name");
|
groupNameFilter.setPlaceholder(bundle
|
||||||
groupNameFilter.setDescription("Filter Groups by name");
|
.getString("ui.admin.users.table.filter.groupname.placeholder"));
|
||||||
|
groupNameFilter.setDescription(bundle
|
||||||
|
.getString("ui.admin.users.table.filter.groupname.description"));
|
||||||
groupNameFilter.addStyleName(ValoTheme.TEXTFIELD_TINY);
|
groupNameFilter.addStyleName(ValoTheme.TEXTFIELD_TINY);
|
||||||
groupNameFilter
|
groupNameFilter
|
||||||
.addValueChangeListener(event -> {
|
.addValueChangeListener(event -> {
|
||||||
|
|
@ -101,7 +110,8 @@ public class GroupsTable extends Grid<Group> {
|
||||||
final HeaderCell actionsCell = actionsRow.join(COL_NAME,
|
final HeaderCell actionsCell = actionsRow.join(COL_NAME,
|
||||||
COL_EDIT,
|
COL_EDIT,
|
||||||
COL_DELETE);
|
COL_DELETE);
|
||||||
clearFiltersButton = new Button("Clear filters");
|
clearFiltersButton = new Button(bundle
|
||||||
|
.getString("ui.admin.users.table.filter.clear"));
|
||||||
clearFiltersButton.setStyleName(ValoTheme.BUTTON_TINY);
|
clearFiltersButton.setStyleName(ValoTheme.BUTTON_TINY);
|
||||||
clearFiltersButton.setIcon(VaadinIcons.BACKSPACE);
|
clearFiltersButton.setIcon(VaadinIcons.BACKSPACE);
|
||||||
clearFiltersButton.addClickListener(event -> {
|
clearFiltersButton.addClickListener(event -> {
|
||||||
|
|
@ -113,9 +123,10 @@ public class GroupsTable extends Grid<Group> {
|
||||||
createGroupButton.setIcon(VaadinIcons.PLUS);
|
createGroupButton.setIcon(VaadinIcons.PLUS);
|
||||||
createGroupButton.addClickListener(event -> {
|
createGroupButton.addClickListener(event -> {
|
||||||
final GroupEditor groupEditor = new GroupEditor(
|
final GroupEditor groupEditor = new GroupEditor(
|
||||||
usersGroupsRoles,
|
controller.getGroupRepository());
|
||||||
view.getGroupRepository(),
|
groupEditor.addCloseListener(closeEvent -> {
|
||||||
view.getGroupManager());
|
getDataProvider().refreshAll();
|
||||||
|
});
|
||||||
groupEditor.center();
|
groupEditor.center();
|
||||||
UI.getCurrent().addWindow(groupEditor);
|
UI.getCurrent().addWindow(groupEditor);
|
||||||
});
|
});
|
||||||
|
|
@ -125,39 +136,17 @@ public class GroupsTable extends Grid<Group> {
|
||||||
actionsCell.setComponent(actionsLayout);
|
actionsCell.setComponent(actionsLayout);
|
||||||
}
|
}
|
||||||
|
|
||||||
public void localize() {
|
|
||||||
|
|
||||||
final ResourceBundle bundle = ResourceBundle
|
|
||||||
.getBundle(AdminUiConstants.ADMIN_BUNDLE,
|
|
||||||
UI.getCurrent().getLocale());
|
|
||||||
|
|
||||||
getColumn(COL_NAME)
|
|
||||||
.setCaption(bundle.getString("ui.admin.groups.table.name"));
|
|
||||||
|
|
||||||
groupNameFilter.setPlaceholder(
|
|
||||||
bundle
|
|
||||||
.getString("ui.admin.users.table.filter.groupname.placeholder"));
|
|
||||||
groupNameFilter.setDescription(bundle
|
|
||||||
.getString("ui.admin.users.table.filter.groupname.description"));
|
|
||||||
|
|
||||||
clearFiltersButton.setCaption(bundle
|
|
||||||
.getString("ui.admin.users.table.filter.clear"));
|
|
||||||
}
|
|
||||||
|
|
||||||
private class ConfirmDeleteDialog extends Window {
|
private class ConfirmDeleteDialog extends Window {
|
||||||
|
|
||||||
private static final long serialVersionUID = -1168912882249598278L;
|
private static final long serialVersionUID = -1168912882249598278L;
|
||||||
|
|
||||||
private final Group group;
|
private final Group group;
|
||||||
private final UsersGroupsRolesTab usersGroupsRoles;
|
|
||||||
private final GroupRepository groupRepo;
|
private final GroupRepository groupRepo;
|
||||||
|
|
||||||
public ConfirmDeleteDialog(final Group group,
|
public ConfirmDeleteDialog(final Group group,
|
||||||
final UsersGroupsRolesTab usersGroupsRoles,
|
|
||||||
final GroupRepository groupRepo) {
|
final GroupRepository groupRepo) {
|
||||||
|
|
||||||
this.group = group;
|
this.group = group;
|
||||||
this.usersGroupsRoles = usersGroupsRoles;
|
|
||||||
this.groupRepo = groupRepo;
|
this.groupRepo = groupRepo;
|
||||||
|
|
||||||
final ResourceBundle bundle = ResourceBundle
|
final ResourceBundle bundle = ResourceBundle
|
||||||
|
|
@ -182,15 +171,12 @@ public class GroupsTable extends Grid<Group> {
|
||||||
|
|
||||||
final VerticalLayout layout = new VerticalLayout(text, buttons);
|
final VerticalLayout layout = new VerticalLayout(text, buttons);
|
||||||
|
|
||||||
// final Panel panel = new Panel(
|
super.setContent(layout);
|
||||||
// bundle.getString("ui.admin.groups.delete.confirm.title"),
|
|
||||||
// layout);
|
|
||||||
setContent(layout);
|
|
||||||
}
|
}
|
||||||
|
|
||||||
private void deleteGroup() {
|
private void deleteGroup() {
|
||||||
groupRepo.delete(group);
|
groupRepo.delete(group);
|
||||||
usersGroupsRoles.refreshGroups();
|
getDataProvider().refreshAll();
|
||||||
close();
|
close();
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
|
||||||
|
|
@ -19,15 +19,28 @@
|
||||||
package org.libreccm.admin.ui;
|
package org.libreccm.admin.ui;
|
||||||
|
|
||||||
import com.arsdigita.ui.admin.AdminUiConstants;
|
import com.arsdigita.ui.admin.AdminUiConstants;
|
||||||
|
|
||||||
import com.vaadin.data.HasValue;
|
import com.vaadin.data.HasValue;
|
||||||
import com.vaadin.data.ValueProvider;
|
import com.vaadin.data.ValueProvider;
|
||||||
import com.vaadin.server.UserError;
|
import com.vaadin.server.UserError;
|
||||||
import com.vaadin.ui.*;
|
import com.vaadin.ui.AbstractComponent;
|
||||||
|
import com.vaadin.ui.Button;
|
||||||
|
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.Panel;
|
||||||
|
import com.vaadin.ui.TextArea;
|
||||||
|
import com.vaadin.ui.TextField;
|
||||||
|
import com.vaadin.ui.UI;
|
||||||
|
import com.vaadin.ui.VerticalLayout;
|
||||||
import org.apache.logging.log4j.LogManager;
|
import org.apache.logging.log4j.LogManager;
|
||||||
import org.apache.logging.log4j.Logger;
|
import org.apache.logging.log4j.Logger;
|
||||||
|
|
||||||
import javax.persistence.Id;
|
import javax.persistence.Id;
|
||||||
import javax.persistence.PersistenceException;
|
import javax.persistence.PersistenceException;
|
||||||
|
|
||||||
import java.beans.BeanInfo;
|
import java.beans.BeanInfo;
|
||||||
import java.beans.IntrospectionException;
|
import java.beans.IntrospectionException;
|
||||||
import java.beans.Introspector;
|
import java.beans.Introspector;
|
||||||
|
|
@ -35,19 +48,29 @@ import java.beans.PropertyDescriptor;
|
||||||
import java.lang.reflect.Field;
|
import java.lang.reflect.Field;
|
||||||
import java.lang.reflect.InvocationTargetException;
|
import java.lang.reflect.InvocationTargetException;
|
||||||
import java.lang.reflect.Method;
|
import java.lang.reflect.Method;
|
||||||
import java.util.*;
|
import java.util.Arrays;
|
||||||
|
import java.util.Collection;
|
||||||
|
import java.util.Collections;
|
||||||
|
import java.util.HashSet;
|
||||||
|
import java.util.List;
|
||||||
|
import java.util.Objects;
|
||||||
|
import java.util.Optional;
|
||||||
|
import java.util.ResourceBundle;
|
||||||
|
import java.util.Set;
|
||||||
import java.util.stream.Collectors;
|
import java.util.stream.Collectors;
|
||||||
|
|
||||||
|
import static org.primefaces.component.schedule.Schedule.PropertyKeys.*;
|
||||||
|
|
||||||
/**
|
/**
|
||||||
*
|
*
|
||||||
* @author <a href="mailto:jens.pelzetter@googlemail.com">Jens Pelzetter</a>
|
* @author <a href="mailto:jens.pelzetter@googlemail.com">Jens Pelzetter</a>
|
||||||
*/
|
*/
|
||||||
public class JpqlConsole extends CustomComponent {
|
class JpqlConsole extends CustomComponent {
|
||||||
|
|
||||||
private static final long serialVersionUID = 2585630538827827614L;
|
private static final long serialVersionUID = 2585630538827827614L;
|
||||||
private static final Logger LOGGER = LogManager.getLogger(JpqlConsole.class);
|
private static final Logger LOGGER = LogManager.getLogger(JpqlConsole.class);
|
||||||
|
|
||||||
private final AdminView view;
|
private final JpqlConsoleController controller;
|
||||||
|
|
||||||
private final TextArea queryArea;
|
private final TextArea queryArea;
|
||||||
private final TextField maxResults;
|
private final TextField maxResults;
|
||||||
|
|
@ -58,9 +81,9 @@ public class JpqlConsole extends CustomComponent {
|
||||||
private final Label noResultsLabel;
|
private final Label noResultsLabel;
|
||||||
private final Panel resultsPanel;
|
private final Panel resultsPanel;
|
||||||
|
|
||||||
public JpqlConsole(final AdminView view) {
|
JpqlConsole(final JpqlConsoleController controller) {
|
||||||
|
|
||||||
this.view = view;
|
this.controller = controller;
|
||||||
|
|
||||||
final ResourceBundle bundle = ResourceBundle.getBundle(
|
final ResourceBundle bundle = ResourceBundle.getBundle(
|
||||||
AdminUiConstants.ADMIN_BUNDLE, UI.getCurrent().getLocale());
|
AdminUiConstants.ADMIN_BUNDLE, UI.getCurrent().getLocale());
|
||||||
|
|
@ -119,8 +142,7 @@ public class JpqlConsole extends CustomComponent {
|
||||||
|
|
||||||
final List<?> result;
|
final List<?> result;
|
||||||
try {
|
try {
|
||||||
result = view
|
result = controller
|
||||||
.getJpqlConsoleController()
|
|
||||||
.executeQuery(queryStr,
|
.executeQuery(queryStr,
|
||||||
Integer.parseInt(maxResults.getValue()),
|
Integer.parseInt(maxResults.getValue()),
|
||||||
Integer.parseInt(offset.getValue()));
|
Integer.parseInt(offset.getValue()));
|
||||||
|
|
|
||||||
|
|
@ -19,8 +19,13 @@
|
||||||
package org.libreccm.admin.ui;
|
package org.libreccm.admin.ui;
|
||||||
|
|
||||||
import com.arsdigita.ui.admin.AdminUiConstants;
|
import com.arsdigita.ui.admin.AdminUiConstants;
|
||||||
|
|
||||||
import com.vaadin.icons.VaadinIcons;
|
import com.vaadin.icons.VaadinIcons;
|
||||||
import com.vaadin.ui.*;
|
import com.vaadin.ui.Button;
|
||||||
|
import com.vaadin.ui.Grid;
|
||||||
|
import com.vaadin.ui.HorizontalLayout;
|
||||||
|
import com.vaadin.ui.UI;
|
||||||
|
import com.vaadin.ui.Window;
|
||||||
import com.vaadin.ui.components.grid.HeaderCell;
|
import com.vaadin.ui.components.grid.HeaderCell;
|
||||||
import com.vaadin.ui.components.grid.HeaderRow;
|
import com.vaadin.ui.components.grid.HeaderRow;
|
||||||
import com.vaadin.ui.themes.ValoTheme;
|
import com.vaadin.ui.themes.ValoTheme;
|
||||||
|
|
@ -34,15 +39,14 @@ import java.util.ResourceBundle;
|
||||||
*
|
*
|
||||||
* @author <a href="mailto:jens.pelzetter@googlemail.com">Jens Pelzetter</a>
|
* @author <a href="mailto:jens.pelzetter@googlemail.com">Jens Pelzetter</a>
|
||||||
*/
|
*/
|
||||||
public class PartySelector extends Window {
|
class PartySelector extends Window {
|
||||||
|
|
||||||
private static final long serialVersionUID = 6915710902238111484L;
|
private static final long serialVersionUID = 6915710902238111484L;
|
||||||
|
|
||||||
private static final String COL_PARTY_NAME = "partyname";
|
private static final String COL_PARTY_NAME = "partyname";
|
||||||
|
|
||||||
public PartySelector(final String caption,
|
protected PartySelector(final String caption,
|
||||||
final String actionLabel,
|
final String actionLabel,
|
||||||
final UsersGroupsRolesTab usersGroupsRoles,
|
|
||||||
final List<Party> excludedParties,
|
final List<Party> excludedParties,
|
||||||
final PartySelectionAction action) {
|
final PartySelectionAction action) {
|
||||||
|
|
||||||
|
|
|
||||||
|
|
@ -19,14 +19,27 @@
|
||||||
package org.libreccm.admin.ui;
|
package org.libreccm.admin.ui;
|
||||||
|
|
||||||
import com.arsdigita.ui.admin.AdminUiConstants;
|
import com.arsdigita.ui.admin.AdminUiConstants;
|
||||||
|
|
||||||
import com.vaadin.icons.VaadinIcons;
|
import com.vaadin.icons.VaadinIcons;
|
||||||
import com.vaadin.ui.*;
|
import com.vaadin.ui.Button;
|
||||||
|
import com.vaadin.ui.FormLayout;
|
||||||
|
import com.vaadin.ui.Grid;
|
||||||
|
import com.vaadin.ui.HorizontalLayout;
|
||||||
|
import com.vaadin.ui.Label;
|
||||||
|
import com.vaadin.ui.TabSheet;
|
||||||
|
import com.vaadin.ui.UI;
|
||||||
|
import com.vaadin.ui.VerticalLayout;
|
||||||
|
import com.vaadin.ui.Window;
|
||||||
import com.vaadin.ui.components.grid.HeaderCell;
|
import com.vaadin.ui.components.grid.HeaderCell;
|
||||||
import com.vaadin.ui.components.grid.HeaderRow;
|
import com.vaadin.ui.components.grid.HeaderRow;
|
||||||
import com.vaadin.ui.renderers.ButtonRenderer;
|
import com.vaadin.ui.renderers.ButtonRenderer;
|
||||||
import com.vaadin.ui.themes.ValoTheme;
|
import com.vaadin.ui.themes.ValoTheme;
|
||||||
import org.libreccm.cdi.utils.CdiUtil;
|
import org.libreccm.cdi.utils.CdiUtil;
|
||||||
import org.libreccm.security.*;
|
import org.libreccm.security.Party;
|
||||||
|
import org.libreccm.security.PartyRepository;
|
||||||
|
import org.libreccm.security.Role;
|
||||||
|
import org.libreccm.security.RoleManager;
|
||||||
|
import org.libreccm.security.RoleRepository;
|
||||||
|
|
||||||
import java.util.ResourceBundle;
|
import java.util.ResourceBundle;
|
||||||
|
|
||||||
|
|
@ -34,26 +47,26 @@ import java.util.ResourceBundle;
|
||||||
*
|
*
|
||||||
* @author <a href="mailto:jens.pelzetter@googlemail.com">Jens Pelzetter</a>
|
* @author <a href="mailto:jens.pelzetter@googlemail.com">Jens Pelzetter</a>
|
||||||
*/
|
*/
|
||||||
public class RoleDetails extends Window {
|
class RoleDetails extends Window {
|
||||||
|
|
||||||
private static final long serialVersionUID = 8109931561947913438L;
|
private static final long serialVersionUID = 8109931561947913438L;
|
||||||
|
|
||||||
private static final String COL_MEMBER_NAME = "partyname";
|
private static final String COL_MEMBER_NAME = "partyname";
|
||||||
private static final String COL_MEMBER_REMOVE = "member_remove";
|
private static final String COL_MEMBER_REMOVE = "member_remove";
|
||||||
|
|
||||||
private final UsersGroupsRolesTab usersGroupsRoles;
|
// private final UsersGroupsRolesTab usersGroupsRoles;
|
||||||
private final Role role;
|
private final Role role;
|
||||||
private final RoleRepository roleRepo;
|
private final RoleRepository roleRepo;
|
||||||
private final RoleManager roleManager;
|
private final RoleManager roleManager;
|
||||||
|
|
||||||
public RoleDetails(final Role role,
|
protected RoleDetails(final Role role,
|
||||||
final UsersGroupsRolesTab usersGroupsRoles,
|
// final UsersGroupsRolesTab usersGroupsRoles,
|
||||||
final RoleRepository roleRepo,
|
final RoleRepository roleRepo,
|
||||||
final RoleManager roleManager) {
|
final RoleManager roleManager) {
|
||||||
|
|
||||||
super(String.format("Details of role %s", role.getName()));
|
super(String.format("Details of role %s", role.getName()));
|
||||||
|
|
||||||
this.usersGroupsRoles = usersGroupsRoles;
|
// this.usersGroupsRoles = usersGroupsRoles;
|
||||||
this.role = role;
|
this.role = role;
|
||||||
this.roleRepo = roleRepo;
|
this.roleRepo = roleRepo;
|
||||||
this.roleManager = roleManager;
|
this.roleManager = roleManager;
|
||||||
|
|
@ -83,9 +96,8 @@ public class RoleDetails extends Window {
|
||||||
bundle.getString("ui.admin.roles.table.edit"),
|
bundle.getString("ui.admin.roles.table.edit"),
|
||||||
event -> {
|
event -> {
|
||||||
final RoleEditor editor = new RoleEditor(role,
|
final RoleEditor editor = new RoleEditor(role,
|
||||||
usersGroupsRoles,
|
// usersGroupsRoles,
|
||||||
roleRepo,
|
roleRepo);
|
||||||
roleManager);
|
|
||||||
editor.center();
|
editor.center();
|
||||||
UI.getCurrent().addWindow(editor);
|
UI.getCurrent().addWindow(editor);
|
||||||
});
|
});
|
||||||
|
|
@ -125,7 +137,6 @@ public class RoleDetails extends Window {
|
||||||
final PartySelector partySelector = new PartySelector(
|
final PartySelector partySelector = new PartySelector(
|
||||||
"Select parties to add to role",
|
"Select parties to add to role",
|
||||||
"Add selected parties to role",
|
"Add selected parties to role",
|
||||||
usersGroupsRoles,
|
|
||||||
partyRepo.findByRole(role),
|
partyRepo.findByRole(role),
|
||||||
selectedParties -> {
|
selectedParties -> {
|
||||||
selectedParties.forEach(party -> {
|
selectedParties.forEach(party -> {
|
||||||
|
|
@ -133,6 +144,9 @@ public class RoleDetails extends Window {
|
||||||
});
|
});
|
||||||
partiesGrid.getDataProvider().refreshAll();
|
partiesGrid.getDataProvider().refreshAll();
|
||||||
});
|
});
|
||||||
|
partySelector.addCloseListener(closeEvent -> {
|
||||||
|
partiesGrid.getDataProvider().refreshAll();
|
||||||
|
});
|
||||||
partySelector.center();
|
partySelector.center();
|
||||||
partySelector.setWidth("80%");
|
partySelector.setWidth("80%");
|
||||||
UI.getCurrent().addWindow(partySelector);
|
UI.getCurrent().addWindow(partySelector);
|
||||||
|
|
|
||||||
|
|
@ -19,11 +19,18 @@
|
||||||
package org.libreccm.admin.ui;
|
package org.libreccm.admin.ui;
|
||||||
|
|
||||||
import com.arsdigita.ui.admin.AdminUiConstants;
|
import com.arsdigita.ui.admin.AdminUiConstants;
|
||||||
|
|
||||||
import com.vaadin.data.HasValue;
|
import com.vaadin.data.HasValue;
|
||||||
import com.vaadin.server.UserError;
|
import com.vaadin.server.UserError;
|
||||||
import com.vaadin.ui.*;
|
import com.vaadin.ui.Button;
|
||||||
|
import com.vaadin.ui.FormLayout;
|
||||||
|
import com.vaadin.ui.HorizontalLayout;
|
||||||
|
import com.vaadin.ui.TextArea;
|
||||||
|
import com.vaadin.ui.TextField;
|
||||||
|
import com.vaadin.ui.UI;
|
||||||
|
import com.vaadin.ui.VerticalLayout;
|
||||||
|
import com.vaadin.ui.Window;
|
||||||
import org.libreccm.security.Role;
|
import org.libreccm.security.Role;
|
||||||
import org.libreccm.security.RoleManager;
|
|
||||||
import org.libreccm.security.RoleRepository;
|
import org.libreccm.security.RoleRepository;
|
||||||
|
|
||||||
import java.util.ResourceBundle;
|
import java.util.ResourceBundle;
|
||||||
|
|
@ -32,45 +39,35 @@ import java.util.ResourceBundle;
|
||||||
*
|
*
|
||||||
* @author <a href="mailto:jens.pelzetter@googlemail.com">Jens Pelzetter</a>
|
* @author <a href="mailto:jens.pelzetter@googlemail.com">Jens Pelzetter</a>
|
||||||
*/
|
*/
|
||||||
public class RoleEditor extends Window {
|
class RoleEditor extends Window {
|
||||||
|
|
||||||
private static final long serialVersionUID = -2982855646090602847L;
|
private static final long serialVersionUID = -2982855646090602847L;
|
||||||
|
|
||||||
private final UsersGroupsRolesTab usersGroupsRoles;
|
|
||||||
private final Role role;
|
private final Role role;
|
||||||
private final RoleRepository roleRepo;
|
private final RoleRepository roleRepo;
|
||||||
private final RoleManager roleManager;
|
|
||||||
|
|
||||||
private boolean dataHasChanged = false;
|
private boolean dataHasChanged = false;
|
||||||
|
|
||||||
private TextField roleName;
|
private TextField roleName;
|
||||||
private TextArea roleDescription;
|
private TextArea roleDescription;
|
||||||
|
|
||||||
public RoleEditor(final UsersGroupsRolesTab usersGroupsRoles,
|
protected RoleEditor(final RoleRepository roleRepo) {
|
||||||
final RoleRepository roleRepo,
|
|
||||||
final RoleManager roleManager) {
|
|
||||||
|
|
||||||
super("Create new role");
|
super("Create new role");
|
||||||
|
|
||||||
this.usersGroupsRoles = usersGroupsRoles;
|
|
||||||
role = null;
|
role = null;
|
||||||
this.roleRepo = roleRepo;
|
this.roleRepo = roleRepo;
|
||||||
this.roleManager = roleManager;
|
|
||||||
|
|
||||||
addWidgets();
|
addWidgets();
|
||||||
}
|
}
|
||||||
|
|
||||||
public RoleEditor(final Role role,
|
public RoleEditor(final Role role,
|
||||||
final UsersGroupsRolesTab usersGroupsRoles,
|
final RoleRepository roleRepo) {
|
||||||
final RoleRepository roleRepo,
|
|
||||||
final RoleManager roleManager) {
|
|
||||||
|
|
||||||
super(String.format("Edit role %s", role.getName()));
|
super(String.format("Edit role %s", role.getName()));
|
||||||
|
|
||||||
this.role = role;
|
this.role = role;
|
||||||
this.usersGroupsRoles = usersGroupsRoles;
|
|
||||||
this.roleRepo = roleRepo;
|
this.roleRepo = roleRepo;
|
||||||
this.roleManager = roleManager;
|
|
||||||
|
|
||||||
addWidgets();
|
addWidgets();
|
||||||
}
|
}
|
||||||
|
|
@ -195,9 +192,6 @@ public class RoleEditor extends Window {
|
||||||
roleRepo.save(currentRole);
|
roleRepo.save(currentRole);
|
||||||
|
|
||||||
dataHasChanged = false;
|
dataHasChanged = false;
|
||||||
if (usersGroupsRoles != null) {
|
|
||||||
usersGroupsRoles.refreshRoles();
|
|
||||||
}
|
|
||||||
close();
|
close();
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
|
||||||
|
|
@ -35,15 +35,14 @@ import java.util.List;
|
||||||
*
|
*
|
||||||
* @author <a href="mailto:jens.pelzetter@googlemail.com">Jens Pelzetter</a>
|
* @author <a href="mailto:jens.pelzetter@googlemail.com">Jens Pelzetter</a>
|
||||||
*/
|
*/
|
||||||
public class RoleSelector extends Window {
|
class RoleSelector extends Window {
|
||||||
|
|
||||||
private static final long serialVersionUID = -6893510634359633368L;
|
private static final long serialVersionUID = -6893510634359633368L;
|
||||||
|
|
||||||
private static final String COL_NAME = "rolename";
|
private static final String COL_NAME = "rolename";
|
||||||
|
|
||||||
public RoleSelector(final String caption,
|
protected RoleSelector(final String caption,
|
||||||
final String actionLabel,
|
final String actionLabel,
|
||||||
final UsersGroupsRolesTab usersGroupsRoles,
|
|
||||||
final List<Role> excludedRoles,
|
final List<Role> excludedRoles,
|
||||||
final RoleSelectionAction action) {
|
final RoleSelectionAction action) {
|
||||||
|
|
||||||
|
|
@ -57,10 +56,6 @@ public class RoleSelector extends Window {
|
||||||
|
|
||||||
setCaption(caption);
|
setCaption(caption);
|
||||||
|
|
||||||
// final ResourceBundle bundle = ResourceBundle
|
|
||||||
// .getBundle(AdminUiConstants.ADMIN_BUNDLE,
|
|
||||||
// UI.getCurrent().getLocale());
|
|
||||||
|
|
||||||
final CdiUtil cdiUtil = CdiUtil.createCdiUtil();
|
final CdiUtil cdiUtil = CdiUtil.createCdiUtil();
|
||||||
|
|
||||||
final Grid<Role> rolesGrid = new Grid<>();
|
final Grid<Role> rolesGrid = new Grid<>();
|
||||||
|
|
|
||||||
|
|
@ -1,43 +0,0 @@
|
||||||
/*
|
|
||||||
* 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.vaadin.cdi.ViewScoped;
|
|
||||||
import org.libreccm.security.RoleManager;
|
|
||||||
import org.libreccm.security.RoleRepository;
|
|
||||||
|
|
||||||
import javax.inject.Inject;
|
|
||||||
|
|
||||||
/**
|
|
||||||
*
|
|
||||||
* @author <a href="mailto:jens.pelzetter@googlemail.com">Jens Pelzetter</a>
|
|
||||||
*/
|
|
||||||
@ViewScoped
|
|
||||||
class RolesManager {
|
|
||||||
|
|
||||||
@Inject
|
|
||||||
private RoleManager roleManager;
|
|
||||||
|
|
||||||
@Inject
|
|
||||||
private RoleRepository roleRepository;
|
|
||||||
|
|
||||||
@Inject
|
|
||||||
private RolesTableDataProvider rolesTableDataProvider;
|
|
||||||
|
|
||||||
}
|
|
||||||
|
|
@ -19,8 +19,17 @@
|
||||||
package org.libreccm.admin.ui;
|
package org.libreccm.admin.ui;
|
||||||
|
|
||||||
import com.arsdigita.ui.admin.AdminUiConstants;
|
import com.arsdigita.ui.admin.AdminUiConstants;
|
||||||
|
|
||||||
import com.vaadin.icons.VaadinIcons;
|
import com.vaadin.icons.VaadinIcons;
|
||||||
import com.vaadin.ui.*;
|
import com.vaadin.ui.Button;
|
||||||
|
import com.vaadin.ui.Grid;
|
||||||
|
import com.vaadin.ui.HorizontalLayout;
|
||||||
|
import com.vaadin.ui.Label;
|
||||||
|
import com.vaadin.ui.TextField;
|
||||||
|
import com.vaadin.ui.UI;
|
||||||
|
import com.vaadin.ui.VerticalLayout;
|
||||||
|
import com.vaadin.ui.Window;
|
||||||
|
|
||||||
import com.vaadin.ui.components.grid.HeaderCell;
|
import com.vaadin.ui.components.grid.HeaderCell;
|
||||||
import com.vaadin.ui.components.grid.HeaderRow;
|
import com.vaadin.ui.components.grid.HeaderRow;
|
||||||
import com.vaadin.ui.renderers.ButtonRenderer;
|
import com.vaadin.ui.renderers.ButtonRenderer;
|
||||||
|
|
@ -37,7 +46,7 @@ import java.util.ResourceBundle;
|
||||||
*
|
*
|
||||||
* @author <a href="mailto:jens.pelzetter@googlemail.com">Jens Pelzetter</a>
|
* @author <a href="mailto:jens.pelzetter@googlemail.com">Jens Pelzetter</a>
|
||||||
*/
|
*/
|
||||||
public class RolesTable extends Grid<Role> {
|
class RolesTable extends Grid<Role> {
|
||||||
|
|
||||||
private static final long serialVersionUID = 8298191390811634176L;
|
private static final long serialVersionUID = 8298191390811634176L;
|
||||||
|
|
||||||
|
|
@ -50,18 +59,19 @@ public class RolesTable extends Grid<Role> {
|
||||||
private final Button clearFiltersButton;
|
private final Button clearFiltersButton;
|
||||||
private final Button createRoleButton;
|
private final Button createRoleButton;
|
||||||
|
|
||||||
public RolesTable(final AdminView view,
|
protected RolesTable(final UsersGroupsRolesController controller) {
|
||||||
final UsersGroupsRolesTab usersGroupsRoles) {
|
|
||||||
|
|
||||||
super();
|
super();
|
||||||
|
|
||||||
|
super.setDataProvider(controller.getRolesTableDataProvider());
|
||||||
|
|
||||||
final ResourceBundle bundle = ResourceBundle
|
final ResourceBundle bundle = ResourceBundle
|
||||||
.getBundle(AdminUiConstants.ADMIN_BUNDLE,
|
.getBundle(AdminUiConstants.ADMIN_BUNDLE,
|
||||||
UI.getCurrent().getLocale());
|
UI.getCurrent().getLocale());
|
||||||
|
|
||||||
addColumn(Role::getName)
|
addColumn(Role::getName)
|
||||||
.setId(COL_NAME)
|
.setId(COL_NAME)
|
||||||
.setCaption("Name");
|
.setCaption(bundle.getString("ui.admin.roles.table.name"));
|
||||||
addColumn(role -> {
|
addColumn(role -> {
|
||||||
if (role.getDescription().hasValue(UI.getCurrent().getLocale())) {
|
if (role.getDescription().hasValue(UI.getCurrent().getLocale())) {
|
||||||
return role.getDescription()
|
return role.getDescription()
|
||||||
|
|
@ -83,24 +93,16 @@ public class RolesTable extends Grid<Role> {
|
||||||
}
|
}
|
||||||
})
|
})
|
||||||
.setId(COL_DESCRIPTION)
|
.setId(COL_DESCRIPTION)
|
||||||
.setCaption("Description");
|
.setCaption(bundle.getString("ui.admin.roles.table.description"));
|
||||||
addColumn(user -> bundle.getString("ui.admin.roles.table.edit"),
|
addColumn(user -> bundle.getString("ui.admin.roles.table.edit"),
|
||||||
new ButtonRenderer<>(event -> {
|
new ButtonRenderer<>(event -> {
|
||||||
final RoleDetails roleDetails = new RoleDetails(
|
final RoleDetails roleDetails = new RoleDetails(
|
||||||
event.getItem(),
|
event.getItem(),
|
||||||
usersGroupsRoles,
|
controller.getRoleRepository(),
|
||||||
view.getRoleRepository(),
|
controller.getRoleManager());
|
||||||
view.getRoleManager());
|
|
||||||
roleDetails.center();
|
roleDetails.center();
|
||||||
roleDetails.setWidth("80%");
|
roleDetails.setWidth("80%");
|
||||||
UI.getCurrent().addWindow(roleDetails);
|
UI.getCurrent().addWindow(roleDetails);
|
||||||
// final RoleEditor roleEditor = new RoleEditor(
|
|
||||||
// event.getItem(),
|
|
||||||
// usersGroupsRoles,
|
|
||||||
// view.getRoleRepository(),
|
|
||||||
// view.getRoleManager());
|
|
||||||
// roleEditor.center();
|
|
||||||
// UI.getCurrent().addWindow(roleEditor);
|
|
||||||
}))
|
}))
|
||||||
.setId(COL_EDIT);
|
.setId(COL_EDIT);
|
||||||
addColumn(user -> bundle.getString("ui.admin.roles.table.delete"),
|
addColumn(user -> bundle.getString("ui.admin.roles.table.delete"),
|
||||||
|
|
@ -108,8 +110,7 @@ public class RolesTable extends Grid<Role> {
|
||||||
final ConfirmDeleteDialog dialog
|
final ConfirmDeleteDialog dialog
|
||||||
= new ConfirmDeleteDialog(
|
= new ConfirmDeleteDialog(
|
||||||
event.getItem(),
|
event.getItem(),
|
||||||
usersGroupsRoles,
|
controller.getRoleRepository());
|
||||||
view.getRoleRepository());
|
|
||||||
dialog.center();
|
dialog.center();
|
||||||
UI.getCurrent().addWindow(dialog);
|
UI.getCurrent().addWindow(dialog);
|
||||||
}))
|
}))
|
||||||
|
|
@ -118,8 +119,10 @@ public class RolesTable extends Grid<Role> {
|
||||||
final HeaderRow filterRow = appendHeaderRow();
|
final HeaderRow filterRow = appendHeaderRow();
|
||||||
final HeaderCell GroupNameFilterCell = filterRow.getCell(COL_NAME);
|
final HeaderCell GroupNameFilterCell = filterRow.getCell(COL_NAME);
|
||||||
roleNameFilter = new TextField();
|
roleNameFilter = new TextField();
|
||||||
roleNameFilter.setPlaceholder("Role name");
|
roleNameFilter.setPlaceholder(bundle
|
||||||
roleNameFilter.setDescription("Filter Roles by name");
|
.getString("ui.admin.users.table.filter.rolename.placeholder"));
|
||||||
|
roleNameFilter.setDescription(bundle
|
||||||
|
.getString("ui.admin.users.table.filter.rolename.description"));
|
||||||
roleNameFilter.addStyleName(ValoTheme.TEXTFIELD_TINY);
|
roleNameFilter.addStyleName(ValoTheme.TEXTFIELD_TINY);
|
||||||
roleNameFilter
|
roleNameFilter
|
||||||
.addValueChangeListener(event -> {
|
.addValueChangeListener(event -> {
|
||||||
|
|
@ -133,7 +136,8 @@ public class RolesTable extends Grid<Role> {
|
||||||
COL_DESCRIPTION,
|
COL_DESCRIPTION,
|
||||||
COL_EDIT,
|
COL_EDIT,
|
||||||
COL_DELETE);
|
COL_DELETE);
|
||||||
clearFiltersButton = new Button("Clear filters");
|
clearFiltersButton = new Button(bundle
|
||||||
|
.getString("ui.admin.users.table.filter.clear"));
|
||||||
clearFiltersButton.setStyleName(ValoTheme.BUTTON_TINY);
|
clearFiltersButton.setStyleName(ValoTheme.BUTTON_TINY);
|
||||||
clearFiltersButton.setIcon(VaadinIcons.BACKSPACE);
|
clearFiltersButton.setIcon(VaadinIcons.BACKSPACE);
|
||||||
clearFiltersButton.addClickListener(event -> {
|
clearFiltersButton.addClickListener(event -> {
|
||||||
|
|
@ -145,10 +149,11 @@ public class RolesTable extends Grid<Role> {
|
||||||
createRoleButton.setIcon(VaadinIcons.PLUS);
|
createRoleButton.setIcon(VaadinIcons.PLUS);
|
||||||
createRoleButton.addClickListener(event -> {
|
createRoleButton.addClickListener(event -> {
|
||||||
final RoleEditor roleEditor = new RoleEditor(
|
final RoleEditor roleEditor = new RoleEditor(
|
||||||
usersGroupsRoles,
|
controller.getRoleRepository());
|
||||||
view.getRoleRepository(),
|
|
||||||
view.getRoleManager());
|
|
||||||
roleEditor.center();
|
roleEditor.center();
|
||||||
|
roleEditor.addCloseListener(closeEvent -> {
|
||||||
|
getDataProvider().refreshAll();
|
||||||
|
});
|
||||||
UI.getCurrent().addWindow(roleEditor);
|
UI.getCurrent().addWindow(roleEditor);
|
||||||
});
|
});
|
||||||
final HorizontalLayout actionsLayout = new HorizontalLayout(
|
final HorizontalLayout actionsLayout = new HorizontalLayout(
|
||||||
|
|
@ -157,42 +162,16 @@ public class RolesTable extends Grid<Role> {
|
||||||
actionsCell.setComponent(actionsLayout);
|
actionsCell.setComponent(actionsLayout);
|
||||||
}
|
}
|
||||||
|
|
||||||
public void localize() {
|
|
||||||
|
|
||||||
final ResourceBundle bundle = ResourceBundle
|
|
||||||
.getBundle(AdminUiConstants.ADMIN_BUNDLE,
|
|
||||||
UI.getCurrent().getLocale());
|
|
||||||
|
|
||||||
getColumn(COL_NAME)
|
|
||||||
.setCaption(bundle.getString("ui.admin.roles.table.name"));
|
|
||||||
|
|
||||||
getColumn(COL_DESCRIPTION)
|
|
||||||
.setCaption(bundle.getString("ui.admin.roles.table.description"));
|
|
||||||
|
|
||||||
roleNameFilter.setPlaceholder(
|
|
||||||
bundle
|
|
||||||
.getString("ui.admin.users.table.filter.rolename.placeholder"));
|
|
||||||
roleNameFilter.setDescription(bundle
|
|
||||||
.getString("ui.admin.users.table.filter.rolename.description"));
|
|
||||||
|
|
||||||
clearFiltersButton.setCaption(bundle
|
|
||||||
.getString("ui.admin.users.table.filter.clear"));
|
|
||||||
|
|
||||||
}
|
|
||||||
|
|
||||||
private class ConfirmDeleteDialog extends Window {
|
private class ConfirmDeleteDialog extends Window {
|
||||||
|
|
||||||
private static final long serialVersionUID = -1315311220464298282L;
|
private static final long serialVersionUID = -1315311220464298282L;
|
||||||
|
|
||||||
private final Role role;
|
private final Role role;
|
||||||
private final UsersGroupsRolesTab usersGroupsRoles;
|
|
||||||
private final RoleRepository roleRepo;
|
private final RoleRepository roleRepo;
|
||||||
|
|
||||||
public ConfirmDeleteDialog(final Role role,
|
public ConfirmDeleteDialog(final Role role,
|
||||||
final UsersGroupsRolesTab usersGroupsRoles,
|
|
||||||
final RoleRepository roleRepo) {
|
final RoleRepository roleRepo) {
|
||||||
this.role = role;
|
this.role = role;
|
||||||
this.usersGroupsRoles = usersGroupsRoles;
|
|
||||||
this.roleRepo = roleRepo;
|
this.roleRepo = roleRepo;
|
||||||
|
|
||||||
final ResourceBundle bundle = ResourceBundle
|
final ResourceBundle bundle = ResourceBundle
|
||||||
|
|
@ -222,7 +201,7 @@ public class RolesTable extends Grid<Role> {
|
||||||
|
|
||||||
private void deleteRole() {
|
private void deleteRole() {
|
||||||
roleRepo.delete(role);
|
roleRepo.delete(role);
|
||||||
usersGroupsRoles.refreshRoles();
|
getDataProvider().refreshAll();
|
||||||
close();
|
close();
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
|
||||||
|
|
@ -19,14 +19,29 @@
|
||||||
package org.libreccm.admin.ui;
|
package org.libreccm.admin.ui;
|
||||||
|
|
||||||
import com.arsdigita.ui.admin.AdminUiConstants;
|
import com.arsdigita.ui.admin.AdminUiConstants;
|
||||||
|
|
||||||
import com.vaadin.icons.VaadinIcons;
|
import com.vaadin.icons.VaadinIcons;
|
||||||
import com.vaadin.ui.*;
|
import com.vaadin.ui.Button;
|
||||||
|
import com.vaadin.ui.FormLayout;
|
||||||
|
import com.vaadin.ui.Grid;
|
||||||
|
import com.vaadin.ui.HorizontalLayout;
|
||||||
|
import com.vaadin.ui.Label;
|
||||||
|
import com.vaadin.ui.TabSheet;
|
||||||
|
import com.vaadin.ui.UI;
|
||||||
|
import com.vaadin.ui.VerticalLayout;
|
||||||
|
import com.vaadin.ui.Window;
|
||||||
import com.vaadin.ui.components.grid.HeaderCell;
|
import com.vaadin.ui.components.grid.HeaderCell;
|
||||||
import com.vaadin.ui.components.grid.HeaderRow;
|
import com.vaadin.ui.components.grid.HeaderRow;
|
||||||
import com.vaadin.ui.renderers.ButtonRenderer;
|
import com.vaadin.ui.renderers.ButtonRenderer;
|
||||||
import com.vaadin.ui.themes.ValoTheme;
|
import com.vaadin.ui.themes.ValoTheme;
|
||||||
import org.libreccm.cdi.utils.CdiUtil;
|
import org.libreccm.cdi.utils.CdiUtil;
|
||||||
import org.libreccm.security.*;
|
import org.libreccm.security.Group;
|
||||||
|
import org.libreccm.security.GroupRepository;
|
||||||
|
import org.libreccm.security.Role;
|
||||||
|
import org.libreccm.security.RoleRepository;
|
||||||
|
import org.libreccm.security.User;
|
||||||
|
import org.libreccm.security.UserManager;
|
||||||
|
import org.libreccm.security.UserRepository;
|
||||||
|
|
||||||
import java.util.ResourceBundle;
|
import java.util.ResourceBundle;
|
||||||
|
|
||||||
|
|
@ -34,7 +49,7 @@ import java.util.ResourceBundle;
|
||||||
*
|
*
|
||||||
* @author <a href="mailto:jens.pelzetter@googlemail.com">Jens Pelzetter</a>
|
* @author <a href="mailto:jens.pelzetter@googlemail.com">Jens Pelzetter</a>
|
||||||
*/
|
*/
|
||||||
public class UserDetails extends Window {
|
class UserDetails extends Window {
|
||||||
|
|
||||||
private static final long serialVersionUID = 7852981019990845392L;
|
private static final long serialVersionUID = 7852981019990845392L;
|
||||||
|
|
||||||
|
|
@ -44,19 +59,16 @@ public class UserDetails extends Window {
|
||||||
private static final String COL_ROLE_NAME = "role_name";
|
private static final String COL_ROLE_NAME = "role_name";
|
||||||
private static final String COL_ROLE_REMOVE = "role_remove";
|
private static final String COL_ROLE_REMOVE = "role_remove";
|
||||||
|
|
||||||
private final UsersGroupsRolesTab usersGroupsRoles;
|
|
||||||
private final User user;
|
private final User user;
|
||||||
private final UserRepository userRepo;
|
private final UserRepository userRepo;
|
||||||
private final UserManager userManager;
|
private final UserManager userManager;
|
||||||
|
|
||||||
public UserDetails(final User user,
|
protected UserDetails(final User user,
|
||||||
final UsersGroupsRolesTab usersGroupsRoles,
|
|
||||||
final UserRepository userRepo,
|
final UserRepository userRepo,
|
||||||
final UserManager userManager) {
|
final UserManager userManager) {
|
||||||
|
|
||||||
super(String.format("Details of user %s", user.getName()));
|
super(String.format("Details of user %s", user.getName()));
|
||||||
|
|
||||||
this.usersGroupsRoles = usersGroupsRoles;
|
|
||||||
this.user = user;
|
this.user = user;
|
||||||
this.userRepo = userRepo;
|
this.userRepo = userRepo;
|
||||||
this.userManager = userManager;
|
this.userManager = userManager;
|
||||||
|
|
@ -115,7 +127,6 @@ public class UserDetails extends Window {
|
||||||
bundle.getString("ui.admin.users.table.edit"),
|
bundle.getString("ui.admin.users.table.edit"),
|
||||||
event -> {
|
event -> {
|
||||||
final UserEditor editor = new UserEditor(user,
|
final UserEditor editor = new UserEditor(user,
|
||||||
usersGroupsRoles,
|
|
||||||
userRepo,
|
userRepo,
|
||||||
userManager);
|
userManager);
|
||||||
editor.center();
|
editor.center();
|
||||||
|
|
@ -157,7 +168,6 @@ public class UserDetails extends Window {
|
||||||
final GroupSelector groupSelector = new GroupSelector(
|
final GroupSelector groupSelector = new GroupSelector(
|
||||||
"Select group(s) to which the user is added.",
|
"Select group(s) to which the user is added.",
|
||||||
"Add user to selected groups",
|
"Add user to selected groups",
|
||||||
usersGroupsRoles,
|
|
||||||
groupRepo.findByMember(user),
|
groupRepo.findByMember(user),
|
||||||
selectedGroups -> {
|
selectedGroups -> {
|
||||||
selectedGroups.forEach(group -> {
|
selectedGroups.forEach(group -> {
|
||||||
|
|
@ -167,6 +177,9 @@ public class UserDetails extends Window {
|
||||||
});
|
});
|
||||||
groupSelector.center();
|
groupSelector.center();
|
||||||
groupSelector.setWidth("80%");
|
groupSelector.setWidth("80%");
|
||||||
|
groupSelector.addCloseListener(closeEvent -> {
|
||||||
|
groupsGrid.getDataProvider().refreshAll();
|
||||||
|
});
|
||||||
UI.getCurrent().addWindow(groupSelector);
|
UI.getCurrent().addWindow(groupSelector);
|
||||||
});
|
});
|
||||||
final HeaderCell groupsGridHeaderCell = groupsGridHeader
|
final HeaderCell groupsGridHeaderCell = groupsGridHeader
|
||||||
|
|
@ -208,7 +221,6 @@ public class UserDetails extends Window {
|
||||||
final RoleSelector roleSelector = new RoleSelector(
|
final RoleSelector roleSelector = new RoleSelector(
|
||||||
"Select role(s) to add to group",
|
"Select role(s) to add to group",
|
||||||
"Add selected role(s) to group",
|
"Add selected role(s) to group",
|
||||||
usersGroupsRoles,
|
|
||||||
roleRepo.findByParty(user),
|
roleRepo.findByParty(user),
|
||||||
(selectedRoles -> {
|
(selectedRoles -> {
|
||||||
selectedRoles.forEach(role -> {
|
selectedRoles.forEach(role -> {
|
||||||
|
|
@ -216,6 +228,9 @@ public class UserDetails extends Window {
|
||||||
});
|
});
|
||||||
rolesGrid.getDataProvider().refreshAll();
|
rolesGrid.getDataProvider().refreshAll();
|
||||||
}));
|
}));
|
||||||
|
roleSelector.addCloseListener(closeEvent -> {
|
||||||
|
rolesGrid.getDataProvider().refreshAll();
|
||||||
|
});
|
||||||
roleSelector.center();
|
roleSelector.center();
|
||||||
roleSelector.setWidth("80%");
|
roleSelector.setWidth("80%");
|
||||||
UI.getCurrent().addWindow(roleSelector);
|
UI.getCurrent().addWindow(roleSelector);
|
||||||
|
|
|
||||||
|
|
@ -19,11 +19,23 @@
|
||||||
package org.libreccm.admin.ui;
|
package org.libreccm.admin.ui;
|
||||||
|
|
||||||
import com.arsdigita.ui.admin.AdminUiConstants;
|
import com.arsdigita.ui.admin.AdminUiConstants;
|
||||||
|
|
||||||
import com.vaadin.data.HasValue;
|
import com.vaadin.data.HasValue;
|
||||||
import com.vaadin.data.provider.AbstractDataProvider;
|
import com.vaadin.data.provider.AbstractDataProvider;
|
||||||
import com.vaadin.data.provider.Query;
|
import com.vaadin.data.provider.Query;
|
||||||
import com.vaadin.server.UserError;
|
import com.vaadin.server.UserError;
|
||||||
import com.vaadin.ui.*;
|
import com.vaadin.ui.Button;
|
||||||
|
import com.vaadin.ui.CheckBox;
|
||||||
|
import com.vaadin.ui.FormLayout;
|
||||||
|
import com.vaadin.ui.HorizontalLayout;
|
||||||
|
import com.vaadin.ui.Panel;
|
||||||
|
import com.vaadin.ui.PasswordField;
|
||||||
|
import com.vaadin.ui.RadioButtonGroup;
|
||||||
|
import com.vaadin.ui.TextField;
|
||||||
|
import com.vaadin.ui.UI;
|
||||||
|
import com.vaadin.ui.VerticalLayout;
|
||||||
|
import com.vaadin.ui.Window;
|
||||||
|
|
||||||
import org.apache.logging.log4j.LogManager;
|
import org.apache.logging.log4j.LogManager;
|
||||||
import org.apache.logging.log4j.Logger;
|
import org.apache.logging.log4j.Logger;
|
||||||
import org.libreccm.cdi.utils.CdiUtil;
|
import org.libreccm.cdi.utils.CdiUtil;
|
||||||
|
|
@ -35,6 +47,7 @@ import org.libreccm.security.UserManager;
|
||||||
import org.libreccm.security.UserRepository;
|
import org.libreccm.security.UserRepository;
|
||||||
|
|
||||||
import javax.mail.MessagingException;
|
import javax.mail.MessagingException;
|
||||||
|
|
||||||
import java.util.Arrays;
|
import java.util.Arrays;
|
||||||
import java.util.ResourceBundle;
|
import java.util.ResourceBundle;
|
||||||
import java.util.regex.Pattern;
|
import java.util.regex.Pattern;
|
||||||
|
|
@ -44,7 +57,7 @@ import java.util.stream.Stream;
|
||||||
*
|
*
|
||||||
* @author <a href="mailto:jens.pelzetter@googlemail.com">Jens Pelzetter</a>
|
* @author <a href="mailto:jens.pelzetter@googlemail.com">Jens Pelzetter</a>
|
||||||
*/
|
*/
|
||||||
public class UserEditor extends Window {
|
class UserEditor extends Window {
|
||||||
|
|
||||||
private static final long serialVersionUID = 7024424532574023431L;
|
private static final long serialVersionUID = 7024424532574023431L;
|
||||||
|
|
||||||
|
|
@ -58,7 +71,6 @@ public class UserEditor extends Window {
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
||||||
private final UsersGroupsRolesTab usersGroupsRoles;
|
|
||||||
private final User user;
|
private final User user;
|
||||||
private final UserRepository userRepo;
|
private final UserRepository userRepo;
|
||||||
private final UserManager userManager;
|
private final UserManager userManager;
|
||||||
|
|
@ -75,13 +87,11 @@ public class UserEditor extends Window {
|
||||||
private CheckBox passwordResetRequired;
|
private CheckBox passwordResetRequired;
|
||||||
private CheckBox banned;
|
private CheckBox banned;
|
||||||
|
|
||||||
public UserEditor(final UsersGroupsRolesTab usersGroupsRoles,
|
protected UserEditor(final UserRepository userRepo,
|
||||||
final UserRepository userRepo,
|
|
||||||
final UserManager userManager) {
|
final UserManager userManager) {
|
||||||
|
|
||||||
super("Create new user");
|
super("Create new user");
|
||||||
|
|
||||||
this.usersGroupsRoles = usersGroupsRoles;
|
|
||||||
user = null;
|
user = null;
|
||||||
this.userRepo = userRepo;
|
this.userRepo = userRepo;
|
||||||
this.userManager = userManager;
|
this.userManager = userManager;
|
||||||
|
|
@ -90,14 +100,12 @@ public class UserEditor extends Window {
|
||||||
}
|
}
|
||||||
|
|
||||||
public UserEditor(final User user,
|
public UserEditor(final User user,
|
||||||
final UsersGroupsRolesTab usersGroupsRoles,
|
|
||||||
final UserRepository userRepo,
|
final UserRepository userRepo,
|
||||||
final UserManager userManager) {
|
final UserManager userManager) {
|
||||||
|
|
||||||
super(String.format("Edit user %s", user.getName()));
|
super(String.format("Edit user %s", user.getName()));
|
||||||
|
|
||||||
this.user = user;
|
this.user = user;
|
||||||
this.usersGroupsRoles = usersGroupsRoles;
|
|
||||||
this.userRepo = userRepo;
|
this.userRepo = userRepo;
|
||||||
this.userManager = userManager;
|
this.userManager = userManager;
|
||||||
|
|
||||||
|
|
@ -425,9 +433,6 @@ public class UserEditor extends Window {
|
||||||
}
|
}
|
||||||
|
|
||||||
dataHasChanged = false;
|
dataHasChanged = false;
|
||||||
if (usersGroupsRoles != null) {
|
|
||||||
usersGroupsRoles.refreshUsers();
|
|
||||||
}
|
|
||||||
close();
|
close();
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
|
||||||
|
|
@ -19,8 +19,13 @@
|
||||||
package org.libreccm.admin.ui;
|
package org.libreccm.admin.ui;
|
||||||
|
|
||||||
import com.arsdigita.ui.admin.AdminUiConstants;
|
import com.arsdigita.ui.admin.AdminUiConstants;
|
||||||
|
|
||||||
import com.vaadin.icons.VaadinIcons;
|
import com.vaadin.icons.VaadinIcons;
|
||||||
import com.vaadin.ui.*;
|
import com.vaadin.ui.Button;
|
||||||
|
import com.vaadin.ui.Grid;
|
||||||
|
import com.vaadin.ui.HorizontalLayout;
|
||||||
|
import com.vaadin.ui.UI;
|
||||||
|
import com.vaadin.ui.Window;
|
||||||
import com.vaadin.ui.components.grid.HeaderCell;
|
import com.vaadin.ui.components.grid.HeaderCell;
|
||||||
import com.vaadin.ui.components.grid.HeaderRow;
|
import com.vaadin.ui.components.grid.HeaderRow;
|
||||||
import com.vaadin.ui.themes.ValoTheme;
|
import com.vaadin.ui.themes.ValoTheme;
|
||||||
|
|
@ -34,7 +39,7 @@ import java.util.ResourceBundle;
|
||||||
*
|
*
|
||||||
* @author <a href="mailto:jens.pelzetter@googlemail.com">Jens Pelzetter</a>
|
* @author <a href="mailto:jens.pelzetter@googlemail.com">Jens Pelzetter</a>
|
||||||
*/
|
*/
|
||||||
public class UserSelector extends Window {
|
class UserSelector extends Window {
|
||||||
|
|
||||||
private static final long serialVersionUID = -6227551833159691370L;
|
private static final long serialVersionUID = -6227551833159691370L;
|
||||||
|
|
||||||
|
|
@ -43,10 +48,8 @@ public class UserSelector extends Window {
|
||||||
private static final String COL_FAMILY_NAME = "family_name";
|
private static final String COL_FAMILY_NAME = "family_name";
|
||||||
private static final String COL_EMAIL = "email";
|
private static final String COL_EMAIL = "email";
|
||||||
|
|
||||||
|
protected UserSelector(final String caption,
|
||||||
public UserSelector(final String caption,
|
|
||||||
final String actionLabel,
|
final String actionLabel,
|
||||||
final UsersGroupsRolesTab usersGroupsRoles,
|
|
||||||
final List<User> excludedUsers,
|
final List<User> excludedUsers,
|
||||||
final UserSelectionAction action) {
|
final UserSelectionAction action) {
|
||||||
|
|
||||||
|
|
|
||||||
|
|
@ -0,0 +1,101 @@
|
||||||
|
/*
|
||||||
|
* 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 org.libreccm.security.GroupManager;
|
||||||
|
import org.libreccm.security.GroupRepository;
|
||||||
|
import org.libreccm.security.RoleManager;
|
||||||
|
import org.libreccm.security.RoleRepository;
|
||||||
|
import org.libreccm.security.UserManager;
|
||||||
|
import org.libreccm.security.UserRepository;
|
||||||
|
|
||||||
|
import javax.enterprise.context.RequestScoped;
|
||||||
|
import javax.inject.Inject;
|
||||||
|
|
||||||
|
/**
|
||||||
|
*
|
||||||
|
* @author <a href="mailto:jens.pelzetter@googlemail.com">Jens Pelzetter</a>
|
||||||
|
*/
|
||||||
|
@RequestScoped
|
||||||
|
class UsersGroupsRolesController {
|
||||||
|
|
||||||
|
@Inject
|
||||||
|
private GroupManager groupManager;
|
||||||
|
|
||||||
|
@Inject
|
||||||
|
private GroupRepository groupRepository;
|
||||||
|
|
||||||
|
@Inject
|
||||||
|
private GroupsTableDataProvider groupsTableDataProvider;
|
||||||
|
|
||||||
|
@Inject
|
||||||
|
private RoleManager roleManager;
|
||||||
|
|
||||||
|
@Inject
|
||||||
|
private RoleRepository RoleRepository;
|
||||||
|
|
||||||
|
@Inject
|
||||||
|
private RolesTableDataProvider rolesTableDataProvider;
|
||||||
|
|
||||||
|
@Inject
|
||||||
|
private UserManager userManager;
|
||||||
|
|
||||||
|
@Inject
|
||||||
|
private UserRepository userRepository;
|
||||||
|
|
||||||
|
@Inject
|
||||||
|
private UsersTableDataProvider usersTableDataProvider;
|
||||||
|
|
||||||
|
public GroupManager getGroupManager() {
|
||||||
|
return groupManager;
|
||||||
|
}
|
||||||
|
|
||||||
|
public GroupRepository getGroupRepository() {
|
||||||
|
return groupRepository;
|
||||||
|
}
|
||||||
|
|
||||||
|
public GroupsTableDataProvider getGroupsTableDataProvider() {
|
||||||
|
return groupsTableDataProvider;
|
||||||
|
}
|
||||||
|
|
||||||
|
public RoleManager getRoleManager() {
|
||||||
|
return roleManager;
|
||||||
|
}
|
||||||
|
|
||||||
|
public RoleRepository getRoleRepository() {
|
||||||
|
return RoleRepository;
|
||||||
|
}
|
||||||
|
|
||||||
|
public RolesTableDataProvider getRolesTableDataProvider() {
|
||||||
|
return rolesTableDataProvider;
|
||||||
|
}
|
||||||
|
|
||||||
|
public UserManager getUserManager() {
|
||||||
|
return userManager;
|
||||||
|
}
|
||||||
|
|
||||||
|
public UserRepository getUserRepository() {
|
||||||
|
return userRepository;
|
||||||
|
}
|
||||||
|
|
||||||
|
public UsersTableDataProvider getUsersTableDataProvider() {
|
||||||
|
return usersTableDataProvider;
|
||||||
|
}
|
||||||
|
|
||||||
|
}
|
||||||
|
|
@ -29,29 +29,12 @@ import java.util.ResourceBundle;
|
||||||
*
|
*
|
||||||
* @author <a href="mailto:jens.pelzetter@googlemail.com">Jens Pelzetter</a>
|
* @author <a href="mailto:jens.pelzetter@googlemail.com">Jens Pelzetter</a>
|
||||||
*/
|
*/
|
||||||
public class UsersGroupsRolesTab extends CustomComponent {
|
class UsersGroupsRolesTab extends CustomComponent {
|
||||||
|
|
||||||
private static final long serialVersionUID = 7280416743018127366L;
|
private static final long serialVersionUID = 7280416743018127366L;
|
||||||
|
|
||||||
// private static final String COL_USER_NAME = "username";
|
|
||||||
// private static final String COL_GIVEN_NAME = "given_name";
|
|
||||||
// private static final String COL_FAMILY_NAME = "family_name";
|
|
||||||
// private static final String COL_EMAIL = "email";
|
|
||||||
// private static final String COL_BANNED = "banned";
|
|
||||||
// private static final String COL_PASSWORD_RESET_REQUIRED
|
|
||||||
// = "password_reset_required";
|
|
||||||
// private static final String COL_EDIT = "edit";
|
|
||||||
// private static final String COL_DELETE = "delete";
|
|
||||||
|
|
||||||
private final AdminView view;
|
|
||||||
|
|
||||||
private final TabSheet tabSheet;
|
private final TabSheet tabSheet;
|
||||||
|
|
||||||
// private final Grid<User> usersTable;
|
|
||||||
// private final TextField userNameFilter;
|
|
||||||
// private final Button clearFiltersButton;
|
|
||||||
// private final Button createUserButton;
|
|
||||||
|
|
||||||
private final UsersTable usersTable;
|
private final UsersTable usersTable;
|
||||||
private final GroupsTable groupsTable;
|
private final GroupsTable groupsTable;
|
||||||
private final RolesTable rolesTable;
|
private final RolesTable rolesTable;
|
||||||
|
|
@ -60,115 +43,17 @@ public class UsersGroupsRolesTab extends CustomComponent {
|
||||||
private GroupsTableDataProvider groupsTableDataProvider;
|
private GroupsTableDataProvider groupsTableDataProvider;
|
||||||
private RolesTableDataProvider rolesTableDataProvider;
|
private RolesTableDataProvider rolesTableDataProvider;
|
||||||
|
|
||||||
public UsersGroupsRolesTab(final AdminView view) {
|
protected UsersGroupsRolesTab(final UsersGroupsRolesController controller) {
|
||||||
|
|
||||||
this.view = view;
|
|
||||||
|
|
||||||
final ResourceBundle bundle = ResourceBundle
|
|
||||||
.getBundle(AdminUiConstants.ADMIN_BUNDLE,
|
|
||||||
UI.getCurrent().getLocale());
|
|
||||||
|
|
||||||
tabSheet = new TabSheet();
|
tabSheet = new TabSheet();
|
||||||
// usersTable = new Grid<>();
|
|
||||||
// usersTable.setWidth("100%");
|
|
||||||
// usersTable.addColumn(User::getName)
|
|
||||||
// .setId(COL_USER_NAME)
|
|
||||||
// .setCaption("User name");
|
|
||||||
// usersTable
|
|
||||||
// .addColumn(User::getGivenName)
|
|
||||||
// .setId(COL_GIVEN_NAME)
|
|
||||||
// .setCaption("Given name");
|
|
||||||
// usersTable
|
|
||||||
// .addColumn(User::getFamilyName)
|
|
||||||
// .setId(COL_FAMILY_NAME)
|
|
||||||
// .setCaption("Family name");
|
|
||||||
// usersTable
|
|
||||||
// .addColumn(user -> user.getPrimaryEmailAddress().getAddress())
|
|
||||||
// .setId(COL_EMAIL)
|
|
||||||
// .setCaption("E-Mail");
|
|
||||||
// usersTable
|
|
||||||
// .addColumn(user -> {
|
|
||||||
// if (user.isBanned()) {
|
|
||||||
// return bundle.getString("ui.admin.user.banned_yes");
|
|
||||||
// } else {
|
|
||||||
// return bundle.getString("ui.admin.user.banned_no");
|
|
||||||
// }
|
|
||||||
// })
|
|
||||||
// .setId(COL_BANNED)
|
|
||||||
// .setCaption("Banned?");
|
|
||||||
// usersTable
|
|
||||||
// .addColumn(user -> {
|
|
||||||
// if (user.isPasswordResetRequired()) {
|
|
||||||
// return bundle.getString(
|
|
||||||
// "ui.admin.user.password_reset_required_yes");
|
|
||||||
// } else {
|
|
||||||
// return bundle.getString(
|
|
||||||
// "ui.admin.user.password_reset_required_no");
|
|
||||||
// }
|
|
||||||
// })
|
|
||||||
// .setId(COL_PASSWORD_RESET_REQUIRED)
|
|
||||||
// .setCaption("Password reset required");
|
|
||||||
// usersTable
|
|
||||||
// .addColumn(user -> bundle.getString("ui.admin.users.table.edit"),
|
|
||||||
// new ButtonRenderer<>(event -> {
|
|
||||||
// final UserEditor editor = new UserEditor(
|
|
||||||
// event.getItem(),
|
|
||||||
// this,
|
|
||||||
// view.getUserRepository(),
|
|
||||||
// view.getUserManager());
|
|
||||||
// editor.center();
|
|
||||||
// UI.getCurrent().addWindow(editor);
|
|
||||||
// }))
|
|
||||||
// .setId(COL_EDIT);
|
|
||||||
//
|
|
||||||
// final HeaderRow filterRow = usersTable.appendHeaderRow();
|
|
||||||
// final HeaderCell userNameFilterCell = filterRow.getCell(COL_USER_NAME);
|
|
||||||
// userNameFilter = new TextField();
|
|
||||||
// userNameFilter.setPlaceholder("User name");
|
|
||||||
// userNameFilter.setDescription("Filter users by username");
|
|
||||||
// userNameFilter.addStyleName(ValoTheme.TEXTFIELD_TINY);
|
|
||||||
// userNameFilter
|
|
||||||
// .addValueChangeListener(event -> {
|
|
||||||
// usersTableDataProvider
|
|
||||||
// .setUserNameFilter(event.getValue().toLowerCase());
|
|
||||||
// });
|
|
||||||
// userNameFilterCell.setComponent(userNameFilter);
|
|
||||||
//
|
|
||||||
// final HeaderRow actionsRow = usersTable.prependHeaderRow();
|
|
||||||
// final HeaderCell actionsCell = actionsRow.join(COL_USER_NAME,
|
|
||||||
// COL_GIVEN_NAME,
|
|
||||||
// COL_FAMILY_NAME,
|
|
||||||
// COL_EMAIL,
|
|
||||||
// COL_BANNED);
|
|
||||||
// clearFiltersButton = new Button("Clear filters");
|
|
||||||
// clearFiltersButton.addStyleName(ValoTheme.BUTTON_TINY);
|
|
||||||
// clearFiltersButton.addClickListener(event -> {
|
|
||||||
//// usersTableDataProvider.setUserNameFilter(null);
|
|
||||||
// userNameFilter.setValue("");
|
|
||||||
// });
|
|
||||||
// createUserButton = new Button("New User");
|
|
||||||
// createUserButton.addStyleName(ValoTheme.BUTTON_TINY);
|
|
||||||
// createUserButton.setIcon(VaadinIcons.PLUS);
|
|
||||||
// createUserButton.addClickListener(event -> {
|
|
||||||
// final UserEditor userEditor = new UserEditor(
|
|
||||||
// this,
|
|
||||||
// view.getUserRepository(),
|
|
||||||
// view.getUserManager());
|
|
||||||
// userEditor.center();
|
|
||||||
// UI.getCurrent().addWindow(userEditor);
|
|
||||||
// });
|
|
||||||
// final HorizontalLayout actionsLayout = new HorizontalLayout(
|
|
||||||
// clearFiltersButton,
|
|
||||||
// createUserButton);
|
|
||||||
// actionsCell.setComponent(actionsLayout);
|
|
||||||
|
|
||||||
usersTable = new UsersTable(view, this);
|
usersTable = new UsersTable(controller);
|
||||||
usersTable.setWidth("100%");
|
usersTable.setWidth("100%");
|
||||||
|
|
||||||
groupsTable = new GroupsTable(view, this);
|
groupsTable = new GroupsTable(controller);
|
||||||
groupsTable.setWidth("100%");
|
groupsTable.setWidth("100%");
|
||||||
|
|
||||||
rolesTable = new RolesTable(view, this);
|
rolesTable = new RolesTable(controller);
|
||||||
rolesTable.setWidth("100%");
|
rolesTable.setWidth("100%");
|
||||||
rolesTable.setHeight("100%");
|
rolesTable.setHeight("100%");
|
||||||
|
|
||||||
|
|
@ -180,69 +65,4 @@ public class UsersGroupsRolesTab extends CustomComponent {
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
||||||
public void localize() {
|
|
||||||
|
|
||||||
// final ResourceBundle bundle = ResourceBundle
|
|
||||||
// .getBundle(AdminUiConstants.ADMIN_BUNDLE,
|
|
||||||
// UI.getCurrent().getLocale());
|
|
||||||
//
|
|
||||||
// usersTable
|
|
||||||
// .getColumn(COL_USER_NAME)
|
|
||||||
// .setCaption(bundle.getString("ui.admin.users.table.screenname"));
|
|
||||||
// usersTable
|
|
||||||
// .getColumn(COL_GIVEN_NAME)
|
|
||||||
// .setCaption(bundle.getString("ui.admin.users.table.givenname"));
|
|
||||||
// usersTable
|
|
||||||
// .getColumn(COL_FAMILY_NAME)
|
|
||||||
// .setCaption(bundle.getString("ui.admin.users.table.familyname"));
|
|
||||||
// usersTable
|
|
||||||
// .getColumn(COL_EMAIL)
|
|
||||||
// .setCaption(bundle.getString("ui.admin.users.table.primary_email"));
|
|
||||||
// usersTable
|
|
||||||
// .getColumn(COL_BANNED)
|
|
||||||
// .setCaption(bundle.getString("ui.admin.users.table.banned"));
|
|
||||||
// usersTable
|
|
||||||
// .getColumn(COL_PASSWORD_RESET_REQUIRED)
|
|
||||||
// .setCaption(bundle.getString(
|
|
||||||
// "ui.admin.users.table.password_reset_required"));
|
|
||||||
//
|
|
||||||
// userNameFilter.setPlaceholder(bundle
|
|
||||||
// .getString("ui.admin.users.table.filter.screenname.placeholder"));
|
|
||||||
// userNameFilter.setDescription(bundle
|
|
||||||
// .getString("ui.admin.users.table.filter.screenname.description"));
|
|
||||||
//
|
|
||||||
// clearFiltersButton.setCaption(bundle
|
|
||||||
// .getString("ui.admin.users.table.filter.clear"));
|
|
||||||
|
|
||||||
usersTable.localize();
|
|
||||||
|
|
||||||
}
|
|
||||||
|
|
||||||
public void setUsersTableDataProvider(final UsersTableDataProvider dataProvider) {
|
|
||||||
usersTableDataProvider = dataProvider;
|
|
||||||
usersTable.setDataProvider(dataProvider);
|
|
||||||
}
|
|
||||||
|
|
||||||
public void setGroupsTableDataProvider(final GroupsTableDataProvider dataProvider) {
|
|
||||||
groupsTableDataProvider = dataProvider;
|
|
||||||
groupsTable.setDataProvider(dataProvider);
|
|
||||||
}
|
|
||||||
|
|
||||||
public void setRolesTableDataProvider(final RolesTableDataProvider dataProvider) {
|
|
||||||
rolesTableDataProvider = dataProvider;
|
|
||||||
rolesTable.setDataProvider(dataProvider);
|
|
||||||
}
|
|
||||||
|
|
||||||
protected void refreshUsers() {
|
|
||||||
usersTableDataProvider.refreshAll();
|
|
||||||
}
|
|
||||||
|
|
||||||
protected void refreshGroups() {
|
|
||||||
groupsTableDataProvider.refreshAll();
|
|
||||||
}
|
|
||||||
|
|
||||||
protected void refreshRoles() {
|
|
||||||
rolesTableDataProvider.refreshAll();
|
|
||||||
}
|
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
|
||||||
|
|
@ -19,8 +19,14 @@
|
||||||
package org.libreccm.admin.ui;
|
package org.libreccm.admin.ui;
|
||||||
|
|
||||||
import com.arsdigita.ui.admin.AdminUiConstants;
|
import com.arsdigita.ui.admin.AdminUiConstants;
|
||||||
|
|
||||||
import com.vaadin.icons.VaadinIcons;
|
import com.vaadin.icons.VaadinIcons;
|
||||||
import com.vaadin.ui.*;
|
import com.vaadin.ui.Button;
|
||||||
|
import com.vaadin.ui.Grid;
|
||||||
|
import com.vaadin.ui.HorizontalLayout;
|
||||||
|
import com.vaadin.ui.TextField;
|
||||||
|
import com.vaadin.ui.UI;
|
||||||
|
|
||||||
import com.vaadin.ui.components.grid.HeaderCell;
|
import com.vaadin.ui.components.grid.HeaderCell;
|
||||||
import com.vaadin.ui.components.grid.HeaderRow;
|
import com.vaadin.ui.components.grid.HeaderRow;
|
||||||
import com.vaadin.ui.renderers.ButtonRenderer;
|
import com.vaadin.ui.renderers.ButtonRenderer;
|
||||||
|
|
@ -33,7 +39,7 @@ import java.util.ResourceBundle;
|
||||||
*
|
*
|
||||||
* @author <a href="mailto:jens.pelzetter@googlemail.com">Jens Pelzetter</a>
|
* @author <a href="mailto:jens.pelzetter@googlemail.com">Jens Pelzetter</a>
|
||||||
*/
|
*/
|
||||||
public class UsersTable extends Grid<User> {
|
class UsersTable extends Grid<User> {
|
||||||
|
|
||||||
private static final long serialVersionUID = -6535913368522021496L;
|
private static final long serialVersionUID = -6535913368522021496L;
|
||||||
|
|
||||||
|
|
@ -50,28 +56,29 @@ public class UsersTable extends Grid<User> {
|
||||||
private final Button clearFiltersButton;
|
private final Button clearFiltersButton;
|
||||||
private final Button createUserButton;
|
private final Button createUserButton;
|
||||||
|
|
||||||
public UsersTable(final AdminView view,
|
protected UsersTable(final UsersGroupsRolesController controller) {
|
||||||
final UsersGroupsRolesTab usersGroupsRoles) {
|
|
||||||
|
|
||||||
super();
|
super();
|
||||||
|
|
||||||
|
setDataProvider(controller.getUsersTableDataProvider());
|
||||||
|
|
||||||
final ResourceBundle bundle = ResourceBundle
|
final ResourceBundle bundle = ResourceBundle
|
||||||
.getBundle(AdminUiConstants.ADMIN_BUNDLE,
|
.getBundle(AdminUiConstants.ADMIN_BUNDLE,
|
||||||
UI.getCurrent().getLocale());
|
UI.getCurrent().getLocale());
|
||||||
|
|
||||||
addColumn(User::getName)
|
super.addColumn(User::getName)
|
||||||
.setId(COL_USER_NAME)
|
.setId(COL_USER_NAME)
|
||||||
.setCaption("User Name");
|
.setCaption(bundle.getString("ui.admin.users.table.screenname"));
|
||||||
addColumn(User::getGivenName)
|
super.addColumn(User::getGivenName)
|
||||||
.setId(COL_GIVEN_NAME)
|
.setId(COL_GIVEN_NAME)
|
||||||
.setCaption("Given name");
|
.setCaption(bundle.getString("ui.admin.users.table.givenname"));
|
||||||
addColumn(User::getFamilyName)
|
super.addColumn(User::getFamilyName)
|
||||||
.setId(COL_FAMILY_NAME)
|
.setId(COL_FAMILY_NAME)
|
||||||
.setCaption("Family name");
|
.setCaption(bundle.getString("ui.admin.users.table.familyname"));
|
||||||
addColumn(user -> user.getPrimaryEmailAddress().getAddress())
|
super.addColumn(user -> user.getPrimaryEmailAddress().getAddress())
|
||||||
.setId(COL_EMAIL)
|
.setId(COL_EMAIL)
|
||||||
.setCaption("E-Mail");
|
.setCaption(bundle.getString("ui.admin.users.table.primary_email"));
|
||||||
addColumn(user -> {
|
super.addColumn(user -> {
|
||||||
if (user.isBanned()) {
|
if (user.isBanned()) {
|
||||||
return bundle.getString("ui.admin.user.banned_yes");
|
return bundle.getString("ui.admin.user.banned_yes");
|
||||||
} else {
|
} else {
|
||||||
|
|
@ -80,7 +87,7 @@ public class UsersTable extends Grid<User> {
|
||||||
})
|
})
|
||||||
.setId(COL_BANNED)
|
.setId(COL_BANNED)
|
||||||
.setCaption("Banned?");
|
.setCaption("Banned?");
|
||||||
addColumn(user -> {
|
super.addColumn(user -> {
|
||||||
if (user.isPasswordResetRequired()) {
|
if (user.isPasswordResetRequired()) {
|
||||||
return bundle.getString(
|
return bundle.getString(
|
||||||
"ui.admin.user.password_reset_required_yes");
|
"ui.admin.user.password_reset_required_yes");
|
||||||
|
|
@ -90,8 +97,9 @@ public class UsersTable extends Grid<User> {
|
||||||
}
|
}
|
||||||
})
|
})
|
||||||
.setId(COL_PASSWORD_RESET_REQUIRED)
|
.setId(COL_PASSWORD_RESET_REQUIRED)
|
||||||
.setCaption("Password reset required");
|
.setCaption(bundle
|
||||||
addColumn(user -> bundle.getString("ui.admin.users.table.edit"),
|
.getString("ui.admin.users.table.password_reset_required"));
|
||||||
|
super.addColumn(user -> bundle.getString("ui.admin.users.table.edit"),
|
||||||
new ButtonRenderer<>(event -> {
|
new ButtonRenderer<>(event -> {
|
||||||
// final UserEditor editor = new UserEditor(
|
// final UserEditor editor = new UserEditor(
|
||||||
// event.getItem(),
|
// event.getItem(),
|
||||||
|
|
@ -102,11 +110,13 @@ public class UsersTable extends Grid<User> {
|
||||||
// UI.getCurrent().addWindow(editor);
|
// UI.getCurrent().addWindow(editor);
|
||||||
final UserDetails details = new UserDetails(
|
final UserDetails details = new UserDetails(
|
||||||
event.getItem(),
|
event.getItem(),
|
||||||
usersGroupsRoles,
|
controller.getUserRepository(),
|
||||||
view.getUserRepository(),
|
controller.getUserManager());
|
||||||
view.getUserManager());
|
|
||||||
details.center();
|
details.center();
|
||||||
details.setWidth("66.6%");
|
details.setWidth("66.6%");
|
||||||
|
details.addCloseListener(closeEvent -> {
|
||||||
|
getDataProvider().refreshAll();
|
||||||
|
});
|
||||||
UI.getCurrent().addWindow(details);
|
UI.getCurrent().addWindow(details);
|
||||||
}))
|
}))
|
||||||
.setId(COL_EDIT);
|
.setId(COL_EDIT);
|
||||||
|
|
@ -114,8 +124,10 @@ public class UsersTable extends Grid<User> {
|
||||||
final HeaderRow filterRow = appendHeaderRow();
|
final HeaderRow filterRow = appendHeaderRow();
|
||||||
final HeaderCell userNameFilterCell = filterRow.getCell(COL_USER_NAME);
|
final HeaderCell userNameFilterCell = filterRow.getCell(COL_USER_NAME);
|
||||||
userNameFilter = new TextField();
|
userNameFilter = new TextField();
|
||||||
userNameFilter.setPlaceholder("User name");
|
userNameFilter.setPlaceholder(bundle
|
||||||
userNameFilter.setDescription("Filter users by username");
|
.getString("ui.admin.users.table.filter.screenname.placeholder"));
|
||||||
|
userNameFilter.setDescription(bundle
|
||||||
|
.getString("ui.admin.users.table.filter.screenname.description"));
|
||||||
userNameFilter.addStyleName(ValoTheme.TEXTFIELD_TINY);
|
userNameFilter.addStyleName(ValoTheme.TEXTFIELD_TINY);
|
||||||
userNameFilter
|
userNameFilter
|
||||||
.addValueChangeListener(event -> {
|
.addValueChangeListener(event -> {
|
||||||
|
|
@ -130,7 +142,8 @@ public class UsersTable extends Grid<User> {
|
||||||
COL_FAMILY_NAME,
|
COL_FAMILY_NAME,
|
||||||
COL_EMAIL,
|
COL_EMAIL,
|
||||||
COL_BANNED);
|
COL_BANNED);
|
||||||
clearFiltersButton = new Button("Clear filters");
|
clearFiltersButton = new Button(bundle
|
||||||
|
.getString("ui.admin.users.table.filter.clear"));
|
||||||
clearFiltersButton.addStyleName(ValoTheme.BUTTON_TINY);
|
clearFiltersButton.addStyleName(ValoTheme.BUTTON_TINY);
|
||||||
clearFiltersButton.addClickListener(event -> {
|
clearFiltersButton.addClickListener(event -> {
|
||||||
userNameFilter.setValue("");
|
userNameFilter.setValue("");
|
||||||
|
|
@ -141,9 +154,11 @@ public class UsersTable extends Grid<User> {
|
||||||
createUserButton.setIcon(VaadinIcons.PLUS);
|
createUserButton.setIcon(VaadinIcons.PLUS);
|
||||||
createUserButton.addClickListener(event -> {
|
createUserButton.addClickListener(event -> {
|
||||||
final UserEditor userEditor = new UserEditor(
|
final UserEditor userEditor = new UserEditor(
|
||||||
usersGroupsRoles,
|
controller.getUserRepository(),
|
||||||
view.getUserRepository(),
|
controller.getUserManager());
|
||||||
view.getUserManager());
|
userEditor.addCloseListener(closeEvent -> {
|
||||||
|
getDataProvider().refreshAll();
|
||||||
|
});
|
||||||
userEditor.center();
|
userEditor.center();
|
||||||
UI.getCurrent().addWindow(userEditor);
|
UI.getCurrent().addWindow(userEditor);
|
||||||
});
|
});
|
||||||
|
|
@ -153,34 +168,34 @@ public class UsersTable extends Grid<User> {
|
||||||
actionsCell.setComponent(actionsLayout);
|
actionsCell.setComponent(actionsLayout);
|
||||||
}
|
}
|
||||||
|
|
||||||
public void localize() {
|
// public void localize() {
|
||||||
|
//
|
||||||
final ResourceBundle bundle = ResourceBundle
|
// final ResourceBundle bundle = ResourceBundle
|
||||||
.getBundle(AdminUiConstants.ADMIN_BUNDLE,
|
// .getBundle(AdminUiConstants.ADMIN_BUNDLE,
|
||||||
UI.getCurrent().getLocale());
|
// UI.getCurrent().getLocale());
|
||||||
|
//
|
||||||
getColumn(COL_USER_NAME)
|
// getColumn(COL_USER_NAME)
|
||||||
.setCaption(bundle.getString("ui.admin.users.table.screenname"));
|
// .setCaption(bundle.getString("ui.admin.users.table.screenname"));
|
||||||
getColumn(COL_GIVEN_NAME)
|
// getColumn(COL_GIVEN_NAME)
|
||||||
.setCaption(bundle.getString("ui.admin.users.table.givenname"));
|
// .setCaption(bundle.getString("ui.admin.users.table.givenname"));
|
||||||
getColumn(COL_FAMILY_NAME)
|
// getColumn(COL_FAMILY_NAME)
|
||||||
.setCaption(bundle.getString("ui.admin.users.table.familyname"));
|
// .setCaption(bundle.getString("ui.admin.users.table.familyname"));
|
||||||
getColumn(COL_EMAIL)
|
// getColumn(COL_EMAIL)
|
||||||
.setCaption(bundle.getString("ui.admin.users.table.primary_email"));
|
// .setCaption(bundle.getString("ui.admin.users.table.primary_email"));
|
||||||
getColumn(COL_BANNED)
|
// getColumn(COL_BANNED)
|
||||||
.setCaption(bundle.getString("ui.admin.users.table.banned"));
|
// .setCaption(bundle.getString("ui.admin.users.table.banned"));
|
||||||
getColumn(COL_PASSWORD_RESET_REQUIRED)
|
// getColumn(COL_PASSWORD_RESET_REQUIRED)
|
||||||
.setCaption(bundle.getString(
|
// .setCaption(bundle.getString(
|
||||||
"ui.admin.users.table.password_reset_required"));
|
// "ui.admin.users.table.password_reset_required"));
|
||||||
|
//
|
||||||
userNameFilter.setPlaceholder(bundle
|
// userNameFilter.setPlaceholder(bundle
|
||||||
.getString("ui.admin.users.table.filter.screenname.placeholder"));
|
// .getString("ui.admin.users.table.filter.screenname.placeholder"));
|
||||||
userNameFilter.setDescription(bundle
|
// userNameFilter.setDescription(bundle
|
||||||
.getString("ui.admin.users.table.filter.screenname.description"));
|
// .getString("ui.admin.users.table.filter.screenname.description"));
|
||||||
|
//
|
||||||
clearFiltersButton.setCaption(bundle
|
// clearFiltersButton.setCaption(bundle
|
||||||
.getString("ui.admin.users.table.filter.clear"));
|
// .getString("ui.admin.users.table.filter.clear"));
|
||||||
|
//
|
||||||
}
|
// }
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
|
||||||
Loading…
Reference in New Issue