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