mirror of
https://github.com/eclipse-sailing-analytics/sailing-analytics.git
synced 2026-11-04 10:09:42 +00:00
changed StringListEditorComposite to use Iterable instead of List; major refactoring for UserDetailsView
This commit is contained in:
1 parent
340f722d80
commit
381539e91a
41 files changed
+309
-309
No files matched your search
@@ -56,5 +56,6 @@ bin.includes = META-INF/,\
|
|||||||
AdminConsoleProgressBar.css,\
|
AdminConsoleProgressBar.css,\
|
||||||
Home.css,\
|
Home.css,\
|
||||||
Home.html,\
|
Home.html,\
|
||||||
base.css
|
base.css,\
|
||||||
|
com.sap.sailing.gwt.ui.Search/
|
||||||
output.. = WEB-INF/classes/
|
output.. = WEB-INF/classes/
|
||||||
+1
-1
@@ -11,7 +11,7 @@ interface AdminConsoleResources extends ClientBundle {
|
|||||||
@Source("com/sap/sailing/gwt/ui/client/images/settingsActionIcon.png")
|
@Source("com/sap/sailing/gwt/ui/client/images/settingsActionIcon.png")
|
||||||
ImageResource settingsActionIcon();
|
ImageResource settingsActionIcon();
|
||||||
|
|
||||||
@Source("com/sap/sailing/gwt/ui/client/images/remove.png")
|
@Source("com/sap/sse/gwt/client/images/remove.png")
|
||||||
ImageResource removeIcon();
|
ImageResource removeIcon();
|
||||||
|
|
||||||
@Source("com/sap/sailing/gwt/ui/client/images/edit.png")
|
@Source("com/sap/sailing/gwt/ui/client/images/edit.png")
|
||||||
|
|||||||
+4
-4
@@ -26,11 +26,11 @@ import com.google.gwt.user.client.ui.VerticalPanel;
|
|||||||
import com.sap.sailing.gwt.ui.client.ErrorReporter;
|
import com.sap.sailing.gwt.ui.client.ErrorReporter;
|
||||||
import com.sap.sailing.gwt.ui.client.SailingServiceAsync;
|
import com.sap.sailing.gwt.ui.client.SailingServiceAsync;
|
||||||
import com.sap.sailing.gwt.ui.client.StringMessages;
|
import com.sap.sailing.gwt.ui.client.StringMessages;
|
||||||
import com.sap.sailing.gwt.ui.client.shared.controls.listedit.ListEditorComposite;
|
|
||||||
import com.sap.sailing.gwt.ui.client.shared.controls.listedit.StringListEditorComposite;
|
|
||||||
import com.sap.sailing.gwt.ui.shared.DeviceConfigurationDTO;
|
import com.sap.sailing.gwt.ui.shared.DeviceConfigurationDTO;
|
||||||
import com.sap.sailing.gwt.ui.shared.DeviceConfigurationDTO.RegattaConfigurationDTO;
|
import com.sap.sailing.gwt.ui.shared.DeviceConfigurationDTO.RegattaConfigurationDTO;
|
||||||
import com.sap.sailing.gwt.ui.shared.DeviceConfigurationMatcherDTO;
|
import com.sap.sailing.gwt.ui.shared.DeviceConfigurationMatcherDTO;
|
||||||
|
import com.sap.sse.gwt.client.controls.listedit.ListEditorComposite;
|
||||||
|
import com.sap.sse.gwt.client.controls.listedit.StringListEditorComposite;
|
||||||
import com.sap.sse.gwt.client.dialog.DataEntryDialog.DialogCallback;
|
import com.sap.sse.gwt.client.dialog.DataEntryDialog.DialogCallback;
|
||||||
|
|
||||||
public class DeviceConfigurationDetailComposite extends Composite {
|
public class DeviceConfigurationDetailComposite extends Composite {
|
||||||
@@ -300,9 +300,9 @@ public class DeviceConfigurationDetailComposite extends Composite {
|
|||||||
}
|
}
|
||||||
};
|
};
|
||||||
|
|
||||||
private ValueChangeHandler<List<String>> dirtyValueMarker = new ValueChangeHandler<List<String>>() {
|
private ValueChangeHandler<Iterable<String>> dirtyValueMarker = new ValueChangeHandler<Iterable<String>>() {
|
||||||
@Override
|
@Override
|
||||||
public void onValueChange(ValueChangeEvent<List<String>> event) {
|
public void onValueChange(ValueChangeEvent<Iterable<String>> event) {
|
||||||
markAsDirty(true);
|
markAsDirty(true);
|
||||||
}
|
}
|
||||||
};
|
};
|
||||||
|
|||||||
+3
-3
@@ -20,12 +20,12 @@ import com.google.gwt.user.client.ui.VerticalPanel;
|
|||||||
import com.google.gwt.user.client.ui.Widget;
|
import com.google.gwt.user.client.ui.Widget;
|
||||||
import com.sap.sailing.gwt.ui.client.DataEntryDialogWithBootstrap;
|
import com.sap.sailing.gwt.ui.client.DataEntryDialogWithBootstrap;
|
||||||
import com.sap.sailing.gwt.ui.client.StringMessages;
|
import com.sap.sailing.gwt.ui.client.StringMessages;
|
||||||
import com.sap.sailing.gwt.ui.client.shared.controls.listedit.StringListInlineEditorComposite;
|
|
||||||
import com.sap.sailing.gwt.ui.shared.BetterDateTimeBox;
|
import com.sap.sailing.gwt.ui.shared.BetterDateTimeBox;
|
||||||
import com.sap.sailing.gwt.ui.shared.CourseAreaDTO;
|
import com.sap.sailing.gwt.ui.shared.CourseAreaDTO;
|
||||||
import com.sap.sailing.gwt.ui.shared.EventDTO;
|
import com.sap.sailing.gwt.ui.shared.EventDTO;
|
||||||
import com.sap.sailing.gwt.ui.shared.LeaderboardGroupDTO;
|
import com.sap.sailing.gwt.ui.shared.LeaderboardGroupDTO;
|
||||||
import com.sap.sailing.gwt.ui.shared.VenueDTO;
|
import com.sap.sailing.gwt.ui.shared.VenueDTO;
|
||||||
|
import com.sap.sse.gwt.client.controls.listedit.StringListInlineEditorComposite;
|
||||||
|
|
||||||
public abstract class EventDialog extends DataEntryDialogWithBootstrap<EventDTO> {
|
public abstract class EventDialog extends DataEntryDialogWithBootstrap<EventDTO> {
|
||||||
private final AdminConsoleResources resources = GWT.create(AdminConsoleResources.class);
|
private final AdminConsoleResources resources = GWT.create(AdminConsoleResources.class);
|
||||||
@@ -122,9 +122,9 @@ public abstract class EventDialog extends DataEntryDialogWithBootstrap<EventDTO>
|
|||||||
callback);
|
callback);
|
||||||
this.leaderboardGroups = leaderboardGroups;
|
this.leaderboardGroups = leaderboardGroups;
|
||||||
this.stringMessages = stringMessages;
|
this.stringMessages = stringMessages;
|
||||||
final ValueChangeHandler<List<String>> valueChangeHandler = new ValueChangeHandler<List<String>>() {
|
final ValueChangeHandler<Iterable<String>> valueChangeHandler = new ValueChangeHandler<Iterable<String>>() {
|
||||||
@Override
|
@Override
|
||||||
public void onValueChange(ValueChangeEvent<List<String>> event) {
|
public void onValueChange(ValueChangeEvent<Iterable<String>> event) {
|
||||||
validate();
|
validate();
|
||||||
}
|
}
|
||||||
};
|
};
|
||||||
|
|||||||
+19
-15
@@ -1,7 +1,5 @@
|
|||||||
package com.sap.sailing.gwt.ui.adminconsole;
|
package com.sap.sailing.gwt.ui.adminconsole;
|
||||||
|
|
||||||
import java.util.List;
|
|
||||||
|
|
||||||
import com.google.gwt.dom.client.Style.FontWeight;
|
import com.google.gwt.dom.client.Style.FontWeight;
|
||||||
import com.google.gwt.event.dom.client.ChangeEvent;
|
import com.google.gwt.event.dom.client.ChangeEvent;
|
||||||
import com.google.gwt.event.dom.client.ChangeHandler;
|
import com.google.gwt.event.dom.client.ChangeHandler;
|
||||||
@@ -19,11 +17,11 @@ import com.google.gwt.user.client.ui.Widget;
|
|||||||
import com.sap.sailing.domain.common.Color;
|
import com.sap.sailing.domain.common.Color;
|
||||||
import com.sap.sailing.domain.common.dto.FleetDTO;
|
import com.sap.sailing.domain.common.dto.FleetDTO;
|
||||||
import com.sap.sailing.gwt.ui.client.StringMessages;
|
import com.sap.sailing.gwt.ui.client.StringMessages;
|
||||||
import com.sap.sailing.gwt.ui.client.shared.controls.listedit.ExpandedListEditorUi;
|
import com.sap.sse.gwt.client.controls.listedit.ExpandedListEditorUi;
|
||||||
import com.sap.sailing.gwt.ui.client.shared.controls.listedit.ListEditorComposite;
|
import com.sap.sse.gwt.client.controls.listedit.ListEditorComposite;
|
||||||
|
|
||||||
public class FleetListEditorComposite extends ListEditorComposite<FleetDTO> {
|
public class FleetListEditorComposite extends ListEditorComposite<FleetDTO> {
|
||||||
public FleetListEditorComposite(List<FleetDTO> initialValues, StringMessages stringMessages, ImageResource removeImage) {
|
public FleetListEditorComposite(Iterable<FleetDTO> initialValues, StringMessages stringMessages, ImageResource removeImage) {
|
||||||
super(initialValues, new ExpandedUi(stringMessages, removeImage));
|
super(initialValues, new ExpandedUi(stringMessages, removeImage));
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -33,6 +31,12 @@ public class FleetListEditorComposite extends ListEditorComposite<FleetDTO> {
|
|||||||
super(stringMessages, removeImage, /*canRemoveItems*/true);
|
super(stringMessages, removeImage, /*canRemoveItems*/true);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
|
@Override
|
||||||
|
protected StringMessages getStringMessages() {
|
||||||
|
return (StringMessages) super.getStringMessages();
|
||||||
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
protected Widget createAddWidget() {
|
protected Widget createAddWidget() {
|
||||||
HorizontalPanel hPanel = new HorizontalPanel();
|
HorizontalPanel hPanel = new HorizontalPanel();
|
||||||
@@ -48,7 +52,7 @@ public class FleetListEditorComposite extends ListEditorComposite<FleetDTO> {
|
|||||||
final ListBox colorListBox = createColorListBox(nameBox, orderNoBox);
|
final ListBox colorListBox = createColorListBox(nameBox, orderNoBox);
|
||||||
colorListBox.ensureDebugId("ColorListBox");
|
colorListBox.ensureDebugId("ColorListBox");
|
||||||
|
|
||||||
final Button addButton = new Button(stringMessages.add());
|
final Button addButton = new Button(getStringMessages().add());
|
||||||
addButton.ensureDebugId("AddButton");
|
addButton.ensureDebugId("AddButton");
|
||||||
addButton.addClickHandler(new ClickHandler() {
|
addButton.addClickHandler(new ClickHandler() {
|
||||||
@Override
|
@Override
|
||||||
@@ -57,11 +61,11 @@ public class FleetListEditorComposite extends ListEditorComposite<FleetDTO> {
|
|||||||
}
|
}
|
||||||
});
|
});
|
||||||
|
|
||||||
hPanel.add(new Label(stringMessages.color() + ":"));
|
hPanel.add(new Label(getStringMessages().color() + ":"));
|
||||||
hPanel.add(colorListBox);
|
hPanel.add(colorListBox);
|
||||||
hPanel.add(new Label(stringMessages.name() + ":"));
|
hPanel.add(new Label(getStringMessages().name() + ":"));
|
||||||
hPanel.add(nameBox);
|
hPanel.add(nameBox);
|
||||||
hPanel.add(new Label(stringMessages.rank() + ":"));
|
hPanel.add(new Label(getStringMessages().rank() + ":"));
|
||||||
hPanel.add(orderNoBox);
|
hPanel.add(orderNoBox);
|
||||||
hPanel.add(addButton);
|
hPanel.add(addButton);
|
||||||
return hPanel;
|
return hPanel;
|
||||||
@@ -71,17 +75,17 @@ public class FleetListEditorComposite extends ListEditorComposite<FleetDTO> {
|
|||||||
protected Widget createValueWidget(int rowIndex, FleetDTO fleet) {
|
protected Widget createValueWidget(int rowIndex, FleetDTO fleet) {
|
||||||
HorizontalPanel hPanel = new HorizontalPanel();
|
HorizontalPanel hPanel = new HorizontalPanel();
|
||||||
hPanel.setSpacing(4);
|
hPanel.setSpacing(4);
|
||||||
Label fleetLabel = new Label(stringMessages.fleet() + " '" + fleet.getName() + "' :");
|
Label fleetLabel = new Label(getStringMessages().fleet() + " '" + fleet.getName() + "' :");
|
||||||
fleetLabel.getElement().getStyle().setFontWeight(FontWeight.BOLD);
|
fleetLabel.getElement().getStyle().setFontWeight(FontWeight.BOLD);
|
||||||
hPanel.add(fleetLabel);
|
hPanel.add(fleetLabel);
|
||||||
|
|
||||||
String valueText = "";
|
String valueText = "";
|
||||||
if(fleet.getColor() != null) {
|
if(fleet.getColor() != null) {
|
||||||
valueText += stringMessages.color() + " '" + fleet.getColor().toString() + "'";
|
valueText += getStringMessages().color() + " '" + fleet.getColor().toString() + "'";
|
||||||
} else {
|
} else {
|
||||||
valueText += stringMessages.noColor();
|
valueText += getStringMessages().noColor();
|
||||||
}
|
}
|
||||||
valueText += ", " + stringMessages.rank() + " " + fleet.getOrderNo();
|
valueText += ", " + getStringMessages().rank() + " " + fleet.getOrderNo();
|
||||||
|
|
||||||
hPanel.add(new Label(valueText));
|
hPanel.add(new Label(valueText));
|
||||||
|
|
||||||
@@ -121,7 +125,7 @@ public class FleetListEditorComposite extends ListEditorComposite<FleetDTO> {
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
});
|
});
|
||||||
colorListBox.addItem(stringMessages.noColor());
|
colorListBox.addItem(getStringMessages().noColor());
|
||||||
for (FleetColors value : FleetColors.values()) {
|
for (FleetColors value : FleetColors.values()) {
|
||||||
colorListBox.addItem(value.name());
|
colorListBox.addItem(value.name());
|
||||||
}
|
}
|
||||||
@@ -147,7 +151,7 @@ public class FleetListEditorComposite extends ListEditorComposite<FleetDTO> {
|
|||||||
|
|
||||||
private String getColorText(FleetColors color) {
|
private String getColorText(FleetColors color) {
|
||||||
if (color == null) {
|
if (color == null) {
|
||||||
return stringMessages.noColor();
|
return getStringMessages().noColor();
|
||||||
}
|
}
|
||||||
return color.name().charAt(0) + color.name().toLowerCase().substring(1);
|
return color.name().charAt(0) + color.name().toLowerCase().substring(1);
|
||||||
}
|
}
|
||||||
|
|||||||
+1
-1
@@ -10,10 +10,10 @@ import com.google.gwt.core.shared.GWT;
|
|||||||
import com.google.gwt.user.client.ui.TabPanel;
|
import com.google.gwt.user.client.ui.TabPanel;
|
||||||
import com.google.gwt.user.client.ui.VerticalPanel;
|
import com.google.gwt.user.client.ui.VerticalPanel;
|
||||||
import com.sap.sailing.gwt.ui.client.StringMessages;
|
import com.sap.sailing.gwt.ui.client.StringMessages;
|
||||||
import com.sap.sailing.gwt.ui.client.shared.controls.listedit.ListEditorComposite;
|
|
||||||
import com.sap.sailing.gwt.ui.shared.EventDTO;
|
import com.sap.sailing.gwt.ui.shared.EventDTO;
|
||||||
import com.sap.sailing.gwt.ui.shared.RegattaDTO;
|
import com.sap.sailing.gwt.ui.shared.RegattaDTO;
|
||||||
import com.sap.sailing.gwt.ui.shared.SeriesDTO;
|
import com.sap.sailing.gwt.ui.shared.SeriesDTO;
|
||||||
|
import com.sap.sse.gwt.client.controls.listedit.ListEditorComposite;
|
||||||
|
|
||||||
public class RegattaWithSeriesAndFleetsCreateDialog extends RegattaWithSeriesAndFleetsDialog {
|
public class RegattaWithSeriesAndFleetsCreateDialog extends RegattaWithSeriesAndFleetsDialog {
|
||||||
|
|
||||||
|
|||||||
+1
-1
@@ -14,12 +14,12 @@ import com.google.gwt.user.client.ui.Grid;
|
|||||||
import com.google.gwt.user.client.ui.TabPanel;
|
import com.google.gwt.user.client.ui.TabPanel;
|
||||||
import com.google.gwt.user.client.ui.VerticalPanel;
|
import com.google.gwt.user.client.ui.VerticalPanel;
|
||||||
import com.sap.sailing.gwt.ui.client.StringMessages;
|
import com.sap.sailing.gwt.ui.client.StringMessages;
|
||||||
import com.sap.sailing.gwt.ui.client.shared.controls.listedit.ListEditorComposite;
|
|
||||||
import com.sap.sailing.gwt.ui.shared.DeviceConfigurationDTO;
|
import com.sap.sailing.gwt.ui.shared.DeviceConfigurationDTO;
|
||||||
import com.sap.sailing.gwt.ui.shared.DeviceConfigurationDTO.RegattaConfigurationDTO;
|
import com.sap.sailing.gwt.ui.shared.DeviceConfigurationDTO.RegattaConfigurationDTO;
|
||||||
import com.sap.sailing.gwt.ui.shared.EventDTO;
|
import com.sap.sailing.gwt.ui.shared.EventDTO;
|
||||||
import com.sap.sailing.gwt.ui.shared.RegattaDTO;
|
import com.sap.sailing.gwt.ui.shared.RegattaDTO;
|
||||||
import com.sap.sailing.gwt.ui.shared.SeriesDTO;
|
import com.sap.sailing.gwt.ui.shared.SeriesDTO;
|
||||||
|
import com.sap.sse.gwt.client.controls.listedit.ListEditorComposite;
|
||||||
|
|
||||||
public class RegattaWithSeriesAndFleetsEditDialog extends RegattaWithSeriesAndFleetsDialog {
|
public class RegattaWithSeriesAndFleetsEditDialog extends RegattaWithSeriesAndFleetsDialog {
|
||||||
|
|
||||||
|
|||||||
+13
-8
@@ -29,10 +29,10 @@ import com.sap.sailing.domain.common.LeaderboardNameConstants;
|
|||||||
import com.sap.sailing.domain.common.dto.RaceColumnDTO;
|
import com.sap.sailing.domain.common.dto.RaceColumnDTO;
|
||||||
import com.sap.sailing.domain.common.dto.RaceColumnInSeriesDTO;
|
import com.sap.sailing.domain.common.dto.RaceColumnInSeriesDTO;
|
||||||
import com.sap.sailing.gwt.ui.client.StringMessages;
|
import com.sap.sailing.gwt.ui.client.StringMessages;
|
||||||
import com.sap.sailing.gwt.ui.client.shared.controls.listedit.StringListEditorComposite;
|
|
||||||
import com.sap.sailing.gwt.ui.client.shared.controls.listedit.StringListInlineEditorComposite;
|
|
||||||
import com.sap.sailing.gwt.ui.shared.RegattaDTO;
|
import com.sap.sailing.gwt.ui.shared.RegattaDTO;
|
||||||
import com.sap.sailing.gwt.ui.shared.SeriesDTO;
|
import com.sap.sailing.gwt.ui.shared.SeriesDTO;
|
||||||
|
import com.sap.sse.gwt.client.controls.listedit.StringListEditorComposite;
|
||||||
|
import com.sap.sse.gwt.client.controls.listedit.StringListInlineEditorComposite;
|
||||||
import com.sap.sse.gwt.client.dialog.DataEntryDialog;
|
import com.sap.sse.gwt.client.dialog.DataEntryDialog;
|
||||||
|
|
||||||
public class SeriesEditDialog extends DataEntryDialog<SeriesDescriptor> {
|
public class SeriesEditDialog extends DataEntryDialog<SeriesDescriptor> {
|
||||||
@@ -206,9 +206,9 @@ public class SeriesEditDialog extends DataEntryDialog<SeriesDescriptor> {
|
|||||||
|
|
||||||
raceNamesEditor = new StringListInlineEditorComposite(getExistingRacesOfSeries(), new RaceNamesEditorUi(regatta, stringMessages, resources.removeIcon(), seriesName));
|
raceNamesEditor = new StringListInlineEditorComposite(getExistingRacesOfSeries(), new RaceNamesEditorUi(regatta, stringMessages, resources.removeIcon(), seriesName));
|
||||||
raceNamesEditor.ensureDebugId("RaceNamesStringListEditorComposite");
|
raceNamesEditor.ensureDebugId("RaceNamesStringListEditorComposite");
|
||||||
raceNamesEditor.addValueChangeHandler(new ValueChangeHandler<List<String>>() {
|
raceNamesEditor.addValueChangeHandler(new ValueChangeHandler<Iterable<String>>() {
|
||||||
@Override
|
@Override
|
||||||
public void onValueChange(ValueChangeEvent<List<String>> event) {
|
public void onValueChange(ValueChangeEvent<Iterable<String>> event) {
|
||||||
validate();
|
validate();
|
||||||
}
|
}
|
||||||
});
|
});
|
||||||
@@ -269,6 +269,11 @@ public class SeriesEditDialog extends DataEntryDialog<SeriesDescriptor> {
|
|||||||
this.addRacesHintLabel = new Label("");
|
this.addRacesHintLabel = new Label("");
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
protected StringMessages getStringMessages() {
|
||||||
|
return (StringMessages) super.getStringMessages();
|
||||||
|
}
|
||||||
|
|
||||||
private List<String> resolveRaceNamesToAdd() {
|
private List<String> resolveRaceNamesToAdd() {
|
||||||
List<String> result = new ArrayList<String>();
|
List<String> result = new ArrayList<String>();
|
||||||
String racePrefix = raceNamePrefixTextBox.getText();
|
String racePrefix = raceNamePrefixTextBox.getText();
|
||||||
@@ -346,7 +351,7 @@ public class SeriesEditDialog extends DataEntryDialog<SeriesDescriptor> {
|
|||||||
HorizontalPanel addRacesPanel = new HorizontalPanel();
|
HorizontalPanel addRacesPanel = new HorizontalPanel();
|
||||||
addRacesPanel.setVerticalAlignment(HasVerticalAlignment.ALIGN_MIDDLE);
|
addRacesPanel.setVerticalAlignment(HasVerticalAlignment.ALIGN_MIDDLE);
|
||||||
addRacesPanel.setSpacing(5);
|
addRacesPanel.setSpacing(5);
|
||||||
addRacesPanel.add(new Label(stringMessages.addRaces()));
|
addRacesPanel.add(new Label(getStringMessages().addRaces()));
|
||||||
|
|
||||||
for(int i = 1; i <= 50; i++) {
|
for(int i = 1; i <= 50; i++) {
|
||||||
addRacesFromListBox.addItem("" + i);
|
addRacesFromListBox.addItem("" + i);
|
||||||
@@ -368,9 +373,9 @@ public class SeriesEditDialog extends DataEntryDialog<SeriesDescriptor> {
|
|||||||
});
|
});
|
||||||
|
|
||||||
addRacesPanel.add(addRacesFromListBox);
|
addRacesPanel.add(addRacesFromListBox);
|
||||||
addRacesPanel.add(new Label(stringMessages.to()));
|
addRacesPanel.add(new Label(getStringMessages().to()));
|
||||||
addRacesPanel.add(addRacesToListBox);
|
addRacesPanel.add(addRacesToListBox);
|
||||||
addRacesPanel.add(new Label(stringMessages.withNamePrefix()));
|
addRacesPanel.add(new Label(getStringMessages().withNamePrefix()));
|
||||||
|
|
||||||
raceNamePrefixTextBox.setWidth("20px");
|
raceNamePrefixTextBox.setWidth("20px");
|
||||||
if (LeaderboardNameConstants.DEFAULT_SERIES_NAME.equals(seriesName)) {
|
if (LeaderboardNameConstants.DEFAULT_SERIES_NAME.equals(seriesName)) {
|
||||||
@@ -399,7 +404,7 @@ public class SeriesEditDialog extends DataEntryDialog<SeriesDescriptor> {
|
|||||||
}
|
}
|
||||||
validate();
|
validate();
|
||||||
} else {
|
} else {
|
||||||
Window.alert(stringMessages.pleaseSelectASeriesFirst());
|
Window.alert(getStringMessages().pleaseSelectASeriesFirst());
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
});
|
});
|
||||||
|
|||||||
+3
-4
@@ -19,8 +19,8 @@ import com.google.gwt.user.client.ui.Widget;
|
|||||||
import com.sap.sailing.domain.common.LeaderboardNameConstants;
|
import com.sap.sailing.domain.common.LeaderboardNameConstants;
|
||||||
import com.sap.sailing.domain.common.dto.FleetDTO;
|
import com.sap.sailing.domain.common.dto.FleetDTO;
|
||||||
import com.sap.sailing.gwt.ui.client.StringMessages;
|
import com.sap.sailing.gwt.ui.client.StringMessages;
|
||||||
import com.sap.sailing.gwt.ui.client.shared.controls.listedit.ListEditorComposite;
|
|
||||||
import com.sap.sailing.gwt.ui.shared.SeriesDTO;
|
import com.sap.sailing.gwt.ui.shared.SeriesDTO;
|
||||||
|
import com.sap.sse.gwt.client.controls.listedit.ListEditorComposite;
|
||||||
import com.sap.sse.gwt.client.dialog.DataEntryDialog;
|
import com.sap.sse.gwt.client.dialog.DataEntryDialog;
|
||||||
|
|
||||||
public class SeriesWithFleetsCreateDialog extends DataEntryDialog<SeriesDTO> {
|
public class SeriesWithFleetsCreateDialog extends DataEntryDialog<SeriesDTO> {
|
||||||
@@ -136,10 +136,9 @@ public class SeriesWithFleetsCreateDialog extends DataEntryDialog<SeriesDTO> {
|
|||||||
|
|
||||||
fleetListComposite = new FleetListEditorComposite(Arrays.asList(new FleetDTO(LeaderboardNameConstants.DEFAULT_FLEET_NAME, 0, null)), stringMessages, resources.removeIcon());
|
fleetListComposite = new FleetListEditorComposite(Arrays.asList(new FleetDTO(LeaderboardNameConstants.DEFAULT_FLEET_NAME, 0, null)), stringMessages, resources.removeIcon());
|
||||||
fleetListComposite.ensureDebugId("FleetListEditorComposite");
|
fleetListComposite.ensureDebugId("FleetListEditorComposite");
|
||||||
fleetListComposite.addValueChangeHandler(new ValueChangeHandler<List<FleetDTO>>() {
|
fleetListComposite.addValueChangeHandler(new ValueChangeHandler<Iterable<FleetDTO>>() {
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
public void onValueChange(ValueChangeEvent<List<FleetDTO>> event) {
|
public void onValueChange(ValueChangeEvent<Iterable<FleetDTO>> event) {
|
||||||
validate();
|
validate();
|
||||||
}
|
}
|
||||||
});
|
});
|
||||||
|
|||||||
+13
-9
@@ -1,7 +1,6 @@
|
|||||||
package com.sap.sailing.gwt.ui.adminconsole;
|
package com.sap.sailing.gwt.ui.adminconsole;
|
||||||
|
|
||||||
import java.util.Collections;
|
import java.util.Collections;
|
||||||
import java.util.List;
|
|
||||||
|
|
||||||
import com.google.gwt.dom.client.Style.FontWeight;
|
import com.google.gwt.dom.client.Style.FontWeight;
|
||||||
import com.google.gwt.event.dom.client.ClickEvent;
|
import com.google.gwt.event.dom.client.ClickEvent;
|
||||||
@@ -12,14 +11,14 @@ import com.google.gwt.user.client.ui.HorizontalPanel;
|
|||||||
import com.google.gwt.user.client.ui.Label;
|
import com.google.gwt.user.client.ui.Label;
|
||||||
import com.google.gwt.user.client.ui.Widget;
|
import com.google.gwt.user.client.ui.Widget;
|
||||||
import com.sap.sailing.gwt.ui.client.StringMessages;
|
import com.sap.sailing.gwt.ui.client.StringMessages;
|
||||||
import com.sap.sailing.gwt.ui.client.shared.controls.listedit.ExpandedListEditorUi;
|
|
||||||
import com.sap.sailing.gwt.ui.client.shared.controls.listedit.ListEditorComposite;
|
|
||||||
import com.sap.sailing.gwt.ui.shared.SeriesDTO;
|
import com.sap.sailing.gwt.ui.shared.SeriesDTO;
|
||||||
|
import com.sap.sse.gwt.client.controls.listedit.ExpandedListEditorUi;
|
||||||
|
import com.sap.sse.gwt.client.controls.listedit.ListEditorComposite;
|
||||||
import com.sap.sse.gwt.client.dialog.DataEntryDialog.DialogCallback;
|
import com.sap.sse.gwt.client.dialog.DataEntryDialog.DialogCallback;
|
||||||
|
|
||||||
public class SeriesWithFleetsListEditor extends ListEditorComposite<SeriesDTO> {
|
public class SeriesWithFleetsListEditor extends ListEditorComposite<SeriesDTO> {
|
||||||
|
|
||||||
public SeriesWithFleetsListEditor(List<SeriesDTO> initialValues, StringMessages stringMessages, ImageResource removeImage, boolean enableFleetRemoval) {
|
public SeriesWithFleetsListEditor(Iterable<SeriesDTO> initialValues, StringMessages stringMessages, ImageResource removeImage, boolean enableFleetRemoval) {
|
||||||
super(initialValues, new ExpandedUi(stringMessages, removeImage, enableFleetRemoval));
|
super(initialValues, new ExpandedUi(stringMessages, removeImage, enableFleetRemoval));
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -28,15 +27,20 @@ public class SeriesWithFleetsListEditor extends ListEditorComposite<SeriesDTO> {
|
|||||||
super(stringMessages, removeImage, canRemoveItems);
|
super(stringMessages, removeImage, canRemoveItems);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
protected StringMessages getStringMessages() {
|
||||||
|
return (StringMessages) super.getStringMessages();
|
||||||
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
protected Widget createAddWidget() {
|
protected Widget createAddWidget() {
|
||||||
Button addSeriesButton = new Button(stringMessages.addSeries());
|
Button addSeriesButton = new Button(getStringMessages().addSeries());
|
||||||
addSeriesButton.ensureDebugId("AddSeriesButton");
|
addSeriesButton.ensureDebugId("AddSeriesButton");
|
||||||
addSeriesButton.addClickHandler(new ClickHandler() {
|
addSeriesButton.addClickHandler(new ClickHandler() {
|
||||||
@Override
|
@Override
|
||||||
public void onClick(ClickEvent event) {
|
public void onClick(ClickEvent event) {
|
||||||
SeriesWithFleetsCreateDialog dialog = new SeriesWithFleetsCreateDialog(Collections
|
SeriesWithFleetsCreateDialog dialog = new SeriesWithFleetsCreateDialog(Collections
|
||||||
.unmodifiableCollection(context.getValue()), stringMessages, new DialogCallback<SeriesDTO>() {
|
.unmodifiableCollection(context.getValue()), getStringMessages(), new DialogCallback<SeriesDTO>() {
|
||||||
@Override
|
@Override
|
||||||
public void cancel() {
|
public void cancel() {
|
||||||
}
|
}
|
||||||
@@ -57,7 +61,7 @@ public class SeriesWithFleetsListEditor extends ListEditorComposite<SeriesDTO> {
|
|||||||
protected Widget createValueWidget(int rowIndex, SeriesDTO seriesDTO) {
|
protected Widget createValueWidget(int rowIndex, SeriesDTO seriesDTO) {
|
||||||
HorizontalPanel hPanel = new HorizontalPanel();
|
HorizontalPanel hPanel = new HorizontalPanel();
|
||||||
hPanel.setSpacing(5);
|
hPanel.setSpacing(5);
|
||||||
Label seriesLabel = new Label(stringMessages.series() + " '" + seriesDTO.getName() + "' :");
|
Label seriesLabel = new Label(getStringMessages().series() + " '" + seriesDTO.getName() + "' :");
|
||||||
seriesLabel.setWordWrap(false);
|
seriesLabel.setWordWrap(false);
|
||||||
seriesLabel.getElement().getStyle().setFontWeight(FontWeight.BOLD);
|
seriesLabel.getElement().getStyle().setFontWeight(FontWeight.BOLD);
|
||||||
hPanel.add(seriesLabel);
|
hPanel.add(seriesLabel);
|
||||||
@@ -66,9 +70,9 @@ public class SeriesWithFleetsListEditor extends ListEditorComposite<SeriesDTO> {
|
|||||||
|
|
||||||
if (seriesDTO.getFleets() != null && seriesDTO.getFleets().size() > 0) {
|
if (seriesDTO.getFleets() != null && seriesDTO.getFleets().size() > 0) {
|
||||||
if(seriesDTO.getFleets().size() == 1) {
|
if(seriesDTO.getFleets().size() == 1) {
|
||||||
fleetText = "1 " + stringMessages.fleet();
|
fleetText = "1 " + getStringMessages().fleet();
|
||||||
} else {
|
} else {
|
||||||
fleetText = seriesDTO.getFleets().size() + " " + stringMessages.fleets();
|
fleetText = seriesDTO.getFleets().size() + " " + getStringMessages().fleets();
|
||||||
}
|
}
|
||||||
fleetText += ": " + seriesDTO.getFleets().toString();
|
fleetText += ": " + seriesDTO.getFleets().toString();
|
||||||
} else {
|
} else {
|
||||||
|
|||||||
+1
-5
@@ -1,14 +1,10 @@
|
|||||||
package com.sap.sailing.gwt.ui.client;
|
package com.sap.sailing.gwt.ui.client;
|
||||||
|
|
||||||
import com.google.gwt.core.client.GWT;
|
import com.google.gwt.core.client.GWT;
|
||||||
import com.google.gwt.i18n.client.Messages;
|
|
||||||
|
|
||||||
public interface StringMessages extends Messages {
|
public interface StringMessages extends com.sap.sse.gwt.client.StringMessages {
|
||||||
public static final StringMessages INSTANCE = GWT.create(StringMessages.class);
|
public static final StringMessages INSTANCE = GWT.create(StringMessages.class);
|
||||||
|
|
||||||
String helloWorld();
|
|
||||||
String kielWeel2011();
|
|
||||||
String stgAccount();
|
|
||||||
String tracTracEvents();
|
String tracTracEvents();
|
||||||
String swissTimingEvents();
|
String swissTimingEvents();
|
||||||
String trackedBefore();
|
String trackedBefore();
|
||||||
|
|||||||
-3
@@ -1,6 +1,3 @@
|
|||||||
helloWorld=Hello World
|
|
||||||
kielWeel2011=Kiel Week 2011
|
|
||||||
stgAccount=STG Account
|
|
||||||
tracTracEvents=TracTrac Events
|
tracTracEvents=TracTrac Events
|
||||||
swissTimingEvents=SwissTiming Events
|
swissTimingEvents=SwissTiming Events
|
||||||
trackedBefore=History of tracked events
|
trackedBefore=History of tracked events
|
||||||
|
|||||||
-3
@@ -1,6 +1,3 @@
|
|||||||
helloWorld=Hello World
|
|
||||||
kielWeel2011=Kiel Week 2011
|
|
||||||
stgAccount=STG Account
|
|
||||||
tracTracEvents=TracTrac Events
|
tracTracEvents=TracTrac Events
|
||||||
swissTimingEvents=SwissTiming Events
|
swissTimingEvents=SwissTiming Events
|
||||||
trackedBefore=Historie verfolgter Events
|
trackedBefore=Historie verfolgter Events
|
||||||
|
|||||||
-3
@@ -1,7 +1,4 @@
|
|||||||
# If you want new properties translated then sent this over GMR (Mark Angell <mangell@gmr.com>)
|
# If you want new properties translated then sent this over GMR (Mark Angell <mangell@gmr.com>)
|
||||||
helloWorld=Привет Мир
|
|
||||||
kielWeel2011=Кильская Неделя 2011
|
|
||||||
stgAccount=Счет STG
|
|
||||||
tracTracEvents=События Трак Трак
|
tracTracEvents=События Трак Трак
|
||||||
swissTimingEvents=События Swiss Timing
|
swissTimingEvents=События Swiss Timing
|
||||||
trackedBefore=Ранее Отслеженные
|
trackedBefore=Ранее Отслеженные
|
||||||
|
|||||||
@@ -4,5 +4,6 @@
|
|||||||
<classpathentry kind="con" path="org.eclipse.jdt.launching.JRE_CONTAINER/org.eclipse.jdt.internal.debug.ui.launcher.StandardVMType/JavaSE-1.8"/>
|
<classpathentry kind="con" path="org.eclipse.jdt.launching.JRE_CONTAINER/org.eclipse.jdt.internal.debug.ui.launcher.StandardVMType/JavaSE-1.8"/>
|
||||||
<classpathentry kind="con" path="org.eclipse.pde.core.requiredPlugins"/>
|
<classpathentry kind="con" path="org.eclipse.pde.core.requiredPlugins"/>
|
||||||
<classpathentry excluding="com/sap/sse/gwt/jre/" kind="src" path="src"/>
|
<classpathentry excluding="com/sap/sse/gwt/jre/" kind="src" path="src"/>
|
||||||
|
<classpathentry kind="src" path="resources"/>
|
||||||
<classpathentry kind="output" path="bin"/>
|
<classpathentry kind="output" path="bin"/>
|
||||||
</classpath>
|
</classpath>
|
||||||
@@ -19,6 +19,7 @@ Export-Package: com.sap.sse.gwt.client,
|
|||||||
com.sap.sse.gwt.client.async,
|
com.sap.sse.gwt.client.async,
|
||||||
com.sap.sse.gwt.client.controls,
|
com.sap.sse.gwt.client.controls,
|
||||||
com.sap.sse.gwt.client.controls.busyindicator,
|
com.sap.sse.gwt.client.controls.busyindicator,
|
||||||
|
com.sap.sse.gwt.client.controls.listedit,
|
||||||
com.sap.sse.gwt.client.controls.slider,
|
com.sap.sse.gwt.client.controls.slider,
|
||||||
com.sap.sse.gwt.client.dialog,
|
com.sap.sse.gwt.client.dialog,
|
||||||
com.sap.sse.gwt.client.mvp,
|
com.sap.sse.gwt.client.mvp,
|
||||||
|
|||||||
@@ -2,3 +2,4 @@ source.. = src/
|
|||||||
output.. = bin/
|
output.. = bin/
|
||||||
bin.includes = META-INF/,\
|
bin.includes = META-INF/,\
|
||||||
.
|
.
|
||||||
|
|
||||||
File renamed without changes.
|
Before Width: | Height: | Size: 691 B After Width: | Height: | Size: 691 B |
@@ -0,0 +1,21 @@
|
|||||||
|
package com.sap.sse.gwt.client;
|
||||||
|
|
||||||
|
import com.google.gwt.i18n.client.Messages;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Defines the text strings for i18n that are used by the SSE GWT bundle. This bundle
|
||||||
|
* @author Axel Uhl (D043530)
|
||||||
|
*
|
||||||
|
*/
|
||||||
|
public interface StringMessages extends Messages {
|
||||||
|
String save();
|
||||||
|
|
||||||
|
String remove();
|
||||||
|
|
||||||
|
String cancel();
|
||||||
|
|
||||||
|
String add();
|
||||||
|
|
||||||
|
String edit();
|
||||||
|
|
||||||
|
}
|
||||||
+5
-6
@@ -1,4 +1,4 @@
|
|||||||
package com.sap.sailing.gwt.ui.client.shared.controls.listedit;
|
package com.sap.sse.gwt.client.controls.listedit;
|
||||||
|
|
||||||
import java.util.List;
|
import java.util.List;
|
||||||
|
|
||||||
@@ -8,7 +8,7 @@ import com.google.gwt.user.client.ui.Button;
|
|||||||
import com.google.gwt.user.client.ui.HorizontalPanel;
|
import com.google.gwt.user.client.ui.HorizontalPanel;
|
||||||
import com.google.gwt.user.client.ui.TextBox;
|
import com.google.gwt.user.client.ui.TextBox;
|
||||||
import com.google.gwt.user.client.ui.Widget;
|
import com.google.gwt.user.client.ui.Widget;
|
||||||
import com.sap.sailing.gwt.ui.client.StringMessages;
|
import com.sap.sse.gwt.client.StringMessages;
|
||||||
import com.sap.sse.gwt.client.dialog.DataEntryDialog;
|
import com.sap.sse.gwt.client.dialog.DataEntryDialog;
|
||||||
import com.sap.sse.gwt.client.dialog.DataEntryDialog.DialogCallback;
|
import com.sap.sse.gwt.client.dialog.DataEntryDialog.DialogCallback;
|
||||||
|
|
||||||
@@ -49,7 +49,7 @@ public abstract class CollapsedListEditorUi<ValueType> extends ListEditorUi<Valu
|
|||||||
|
|
||||||
protected abstract String getCollapsedValueText(List<ValueType> value);
|
protected abstract String getCollapsedValueText(List<ValueType> value);
|
||||||
|
|
||||||
protected abstract ListEditorComposite<ValueType> createExpandedUi(List<ValueType> initialValues,
|
protected abstract ListEditorComposite<ValueType> createExpandedUi(Iterable<ValueType> initialValues,
|
||||||
ExpandedListEditorUi<ValueType> ui);
|
ExpandedListEditorUi<ValueType> ui);
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
@@ -63,13 +63,12 @@ public abstract class CollapsedListEditorUi<ValueType> extends ListEditorUi<Valu
|
|||||||
collapsedValuesBox = new TextBox();
|
collapsedValuesBox = new TextBox();
|
||||||
collapsedValuesBox.setReadOnly(true);
|
collapsedValuesBox.setReadOnly(true);
|
||||||
|
|
||||||
collapsedEditButton = new Button(stringMessages.edit());
|
collapsedEditButton = new Button(getStringMessages().edit());
|
||||||
collapsedEditButton.addClickHandler(new ClickHandler() {
|
collapsedEditButton.addClickHandler(new ClickHandler() {
|
||||||
@Override
|
@Override
|
||||||
public void onClick(ClickEvent event) {
|
public void onClick(ClickEvent event) {
|
||||||
new PopupEditDialog(context.getValue(), expandedUi, popupDialogTitle,
|
new PopupEditDialog(context.getValue(), expandedUi, popupDialogTitle,
|
||||||
new DialogCallback<List<ValueType>>() {
|
new DialogCallback<List<ValueType>>() {
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
public void ok(List<ValueType> editedObject) {
|
public void ok(List<ValueType> editedObject) {
|
||||||
context.setValue(editedObject);
|
context.setValue(editedObject);
|
||||||
@@ -104,7 +103,7 @@ public abstract class CollapsedListEditorUi<ValueType> extends ListEditorUi<Valu
|
|||||||
|
|
||||||
public PopupEditDialog(List<ValueType> initialValues, ExpandedListEditorUi<ValueType> ui, String dialogTitle,
|
public PopupEditDialog(List<ValueType> initialValues, ExpandedListEditorUi<ValueType> ui, String dialogTitle,
|
||||||
DataEntryDialog.DialogCallback<List<ValueType>> callback) {
|
DataEntryDialog.DialogCallback<List<ValueType>> callback) {
|
||||||
super(dialogTitle, "", stringMessages.save(), stringMessages.cancel(), null, callback);
|
super(dialogTitle, "", getStringMessages().save(), getStringMessages().cancel(), null, callback);
|
||||||
expandedComposite = createExpandedUi(initialValues, ui);
|
expandedComposite = createExpandedUi(initialValues, ui);
|
||||||
}
|
}
|
||||||
|
|
||||||
+6
-4
@@ -1,4 +1,4 @@
|
|||||||
package com.sap.sailing.gwt.ui.client.shared.controls.listedit;
|
package com.sap.sse.gwt.client.controls.listedit;
|
||||||
|
|
||||||
import com.google.gwt.event.dom.client.ClickEvent;
|
import com.google.gwt.event.dom.client.ClickEvent;
|
||||||
import com.google.gwt.event.dom.client.ClickHandler;
|
import com.google.gwt.event.dom.client.ClickHandler;
|
||||||
@@ -9,7 +9,7 @@ import com.google.gwt.user.client.ui.PushButton;
|
|||||||
import com.google.gwt.user.client.ui.ValueBoxBase;
|
import com.google.gwt.user.client.ui.ValueBoxBase;
|
||||||
import com.google.gwt.user.client.ui.VerticalPanel;
|
import com.google.gwt.user.client.ui.VerticalPanel;
|
||||||
import com.google.gwt.user.client.ui.Widget;
|
import com.google.gwt.user.client.ui.Widget;
|
||||||
import com.sap.sailing.gwt.ui.client.StringMessages;
|
import com.sap.sse.gwt.client.StringMessages;
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* A base class for an editing UI strategy for a list of objects of type <code>ValueType</code> for use in a
|
* A base class for an editing UI strategy for a list of objects of type <code>ValueType</code> for use in a
|
||||||
@@ -25,7 +25,9 @@ import com.sap.sailing.gwt.ui.client.StringMessages;
|
|||||||
* <p>
|
* <p>
|
||||||
*
|
*
|
||||||
* Implementing subclasses may choose to override the {@link #onRowAdded()} and/or the {@link #onRowRemoved()} method(s)
|
* Implementing subclasses may choose to override the {@link #onRowAdded()} and/or the {@link #onRowRemoved()} method(s)
|
||||||
* to be notified of changes to the list.
|
* to be notified of changes to the list. Alternatively or in addition, clients can
|
||||||
|
* {@link ListEditorComposite#addValueChangeHandler(com.google.gwt.event.logical.shared.ValueChangeHandler) add a value
|
||||||
|
* change handler} to the enclosing {@link ListEditorComposite}.
|
||||||
*
|
*
|
||||||
* @author Lukas Niemeier
|
* @author Lukas Niemeier
|
||||||
* @author Axel Uhl (D043530)
|
* @author Axel Uhl (D043530)
|
||||||
@@ -80,7 +82,7 @@ public abstract class ExpandedListEditorUi<ValueType> extends ListEditorUi<Value
|
|||||||
if (canRemoveItems) {
|
if (canRemoveItems) {
|
||||||
PushButton removeButton = new PushButton(new Image(removeImage));
|
PushButton removeButton = new PushButton(new Image(removeImage));
|
||||||
removeButton.ensureDebugId("RemoveButton");
|
removeButton.ensureDebugId("RemoveButton");
|
||||||
removeButton.setTitle(stringMessages.remove());
|
removeButton.setTitle(getStringMessages().remove());
|
||||||
removeButton.addClickHandler(new ClickHandler() {
|
removeButton.addClickHandler(new ClickHandler() {
|
||||||
@Override
|
@Override
|
||||||
public void onClick(ClickEvent event) {
|
public void onClick(ClickEvent event) {
|
||||||
+12
-9
@@ -1,4 +1,4 @@
|
|||||||
package com.sap.sailing.gwt.ui.client.shared.controls.listedit;
|
package com.sap.sse.gwt.client.controls.listedit;
|
||||||
|
|
||||||
import java.util.ArrayList;
|
import java.util.ArrayList;
|
||||||
import java.util.List;
|
import java.util.List;
|
||||||
@@ -9,6 +9,7 @@ import com.google.gwt.event.logical.shared.ValueChangeHandler;
|
|||||||
import com.google.gwt.event.shared.HandlerRegistration;
|
import com.google.gwt.event.shared.HandlerRegistration;
|
||||||
import com.google.gwt.user.client.ui.Composite;
|
import com.google.gwt.user.client.ui.Composite;
|
||||||
import com.google.gwt.user.client.ui.HasValue;
|
import com.google.gwt.user.client.ui.HasValue;
|
||||||
|
import com.sap.sse.common.Util;
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* A widget that lets users edit a list of <code>ValueType</code> objects. How the values are displayed and made
|
* A widget that lets users edit a list of <code>ValueType</code> objects. How the values are displayed and made
|
||||||
@@ -32,15 +33,16 @@ import com.google.gwt.user.client.ui.HasValue;
|
|||||||
*
|
*
|
||||||
* @param <ValueType>
|
* @param <ValueType>
|
||||||
*/
|
*/
|
||||||
public class ListEditorComposite<ValueType> extends Composite implements HasValue<List<ValueType>>,
|
public class ListEditorComposite<ValueType> extends Composite implements HasValue<Iterable<ValueType>>,
|
||||||
HasValueChangeHandlers<List<ValueType>> {
|
HasValueChangeHandlers<Iterable<ValueType>> {
|
||||||
|
|
||||||
private final ListEditorUiStrategy<ValueType> activeUi;
|
private final ListEditorUiStrategy<ValueType> activeUi;
|
||||||
|
|
||||||
private List<ValueType> values;
|
private List<ValueType> values;
|
||||||
|
|
||||||
public ListEditorComposite(List<ValueType> initialValues, ListEditorUiStrategy<ValueType> activeUi) {
|
public ListEditorComposite(Iterable<ValueType> initialValues, ListEditorUiStrategy<ValueType> activeUi) {
|
||||||
this.values = new ArrayList<ValueType>(initialValues);
|
this.values = new ArrayList<ValueType>();
|
||||||
|
Util.addAll(initialValues, this.values);
|
||||||
this.activeUi = activeUi;
|
this.activeUi = activeUi;
|
||||||
this.activeUi.setContext(this);
|
this.activeUi.setContext(this);
|
||||||
|
|
||||||
@@ -54,13 +56,14 @@ public class ListEditorComposite<ValueType> extends Composite implements HasValu
|
|||||||
}
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
public void setValue(List<ValueType> newValues) {
|
public void setValue(Iterable<ValueType> newValues) {
|
||||||
setValue(newValues, true);
|
setValue(newValues, true);
|
||||||
}
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
public void setValue(List<ValueType> newValues, boolean fireEvents) {
|
public void setValue(Iterable<ValueType> newValues, boolean fireEvents) {
|
||||||
this.values = newValues;
|
this.values = new ArrayList<>();
|
||||||
|
Util.addAll(newValues, this.values);
|
||||||
activeUi.refresh();
|
activeUi.refresh();
|
||||||
if (fireEvents) {
|
if (fireEvents) {
|
||||||
onChange();
|
onChange();
|
||||||
@@ -68,7 +71,7 @@ public class ListEditorComposite<ValueType> extends Composite implements HasValu
|
|||||||
}
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
public HandlerRegistration addValueChangeHandler(ValueChangeHandler<List<ValueType>> handler) {
|
public HandlerRegistration addValueChangeHandler(ValueChangeHandler<Iterable<ValueType>> handler) {
|
||||||
return addHandler(handler, ValueChangeEvent.getType());
|
return addHandler(handler, ValueChangeEvent.getType());
|
||||||
}
|
}
|
||||||
|
|
||||||
+7
-3
@@ -1,9 +1,9 @@
|
|||||||
package com.sap.sailing.gwt.ui.client.shared.controls.listedit;
|
package com.sap.sse.gwt.client.controls.listedit;
|
||||||
|
|
||||||
import com.sap.sailing.gwt.ui.client.StringMessages;
|
import com.sap.sse.gwt.client.StringMessages;
|
||||||
|
|
||||||
public abstract class ListEditorUi<ValueType> implements ListEditorUiStrategy<ValueType> {
|
public abstract class ListEditorUi<ValueType> implements ListEditorUiStrategy<ValueType> {
|
||||||
protected final StringMessages stringMessages;
|
private final StringMessages stringMessages;
|
||||||
protected ListEditorComposite<ValueType> context;
|
protected ListEditorComposite<ValueType> context;
|
||||||
|
|
||||||
public ListEditorUi(StringMessages stringMessages) {
|
public ListEditorUi(StringMessages stringMessages) {
|
||||||
@@ -14,4 +14,8 @@ public abstract class ListEditorUi<ValueType> implements ListEditorUiStrategy<Va
|
|||||||
public void setContext(ListEditorComposite<ValueType> context) {
|
public void setContext(ListEditorComposite<ValueType> context) {
|
||||||
this.context = context;
|
this.context = context;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
protected StringMessages getStringMessages() {
|
||||||
|
return stringMessages;
|
||||||
|
}
|
||||||
}
|
}
|
||||||
+1
-1
@@ -1,4 +1,4 @@
|
|||||||
package com.sap.sailing.gwt.ui.client.shared.controls.listedit;
|
package com.sap.sse.gwt.client.controls.listedit;
|
||||||
|
|
||||||
import com.google.gwt.user.client.ui.Widget;
|
import com.google.gwt.user.client.ui.Widget;
|
||||||
|
|
||||||
+13
-11
@@ -1,4 +1,4 @@
|
|||||||
package com.sap.sailing.gwt.ui.client.shared.controls.listedit;
|
package com.sap.sse.gwt.client.controls.listedit;
|
||||||
|
|
||||||
import java.util.List;
|
import java.util.List;
|
||||||
|
|
||||||
@@ -13,21 +13,21 @@ import com.google.gwt.user.client.ui.Label;
|
|||||||
import com.google.gwt.user.client.ui.MultiWordSuggestOracle;
|
import com.google.gwt.user.client.ui.MultiWordSuggestOracle;
|
||||||
import com.google.gwt.user.client.ui.SuggestBox;
|
import com.google.gwt.user.client.ui.SuggestBox;
|
||||||
import com.google.gwt.user.client.ui.Widget;
|
import com.google.gwt.user.client.ui.Widget;
|
||||||
import com.sap.sailing.gwt.ui.client.StringMessages;
|
import com.sap.sse.gwt.client.StringMessages;
|
||||||
|
|
||||||
public class StringListEditorComposite extends ListEditorComposite<String> {
|
public class StringListEditorComposite extends ListEditorComposite<String> {
|
||||||
public StringListEditorComposite(List<String> initialValues, StringMessages stringMessages,
|
public StringListEditorComposite(Iterable<String> initialValues, StringMessages stringMessages,
|
||||||
String popupDialogTitle, ImageResource removeImage, List<String> suggestValues) {
|
String popupDialogTitle, ImageResource removeImage, Iterable<String> suggestValues) {
|
||||||
super(initialValues, new CollapsedUi(stringMessages, popupDialogTitle,
|
super(initialValues, new CollapsedUi(stringMessages, popupDialogTitle,
|
||||||
new ExpandedUi(stringMessages, removeImage, suggestValues)));
|
new ExpandedUi(stringMessages, removeImage, suggestValues)));
|
||||||
}
|
}
|
||||||
|
|
||||||
public StringListEditorComposite(List<String> initialValues, StringMessages stringMessages,
|
public StringListEditorComposite(Iterable<String> initialValues, StringMessages stringMessages,
|
||||||
ImageResource removeImage, List<String> suggestValues) {
|
ImageResource removeImage, Iterable<String> suggestValues) {
|
||||||
super(initialValues, new ExpandedUi(stringMessages, removeImage, suggestValues));
|
super(initialValues, new ExpandedUi(stringMessages, removeImage, suggestValues));
|
||||||
}
|
}
|
||||||
|
|
||||||
public StringListEditorComposite(List<String> initialValues, ListEditorUiStrategy<String> activeUi) {
|
public StringListEditorComposite(Iterable<String> initialValues, ListEditorUiStrategy<String> activeUi) {
|
||||||
super(initialValues, activeUi);
|
super(initialValues, activeUi);
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -51,7 +51,7 @@ public class StringListEditorComposite extends ListEditorComposite<String> {
|
|||||||
}
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
protected ListEditorComposite<String> createExpandedUi(List<String> initialValues, ExpandedListEditorUi<String> ui) {
|
protected ListEditorComposite<String> createExpandedUi(Iterable<String> initialValues, ExpandedListEditorUi<String> ui) {
|
||||||
return new StringListEditorComposite(initialValues, ui);
|
return new StringListEditorComposite(initialValues, ui);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
@@ -60,10 +60,12 @@ public class StringListEditorComposite extends ListEditorComposite<String> {
|
|||||||
|
|
||||||
protected final MultiWordSuggestOracle inputOracle;
|
protected final MultiWordSuggestOracle inputOracle;
|
||||||
|
|
||||||
public ExpandedUi(StringMessages stringMessages, ImageResource removeImage, List<String> suggestValues) {
|
public ExpandedUi(StringMessages stringMessages, ImageResource removeImage, Iterable<String> suggestValues) {
|
||||||
super(stringMessages, removeImage, /*canRemoveItems*/true);
|
super(stringMessages, removeImage, /*canRemoveItems*/true);
|
||||||
this.inputOracle = new MultiWordSuggestOracle();
|
this.inputOracle = new MultiWordSuggestOracle();
|
||||||
inputOracle.addAll(suggestValues);
|
for (String suggestValue : suggestValues) {
|
||||||
|
inputOracle.add(suggestValue);
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
@@ -76,7 +78,7 @@ public class StringListEditorComposite extends ListEditorComposite<String> {
|
|||||||
protected Widget createAddWidget() {
|
protected Widget createAddWidget() {
|
||||||
final SuggestBox inputBox = new SuggestBox(inputOracle);
|
final SuggestBox inputBox = new SuggestBox(inputOracle);
|
||||||
inputBox.ensureDebugId("InputSuggestBox");
|
inputBox.ensureDebugId("InputSuggestBox");
|
||||||
final Button addButton = new Button(stringMessages.add());
|
final Button addButton = new Button(getStringMessages().add());
|
||||||
addButton.ensureDebugId("AddButton");
|
addButton.ensureDebugId("AddButton");
|
||||||
addButton.setEnabled(false);
|
addButton.setEnabled(false);
|
||||||
addButton.addClickHandler(new ClickHandler() {
|
addButton.addClickHandler(new ClickHandler() {
|
||||||
+7
-23
@@ -1,4 +1,4 @@
|
|||||||
package com.sap.sailing.gwt.ui.client.shared.controls.listedit;
|
package com.sap.sse.gwt.client.controls.listedit;
|
||||||
|
|
||||||
import java.util.List;
|
import java.util.List;
|
||||||
|
|
||||||
@@ -16,7 +16,7 @@ import com.google.gwt.user.client.ui.MultiWordSuggestOracle;
|
|||||||
import com.google.gwt.user.client.ui.SuggestBox;
|
import com.google.gwt.user.client.ui.SuggestBox;
|
||||||
import com.google.gwt.user.client.ui.TextBox;
|
import com.google.gwt.user.client.ui.TextBox;
|
||||||
import com.google.gwt.user.client.ui.Widget;
|
import com.google.gwt.user.client.ui.Widget;
|
||||||
import com.sap.sailing.gwt.ui.client.StringMessages;
|
import com.sap.sse.gwt.client.StringMessages;
|
||||||
|
|
||||||
public class StringListInlineEditorComposite extends StringListEditorComposite {
|
public class StringListInlineEditorComposite extends StringListEditorComposite {
|
||||||
public StringListInlineEditorComposite(List<String> initialValues, StringMessages stringMessages,
|
public StringListInlineEditorComposite(List<String> initialValues, StringMessages stringMessages,
|
||||||
@@ -25,42 +25,27 @@ public class StringListInlineEditorComposite extends StringListEditorComposite {
|
|||||||
new ExpandedUi(stringMessages, removeImage, suggestValues, textBoxSize)));
|
new ExpandedUi(stringMessages, removeImage, suggestValues, textBoxSize)));
|
||||||
}
|
}
|
||||||
|
|
||||||
public StringListInlineEditorComposite(List<String> initialValues, StringMessages stringMessages,
|
public StringListInlineEditorComposite(Iterable<String> initialValues, StringMessages stringMessages,
|
||||||
ImageResource removeImage, List<String> suggestValues, int textBoxSize) {
|
ImageResource removeImage, List<String> suggestValues, int textBoxSize) {
|
||||||
super(initialValues, new ExpandedUi(stringMessages, removeImage, suggestValues, textBoxSize));
|
super(initialValues, new ExpandedUi(stringMessages, removeImage, suggestValues, textBoxSize));
|
||||||
}
|
}
|
||||||
|
|
||||||
public StringListInlineEditorComposite(List<String> initialValues, ListEditorUiStrategy<String> activeUi) {
|
public StringListInlineEditorComposite(Iterable<String> initialValues, ListEditorUiStrategy<String> activeUi) {
|
||||||
super(initialValues, activeUi);
|
super(initialValues, activeUi);
|
||||||
}
|
}
|
||||||
|
|
||||||
public static class CollapsedUi extends CollapsedListEditorUi<String> {
|
public static class CollapsedUi extends StringListEditorComposite.CollapsedUi {
|
||||||
|
|
||||||
public CollapsedUi(StringMessages stringMessages, String dialogTitle, ExpandedListEditorUi<String> expandedUi) {
|
public CollapsedUi(StringMessages stringMessages, String dialogTitle, ExpandedListEditorUi<String> expandedUi) {
|
||||||
super(stringMessages, dialogTitle, expandedUi);
|
super(stringMessages, dialogTitle, expandedUi);
|
||||||
}
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
protected String getCollapsedValueText(List<String> value) {
|
protected ListEditorComposite<String> createExpandedUi(Iterable<String> initialValues, ExpandedListEditorUi<String> ui) {
|
||||||
StringBuilder valuesText = new StringBuilder();
|
|
||||||
for (int i = 0; i < value.size(); i++) {
|
|
||||||
if (i > 0) {
|
|
||||||
valuesText.append(',');
|
|
||||||
}
|
|
||||||
valuesText.append(value.get(i));
|
|
||||||
}
|
|
||||||
String condensedValue = valuesText.toString();
|
|
||||||
return condensedValue;
|
|
||||||
}
|
|
||||||
|
|
||||||
@Override
|
|
||||||
protected ListEditorComposite<String> createExpandedUi(List<String> initialValues, ExpandedListEditorUi<String> ui) {
|
|
||||||
return new StringListInlineEditorComposite(initialValues, ui);
|
return new StringListInlineEditorComposite(initialValues, ui);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
public static class ExpandedUi extends ExpandedListEditorUi<String> {
|
public static class ExpandedUi extends ExpandedListEditorUi<String> {
|
||||||
|
|
||||||
private final MultiWordSuggestOracle inputOracle;
|
private final MultiWordSuggestOracle inputOracle;
|
||||||
private final int textBoxSize;
|
private final int textBoxSize;
|
||||||
|
|
||||||
@@ -68,7 +53,6 @@ public class StringListInlineEditorComposite extends StringListEditorComposite {
|
|||||||
super(stringMessages, removeImage, /*canRemoveItems*/true);
|
super(stringMessages, removeImage, /*canRemoveItems*/true);
|
||||||
this.inputOracle = new MultiWordSuggestOracle();
|
this.inputOracle = new MultiWordSuggestOracle();
|
||||||
this.textBoxSize = textBoxSize;
|
this.textBoxSize = textBoxSize;
|
||||||
|
|
||||||
inputOracle.addAll(suggestValues);
|
inputOracle.addAll(suggestValues);
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -85,7 +69,7 @@ public class StringListInlineEditorComposite extends StringListEditorComposite {
|
|||||||
InputElement inputElement = inputBox.getElement().cast();
|
InputElement inputElement = inputBox.getElement().cast();
|
||||||
inputElement.setSize(textBoxSize);
|
inputElement.setSize(textBoxSize);
|
||||||
|
|
||||||
final Button addButton = new Button(stringMessages.add());
|
final Button addButton = new Button(getStringMessages().add());
|
||||||
addButton.setEnabled(false);
|
addButton.setEnabled(false);
|
||||||
addButton.addClickHandler(new ClickHandler() {
|
addButton.addClickHandler(new ClickHandler() {
|
||||||
|
|
||||||
@@ -17,7 +17,8 @@ Require-Bundle: javax.servlet;bundle-version="2.5.0",
|
|||||||
com.sap.sse.security;bundle-version="1.0.0",
|
com.sap.sse.security;bundle-version="1.0.0",
|
||||||
org.json.simple,
|
org.json.simple,
|
||||||
com.sap.sailing.domain.common,
|
com.sap.sailing.domain.common,
|
||||||
com.sap.sse.common
|
com.sap.sse.common,
|
||||||
|
com.sap.sse.gwt
|
||||||
Web-ContextPath: /security/ui
|
Web-ContextPath: /security/ui
|
||||||
Export-Package: com.sap.sse.security.ui.client,
|
Export-Package: com.sap.sse.security.ui.client,
|
||||||
com.sap.sse.security.ui.loginpanel,
|
com.sap.sse.security.ui.loginpanel,
|
||||||
|
|||||||
+13
-2
@@ -1,9 +1,8 @@
|
|||||||
package com.sap.sse.security.ui.client;
|
package com.sap.sse.security.ui.client;
|
||||||
|
|
||||||
import com.google.gwt.core.client.GWT;
|
import com.google.gwt.core.client.GWT;
|
||||||
import com.google.gwt.i18n.client.Messages;
|
|
||||||
|
|
||||||
public interface StringMessages extends Messages {
|
public interface StringMessages extends com.sap.sse.gwt.client.StringMessages {
|
||||||
public static final StringMessages INSTANCE = GWT.create(StringMessages.class);
|
public static final StringMessages INSTANCE = GWT.create(StringMessages.class);
|
||||||
|
|
||||||
String name();
|
String name();
|
||||||
@@ -74,4 +73,16 @@ public interface StringMessages extends Messages {
|
|||||||
|
|
||||||
String errorDeletingUser();
|
String errorDeletingUser();
|
||||||
|
|
||||||
|
String account(String accountType);
|
||||||
|
|
||||||
|
String save();
|
||||||
|
|
||||||
|
String remove();
|
||||||
|
|
||||||
|
String add();
|
||||||
|
|
||||||
|
String edit();
|
||||||
|
|
||||||
|
String errorUpdatingRoles(String username, String message);
|
||||||
|
|
||||||
}
|
}
|
||||||
+6
@@ -32,3 +32,9 @@ deleteUser=Delete user
|
|||||||
deleteUserQuestion=Delete user?
|
deleteUserQuestion=Delete user?
|
||||||
doYouReallyWantToDeleteUser=Do you really want to delete user {0}?
|
doYouReallyWantToDeleteUser=Do you really want to delete user {0}?
|
||||||
errorDeletingUser=An error happened while deleting the user
|
errorDeletingUser=An error happened while deleting the user
|
||||||
|
account={0}-Account
|
||||||
|
save=Save
|
||||||
|
remove=Remove
|
||||||
|
add=Add
|
||||||
|
edit=Edit
|
||||||
|
errorUpdatingRoles=Error updating roles for user {0}: {1}
|
||||||
+6
@@ -32,3 +32,9 @@ deleteUser=Benutzer l
|
|||||||
deleteUserQuestion=Benutzer löschen?
|
deleteUserQuestion=Benutzer löschen?
|
||||||
doYouReallyWantToDeleteUser=Wollen Sie Benutzer {0} wirklich löschen?
|
doYouReallyWantToDeleteUser=Wollen Sie Benutzer {0} wirklich löschen?
|
||||||
errorDeletingUser=Fehler beim Löschen des Benutzers
|
errorDeletingUser=Fehler beim Löschen des Benutzers
|
||||||
|
account={0}-Konto
|
||||||
|
save=Sichern
|
||||||
|
remove=Löschen
|
||||||
|
add=Hinzufügen
|
||||||
|
edit=Bearbeiten
|
||||||
|
errorUpdatingRoles=Fehler beim Aktualisieren der Rollen des Benutzers {0}: {1}
|
||||||
+1
-1
@@ -97,7 +97,7 @@ public class UserService {
|
|||||||
* @param notifyOtherInstances
|
* @param notifyOtherInstances
|
||||||
* if <code>true</code>, other instances of this class will be notified about the result of the call
|
* if <code>true</code>, other instances of this class will be notified about the result of the call
|
||||||
*/
|
*/
|
||||||
private void updateUser(final boolean notifyOtherInstances) {
|
public void updateUser(final boolean notifyOtherInstances) {
|
||||||
userManagementService.getCurrentUser(new MarkedAsyncCallback<UserDTO>(
|
userManagementService.getCurrentUser(new MarkedAsyncCallback<UserDTO>(
|
||||||
new AsyncCallback<UserDTO>() {
|
new AsyncCallback<UserDTO>() {
|
||||||
@Override
|
@Override
|
||||||
|
|||||||
-104
@@ -1,104 +0,0 @@
|
|||||||
package com.sap.sse.security.ui.client.component;
|
|
||||||
|
|
||||||
import java.util.ArrayList;
|
|
||||||
import java.util.List;
|
|
||||||
|
|
||||||
import com.google.gwt.cell.client.TextCell;
|
|
||||||
import com.google.gwt.event.dom.client.ClickEvent;
|
|
||||||
import com.google.gwt.event.dom.client.ClickHandler;
|
|
||||||
import com.google.gwt.user.cellview.client.CellList;
|
|
||||||
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.DecoratorPanel;
|
|
||||||
import com.google.gwt.user.client.ui.FlowPanel;
|
|
||||||
import com.google.gwt.user.client.ui.HorizontalPanel;
|
|
||||||
import com.google.gwt.user.client.ui.Label;
|
|
||||||
import com.google.gwt.user.client.ui.TextBox;
|
|
||||||
import com.google.gwt.view.client.ListDataProvider;
|
|
||||||
import com.google.gwt.view.client.ProvidesKey;
|
|
||||||
import com.google.gwt.view.client.SingleSelectionModel;
|
|
||||||
import com.sap.sse.security.ui.client.UserChangeEventHandler;
|
|
||||||
import com.sap.sse.security.ui.shared.SuccessInfo;
|
|
||||||
import com.sap.sse.security.ui.shared.UserDTO;
|
|
||||||
import com.sap.sse.security.ui.shared.UserManagementServiceAsync;
|
|
||||||
|
|
||||||
public class RolesList extends DecoratorPanel {
|
|
||||||
|
|
||||||
private UserManagementServiceAsync userManagementService;
|
|
||||||
private UserDTO userDTO;
|
|
||||||
|
|
||||||
private List<UserChangeEventHandler> handlers = new ArrayList<>();
|
|
||||||
|
|
||||||
ProvidesKey<String> keyProvider = new ProvidesKey<String>() {
|
|
||||||
public Object getKey(String item) {
|
|
||||||
// Always do a null check.
|
|
||||||
return (item == null) ? null : item;
|
|
||||||
}
|
|
||||||
};
|
|
||||||
|
|
||||||
private ListDataProvider<String> rolesDataProvider;
|
|
||||||
|
|
||||||
SingleSelectionModel<String> singleSelectionModel = new SingleSelectionModel<>(keyProvider);
|
|
||||||
|
|
||||||
private CellList<String> roleList;
|
|
||||||
private TextBox roleBox;
|
|
||||||
|
|
||||||
public RolesList(UserManagementServiceAsync userManagementService, UserDTO userDTO) {
|
|
||||||
super();
|
|
||||||
this.userManagementService = userManagementService;
|
|
||||||
this.userDTO = userDTO;
|
|
||||||
FlowPanel fp = new FlowPanel();
|
|
||||||
fp.add(new Label("Roles:"));
|
|
||||||
HorizontalPanel hp = new HorizontalPanel();
|
|
||||||
roleBox = new TextBox();
|
|
||||||
roleBox.getElement().setPropertyString("placeholder", "Add role...");
|
|
||||||
hp.add(roleBox);
|
|
||||||
Button addRole = new Button("Add role", new ClickHandler() {
|
|
||||||
|
|
||||||
@Override
|
|
||||||
public void onClick(ClickEvent event) {
|
|
||||||
RolesList.this.userManagementService.addRoleForUser(RolesList.this.userDTO.getName(), roleBox.getText(), new AsyncCallback<SuccessInfo>() {
|
|
||||||
|
|
||||||
@Override
|
|
||||||
public void onSuccess(SuccessInfo result) {
|
|
||||||
if (result.isSuccessful()){
|
|
||||||
Window.alert("Success: "+result.getMessage());
|
|
||||||
for (UserChangeEventHandler handler : handlers){
|
|
||||||
handler.onUserChange(RolesList.this.userDTO);
|
|
||||||
}
|
|
||||||
}
|
|
||||||
else {
|
|
||||||
Window.alert("Failed: "+result.getMessage());
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
@Override
|
|
||||||
public void onFailure(Throwable caught) {
|
|
||||||
Window.alert("An error occured while adding the role: " + caught);
|
|
||||||
}
|
|
||||||
});
|
|
||||||
}
|
|
||||||
});
|
|
||||||
hp.add(addRole);
|
|
||||||
fp.add(hp);
|
|
||||||
|
|
||||||
rolesDataProvider = new ListDataProvider<String>();
|
|
||||||
for (String role : userDTO.getRoles()) {
|
|
||||||
rolesDataProvider.getList().add(role);
|
|
||||||
}
|
|
||||||
roleList = new CellList<>(new TextCell(), keyProvider);
|
|
||||||
rolesDataProvider.addDataDisplay(roleList);
|
|
||||||
|
|
||||||
fp.add(roleList);
|
|
||||||
this.setWidget(fp);
|
|
||||||
}
|
|
||||||
|
|
||||||
public void addUserChangeEventHandler(UserChangeEventHandler handler){
|
|
||||||
this.handlers.add(handler);
|
|
||||||
}
|
|
||||||
|
|
||||||
public void removeUserChangeEventHandler(UserChangeEventHandler handler){
|
|
||||||
this.handlers.remove(handler);
|
|
||||||
}
|
|
||||||
}
|
|
||||||
+103
-60
@@ -1,6 +1,7 @@
|
|||||||
package com.sap.sse.security.ui.client.component;
|
package com.sap.sse.security.ui.client.component;
|
||||||
|
|
||||||
import java.util.ArrayList;
|
import java.util.ArrayList;
|
||||||
|
import java.util.Collections;
|
||||||
import java.util.List;
|
import java.util.List;
|
||||||
import java.util.Map.Entry;
|
import java.util.Map.Entry;
|
||||||
|
|
||||||
@@ -8,6 +9,8 @@ import com.google.gwt.core.client.Scheduler;
|
|||||||
import com.google.gwt.dom.client.Style.Unit;
|
import com.google.gwt.dom.client.Style.Unit;
|
||||||
import com.google.gwt.event.dom.client.ClickEvent;
|
import com.google.gwt.event.dom.client.ClickEvent;
|
||||||
import com.google.gwt.event.dom.client.ClickHandler;
|
import com.google.gwt.event.dom.client.ClickHandler;
|
||||||
|
import com.google.gwt.event.logical.shared.ValueChangeEvent;
|
||||||
|
import com.google.gwt.event.logical.shared.ValueChangeHandler;
|
||||||
import com.google.gwt.resources.client.ImageResource;
|
import com.google.gwt.resources.client.ImageResource;
|
||||||
import com.google.gwt.user.client.Window;
|
import com.google.gwt.user.client.Window;
|
||||||
import com.google.gwt.user.client.rpc.AsyncCallback;
|
import com.google.gwt.user.client.rpc.AsyncCallback;
|
||||||
@@ -21,9 +24,14 @@ import com.google.gwt.user.client.ui.HorizontalPanel;
|
|||||||
import com.google.gwt.user.client.ui.ImageResourceRenderer;
|
import com.google.gwt.user.client.ui.ImageResourceRenderer;
|
||||||
import com.google.gwt.user.client.ui.Label;
|
import com.google.gwt.user.client.ui.Label;
|
||||||
import com.google.gwt.user.client.ui.VerticalPanel;
|
import com.google.gwt.user.client.ui.VerticalPanel;
|
||||||
|
import com.sap.sse.gwt.client.async.MarkedAsyncCallback;
|
||||||
|
import com.sap.sse.gwt.client.controls.listedit.StringListEditorComposite;
|
||||||
|
import com.sap.sse.security.DefaultRoles;
|
||||||
import com.sap.sse.security.ui.client.Resources;
|
import com.sap.sse.security.ui.client.Resources;
|
||||||
import com.sap.sse.security.ui.client.StringMessages;
|
import com.sap.sse.security.ui.client.StringMessages;
|
||||||
import com.sap.sse.security.ui.client.UserChangeEventHandler;
|
import com.sap.sse.security.ui.client.UserChangeEventHandler;
|
||||||
|
import com.sap.sse.security.ui.client.UserService;
|
||||||
|
import com.sap.sse.security.ui.client.resources.IconResources;
|
||||||
import com.sap.sse.security.ui.oauth.client.SocialUserDTO;
|
import com.sap.sse.security.ui.oauth.client.SocialUserDTO;
|
||||||
import com.sap.sse.security.ui.shared.AccountDTO;
|
import com.sap.sse.security.ui.shared.AccountDTO;
|
||||||
import com.sap.sse.security.ui.shared.SuccessInfo;
|
import com.sap.sse.security.ui.shared.SuccessInfo;
|
||||||
@@ -32,93 +40,128 @@ import com.sap.sse.security.ui.shared.UserManagementServiceAsync;
|
|||||||
import com.sap.sse.security.ui.shared.UsernamePasswordAccountDTO;
|
import com.sap.sse.security.ui.shared.UsernamePasswordAccountDTO;
|
||||||
|
|
||||||
public class UserDetailsView extends FlowPanel {
|
public class UserDetailsView extends FlowPanel {
|
||||||
private UserManagementServiceAsync userManagementService;
|
|
||||||
|
|
||||||
private List<UserChangeEventHandler> handlers = new ArrayList<>();
|
private List<UserChangeEventHandler> handlers = new ArrayList<>();
|
||||||
|
|
||||||
private final StringMessages stringMessages;
|
private final StringMessages stringMessages;
|
||||||
|
|
||||||
public UserDetailsView(UserManagementServiceAsync userManagementService, UserDTO user, StringMessages stringMessages) {
|
private final Label usernameLabel;
|
||||||
this.stringMessages = stringMessages;
|
private final Label emailLabel;
|
||||||
this.userManagementService = userManagementService;
|
private final StringListEditorComposite rolesEditor;
|
||||||
addStyleName("userDetailsView");
|
private final VerticalPanel accountPanels;
|
||||||
updateUser(user);
|
private final Button deleteButton;
|
||||||
}
|
|
||||||
|
|
||||||
public void updateUser(final UserDTO user) {
|
private UserDTO user;
|
||||||
this.clear();
|
|
||||||
Label title = new Label(stringMessages.userDetails());
|
public UserDetailsView(final UserService userService, UserDTO user, final StringMessages stringMessages) {
|
||||||
if (user == null) {
|
final UserManagementServiceAsync userManagementService = userService.getUserManagementService();
|
||||||
return;
|
this.stringMessages = stringMessages;
|
||||||
|
this.user = user;
|
||||||
|
addStyleName("userDetailsView");
|
||||||
|
List<String> defaultRoleNames = new ArrayList<>();
|
||||||
|
for (DefaultRoles defaultRole : DefaultRoles.values()) {
|
||||||
|
defaultRoleNames.add(defaultRole.name());
|
||||||
}
|
}
|
||||||
|
rolesEditor = new StringListEditorComposite(user==null?Collections.<String>emptySet():user.getRoles(), stringMessages, IconResources.INSTANCE.remove(), defaultRoleNames);
|
||||||
|
rolesEditor.addValueChangeHandler(new ValueChangeHandler<Iterable<String>>() {
|
||||||
|
@Override
|
||||||
|
public void onValueChange(ValueChangeEvent<Iterable<String>> event) {
|
||||||
|
Iterable<String> newRoleList = event.getValue();
|
||||||
|
userManagementService.setRolesForUser(UserDetailsView.this.user.getName(), newRoleList, new MarkedAsyncCallback<SuccessInfo>(
|
||||||
|
new AsyncCallback<SuccessInfo>() {
|
||||||
|
@Override
|
||||||
|
public void onFailure(Throwable caught) {
|
||||||
|
Window.alert(stringMessages.errorUpdatingRoles(UserDetailsView.this.user.getName(), caught.getMessage()));
|
||||||
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public void onSuccess(SuccessInfo result) {
|
||||||
|
if (!result.isSuccessful()) {
|
||||||
|
Window.alert(stringMessages.errorUpdatingRoles(UserDetailsView.this.user.getName(), result.getMessage()));
|
||||||
|
} else {
|
||||||
|
userService.updateUser(/* notify other instances */ true);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}));
|
||||||
|
}
|
||||||
|
});
|
||||||
|
usernameLabel = new Label();
|
||||||
|
emailLabel = new Label();
|
||||||
|
Label title = new Label(stringMessages.userDetails());
|
||||||
title.getElement().getStyle().setFontSize(25, Unit.PX);
|
title.getElement().getStyle().setFontSize(25, Unit.PX);
|
||||||
this.add(title);
|
this.add(title);
|
||||||
|
|
||||||
DecoratorPanel decoratorPanel = new DecoratorPanel();
|
DecoratorPanel decoratorPanel = new DecoratorPanel();
|
||||||
FlowPanel fp = new FlowPanel();
|
FlowPanel fp = new FlowPanel();
|
||||||
fp.setWidth("100%");
|
fp.setWidth("100%");
|
||||||
ImageResourceRenderer renderer = new ImageResourceRenderer();
|
ImageResourceRenderer renderer = new ImageResourceRenderer();
|
||||||
final ImageResource userImageResource = Resources.INSTANCE.userSmall();
|
final ImageResource userImageResource = Resources.INSTANCE.userSmall();
|
||||||
fp.add(new HTML(renderer.render(userImageResource)));
|
fp.add(new HTML(renderer.render(userImageResource)));
|
||||||
Label name = new Label(stringMessages.name() + ": " + user.getName());
|
HorizontalPanel namePanel = new HorizontalPanel();
|
||||||
fp.add(name);
|
fp.add(namePanel);
|
||||||
Label email = new Label(stringMessages.email() + ": " + user.getEmail());
|
namePanel.add(new Label(stringMessages.name()+": "));
|
||||||
fp.add(email);
|
namePanel.add(usernameLabel);
|
||||||
|
HorizontalPanel emailPanel = new HorizontalPanel();
|
||||||
for (AccountDTO a : user.getAccounts()){
|
fp.add(emailPanel);
|
||||||
DecoratorPanel accountPanelDecorator = new DecoratorPanel();
|
emailPanel.add(new Label(stringMessages.email() + ": "));
|
||||||
FlowPanel accountPanelContent = new FlowPanel();
|
emailPanel.add(emailLabel);
|
||||||
accountPanelDecorator.setWidget(accountPanelContent);
|
accountPanels = new VerticalPanel();
|
||||||
accountPanelContent.add(new Label(a.getAccountType() + "-Account"));
|
fp.add(accountPanels);
|
||||||
if (a instanceof UsernamePasswordAccountDTO){
|
|
||||||
accountPanelContent.add(new Label(stringMessages.changePassword()));
|
|
||||||
}
|
|
||||||
else if (a instanceof SocialUserDTO){
|
|
||||||
SocialUserDTO sua = (SocialUserDTO) a;
|
|
||||||
FlexTable table = new FlexTable();
|
|
||||||
int i = 0;
|
|
||||||
for (Entry<String, String> e : sua.getProperties().entrySet()){
|
|
||||||
if (e.getValue() != null){
|
|
||||||
table.setText(i, 0, e.getKey().toLowerCase().replace('_', ' '));
|
|
||||||
table.setText(i, 1, e.getValue());
|
|
||||||
i++;
|
|
||||||
}
|
|
||||||
}
|
|
||||||
accountPanelContent.add(table);
|
|
||||||
}
|
|
||||||
fp.add(accountPanelDecorator);
|
|
||||||
}
|
|
||||||
|
|
||||||
decoratorPanel.setWidget(fp);
|
decoratorPanel.setWidget(fp);
|
||||||
this.add(decoratorPanel);
|
this.add(decoratorPanel);
|
||||||
|
this.add(rolesEditor);
|
||||||
RolesList rolesList = new RolesList(userManagementService, user);
|
deleteButton = new Button(stringMessages.deleteUser(), new ClickHandler() {
|
||||||
rolesList.addUserChangeEventHandler(new UserChangeEventHandler() {
|
|
||||||
@Override
|
|
||||||
public void onUserChange(UserDTO user) {
|
|
||||||
for (UserChangeEventHandler handler : handlers){
|
|
||||||
handler.onUserChange(user);
|
|
||||||
}
|
|
||||||
}
|
|
||||||
});
|
|
||||||
this.add(rolesList);
|
|
||||||
Button delete = new Button(stringMessages.deleteUser(), new ClickHandler() {
|
|
||||||
@Override
|
@Override
|
||||||
public void onClick(ClickEvent event) {
|
public void onClick(ClickEvent event) {
|
||||||
final DeleteUserConfimDialog deleteUserConfimDialog = new DeleteUserConfimDialog(userManagementService,
|
final DeleteUserConfimDialog deleteUserConfimDialog = new DeleteUserConfimDialog(
|
||||||
user.getName(), stringMessages);
|
userManagementService, UserDetailsView.this.user.getName(), stringMessages);
|
||||||
Scheduler.get().scheduleDeferred(new Scheduler.ScheduledCommand() {
|
Scheduler.get().scheduleDeferred(new Scheduler.ScheduledCommand() {
|
||||||
public void execute() {
|
public void execute() {
|
||||||
deleteUserConfimDialog.center();
|
deleteUserConfimDialog.center();
|
||||||
}
|
}
|
||||||
});
|
});
|
||||||
deleteUserConfimDialog.show();
|
deleteUserConfimDialog.show();
|
||||||
for (UserChangeEventHandler handler : handlers){
|
for (UserChangeEventHandler handler : handlers) {
|
||||||
handler.onUserChange(user);
|
handler.onUserChange(UserDetailsView.this.user);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
});
|
});
|
||||||
this.add(delete);
|
this.add(deleteButton);
|
||||||
|
updateUser(user);
|
||||||
|
}
|
||||||
|
|
||||||
|
public void updateUser(final UserDTO user) {
|
||||||
|
this.user = user;
|
||||||
|
deleteButton.setEnabled(user != null);
|
||||||
|
accountPanels.clear();
|
||||||
|
if (user == null) {
|
||||||
|
usernameLabel.setText("");
|
||||||
|
emailLabel.setText("");
|
||||||
|
} else {
|
||||||
|
usernameLabel.setText(user.getName());
|
||||||
|
emailLabel.setText(user.getEmail());
|
||||||
|
for (AccountDTO a : user.getAccounts()) {
|
||||||
|
DecoratorPanel accountPanelDecorator = new DecoratorPanel();
|
||||||
|
FlowPanel accountPanelContent = new FlowPanel();
|
||||||
|
accountPanelDecorator.setWidget(accountPanelContent);
|
||||||
|
accountPanelContent.add(new Label(stringMessages.account(a.getAccountType())));
|
||||||
|
if (a instanceof UsernamePasswordAccountDTO) {
|
||||||
|
accountPanelContent.add(new Label(stringMessages.changePassword()));
|
||||||
|
} else if (a instanceof SocialUserDTO) {
|
||||||
|
SocialUserDTO sua = (SocialUserDTO) a;
|
||||||
|
FlexTable table = new FlexTable();
|
||||||
|
int i = 0;
|
||||||
|
for (Entry<String, String> e : sua.getProperties().entrySet()) {
|
||||||
|
if (e.getValue() != null) {
|
||||||
|
table.setText(i, 0, e.getKey().toLowerCase().replace('_', ' '));
|
||||||
|
table.setText(i, 1, e.getValue());
|
||||||
|
i++;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
accountPanelContent.add(table);
|
||||||
|
}
|
||||||
|
accountPanels.add(accountPanelDecorator);
|
||||||
|
}
|
||||||
|
rolesEditor.setValue(user.getRoles());
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
private static class DeleteUserConfimDialog extends DialogBox {
|
private static class DeleteUserConfimDialog extends DialogBox {
|
||||||
|
|||||||
+4
-2
@@ -22,6 +22,7 @@ import com.google.gwt.view.client.SelectionChangeEvent.Handler;
|
|||||||
import com.google.gwt.view.client.SingleSelectionModel;
|
import com.google.gwt.view.client.SingleSelectionModel;
|
||||||
import com.sap.sse.security.ui.client.StringMessages;
|
import com.sap.sse.security.ui.client.StringMessages;
|
||||||
import com.sap.sse.security.ui.client.UserChangeEventHandler;
|
import com.sap.sse.security.ui.client.UserChangeEventHandler;
|
||||||
|
import com.sap.sse.security.ui.client.UserService;
|
||||||
import com.sap.sse.security.ui.shared.UserDTO;
|
import com.sap.sse.security.ui.shared.UserDTO;
|
||||||
import com.sap.sse.security.ui.shared.UserManagementServiceAsync;
|
import com.sap.sse.security.ui.shared.UserManagementServiceAsync;
|
||||||
|
|
||||||
@@ -33,7 +34,8 @@ public class UserManagementPanel extends DockPanel {
|
|||||||
|
|
||||||
private UserListDataProvider userListDataProvider;
|
private UserListDataProvider userListDataProvider;
|
||||||
|
|
||||||
public UserManagementPanel(final UserManagementServiceAsync userManagementService, final StringMessages stringMessages) {
|
public UserManagementPanel(final UserService userService, final StringMessages stringMessages) {
|
||||||
|
final UserManagementServiceAsync userManagementService = userService.getUserManagementService();
|
||||||
VerticalPanel west = new VerticalPanel();
|
VerticalPanel west = new VerticalPanel();
|
||||||
singleSelectionModel = new SingleSelectionModel<>();
|
singleSelectionModel = new SingleSelectionModel<>();
|
||||||
Button createButton = new Button(stringMessages.createUser(), new ClickHandler() {
|
Button createButton = new Button(stringMessages.createUser(), new ClickHandler() {
|
||||||
@@ -45,7 +47,7 @@ public class UserManagementPanel extends DockPanel {
|
|||||||
west.add(createButton);
|
west.add(createButton);
|
||||||
final UserList userList = new UserList();
|
final UserList userList = new UserList();
|
||||||
userList.setSelectionModel(singleSelectionModel);
|
userList.setSelectionModel(singleSelectionModel);
|
||||||
final UserDetailsView userDetailsView = new UserDetailsView(userManagementService, singleSelectionModel.getSelectedObject(), stringMessages);
|
final UserDetailsView userDetailsView = new UserDetailsView(userService, singleSelectionModel.getSelectedObject(), stringMessages);
|
||||||
add(userDetailsView, DockPanel.CENTER);
|
add(userDetailsView, DockPanel.CENTER);
|
||||||
userDetailsView.addUserChangeEventHandler(new UserChangeEventHandler() {
|
userDetailsView.addUserChangeEventHandler(new UserChangeEventHandler() {
|
||||||
@Override
|
@Override
|
||||||
|
|||||||
+3
@@ -25,4 +25,7 @@ public interface IconResources extends ClientBundle {
|
|||||||
|
|
||||||
@Source("../../images/delete.png")
|
@Source("../../images/delete.png")
|
||||||
public ImageResource delete();
|
public ImageResource delete();
|
||||||
|
|
||||||
|
@Source("com/sap/sse/gwt/client/images/remove.png")
|
||||||
|
public ImageResource remove();
|
||||||
}
|
}
|
||||||
+17
-3
@@ -4,9 +4,11 @@ import java.util.ArrayList;
|
|||||||
import java.util.Collection;
|
import java.util.Collection;
|
||||||
import java.util.Collections;
|
import java.util.Collections;
|
||||||
import java.util.Comparator;
|
import java.util.Comparator;
|
||||||
|
import java.util.HashSet;
|
||||||
import java.util.List;
|
import java.util.List;
|
||||||
import java.util.Map;
|
import java.util.Map;
|
||||||
import java.util.Map.Entry;
|
import java.util.Map.Entry;
|
||||||
|
import java.util.Set;
|
||||||
import java.util.TreeMap;
|
import java.util.TreeMap;
|
||||||
import java.util.concurrent.Callable;
|
import java.util.concurrent.Callable;
|
||||||
import java.util.concurrent.ExecutionException;
|
import java.util.concurrent.ExecutionException;
|
||||||
@@ -24,6 +26,7 @@ import org.osgi.util.tracker.ServiceTracker;
|
|||||||
|
|
||||||
import com.google.gwt.user.server.rpc.RemoteServiceServlet;
|
import com.google.gwt.user.server.rpc.RemoteServiceServlet;
|
||||||
import com.sap.sailing.domain.common.impl.NaturalComparator;
|
import com.sap.sailing.domain.common.impl.NaturalComparator;
|
||||||
|
import com.sap.sse.common.Util;
|
||||||
import com.sap.sse.security.Credential;
|
import com.sap.sse.security.Credential;
|
||||||
import com.sap.sse.security.DefaultRoles;
|
import com.sap.sse.security.DefaultRoles;
|
||||||
import com.sap.sse.security.SecurityService;
|
import com.sap.sse.security.SecurityService;
|
||||||
@@ -157,7 +160,7 @@ public class UserManagementServiceImpl extends RemoteServiceServlet implements U
|
|||||||
}
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
public SuccessInfo addRoleForUser(String username, String role) {
|
public SuccessInfo setRolesForUser(String username, Iterable<String> roles) {
|
||||||
Subject currentSubject = SecurityUtils.getSubject();
|
Subject currentSubject = SecurityUtils.getSubject();
|
||||||
if (currentSubject.hasRole(DefaultRoles.ADMIN.getRolename())) {
|
if (currentSubject.hasRole(DefaultRoles.ADMIN.getRolename())) {
|
||||||
User u = getSecurityService().getUserByName(username);
|
User u = getSecurityService().getUserByName(username);
|
||||||
@@ -165,8 +168,19 @@ public class UserManagementServiceImpl extends RemoteServiceServlet implements U
|
|||||||
return new SuccessInfo(false, "User does not exist.", /* redirectURL */ null, null);
|
return new SuccessInfo(false, "User does not exist.", /* redirectURL */ null, null);
|
||||||
}
|
}
|
||||||
try {
|
try {
|
||||||
getSecurityService().addRoleForUser(username, role);
|
Set<String> rolesToRemove = new HashSet<>();
|
||||||
return new SuccessInfo(true, "Added role: " + role + ".", /* redirectURL */ null, createUserDTOFromUser(u));
|
Util.addAll(u.getRoles(), rolesToRemove);
|
||||||
|
Util.removeAll(roles, rolesToRemove);
|
||||||
|
for (String roleToRemove : rolesToRemove) {
|
||||||
|
getSecurityService().removeRoleFromUser(username, roleToRemove);
|
||||||
|
}
|
||||||
|
Set<String> rolesToAdd = new HashSet<>();
|
||||||
|
Util.addAll(roles, rolesToAdd);
|
||||||
|
Util.removeAll(u.getRoles(), rolesToAdd);
|
||||||
|
for (String roleToAdd : rolesToAdd) {
|
||||||
|
getSecurityService().addRoleForUser(username, roleToAdd);
|
||||||
|
}
|
||||||
|
return new SuccessInfo(true, "Added role: " + roles + ".", /* redirectURL */ null, createUserDTOFromUser(u));
|
||||||
} catch (UserManagementException e) {
|
} catch (UserManagementException e) {
|
||||||
return new SuccessInfo(false, e.getMessage(), /* redirectURL */ null, null);
|
return new SuccessInfo(false, e.getMessage(), /* redirectURL */ null, null);
|
||||||
}
|
}
|
||||||
|
|||||||
+1
-1
@@ -22,7 +22,7 @@ public interface UserManagementService extends RemoteService {
|
|||||||
|
|
||||||
SuccessInfo logout();
|
SuccessInfo logout();
|
||||||
|
|
||||||
SuccessInfo addRoleForUser(String username, String role);
|
SuccessInfo setRolesForUser(String username, Iterable<String> roles);
|
||||||
|
|
||||||
Map<String, String> getSettings();
|
Map<String, String> getSettings();
|
||||||
|
|
||||||
|
|||||||
+1
-1
@@ -19,7 +19,7 @@ public interface UserManagementServiceAsync {
|
|||||||
|
|
||||||
void getFilteredSortedUserList(String filter, AsyncCallback<Collection<UserDTO>> callback);
|
void getFilteredSortedUserList(String filter, AsyncCallback<Collection<UserDTO>> callback);
|
||||||
|
|
||||||
void addRoleForUser(String username, String role, AsyncCallback<SuccessInfo> callback);
|
void setRolesForUser(String username, Iterable<String> roles, AsyncCallback<SuccessInfo> callback);
|
||||||
|
|
||||||
void deleteUser(String username, AsyncCallback<SuccessInfo> callback);
|
void deleteUser(String username, AsyncCallback<SuccessInfo> callback);
|
||||||
|
|
||||||
|
|||||||
+1
-1
@@ -49,7 +49,7 @@ public class UserManagementEntryPoint implements EntryPoint {
|
|||||||
UserManagementEntryPoint.this.user = user;
|
UserManagementEntryPoint.this.user = user;
|
||||||
}
|
}
|
||||||
});
|
});
|
||||||
UserManagementPanel userManagementPanel = new UserManagementPanel(userManagementService, stringMessages);
|
UserManagementPanel userManagementPanel = new UserManagementPanel(userService, stringMessages);
|
||||||
center.add(new ScrollPanel(userManagementPanel), stringMessages.users());
|
center.add(new ScrollPanel(userManagementPanel), stringMessages.users());
|
||||||
final SettingsPanel settingsPanel = new SettingsPanel(userManagementService, stringMessages);
|
final SettingsPanel settingsPanel = new SettingsPanel(userManagementService, stringMessages);
|
||||||
center.add(new ScrollPanel(settingsPanel), stringMessages.settings());
|
center.add(new ScrollPanel(settingsPanel), stringMessages.settings());
|
||||||
|
|||||||
+1
-1
@@ -71,7 +71,7 @@ public class UserStoreImpl implements UserStore {
|
|||||||
throw new UserManagementException(UserManagementException.USER_ALREADY_EXISTS);
|
throw new UserManagementException(UserManagementException.USER_ALREADY_EXISTS);
|
||||||
}
|
}
|
||||||
User user = new User(name, email, accounts);
|
User user = new User(name, email, accounts);
|
||||||
logger.info("Creating user: " + user.toString());
|
logger.info("Creating user: " + user);
|
||||||
mongoObjectFactory.storeUser(user);
|
mongoObjectFactory.storeUser(user);
|
||||||
users.put(name, user);
|
users.put(name, user);
|
||||||
return user;
|
return user;
|
||||||
|
|||||||
+14
-14
@@ -39,7 +39,7 @@ public class MongoObjectFactoryImpl implements MongoObjectFactory {
|
|||||||
dbUser.put(FieldNames.User.ACCOUNTS.name(), createAccountMapObject(user.getAllAccounts()));
|
dbUser.put(FieldNames.User.ACCOUNTS.name(), createAccountMapObject(user.getAllAccounts()));
|
||||||
dbUser.put(FieldNames.User.ROLES.name(), user.getRoles());
|
dbUser.put(FieldNames.User.ROLES.name(), user.getRoles());
|
||||||
|
|
||||||
usersCollection.update(query, dbUser, /* upsrt */ true, /* multi */ false, WriteConcern.SAFE);
|
usersCollection.update(query, dbUser, /* upsrt */true, /* multi */false, WriteConcern.SAFE);
|
||||||
}
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
@@ -51,25 +51,25 @@ public class MongoObjectFactoryImpl implements MongoObjectFactory {
|
|||||||
usersCollection.remove(dbUser);
|
usersCollection.remove(dbUser);
|
||||||
}
|
}
|
||||||
|
|
||||||
private DBObject createAccountMapObject(Map<AccountType, Account> accounts){
|
private DBObject createAccountMapObject(Map<AccountType, Account> accounts) {
|
||||||
DBObject dbAccounts = new BasicDBObject();
|
DBObject dbAccounts = new BasicDBObject();
|
||||||
for (Entry<AccountType, Account> e : accounts.entrySet()){
|
for (Entry<AccountType, Account> e : accounts.entrySet()) {
|
||||||
dbAccounts.put(e.getKey().name(), createAccountObject(e.getValue()));
|
dbAccounts.put(e.getKey().name(), createAccountObject(e.getValue()));
|
||||||
}
|
}
|
||||||
return dbAccounts;
|
return dbAccounts;
|
||||||
}
|
}
|
||||||
|
|
||||||
private DBObject createAccountObject(Account a){
|
private DBObject createAccountObject(Account a) {
|
||||||
DBObject dbAccount = new BasicDBObject();
|
DBObject dbAccount = new BasicDBObject();
|
||||||
if (a instanceof UsernamePasswordAccount){
|
if (a instanceof UsernamePasswordAccount) {
|
||||||
UsernamePasswordAccount upa = (UsernamePasswordAccount) a;
|
UsernamePasswordAccount upa = (UsernamePasswordAccount) a;
|
||||||
dbAccount.put(FieldNames.UsernamePassword.NAME.name(), upa.getName());
|
dbAccount.put(FieldNames.UsernamePassword.NAME.name(), upa.getName());
|
||||||
dbAccount.put(FieldNames.UsernamePassword.SALTED_PW.name(), upa.getSaltedPassword());
|
dbAccount.put(FieldNames.UsernamePassword.SALTED_PW.name(), upa.getSaltedPassword());
|
||||||
dbAccount.put(FieldNames.UsernamePassword.SALT.name(),((SimpleByteSource) upa.getSalt()).getBytes());
|
dbAccount.put(FieldNames.UsernamePassword.SALT.name(), ((SimpleByteSource) upa.getSalt()).getBytes());
|
||||||
}
|
}
|
||||||
if (a instanceof SocialUserAccount){
|
if (a instanceof SocialUserAccount) {
|
||||||
SocialUserAccount account = (SocialUserAccount) a;
|
SocialUserAccount account = (SocialUserAccount) a;
|
||||||
for (Social s : FieldNames.Social.values()){
|
for (Social s : FieldNames.Social.values()) {
|
||||||
dbAccount.put(s.name(), account.getProperty(s.name()));
|
dbAccount.put(s.name(), account.getProperty(s.name()));
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
@@ -85,7 +85,7 @@ public class MongoObjectFactoryImpl implements MongoObjectFactory {
|
|||||||
dbSettings.put(FieldNames.Settings.NAME.name(), FieldNames.Settings.VALUES.name());
|
dbSettings.put(FieldNames.Settings.NAME.name(), FieldNames.Settings.VALUES.name());
|
||||||
dbSettings.put(FieldNames.Settings.MAP.name(), createSettingsMapObject(settings));
|
dbSettings.put(FieldNames.Settings.MAP.name(), createSettingsMapObject(settings));
|
||||||
|
|
||||||
settingCollection.update(query, dbSettings, /* upsrt */ true, /* multi */ false, WriteConcern.SAFE);
|
settingCollection.update(query, dbSettings, /* upsrt */true, /* multi */false, WriteConcern.SAFE);
|
||||||
}
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
@@ -97,20 +97,20 @@ public class MongoObjectFactoryImpl implements MongoObjectFactory {
|
|||||||
dbSettingTypes.put(FieldNames.Settings.NAME.name(), FieldNames.Settings.TYPES.name());
|
dbSettingTypes.put(FieldNames.Settings.NAME.name(), FieldNames.Settings.TYPES.name());
|
||||||
dbSettingTypes.put(FieldNames.Settings.MAP.name(), createSettingTypesMapObject(settingTypes));
|
dbSettingTypes.put(FieldNames.Settings.MAP.name(), createSettingTypesMapObject(settingTypes));
|
||||||
|
|
||||||
settingCollection.update(query, dbSettingTypes, /* upsrt */ true, /* multi */ false, WriteConcern.SAFE);
|
settingCollection.update(query, dbSettingTypes, /* upsrt */true, /* multi */false, WriteConcern.SAFE);
|
||||||
}
|
}
|
||||||
|
|
||||||
private DBObject createSettingsMapObject(Map<String, Object> settings){
|
private DBObject createSettingsMapObject(Map<String, Object> settings) {
|
||||||
DBObject dbSettings = new BasicDBObject();
|
DBObject dbSettings = new BasicDBObject();
|
||||||
for (Entry<String, Object> e : settings.entrySet()){
|
for (Entry<String, Object> e : settings.entrySet()) {
|
||||||
dbSettings.put(e.getKey(), e.getValue());
|
dbSettings.put(e.getKey(), e.getValue());
|
||||||
}
|
}
|
||||||
return dbSettings;
|
return dbSettings;
|
||||||
}
|
}
|
||||||
|
|
||||||
private DBObject createSettingTypesMapObject(Map<String, Class<?>> settingTypes){
|
private DBObject createSettingTypesMapObject(Map<String, Class<?>> settingTypes) {
|
||||||
DBObject dbSettingTypes = new BasicDBObject();
|
DBObject dbSettingTypes = new BasicDBObject();
|
||||||
for (Entry<String, Class<?>> e : settingTypes.entrySet()){
|
for (Entry<String, Class<?>> e : settingTypes.entrySet()) {
|
||||||
dbSettingTypes.put(e.getKey(), e.getValue().getName());
|
dbSettingTypes.put(e.getKey(), e.getValue().getName());
|
||||||
}
|
}
|
||||||
return dbSettingTypes;
|
return dbSettingTypes;
|
||||||
|
|||||||
Reference in new issue
Block a user