diff --git a/ccm-core/src/main/java/org/libreccm/admin/ui/usersgroupsroles/UserEditor.java b/ccm-core/src/main/java/org/libreccm/admin/ui/usersgroupsroles/UserEditor.java
new file mode 100644
index 000000000..0f0ede503
--- /dev/null
+++ b/ccm-core/src/main/java/org/libreccm/admin/ui/usersgroupsroles/UserEditor.java
@@ -0,0 +1,45 @@
+/*
+ * 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.usersgroupsroles;
+
+import com.vaadin.ui.Label;
+import com.vaadin.ui.Window;
+import org.libreccm.security.User;
+
+/**
+ *
+ * @author Jens Pelzetter
+ */
+public class UserEditor extends Window {
+
+ private static final long serialVersionUID = 7024424532574023431L;
+
+ private final User user;
+
+ public UserEditor(final User user) {
+
+ this.user = user;
+
+ final Label label = new Label(String.format("Editor for user %s.",
+ user.getName()));
+ setContent(label);
+
+ }
+
+}
diff --git a/ccm-core/src/main/java/org/libreccm/admin/ui/usersgroupsroles/UsersGroupsRoles.java b/ccm-core/src/main/java/org/libreccm/admin/ui/usersgroupsroles/UsersGroupsRoles.java
index 92fd6842b..69c83dfff 100644
--- a/ccm-core/src/main/java/org/libreccm/admin/ui/usersgroupsroles/UsersGroupsRoles.java
+++ b/ccm-core/src/main/java/org/libreccm/admin/ui/usersgroupsroles/UsersGroupsRoles.java
@@ -29,6 +29,7 @@ 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;
import com.vaadin.ui.themes.ValoTheme;
import org.libreccm.admin.ui.AdminView;
import org.libreccm.security.User;
@@ -92,6 +93,13 @@ public class UsersGroupsRoles extends CustomComponent {
})
.setId(COL_BANNED)
.setCaption("Banned?");
+ usersTable
+ .addColumn(user -> "Edit",
+ new ButtonRenderer<>(event -> {
+ final UserEditor editor = new UserEditor(event.getItem());
+ editor.center();
+ UI.getCurrent().addWindow(editor);
+ }));
final HeaderRow filterRow = usersTable.appendHeaderRow();
final HeaderCell userNameFilterCell = filterRow.getCell(COL_USER_NAME);
@@ -113,8 +121,10 @@ public class UsersGroupsRoles extends CustomComponent {
COL_EMAIL,
COL_BANNED);
final Button clearFiltersButton = new Button("Clear filters");
+ clearFiltersButton.addStyleName(ValoTheme.BUTTON_TINY);
clearFiltersButton.addClickListener(event -> {
- usersTableDataProvider.setUserNameFilter(null);
+// usersTableDataProvider.setUserNameFilter(null);
+ userNameFilter.setValue("");
});
final HorizontalLayout actionsLayout = new HorizontalLayout(
clearFiltersButton);
diff --git a/ccm-core/src/main/java/org/libreccm/admin/ui/usersgroupsroles/UsersTableDataProvider.java b/ccm-core/src/main/java/org/libreccm/admin/ui/usersgroupsroles/UsersTableDataProvider.java
index a81130ce1..f6907783c 100644
--- a/ccm-core/src/main/java/org/libreccm/admin/ui/usersgroupsroles/UsersTableDataProvider.java
+++ b/ccm-core/src/main/java/org/libreccm/admin/ui/usersgroupsroles/UsersTableDataProvider.java
@@ -63,6 +63,12 @@ public class UsersTableDataProvider extends AbstractDataProvider {
criteriaQuery = criteriaQuery.select(builder.count(from));
+ if (userNameFilter != null && !userNameFilter.trim().isEmpty()) {
+ criteriaQuery
+ .where(builder.like(builder.lower(from.get("name")),
+ String.format("%s%%", userNameFilter)));
+ }
+
return entityManager
.createQuery(criteriaQuery)
.getSingleResult()