mirror of
https://github.com/eclipse-sailing-analytics/sailing-analytics.git
synced 2026-11-04 10:09:42 +00:00
refactored the UserManagement.html entry point's UI
This commit is contained in:
1 parent
afb57bd7b3
commit
c5bc285e3a
16 files changed
+353
-236
No files matched your search
-13
@@ -281,19 +281,6 @@ public class AdminConsoleEntryPoint extends AbstractEntryPoint implements Regatt
|
||||
rootPanel.add(dockPanel);
|
||||
}
|
||||
|
||||
/**
|
||||
* Sets the sizie of the tab panel when the tab panel is attached to the DOM
|
||||
*/
|
||||
private void setTabPanelSize(final TabLayoutPanel advancedTabPanel, final String width, final String height) {
|
||||
advancedTabPanel.addAttachHandler(new Handler() {
|
||||
@Override
|
||||
public void onAttachOrDetach(AttachEvent event) {
|
||||
advancedTabPanel.getElement().getParentElement().getStyle().setProperty("width", width);
|
||||
advancedTabPanel.getElement().getParentElement().getStyle().setProperty("height", height);
|
||||
}
|
||||
});
|
||||
}
|
||||
|
||||
private void refreshDataFor(Widget widget) {
|
||||
Widget target = widget;
|
||||
if (widget != null) {
|
||||
|
||||
+3
-3
@@ -95,9 +95,9 @@ public class RegattaWithSeriesAndFleetsCreateDialog extends RegattaWithSeriesAnd
|
||||
}
|
||||
|
||||
public RegattaWithSeriesAndFleetsCreateDialog(Collection<RegattaDTO> existingRegattas,
|
||||
List<EventDTO> existingEvents, StringMessages stringConstants, DialogCallback<RegattaDTO> callback) {
|
||||
super(new RegattaDTO(), existingEvents, stringConstants.addRegatta(), stringConstants.ok(), stringConstants,
|
||||
new RegattaParameterValidator(stringConstants, existingRegattas), callback);
|
||||
List<EventDTO> existingEvents, StringMessages stringMessages, DialogCallback<RegattaDTO> callback) {
|
||||
super(new RegattaDTO(), existingEvents, stringMessages.addRegatta(), stringMessages.ok(), stringMessages,
|
||||
new RegattaParameterValidator(stringMessages, existingRegattas), callback);
|
||||
this.seriesEditor = new SeriesWithFleetsListEditor(Collections.<SeriesDTO>emptyList(), stringMessages, resources.removeIcon(), /*enableFleetRemoval*/true);
|
||||
}
|
||||
|
||||
|
||||
+16
@@ -5,6 +5,8 @@ import com.google.gwt.core.client.GWT;
|
||||
import com.google.gwt.debug.client.DebugInfo;
|
||||
import com.google.gwt.event.dom.client.ClickEvent;
|
||||
import com.google.gwt.event.dom.client.ClickHandler;
|
||||
import com.google.gwt.event.logical.shared.AttachEvent;
|
||||
import com.google.gwt.event.logical.shared.AttachEvent.Handler;
|
||||
import com.google.gwt.resources.client.TextResource;
|
||||
import com.google.gwt.user.client.Window;
|
||||
import com.google.gwt.user.client.rpc.ServiceDefTarget;
|
||||
@@ -13,6 +15,7 @@ import com.google.gwt.user.client.ui.DialogBox;
|
||||
import com.google.gwt.user.client.ui.HTML;
|
||||
import com.google.gwt.user.client.ui.Label;
|
||||
import com.google.gwt.user.client.ui.RootPanel;
|
||||
import com.google.gwt.user.client.ui.TabLayoutPanel;
|
||||
import com.google.gwt.user.client.ui.VerticalPanel;
|
||||
import com.sap.sse.gwt.client.EntryPointHelper;
|
||||
import com.sap.sse.gwt.client.async.MarkedAsyncCallback;
|
||||
@@ -136,4 +139,17 @@ public abstract class AbstractEntryPoint implements EntryPoint, ErrorReporter, W
|
||||
});
|
||||
return myErrorDialogBox;
|
||||
}
|
||||
|
||||
/**
|
||||
* Sets the size of the tab panel when the tab panel is attached to the DOM
|
||||
*/
|
||||
protected void setTabPanelSize(final TabLayoutPanel advancedTabPanel, final String width, final String height) {
|
||||
advancedTabPanel.addAttachHandler(new Handler() {
|
||||
@Override
|
||||
public void onAttachOrDetach(AttachEvent event) {
|
||||
advancedTabPanel.getElement().getParentElement().getStyle().setProperty("width", width);
|
||||
advancedTabPanel.getElement().getParentElement().getStyle().setProperty("height", height);
|
||||
}
|
||||
});
|
||||
}
|
||||
}
|
||||
@@ -15,7 +15,9 @@ Require-Bundle: javax.servlet;bundle-version="2.5.0",
|
||||
com.sap.sse.gwt;bundle-version="1.0.0",
|
||||
com.google.gwt.osgi;bundle-version="2.6.0",
|
||||
com.sap.sse.security;bundle-version="1.0.0",
|
||||
org.json.simple
|
||||
org.json.simple,
|
||||
com.sap.sailing.domain.common,
|
||||
com.sap.sse.common
|
||||
Web-ContextPath: /security/ui
|
||||
Export-Package: com.sap.sse.security.ui.client,
|
||||
com.sap.sse.security.ui.loginpanel,
|
||||
|
||||
+23
@@ -10,6 +10,8 @@ public interface StringMessages extends Messages {
|
||||
|
||||
String password();
|
||||
|
||||
String passwordRepeat();
|
||||
|
||||
String loggedIn();
|
||||
|
||||
String signIn();
|
||||
@@ -39,4 +41,25 @@ public interface StringMessages extends Messages {
|
||||
String close();
|
||||
|
||||
String loading();
|
||||
|
||||
String users();
|
||||
|
||||
String addURLFilter();
|
||||
|
||||
String ok();
|
||||
|
||||
String cancel();
|
||||
|
||||
String username();
|
||||
|
||||
String email();
|
||||
|
||||
String usernameMustHaveAtLeastNCharacters(int minimumUsernameLength);
|
||||
|
||||
String passwordMustHaveAtLeastNCharacters(int minimumPasswordLength);
|
||||
|
||||
String passwordsDontMatch();
|
||||
|
||||
String couldNotCreateUser(String message);
|
||||
|
||||
}
|
||||
+11
@@ -1,5 +1,6 @@
|
||||
name=Name
|
||||
password=Password
|
||||
passwordRepeat=Repeat password
|
||||
loggedIn=Logged in!
|
||||
signIn=Sign in
|
||||
signUp=Sign up
|
||||
@@ -15,3 +16,13 @@ fetchingUserInformation=Fetching user information...
|
||||
signedInAs=Signed in as {0}
|
||||
close=Close
|
||||
loading=Loading...
|
||||
users=Users
|
||||
addURLFilter=Add URL filter
|
||||
ok=OK
|
||||
cancel=Cancel
|
||||
username=User name
|
||||
email=e-mail
|
||||
usernameMustHaveAtLeastNCharacters=User name must have at least {0} characters
|
||||
passwordMustHaveAtLeastNCharacters=Password must have at least {0} characters
|
||||
passwordsDontMatch=Passwords don''t match
|
||||
couldNotCreateUser=Could not create user: {0}
|
||||
+11
@@ -1,5 +1,6 @@
|
||||
name=Name
|
||||
password=Passwort
|
||||
passwordRepeat=Passwort Wiederholung
|
||||
loggedIn=Angemeldet!
|
||||
signIn=Anmelden
|
||||
signUp=Registrieren
|
||||
@@ -15,3 +16,13 @@ fetchingUserInformation=Benutzerdaten werden geladen...
|
||||
signedInAs=Angemeldet als {0}
|
||||
close=Schliessen
|
||||
loading=Lädt...
|
||||
users=Benutzer
|
||||
addURLFilter=URL-Filter hinzufügen
|
||||
ok=OK
|
||||
cancel=Abbrechen
|
||||
username=Benutzername
|
||||
email=e-Mail
|
||||
usernameMustHaveAtLeastNCharacters=Benutzername muss mindestens {0} Zeichen haben
|
||||
passwordMustHaveAtLeastNCharacters=Passwort muss mindestens {0} Zeichen haben
|
||||
passwordsDontMatch=Passwort und Passwortwiederholung stimmen nicht überein
|
||||
couldNotCreateUser=Benutzer konnte nicht angelegt werden: {0}
|
||||
-1
@@ -3,6 +3,5 @@ package com.sap.sse.security.ui.client;
|
||||
import com.sap.sse.security.ui.shared.UserDTO;
|
||||
|
||||
public interface UserChangeEventHandler {
|
||||
|
||||
void onUserChange(UserDTO user);
|
||||
}
|
||||
+132
@@ -0,0 +1,132 @@
|
||||
package com.sap.sse.security.ui.client.component;
|
||||
|
||||
import com.google.gwt.user.client.Window;
|
||||
import com.google.gwt.user.client.rpc.AsyncCallback;
|
||||
import com.google.gwt.user.client.ui.Grid;
|
||||
import com.google.gwt.user.client.ui.Label;
|
||||
import com.google.gwt.user.client.ui.PasswordTextBox;
|
||||
import com.google.gwt.user.client.ui.TextBox;
|
||||
import com.google.gwt.user.client.ui.Widget;
|
||||
import com.sap.sse.gwt.client.dialog.DataEntryDialog;
|
||||
import com.sap.sse.security.ui.client.StringMessages;
|
||||
import com.sap.sse.security.ui.client.component.CreateUserDialog.UserData;
|
||||
import com.sap.sse.security.ui.client.component.UserManagementPanel.UserCreationEventHandler;
|
||||
import com.sap.sse.security.ui.shared.UserDTO;
|
||||
import com.sap.sse.security.ui.shared.UserManagementServiceAsync;
|
||||
|
||||
/**
|
||||
* Produces username, e-mail and password as the dialog's result.
|
||||
*
|
||||
* @author Axel Uhl (D043530)
|
||||
*
|
||||
*/
|
||||
public class CreateUserDialog extends DataEntryDialog<UserData> {
|
||||
private static final int MINIMUM_USERNAME_LENGTH = 3;
|
||||
private static final int MINIMUM_PASSWORD_LENGTH = 5;
|
||||
|
||||
private final StringMessages stringMessages;
|
||||
private TextBox nameBox;
|
||||
private TextBox emailBox;
|
||||
private PasswordTextBox pwBox;
|
||||
private PasswordTextBox pwRepeat;
|
||||
|
||||
public static class UserData {
|
||||
private final String username;
|
||||
private final String email;
|
||||
private final String password;
|
||||
private final String passwordRepeat;
|
||||
protected UserData(String username, String email, String password, String passwordRepeat) {
|
||||
super();
|
||||
this.username = username;
|
||||
this.email = email;
|
||||
this.password = password;
|
||||
this.passwordRepeat = passwordRepeat;
|
||||
}
|
||||
public String getUsername() {
|
||||
return username;
|
||||
}
|
||||
public String getEmail() {
|
||||
return email;
|
||||
}
|
||||
public String getPassword() {
|
||||
return password;
|
||||
}
|
||||
public String getPasswordRepeat() {
|
||||
return passwordRepeat;
|
||||
}
|
||||
}
|
||||
|
||||
public CreateUserDialog(final StringMessages stringMessages,
|
||||
final UserManagementServiceAsync userManagementService,
|
||||
final Iterable<UserCreationEventHandler> handlers) {
|
||||
super(stringMessages.createUser(), stringMessages.createUser(), stringMessages.ok(), stringMessages.cancel(),
|
||||
new DataEntryDialog.Validator<UserData>() {
|
||||
@Override
|
||||
public String getErrorMessage(UserData valueToValidate) {
|
||||
final String result;
|
||||
if (valueToValidate.getUsername().length() < MINIMUM_USERNAME_LENGTH) {
|
||||
result = stringMessages.usernameMustHaveAtLeastNCharacters(MINIMUM_USERNAME_LENGTH);
|
||||
} else if (valueToValidate.getPassword().length() < MINIMUM_PASSWORD_LENGTH) {
|
||||
result = stringMessages.passwordMustHaveAtLeastNCharacters(MINIMUM_PASSWORD_LENGTH);
|
||||
} else if (!valueToValidate.getPassword().equals(valueToValidate.getPasswordRepeat())) {
|
||||
result = stringMessages.passwordsDontMatch();
|
||||
} else {
|
||||
result = null;
|
||||
}
|
||||
return result;
|
||||
}
|
||||
}, new DialogCallback<UserData>() {
|
||||
@Override
|
||||
public void ok(UserData usernameEmailPassword) {
|
||||
userManagementService.createSimpleUser(usernameEmailPassword.getUsername(), usernameEmailPassword.getEmail(), usernameEmailPassword.getPassword(), new AsyncCallback<UserDTO>() {
|
||||
@Override
|
||||
public void onSuccess(UserDTO result) {
|
||||
for (UserCreationEventHandler handler : handlers) {
|
||||
handler.onUserCreation(result);
|
||||
}
|
||||
}
|
||||
|
||||
@Override
|
||||
public void onFailure(Throwable caught) {
|
||||
Window.alert(stringMessages.couldNotCreateUser(caught.getMessage()));
|
||||
}
|
||||
});
|
||||
}
|
||||
|
||||
@Override
|
||||
public void cancel() {
|
||||
}
|
||||
});
|
||||
this.stringMessages = stringMessages;
|
||||
}
|
||||
|
||||
@Override
|
||||
public void show() {
|
||||
super.show();
|
||||
nameBox.setFocus(true);
|
||||
}
|
||||
|
||||
@Override
|
||||
protected Widget getAdditionalWidget() {
|
||||
Grid result = new Grid(4, 2);
|
||||
result.setWidget(0, 0, new Label(stringMessages.username()));
|
||||
nameBox = createTextBox("", 30);
|
||||
result.setWidget(0, 1, nameBox);
|
||||
result.setWidget(1, 0, new Label(stringMessages.email()));
|
||||
emailBox = createTextBox("", 30);
|
||||
result.setWidget(1, 1, emailBox);
|
||||
result.setWidget(2, 0, new Label(stringMessages.password()));
|
||||
pwBox = createPasswordTextBox("", 30);
|
||||
result.setWidget(2, 1, pwBox);
|
||||
result.setWidget(3, 0, new Label(stringMessages.passwordRepeat()));
|
||||
pwRepeat = createPasswordTextBox("", 30);
|
||||
result.setWidget(3, 1, pwRepeat);
|
||||
return result;
|
||||
}
|
||||
|
||||
@Override
|
||||
protected UserData getResult() {
|
||||
return new UserData(nameBox.getText(), emailBox.getText(), pwBox.getText(), pwRepeat.getText());
|
||||
}
|
||||
|
||||
}
|
||||
-87
@@ -1,87 +0,0 @@
|
||||
package com.sap.sse.security.ui.client.component;
|
||||
|
||||
import java.util.ArrayList;
|
||||
import java.util.List;
|
||||
|
||||
import com.google.gwt.dom.client.Style.Unit;
|
||||
import com.google.gwt.event.dom.client.ClickEvent;
|
||||
import com.google.gwt.event.dom.client.ClickHandler;
|
||||
import com.google.gwt.event.shared.EventHandler;
|
||||
import com.google.gwt.user.client.Window;
|
||||
import com.google.gwt.user.client.rpc.AsyncCallback;
|
||||
import com.google.gwt.user.client.ui.Button;
|
||||
import com.google.gwt.user.client.ui.FlowPanel;
|
||||
import com.google.gwt.user.client.ui.Label;
|
||||
import com.google.gwt.user.client.ui.PasswordTextBox;
|
||||
import com.google.gwt.user.client.ui.TextBox;
|
||||
import com.sap.sse.security.ui.shared.UserDTO;
|
||||
import com.sap.sse.security.ui.shared.UserManagementServiceAsync;
|
||||
|
||||
public class CreateUserPanel extends FlowPanel {
|
||||
|
||||
private List<UserCreationEventHandler> handlers = new ArrayList<>();
|
||||
|
||||
public CreateUserPanel(final UserManagementServiceAsync userManagementService) {
|
||||
Label title = new Label("Create a new user");
|
||||
title.getElement().getStyle().setFontSize(25, Unit.PX);
|
||||
Label name = new Label("Username:");
|
||||
this.add(name);
|
||||
final TextBox nameBox = new TextBox();
|
||||
this.add(nameBox);
|
||||
Label email = new Label("Email:");
|
||||
this.add(email);
|
||||
final TextBox emailBox = new TextBox();
|
||||
this.add(emailBox);
|
||||
Label pw = new Label("Password:");
|
||||
this.add(pw);
|
||||
final TextBox pwBox = new PasswordTextBox();
|
||||
this.add(pwBox);
|
||||
Label pwRepeat = new Label("Repeat password:");
|
||||
this.add(pwRepeat);
|
||||
final TextBox pwRepeatBox = new PasswordTextBox();
|
||||
this.add(pwRepeatBox);
|
||||
Button create = new Button("Create", new ClickHandler() {
|
||||
|
||||
@Override
|
||||
public void onClick(ClickEvent event) {
|
||||
String name = nameBox.getText();
|
||||
String email = emailBox.getText();
|
||||
String pw = pwBox.getText();
|
||||
String pwRepeat = pwRepeatBox.getText();
|
||||
if (name.length() >= 3 && pw.equals(pwRepeat) && pw.length() >= 5){
|
||||
userManagementService.createSimpleUser(name, email, pw, new AsyncCallback<UserDTO>() {
|
||||
|
||||
@Override
|
||||
public void onSuccess(UserDTO result) {
|
||||
for (UserCreationEventHandler handler : handlers){
|
||||
handler.onUserCreation(result);
|
||||
}
|
||||
}
|
||||
|
||||
@Override
|
||||
public void onFailure(Throwable caught) {
|
||||
Window.alert("Could not create user!");
|
||||
}
|
||||
});
|
||||
}
|
||||
else {
|
||||
Window.alert("Invalid crendetials entered!");
|
||||
}
|
||||
}
|
||||
});
|
||||
this.add(create);
|
||||
}
|
||||
|
||||
public void addUserCreationEventHandler(UserCreationEventHandler handler){
|
||||
this.handlers.add(handler);
|
||||
}
|
||||
|
||||
public void removeUserCreationEventHandler(UserCreationEventHandler handler){
|
||||
this.handlers.remove(handler);
|
||||
}
|
||||
|
||||
public static interface UserCreationEventHandler extends EventHandler {
|
||||
|
||||
void onUserCreation(UserDTO user);
|
||||
}
|
||||
}
|
||||
+11
-9
@@ -17,36 +17,38 @@ import com.google.gwt.user.client.rpc.AsyncCallback;
|
||||
import com.google.gwt.user.client.ui.Button;
|
||||
import com.google.gwt.user.client.ui.CheckBox;
|
||||
import com.google.gwt.user.client.ui.FlexTable;
|
||||
import com.google.gwt.user.client.ui.FlowPanel;
|
||||
import com.google.gwt.user.client.ui.HTML;
|
||||
import com.google.gwt.user.client.ui.ImageResourceRenderer;
|
||||
import com.google.gwt.user.client.ui.IntegerBox;
|
||||
import com.google.gwt.user.client.ui.Label;
|
||||
import com.google.gwt.user.client.ui.LayoutPanel;
|
||||
import com.google.gwt.user.client.ui.ScrollPanel;
|
||||
import com.google.gwt.user.client.ui.TabLayoutPanel;
|
||||
import com.google.gwt.user.client.ui.TextBox;
|
||||
import com.sap.sse.security.ui.client.StringMessages;
|
||||
import com.sap.sse.security.ui.client.resources.IconResources;
|
||||
import com.sap.sse.security.ui.shared.UserManagementServiceAsync;
|
||||
import com.sap.sse.security.ui.usermanagement.UserManagementEntryPoint;
|
||||
|
||||
public class SettingsPanel extends FlowPanel {
|
||||
public class SettingsPanel extends LayoutPanel {
|
||||
|
||||
private UserManagementServiceAsync userManagementService;
|
||||
private Map<String, String> settings = null;
|
||||
private Map<String, String> settingTypes = null;
|
||||
private Map<String, FlexTable> savedTabs = new HashMap<>();
|
||||
private final StringMessages stringMessages;
|
||||
|
||||
public SettingsPanel(UserManagementServiceAsync userManagementService) {
|
||||
public SettingsPanel(UserManagementServiceAsync userManagementService, StringMessages stringMessages) {
|
||||
super();
|
||||
setHeight("600px");
|
||||
this.stringMessages = stringMessages;
|
||||
this.userManagementService = userManagementService;
|
||||
initComponents();
|
||||
}
|
||||
|
||||
private void initComponents() {
|
||||
clear();
|
||||
Label settingsTitle = new Label("Settings");
|
||||
add(settingsTitle);
|
||||
userManagementService.getSettingTypes(new AsyncCallback<Map<String, String>>() {
|
||||
|
||||
@Override
|
||||
public void onFailure(Throwable caught) {
|
||||
}
|
||||
@@ -77,6 +79,7 @@ public class SettingsPanel extends FlowPanel {
|
||||
}
|
||||
TabLayoutPanel tabPanel = new TabLayoutPanel(30, Unit.PX);
|
||||
tabPanel.setHeight("95%");
|
||||
UserManagementEntryPoint.setTabPanelSize(tabPanel, "100%", "95%");
|
||||
|
||||
Map<String, Integer> numberOfSettings = new HashMap<>();
|
||||
for (Entry<String, String> e : settingTypes.entrySet()) {
|
||||
@@ -116,7 +119,7 @@ public class SettingsPanel extends FlowPanel {
|
||||
table.setWidget(newline, 1, url);
|
||||
table.setWidget(newline, 2, filter);
|
||||
|
||||
Button add = new Button("Add url filter", new ClickHandler() {
|
||||
Button add = new Button(stringMessages.addURLFilter(), new ClickHandler() {
|
||||
|
||||
@Override
|
||||
public void onClick(ClickEvent event) {
|
||||
@@ -133,7 +136,6 @@ public class SettingsPanel extends FlowPanel {
|
||||
}
|
||||
});
|
||||
userManagementService.addSetting("URLS_AUTH_" + key.getText(), String.class.getName(), filter.getText(), new AsyncCallback<Void>() {
|
||||
|
||||
@Override
|
||||
public void onFailure(Throwable caught) {
|
||||
Window.alert(caught.getMessage());
|
||||
@@ -148,7 +150,7 @@ public class SettingsPanel extends FlowPanel {
|
||||
});
|
||||
table.setWidget(newline+1, 0, add);
|
||||
}
|
||||
|
||||
clear();
|
||||
add(tabPanel);
|
||||
}
|
||||
|
||||
|
||||
+2
-3
@@ -5,12 +5,11 @@ import com.google.gwt.resources.client.ImageResource;
|
||||
import com.google.gwt.safehtml.shared.SafeHtmlBuilder;
|
||||
import com.google.gwt.user.cellview.client.CellList;
|
||||
import com.google.gwt.user.client.ui.ImageResourceRenderer;
|
||||
import com.google.gwt.view.client.ProvidesKey;
|
||||
import com.sap.sse.security.ui.shared.UserDTO;
|
||||
|
||||
public class UserList extends CellList<UserDTO> {
|
||||
public UserList(ProvidesKey<UserDTO> keyProvider) {
|
||||
super(new UserCell(), keyProvider);
|
||||
public UserList() {
|
||||
super(new UserCell());
|
||||
}
|
||||
|
||||
public static class UserCell extends AbstractCell<UserDTO> {
|
||||
|
||||
+3
-5
@@ -4,11 +4,11 @@ import java.util.ArrayList;
|
||||
import java.util.Collection;
|
||||
import java.util.List;
|
||||
|
||||
import com.google.gwt.user.client.Window;
|
||||
import com.google.gwt.user.client.rpc.AsyncCallback;
|
||||
import com.google.gwt.user.client.ui.TextBox;
|
||||
import com.google.gwt.view.client.AbstractDataProvider;
|
||||
import com.google.gwt.view.client.HasData;
|
||||
import com.google.gwt.view.client.ProvidesKey;
|
||||
import com.google.gwt.view.client.Range;
|
||||
import com.sap.sse.security.ui.shared.UserDTO;
|
||||
import com.sap.sse.security.ui.shared.UserManagementServiceAsync;
|
||||
@@ -18,8 +18,7 @@ public class UserListDataProvider extends AbstractDataProvider<UserDTO> {
|
||||
private UserManagementServiceAsync userManagementService;
|
||||
private TextBox filterBox;
|
||||
|
||||
public UserListDataProvider(UserManagementServiceAsync userManagementService, TextBox filterBox, ProvidesKey<UserDTO> keyProvider) {
|
||||
super(keyProvider);
|
||||
public UserListDataProvider(UserManagementServiceAsync userManagementService, TextBox filterBox) {
|
||||
this.userManagementService = userManagementService;
|
||||
this.filterBox = filterBox;
|
||||
}
|
||||
@@ -28,10 +27,9 @@ public class UserListDataProvider extends AbstractDataProvider<UserDTO> {
|
||||
protected void onRangeChanged(HasData<UserDTO> display) {
|
||||
final Range range = display.getVisibleRange();
|
||||
userManagementService.getFilteredSortedUserList(filterBox.getText(), new AsyncCallback<Collection<UserDTO>>() {
|
||||
|
||||
@Override
|
||||
public void onFailure(Throwable caught) {
|
||||
|
||||
Window.alert(caught.getMessage());
|
||||
}
|
||||
|
||||
@Override
|
||||
|
||||
+109
@@ -0,0 +1,109 @@
|
||||
package com.sap.sse.security.ui.client.component;
|
||||
|
||||
import java.util.ArrayList;
|
||||
import java.util.List;
|
||||
|
||||
import com.google.gwt.event.dom.client.ChangeEvent;
|
||||
import com.google.gwt.event.dom.client.ChangeHandler;
|
||||
import com.google.gwt.event.dom.client.ClickEvent;
|
||||
import com.google.gwt.event.dom.client.ClickHandler;
|
||||
import com.google.gwt.event.dom.client.KeyUpEvent;
|
||||
import com.google.gwt.event.dom.client.KeyUpHandler;
|
||||
import com.google.gwt.event.shared.EventHandler;
|
||||
import com.google.gwt.user.cellview.client.SimplePager;
|
||||
import com.google.gwt.user.cellview.client.SimplePager.TextLocation;
|
||||
import com.google.gwt.user.client.ui.Button;
|
||||
import com.google.gwt.user.client.ui.DockPanel;
|
||||
import com.google.gwt.user.client.ui.ScrollPanel;
|
||||
import com.google.gwt.user.client.ui.TextBox;
|
||||
import com.google.gwt.user.client.ui.VerticalPanel;
|
||||
import com.google.gwt.view.client.SelectionChangeEvent;
|
||||
import com.google.gwt.view.client.SelectionChangeEvent.Handler;
|
||||
import com.google.gwt.view.client.SingleSelectionModel;
|
||||
import com.sap.sse.security.ui.client.StringMessages;
|
||||
import com.sap.sse.security.ui.client.UserChangeEventHandler;
|
||||
import com.sap.sse.security.ui.shared.UserDTO;
|
||||
import com.sap.sse.security.ui.shared.UserManagementServiceAsync;
|
||||
|
||||
public class UserManagementPanel extends DockPanel {
|
||||
|
||||
private List<UserCreationEventHandler> handlers = new ArrayList<>();
|
||||
|
||||
private SingleSelectionModel<UserDTO> singleSelectionModel;
|
||||
|
||||
private UserListDataProvider userListDataProvider;
|
||||
|
||||
public UserManagementPanel(final UserManagementServiceAsync userManagementService, final StringMessages stringMessages) {
|
||||
VerticalPanel west = new VerticalPanel();
|
||||
singleSelectionModel = new SingleSelectionModel<>();
|
||||
Button createButton = new Button(stringMessages.createUser(), new ClickHandler() {
|
||||
@Override
|
||||
public void onClick(ClickEvent event) {
|
||||
new CreateUserDialog(stringMessages, userManagementService, handlers).show();
|
||||
}
|
||||
});
|
||||
west.add(createButton);
|
||||
final UserList userList = new UserList();
|
||||
userList.setSelectionModel(singleSelectionModel);
|
||||
final UserDetailsView userDetailsView = new UserDetailsView(userManagementService, singleSelectionModel.getSelectedObject());
|
||||
add(userDetailsView, DockPanel.CENTER);
|
||||
userDetailsView.addUserChangeEventHandler(new UserChangeEventHandler() {
|
||||
@Override
|
||||
public void onUserChange(UserDTO user) {
|
||||
userListDataProvider.updateDisplays();
|
||||
}
|
||||
});
|
||||
singleSelectionModel.addSelectionChangeHandler(new Handler() {
|
||||
@Override
|
||||
public void onSelectionChange(SelectionChangeEvent event) {
|
||||
userDetailsView.updateUser(singleSelectionModel.getSelectedObject());
|
||||
}
|
||||
});
|
||||
userList.setPageSize(4);
|
||||
TextBox filterBox = new TextBox();
|
||||
userListDataProvider = new UserListDataProvider(userManagementService, filterBox);
|
||||
userListDataProvider.addDataDisplay(userList);
|
||||
SimplePager pager = new SimplePager(TextLocation.CENTER, false, 10, true);
|
||||
pager.setDisplay(userList);
|
||||
ScrollPanel scrollPanel = new ScrollPanel(userList);
|
||||
filterBox.addChangeHandler(new ChangeHandler() {
|
||||
@Override
|
||||
public void onChange(ChangeEvent event) {
|
||||
userListDataProvider.updateDisplays();
|
||||
}
|
||||
});
|
||||
filterBox.addKeyUpHandler(new KeyUpHandler() {
|
||||
@Override
|
||||
public void onKeyUp(KeyUpEvent event) {
|
||||
userListDataProvider.updateDisplays();
|
||||
}
|
||||
});
|
||||
filterBox.getElement().setPropertyString("placeholder", stringMessages.filterUsers());
|
||||
west.add(filterBox);
|
||||
west.add(pager);
|
||||
west.add(scrollPanel);
|
||||
add(west, DockPanel.WEST);
|
||||
addUserCreationEventHandler(new UserCreationEventHandler() {
|
||||
@Override
|
||||
public void onUserCreation(UserDTO user) {
|
||||
userListDataProvider.updateDisplays();
|
||||
if (user != null) {
|
||||
singleSelectionModel.setSelected(user, true);
|
||||
}
|
||||
}
|
||||
});
|
||||
}
|
||||
|
||||
public void addUserCreationEventHandler(UserCreationEventHandler handler){
|
||||
this.handlers.add(handler);
|
||||
}
|
||||
|
||||
public void removeUserCreationEventHandler(UserCreationEventHandler handler){
|
||||
this.handlers.remove(handler);
|
||||
}
|
||||
|
||||
public static interface UserCreationEventHandler extends EventHandler {
|
||||
|
||||
void onUserCreation(UserDTO user);
|
||||
}
|
||||
}
|
||||
+3
-3
@@ -23,6 +23,7 @@ import org.osgi.framework.BundleContext;
|
||||
import org.osgi.util.tracker.ServiceTracker;
|
||||
|
||||
import com.google.gwt.user.server.rpc.RemoteServiceServlet;
|
||||
import com.sap.sailing.domain.common.impl.NaturalComparator;
|
||||
import com.sap.sse.security.Credential;
|
||||
import com.sap.sse.security.DefaultRoles;
|
||||
import com.sap.sse.security.SecurityService;
|
||||
@@ -145,12 +146,11 @@ public class UserManagementServiceImpl extends RemoteServiceServlet implements U
|
||||
users.add(createUserDTOFromUser(u));
|
||||
}
|
||||
}
|
||||
|
||||
Collections.sort(users, new Comparator<UserDTO>() {
|
||||
|
||||
private final NaturalComparator naturalComparator = new NaturalComparator(/* caseSensitive */ false);
|
||||
@Override
|
||||
public int compare(UserDTO u1, UserDTO u2) {
|
||||
return u1.getName().compareTo(u2.getName());
|
||||
return naturalComparator.compare(u1.getName(), u2.getName());
|
||||
}
|
||||
});
|
||||
return users;
|
||||
|
||||
+26
-111
@@ -3,40 +3,22 @@ package com.sap.sse.security.ui.usermanagement;
|
||||
import com.google.gwt.core.client.EntryPoint;
|
||||
import com.google.gwt.core.client.GWT;
|
||||
import com.google.gwt.dom.client.Style.Unit;
|
||||
import com.google.gwt.event.dom.client.ChangeEvent;
|
||||
import com.google.gwt.event.dom.client.ChangeHandler;
|
||||
import com.google.gwt.event.dom.client.ClickEvent;
|
||||
import com.google.gwt.event.dom.client.ClickHandler;
|
||||
import com.google.gwt.user.cellview.client.SimplePager;
|
||||
import com.google.gwt.user.cellview.client.SimplePager.TextLocation;
|
||||
import com.google.gwt.event.logical.shared.AttachEvent;
|
||||
import com.google.gwt.event.logical.shared.AttachEvent.Handler;
|
||||
import com.google.gwt.user.client.Window;
|
||||
import com.google.gwt.user.client.rpc.ServiceDefTarget;
|
||||
import com.google.gwt.user.client.ui.Button;
|
||||
import com.google.gwt.user.client.ui.DockLayoutPanel;
|
||||
import com.google.gwt.user.client.ui.HorizontalPanel;
|
||||
import com.google.gwt.user.client.ui.RootLayoutPanel;
|
||||
import com.google.gwt.user.client.ui.RootPanel;
|
||||
import com.google.gwt.user.client.ui.ScrollPanel;
|
||||
import com.google.gwt.user.client.ui.SimpleLayoutPanel;
|
||||
import com.google.gwt.user.client.ui.TextBox;
|
||||
import com.google.gwt.user.client.ui.VerticalPanel;
|
||||
import com.google.gwt.view.client.ProvidesKey;
|
||||
import com.google.gwt.view.client.SelectionChangeEvent;
|
||||
import com.google.gwt.view.client.SelectionChangeEvent.Handler;
|
||||
import com.google.gwt.view.client.SingleSelectionModel;
|
||||
import com.google.gwt.user.client.ui.TabLayoutPanel;
|
||||
import com.sap.sse.gwt.client.EntryPointHelper;
|
||||
import com.sap.sse.security.ui.client.RemoteServiceMappingConstants;
|
||||
import com.sap.sse.security.ui.client.Resources;
|
||||
import com.sap.sse.security.ui.client.StringMessages;
|
||||
import com.sap.sse.security.ui.client.UserChangeEventHandler;
|
||||
import com.sap.sse.security.ui.client.UserService;
|
||||
import com.sap.sse.security.ui.client.UserStatusEventHandler;
|
||||
import com.sap.sse.security.ui.client.component.CreateUserPanel;
|
||||
import com.sap.sse.security.ui.client.component.CreateUserPanel.UserCreationEventHandler;
|
||||
import com.sap.sse.security.ui.client.component.SettingsPanel;
|
||||
import com.sap.sse.security.ui.client.component.UserDetailsView;
|
||||
import com.sap.sse.security.ui.client.component.UserList;
|
||||
import com.sap.sse.security.ui.client.component.UserListDataProvider;
|
||||
import com.sap.sse.security.ui.client.component.UserManagementPanel;
|
||||
import com.sap.sse.security.ui.loginpanel.LoginPanel;
|
||||
import com.sap.sse.security.ui.shared.UserDTO;
|
||||
import com.sap.sse.security.ui.shared.UserManagementService;
|
||||
@@ -48,33 +30,16 @@ public class UserManagementEntryPoint implements EntryPoint {
|
||||
|
||||
private final StringMessages stringMessages = GWT.create(StringMessages.class);
|
||||
|
||||
private SimpleLayoutPanel center;
|
||||
|
||||
private TextBox filterBox = new TextBox();
|
||||
private TabLayoutPanel center;
|
||||
|
||||
private UserDTO user;
|
||||
|
||||
private ProvidesKey<UserDTO> keyProvider = new ProvidesKey<UserDTO>() {
|
||||
public Object getKey(UserDTO item) {
|
||||
// Always do a null check.
|
||||
return (item == null) ? null : item.getName();
|
||||
}
|
||||
};
|
||||
|
||||
private UserListDataProvider userListDataProvider = new UserListDataProvider(userManagementService, filterBox, keyProvider);
|
||||
|
||||
private SingleSelectionModel<UserDTO> singleSelectionModel = new SingleSelectionModel<>(keyProvider);
|
||||
|
||||
@Override
|
||||
public void onModuleLoad() {
|
||||
EntryPointHelper.registerASyncService((ServiceDefTarget) userManagementService,
|
||||
RemoteServiceMappingConstants.userManagementServiceRemotePath);
|
||||
UserService userService = new UserService(userManagementService);
|
||||
center = new SimpleLayoutPanel();
|
||||
RootLayoutPanel rootPanel = RootLayoutPanel.get();
|
||||
DockLayoutPanel dockPanel = new DockLayoutPanel(Unit.PX);
|
||||
rootPanel.add(dockPanel);
|
||||
HorizontalPanel hp = new HorizontalPanel();
|
||||
center = new TabLayoutPanel(2.5, Unit.EM);
|
||||
userService.addUserStatusEventHandler(new UserStatusEventHandler() {
|
||||
@Override
|
||||
public void onUserStatusChange(UserDTO user) {
|
||||
@@ -84,76 +49,26 @@ public class UserManagementEntryPoint implements EntryPoint {
|
||||
UserManagementEntryPoint.this.user = user;
|
||||
}
|
||||
});
|
||||
Button createButton = new Button(stringMessages.createUser(), new ClickHandler() {
|
||||
@Override
|
||||
public void onClick(ClickEvent event) {
|
||||
CreateUserPanel createUserPanel = new CreateUserPanel(userManagementService);
|
||||
createUserPanel.addUserCreationEventHandler(new UserCreationEventHandler() {
|
||||
@Override
|
||||
public void onUserCreation(UserDTO user) {
|
||||
userListDataProvider.updateDisplays();
|
||||
if (user != null) {
|
||||
singleSelectionModel.setSelected(user, true);
|
||||
}
|
||||
}
|
||||
});
|
||||
center.setWidget(createUserPanel);
|
||||
}
|
||||
});
|
||||
hp.add(createButton);
|
||||
Button settingsButton = new Button(stringMessages.settings(), new ClickHandler() {
|
||||
@Override
|
||||
public void onClick(ClickEvent event) {
|
||||
center.setWidget(new SettingsPanel(userManagementService));
|
||||
}
|
||||
});
|
||||
hp.add(settingsButton);
|
||||
dockPanel.addNorth(hp, 50);
|
||||
final UserList userList = new UserList(keyProvider);
|
||||
userList.setSelectionModel(singleSelectionModel);
|
||||
singleSelectionModel.addSelectionChangeHandler(new Handler() {
|
||||
@Override
|
||||
public void onSelectionChange(SelectionChangeEvent event) {
|
||||
final UserDetailsView userDetailsView = new UserDetailsView(userManagementService, singleSelectionModel.getSelectedObject());
|
||||
userDetailsView.addUserChangeEventHandler(new UserChangeEventHandler() {
|
||||
|
||||
@Override
|
||||
public void onUserChange(UserDTO user) {
|
||||
userListDataProvider.updateDisplays();
|
||||
}
|
||||
});
|
||||
center.setWidget(userDetailsView);
|
||||
}
|
||||
});
|
||||
userList.setPageSize(4);
|
||||
userListDataProvider.addDataDisplay(userList);
|
||||
SimplePager pager = new SimplePager(TextLocation.CENTER, false, 10, true);
|
||||
pager.setDisplay(userList);
|
||||
ScrollPanel scrollPanel = new ScrollPanel(userList);
|
||||
VerticalPanel vp = new VerticalPanel();
|
||||
filterBox.addChangeHandler(new ChangeHandler() {
|
||||
@Override
|
||||
public void onChange(ChangeEvent event) {
|
||||
userListDataProvider.updateDisplays();
|
||||
}
|
||||
});
|
||||
filterBox.getElement().setPropertyString("placeholder", stringMessages.filterUsers());
|
||||
vp.add(filterBox);
|
||||
vp.add(pager);
|
||||
vp.add(scrollPanel);
|
||||
dockPanel.addWest(vp, 350);
|
||||
dockPanel.add(center);
|
||||
CreateUserPanel createUserPanel = new CreateUserPanel(userManagementService);
|
||||
createUserPanel.addUserCreationEventHandler(new UserCreationEventHandler() {
|
||||
@Override
|
||||
public void onUserCreation(UserDTO user) {
|
||||
userListDataProvider.updateDisplays();
|
||||
if (user != null){
|
||||
singleSelectionModel.setSelected(user, true);
|
||||
}
|
||||
}
|
||||
});
|
||||
center.setWidget(createUserPanel);
|
||||
UserManagementPanel userManagementPanel = new UserManagementPanel(userManagementService, stringMessages);
|
||||
center.add(new ScrollPanel(userManagementPanel), stringMessages.users());
|
||||
final SettingsPanel settingsPanel = new SettingsPanel(userManagementService, stringMessages);
|
||||
center.add(new ScrollPanel(settingsPanel), stringMessages.settings());
|
||||
RootLayoutPanel.get().add(center);
|
||||
RootPanel.get().add(new LoginPanel(Resources.INSTANCE.css(), userService));
|
||||
setTabPanelSize(center, ""+Window.getClientWidth()+"px", ""+Window.getClientHeight()+"px");
|
||||
}
|
||||
|
||||
/**
|
||||
* Sets the size of the tab panel when the tab panel is attached to the DOM
|
||||
*/
|
||||
public static void setTabPanelSize(final TabLayoutPanel advancedTabPanel, final String width, final String height) {
|
||||
advancedTabPanel.addAttachHandler(new Handler() {
|
||||
@Override
|
||||
public void onAttachOrDetach(AttachEvent event) {
|
||||
advancedTabPanel.getElement().getParentElement().getStyle().setProperty("width", width);
|
||||
advancedTabPanel.getElement().getParentElement().getStyle().setProperty("height", height);
|
||||
}
|
||||
});
|
||||
}
|
||||
|
||||
}
|
||||
Reference in new issue
Block a user