From 2b35cd5a62f0d551c36e5e4560dd2dc2f91bbf5e Mon Sep 17 00:00:00 2001
From: Axel Uhl
Date: Wed, 13 Dec 2017 11:26:37 +0100
Subject: [PATCH] moved editIcon to sse; implemented first version of a
RolesPanel
Change-Id: I1cccf21abb2fcca3619d827a27eda2ca0625f54e
---
.../AccessControlledActionsColumn.java | 3 +-
.../adminconsole/AdminConsoleEntryPoint.java | 5 +-
.../adminconsole/AdminConsoleResources.java | 3 -
.../CompetitorConfigImagesBarCell.java | 5 +-
.../CompetitorDescriptorTableWrapper.java | 3 +-
.../adminconsole/CompetitorTableWrapper.java | 1 +
.../adminconsole/CourseManagementWidget.java | 1 +
...anagementWidgetWaypointsImagesBarCell.java | 2 +-
.../EventConfigImagesBarCell.java | 8 +-
.../ui/adminconsole/EventListComposite.java | 0
.../ExpeditionDeviceConfigurationsPanel.java | 6 +-
.../ui/adminconsole/IgtimiAccountsPanel.java | 3 +-
.../ImageConfigImagesBarCell.java | 6 +-
.../ui/adminconsole/ImagesListComposite.java | 1 +
.../LeaderboardConfigImagesBarCell.java | 4 +-
.../adminconsole/LeaderboardConfigPanel.java | 1 +
.../LeaderboardGroupConfigImagesBarCell.java | 6 +-
.../LeaderboardGroupConfigPanel.java | 1 +
.../LeaderboardRaceConfigImagesBarCell.java | 4 +-
.../ui/adminconsole/MediaActionBarCell.java | 2 +-
.../gwt/ui/adminconsole/MediaPanel.java | 1 +
.../RaceLogCourseManagementWidget.java | 1 +
...rseDefinitionDialogMarksImagesBarCell.java | 2 +-
...ogTrackingDeviceMappingsImagesBarCell.java | 2 +-
...gTrackingEventManagementImagesBarCell.java | 2 +-
...ckingEventManagementRaceImagesBarCell.java | 5 +-
.../RegattaConfigImagesBarCell.java | 6 +-
.../adminconsole/RegattaDetailsComposite.java | 1 +
.../ui/adminconsole/RegattaListComposite.java | 1 +
...egattaLogTrackingDeviceMappingsDialog.java | 1 +
.../SeriesConfigImagesBarCell.java | 6 +-
...martphoneTrackingEventManagementPanel.java | 1 +
.../VideoConfigImagesBarCell.java | 6 +-
.../ui/adminconsole/VideosListComposite.java | 1 +
.../AdminConsoleTableResources.java | 6 +-
.../com/sap/sse/gwt}/client/images/edit.png | Bin
.../com/sap/sse/gwt/client/IconResources.java | 3 +
.../gwt/client/celltable}/ImagesBarCell.java | 6 +-
.../client/celltable}/ImagesBarColumn.java | 3 +-
.../panels/AbstractFilterablePanel.java | 12 +-
.../LabeledAbstractFilterablePanel.java | 29 +--
.../sse/security/ui/client/IconResources.java | 3 -
.../ui/client/SecurityTableResources.css | 20 ++
.../ui/client/SecurityTableResources.java | 9 +
.../ui/client/SecurityTableStyle.java | 20 ++
.../client/component/RoleImagesBarCell.java | 29 +++
.../ui/client/component/RolesPanel.java | 183 +++++++++++++++++-
.../ui/client/component/SettingsPanel.java | 4 +-
.../client/component/UserManagementPanel.java | 28 ++-
.../ui/client/i18n/StringMessages.java | 6 +
.../ui/client/i18n/StringMessages.properties | 8 +-
.../client/i18n/StringMessages_de.properties | 8 +-
.../UserManagementEntryPoint.java | 6 +-
.../sse/security/ui/client/images/delete.png | Bin 583 -> 0 bytes
54 files changed, 386 insertions(+), 98 deletions(-)
mode change 100644 => 100755 java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/ui/adminconsole/EventListComposite.java
rename java/{com.sap.sailing.gwt.ui/src/main/resources/com/sap/sailing/gwt/ui => com.sap.sse.gwt/resources/com/sap/sse/gwt}/client/images/edit.png (100%)
mode change 100644 => 100755
rename java/{com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/ui/client/shared/controls => com.sap.sse.gwt/src/com/sap/sse/gwt/client/celltable}/ImagesBarCell.java (96%)
rename java/{com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/ui/adminconsole => com.sap.sse.gwt/src/com/sap/sse/gwt/client/celltable}/ImagesBarColumn.java (72%)
create mode 100755 java/com.sap.sse.security.ui/src/main/java/com/sap/sse/security/ui/client/SecurityTableResources.css
create mode 100755 java/com.sap.sse.security.ui/src/main/java/com/sap/sse/security/ui/client/SecurityTableResources.java
create mode 100755 java/com.sap.sse.security.ui/src/main/java/com/sap/sse/security/ui/client/SecurityTableStyle.java
create mode 100755 java/com.sap.sse.security.ui/src/main/java/com/sap/sse/security/ui/client/component/RoleImagesBarCell.java
delete mode 100644 java/com.sap.sse.security.ui/src/main/resources/com/sap/sse/security/ui/client/images/delete.png
diff --git a/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/ui/adminconsole/AccessControlledActionsColumn.java b/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/ui/adminconsole/AccessControlledActionsColumn.java
index 94b17dacac8..758fd36c4c5 100755
--- a/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/ui/adminconsole/AccessControlledActionsColumn.java
+++ b/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/ui/adminconsole/AccessControlledActionsColumn.java
@@ -2,7 +2,8 @@ package com.sap.sailing.gwt.ui.adminconsole;
import java.util.ArrayList;
-import com.sap.sailing.gwt.ui.client.shared.controls.ImagesBarCell;
+import com.sap.sse.gwt.client.celltable.ImagesBarCell;
+import com.sap.sse.gwt.client.celltable.ImagesBarColumn;
import com.sap.sse.security.shared.PermissionBuilder.Action;
public abstract class AccessControlledActionsColumn extends ImagesBarColumn {
diff --git a/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/ui/adminconsole/AdminConsoleEntryPoint.java b/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/ui/adminconsole/AdminConsoleEntryPoint.java
index 5402a11e828..982c5abe381 100755
--- a/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/ui/adminconsole/AdminConsoleEntryPoint.java
+++ b/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/ui/adminconsole/AdminConsoleEntryPoint.java
@@ -31,6 +31,7 @@ import com.sap.sailing.gwt.ui.shared.RegattaDTO;
import com.sap.sailing.gwt.ui.shared.SecurityStylesheetResources;
import com.sap.sailing.gwt.ui.shared.StrippedLeaderboardDTO;
import com.sap.sse.gwt.adminconsole.AdminConsolePanel;
+import com.sap.sse.gwt.adminconsole.AdminConsoleTableResources;
import com.sap.sse.gwt.adminconsole.DefaultRefreshableAdminConsolePanel;
import com.sap.sse.gwt.adminconsole.ReplicationPanel;
import com.sap.sse.gwt.client.EntryPointHelper;
@@ -48,6 +49,8 @@ import com.sap.sse.security.ui.client.component.UserManagementPanel;
import com.sap.sse.security.ui.client.i18n.StringMessages;
public class AdminConsoleEntryPoint extends AbstractSailingEntryPoint implements RegattaRefresher, LeaderboardsRefresher, LeaderboardGroupsRefresher {
+ private final AdminConsoleTableResources tableResources = GWT.create(AdminConsoleTableResources.class);
+
private Set regattasDisplayers;
private Set leaderboardsDisplayers;
private Set leaderboardGroupsDisplayers;
@@ -280,7 +283,7 @@ public class AdminConsoleEntryPoint extends AbstractSailingEntryPoint implements
getStringMessages().localServer(), Permission.MANAGE_LOCAL_SERVER_INSTANCE);
final UserManagementPanel userManagementPanel = new UserManagementPanel(getUserService(), StringMessages.INSTANCE,
- Arrays.asList(Permission.values()), this);
+ Arrays.asList(Permission.values()), this, tableResources);
panel.addToTabPanel(advancedTabPanel,
new DefaultRefreshableAdminConsolePanel(userManagementPanel) {
@Override
diff --git a/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/ui/adminconsole/AdminConsoleResources.java b/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/ui/adminconsole/AdminConsoleResources.java
index b32145dadd6..47c041be1ed 100755
--- a/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/ui/adminconsole/AdminConsoleResources.java
+++ b/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/ui/adminconsole/AdminConsoleResources.java
@@ -7,9 +7,6 @@ interface AdminConsoleResources extends ClientBundle {
@Source("com/sap/sailing/gwt/ui/client/images/settingsActionIcon.png")
ImageResource settingsActionIcon();
- @Source("com/sap/sailing/gwt/ui/client/images/edit.png")
- ImageResource editIcon();
-
@Source("com/sap/sailing/gwt/ui/client/images/import.png")
ImageResource importIcon();
diff --git a/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/ui/adminconsole/CompetitorConfigImagesBarCell.java b/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/ui/adminconsole/CompetitorConfigImagesBarCell.java
index 8e0818b1bb6..99be7f48429 100755
--- a/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/ui/adminconsole/CompetitorConfigImagesBarCell.java
+++ b/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/ui/adminconsole/CompetitorConfigImagesBarCell.java
@@ -5,7 +5,8 @@ import java.util.Arrays;
import com.google.gwt.core.client.GWT;
import com.google.gwt.text.shared.SafeHtmlRenderer;
import com.sap.sailing.gwt.ui.client.StringMessages;
-import com.sap.sailing.gwt.ui.client.shared.controls.ImagesBarCell;
+import com.sap.sse.gwt.client.IconResources;
+import com.sap.sse.gwt.client.celltable.ImagesBarCell;
public class CompetitorConfigImagesBarCell extends ImagesBarCell {
static final String ACTION_EDIT = "ACTION_EDIT";
@@ -26,7 +27,7 @@ public class CompetitorConfigImagesBarCell extends ImagesBarCell {
@Override
protected Iterable getImageSpecs() {
return Arrays.asList(
- new ImageSpec(ACTION_EDIT, stringMessages.actionEdit(), makeImagePrototype(resources.editIcon())),
+ new ImageSpec(ACTION_EDIT, stringMessages.actionEdit(), makeImagePrototype(IconResources.INSTANCE.editIcon())),
new ImageSpec(ACTION_REFRESH, stringMessages.reload(), makeImagePrototype(resources.reloadIcon()))
);
}
diff --git a/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/ui/adminconsole/CompetitorDescriptorTableWrapper.java b/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/ui/adminconsole/CompetitorDescriptorTableWrapper.java
index de6852e47e0..69362e038a4 100644
--- a/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/ui/adminconsole/CompetitorDescriptorTableWrapper.java
+++ b/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/ui/adminconsole/CompetitorDescriptorTableWrapper.java
@@ -21,11 +21,12 @@ import com.sap.sailing.domain.common.dto.CompetitorDTO;
import com.sap.sailing.gwt.ui.client.FlagImageResolverImpl;
import com.sap.sailing.gwt.ui.client.SailingServiceAsync;
import com.sap.sailing.gwt.ui.client.StringMessages;
-import com.sap.sailing.gwt.ui.client.shared.controls.ImagesBarCell;
import com.sap.sse.common.CountryCode;
import com.sap.sse.common.util.NaturalComparator;
import com.sap.sse.gwt.client.ErrorReporter;
import com.sap.sse.gwt.client.celltable.EntityIdentityComparator;
+import com.sap.sse.gwt.client.celltable.ImagesBarCell;
+import com.sap.sse.gwt.client.celltable.ImagesBarColumn;
import com.sap.sse.gwt.client.celltable.RefreshableSelectionModel;
import com.sap.sse.gwt.client.panels.LabeledAbstractFilterablePanel;
diff --git a/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/ui/adminconsole/CompetitorTableWrapper.java b/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/ui/adminconsole/CompetitorTableWrapper.java
index d99d30f2e24..239b808c455 100644
--- a/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/ui/adminconsole/CompetitorTableWrapper.java
+++ b/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/ui/adminconsole/CompetitorTableWrapper.java
@@ -30,6 +30,7 @@ import com.sap.sse.common.Util;
import com.sap.sse.common.util.NaturalComparator;
import com.sap.sse.gwt.client.ErrorReporter;
import com.sap.sse.gwt.client.celltable.EntityIdentityComparator;
+import com.sap.sse.gwt.client.celltable.ImagesBarColumn;
import com.sap.sse.gwt.client.celltable.RefreshableSelectionModel;
import com.sap.sse.gwt.client.dialog.DataEntryDialog.DialogCallback;
import com.sap.sse.gwt.client.panels.LabeledAbstractFilterablePanel;
diff --git a/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/ui/adminconsole/CourseManagementWidget.java b/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/ui/adminconsole/CourseManagementWidget.java
index f9a530db65b..8af99f97c6e 100644
--- a/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/ui/adminconsole/CourseManagementWidget.java
+++ b/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/ui/adminconsole/CourseManagementWidget.java
@@ -31,6 +31,7 @@ import com.sap.sailing.gwt.ui.shared.WaypointDTO;
import com.sap.sse.common.Util;
import com.sap.sse.gwt.adminconsole.AdminConsoleTableResources;
import com.sap.sse.gwt.client.ErrorReporter;
+import com.sap.sse.gwt.client.celltable.ImagesBarColumn;
import com.sap.sse.gwt.client.celltable.RefreshableMultiSelectionModel;
import com.sap.sse.gwt.client.celltable.RefreshableSingleSelectionModel;
import com.sap.sse.gwt.client.dialog.DataEntryDialog;
diff --git a/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/ui/adminconsole/CourseManagementWidgetWaypointsImagesBarCell.java b/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/ui/adminconsole/CourseManagementWidgetWaypointsImagesBarCell.java
index f2456b771ac..8d7895653c5 100644
--- a/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/ui/adminconsole/CourseManagementWidgetWaypointsImagesBarCell.java
+++ b/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/ui/adminconsole/CourseManagementWidgetWaypointsImagesBarCell.java
@@ -3,8 +3,8 @@ package com.sap.sailing.gwt.ui.adminconsole;
import java.util.ArrayList;
import com.sap.sailing.gwt.ui.client.StringMessages;
-import com.sap.sailing.gwt.ui.client.shared.controls.ImagesBarCell;
import com.sap.sse.gwt.client.IconResources;
+import com.sap.sse.gwt.client.celltable.ImagesBarCell;
public class CourseManagementWidgetWaypointsImagesBarCell extends ImagesBarCell {
public static final String ACTION_DELETE = "ACTION_DELETE";
diff --git a/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/ui/adminconsole/EventConfigImagesBarCell.java b/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/ui/adminconsole/EventConfigImagesBarCell.java
index b5bc2115502..bbb67265113 100644
--- a/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/ui/adminconsole/EventConfigImagesBarCell.java
+++ b/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/ui/adminconsole/EventConfigImagesBarCell.java
@@ -2,16 +2,14 @@ package com.sap.sailing.gwt.ui.adminconsole;
import java.util.Arrays;
-import com.google.gwt.core.client.GWT;
import com.google.gwt.text.shared.SafeHtmlRenderer;
import com.sap.sailing.gwt.ui.client.StringMessages;
-import com.sap.sailing.gwt.ui.client.shared.controls.ImagesBarCell;
import com.sap.sse.gwt.client.IconResources;
+import com.sap.sse.gwt.client.celltable.ImagesBarCell;
import com.sap.sse.security.shared.PermissionBuilder.DefaultActions;
public class EventConfigImagesBarCell extends ImagesBarCell {
private final StringMessages stringMessages;
- private static AdminConsoleResources resources = GWT.create(AdminConsoleResources.class);
public EventConfigImagesBarCell(StringMessages stringMessages) {
super();
@@ -26,8 +24,8 @@ public class EventConfigImagesBarCell extends ImagesBarCell {
@Override
protected Iterable getImageSpecs() {
return Arrays.asList(
- new ImageSpec(DefaultActions.EDIT, stringMessages.actionEdit(), makeImagePrototype(resources.editIcon())),
- new ImageSpec(DefaultActions.REMOVE, stringMessages.actionRemove(), makeImagePrototype(IconResources.INSTANCE.removeIcon()))
+ new ImageSpec(DefaultActions.EDIT.name(), stringMessages.actionEdit(), makeImagePrototype(IconResources.INSTANCE.editIcon())),
+ new ImageSpec(DefaultActions.REMOVE.name(), stringMessages.actionRemove(), makeImagePrototype(IconResources.INSTANCE.removeIcon()))
);
}
}
\ No newline at end of file
diff --git a/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/ui/adminconsole/EventListComposite.java b/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/ui/adminconsole/EventListComposite.java
old mode 100644
new mode 100755
diff --git a/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/ui/adminconsole/ExpeditionDeviceConfigurationsPanel.java b/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/ui/adminconsole/ExpeditionDeviceConfigurationsPanel.java
index 8686028cc2c..5cd2d349006 100755
--- a/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/ui/adminconsole/ExpeditionDeviceConfigurationsPanel.java
+++ b/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/ui/adminconsole/ExpeditionDeviceConfigurationsPanel.java
@@ -32,13 +32,14 @@ import com.google.gwt.view.client.ListDataProvider;
import com.sap.sailing.expeditionconnector.ExpeditionDeviceConfiguration;
import com.sap.sailing.gwt.ui.client.SailingServiceAsync;
import com.sap.sailing.gwt.ui.client.StringMessages;
-import com.sap.sailing.gwt.ui.client.shared.controls.ImagesBarCell;
import com.sap.sse.common.util.NaturalComparator;
import com.sap.sse.gwt.adminconsole.AdminConsoleTableResources;
import com.sap.sse.gwt.client.ErrorReporter;
import com.sap.sse.gwt.client.IconResources;
import com.sap.sse.gwt.client.celltable.BaseCelltable;
import com.sap.sse.gwt.client.celltable.EntityIdentityComparator;
+import com.sap.sse.gwt.client.celltable.ImagesBarCell;
+import com.sap.sse.gwt.client.celltable.ImagesBarColumn;
import com.sap.sse.gwt.client.celltable.RefreshableSingleSelectionModel;
import com.sap.sse.gwt.client.dialog.DataEntryDialog;
import com.sap.sse.gwt.client.panels.LabeledAbstractFilterablePanel;
@@ -50,7 +51,6 @@ public class ExpeditionDeviceConfigurationsPanel extends FlowPanel {
private final CellTable allDeviceConfigurations;
private final LabeledAbstractFilterablePanel filterDeviceConfigurationsPanel;
private final RefreshableSingleSelectionModel refreshableDeviceConfigurationsSelectionModel;
- private static AdminConsoleResources resources = GWT.create(AdminConsoleResources.class);
public static class DeviceConfigurationImagesBarCell extends ImagesBarCell {
public static final String ACTION_REMOVE = "ACTION_REMOVE";
@@ -70,7 +70,7 @@ public class ExpeditionDeviceConfigurationsPanel extends FlowPanel {
@Override
protected Iterable getImageSpecs() {
return Arrays.asList(
- new ImageSpec(ACTION_EDIT, stringMessages.actionEdit(), makeImagePrototype(resources.editIcon())),
+ new ImageSpec(ACTION_EDIT, stringMessages.actionEdit(), makeImagePrototype(IconResources.INSTANCE.editIcon())),
new ImageSpec(ACTION_REMOVE, stringMessages.actionRemove(), makeImagePrototype(IconResources.INSTANCE.removeIcon())));
}
}
diff --git a/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/ui/adminconsole/IgtimiAccountsPanel.java b/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/ui/adminconsole/IgtimiAccountsPanel.java
index b617d217290..58dfb2f4025 100755
--- a/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/ui/adminconsole/IgtimiAccountsPanel.java
+++ b/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/ui/adminconsole/IgtimiAccountsPanel.java
@@ -36,12 +36,13 @@ import com.google.gwt.view.client.SelectionChangeEvent;
import com.google.gwt.view.client.SelectionChangeEvent.Handler;
import com.sap.sailing.gwt.ui.client.SailingServiceAsync;
import com.sap.sailing.gwt.ui.client.StringMessages;
-import com.sap.sailing.gwt.ui.client.shared.controls.ImagesBarCell;
import com.sap.sse.common.util.NaturalComparator;
import com.sap.sse.gwt.adminconsole.AdminConsoleTableResources;
import com.sap.sse.gwt.client.ErrorReporter;
import com.sap.sse.gwt.client.IconResources;
import com.sap.sse.gwt.client.celltable.BaseCelltable;
+import com.sap.sse.gwt.client.celltable.ImagesBarCell;
+import com.sap.sse.gwt.client.celltable.ImagesBarColumn;
import com.sap.sse.gwt.client.celltable.RefreshableSingleSelectionModel;
import com.sap.sse.gwt.client.dialog.DataEntryDialog;
import com.sap.sse.gwt.client.panels.LabeledAbstractFilterablePanel;
diff --git a/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/ui/adminconsole/ImageConfigImagesBarCell.java b/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/ui/adminconsole/ImageConfigImagesBarCell.java
index be162a0fd4e..9dc9f0e4f2b 100644
--- a/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/ui/adminconsole/ImageConfigImagesBarCell.java
+++ b/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/ui/adminconsole/ImageConfigImagesBarCell.java
@@ -2,17 +2,15 @@ package com.sap.sailing.gwt.ui.adminconsole;
import java.util.Arrays;
-import com.google.gwt.core.client.GWT;
import com.google.gwt.text.shared.SafeHtmlRenderer;
import com.sap.sailing.gwt.ui.client.StringMessages;
-import com.sap.sailing.gwt.ui.client.shared.controls.ImagesBarCell;
import com.sap.sse.gwt.client.IconResources;
+import com.sap.sse.gwt.client.celltable.ImagesBarCell;
public class ImageConfigImagesBarCell extends ImagesBarCell {
static final String ACTION_REMOVE = "ACTION_REMOVE";
static final String ACTION_EDIT = "ACTION_EDIT";
private final StringMessages stringMessages;
- private static AdminConsoleResources resources = GWT.create(AdminConsoleResources.class);
public ImageConfigImagesBarCell(StringMessages stringMessages) {
super();
@@ -27,7 +25,7 @@ public class ImageConfigImagesBarCell extends ImagesBarCell {
@Override
protected Iterable getImageSpecs() {
return Arrays.asList(
- new ImageSpec(ACTION_EDIT, stringMessages.actionEdit(), makeImagePrototype(resources.editIcon())),
+ new ImageSpec(ACTION_EDIT, stringMessages.actionEdit(), makeImagePrototype(IconResources.INSTANCE.editIcon())),
new ImageSpec(ACTION_REMOVE, stringMessages.actionRemove(), makeImagePrototype(IconResources.INSTANCE.removeIcon()))
);
}
diff --git a/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/ui/adminconsole/ImagesListComposite.java b/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/ui/adminconsole/ImagesListComposite.java
index 9ad1dd4e842..8ec8e773206 100644
--- a/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/ui/adminconsole/ImagesListComposite.java
+++ b/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/ui/adminconsole/ImagesListComposite.java
@@ -34,6 +34,7 @@ import com.sap.sse.common.media.MediaTagConstants;
import com.sap.sse.common.util.NaturalComparator;
import com.sap.sse.gwt.adminconsole.AdminConsoleTableResources;
import com.sap.sse.gwt.client.celltable.BaseCelltable;
+import com.sap.sse.gwt.client.celltable.ImagesBarColumn;
import com.sap.sse.gwt.client.dialog.DataEntryDialog.DialogCallback;
import com.sap.sse.gwt.client.media.ImageDTO;
diff --git a/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/ui/adminconsole/LeaderboardConfigImagesBarCell.java b/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/ui/adminconsole/LeaderboardConfigImagesBarCell.java
index 6a07fca8cae..60bbd0a95f7 100644
--- a/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/ui/adminconsole/LeaderboardConfigImagesBarCell.java
+++ b/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/ui/adminconsole/LeaderboardConfigImagesBarCell.java
@@ -5,8 +5,8 @@ import java.util.Arrays;
import com.google.gwt.core.client.GWT;
import com.google.gwt.text.shared.SafeHtmlRenderer;
import com.sap.sailing.gwt.ui.client.StringMessages;
-import com.sap.sailing.gwt.ui.client.shared.controls.ImagesBarCell;
import com.sap.sse.gwt.client.IconResources;
+import com.sap.sse.gwt.client.celltable.ImagesBarCell;
public class LeaderboardConfigImagesBarCell extends ImagesBarCell {
public static final String ACTION_REMOVE = "ACTION_REMOVE";
@@ -33,7 +33,7 @@ public class LeaderboardConfigImagesBarCell extends ImagesBarCell {
@Override
protected Iterable getImageSpecs() {
return Arrays.asList(
- new ImageSpec(ACTION_EDIT, stringMessages.actionEdit(), makeImagePrototype(resources.editIcon())),
+ new ImageSpec(ACTION_EDIT, stringMessages.actionEdit(), makeImagePrototype(IconResources.INSTANCE.editIcon())),
new ImageSpec(ACTION_EDIT_SCORES, stringMessages.actionEditScores(), makeImagePrototype(resources.scoresIcon())),
new ImageSpec(ACTION_EDIT_COMPETITORS, stringMessages.actionEditCompetitors(), makeImagePrototype(resources.competitorsIcon())),
new ImageSpec(ACTION_CONFIGURE_URL, stringMessages.actionConfigureUrl(), makeImagePrototype(resources.settingsActionIcon())),
diff --git a/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/ui/adminconsole/LeaderboardConfigPanel.java b/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/ui/adminconsole/LeaderboardConfigPanel.java
index d14b1948ad2..0dece29a0c4 100755
--- a/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/ui/adminconsole/LeaderboardConfigPanel.java
+++ b/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/ui/adminconsole/LeaderboardConfigPanel.java
@@ -68,6 +68,7 @@ import com.sap.sse.common.util.NaturalComparator;
import com.sap.sse.gwt.adminconsole.AdminConsoleTableResources;
import com.sap.sse.gwt.client.ErrorReporter;
import com.sap.sse.gwt.client.async.MarkedAsyncCallback;
+import com.sap.sse.gwt.client.celltable.ImagesBarColumn;
import com.sap.sse.gwt.client.celltable.SelectionCheckboxColumn;
import com.sap.sse.gwt.client.dialog.DataEntryDialog.DialogCallback;
import com.sap.sse.gwt.client.shared.components.LinkWithSettingsGenerator;
diff --git a/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/ui/adminconsole/LeaderboardGroupConfigImagesBarCell.java b/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/ui/adminconsole/LeaderboardGroupConfigImagesBarCell.java
index b22b759ad71..34c7de45acc 100644
--- a/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/ui/adminconsole/LeaderboardGroupConfigImagesBarCell.java
+++ b/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/ui/adminconsole/LeaderboardGroupConfigImagesBarCell.java
@@ -2,16 +2,14 @@ package com.sap.sailing.gwt.ui.adminconsole;
import java.util.Arrays;
-import com.google.gwt.core.client.GWT;
import com.google.gwt.text.shared.SafeHtmlRenderer;
import com.sap.sailing.gwt.ui.client.StringMessages;
-import com.sap.sailing.gwt.ui.client.shared.controls.ImagesBarCell;
import com.sap.sse.gwt.client.IconResources;
+import com.sap.sse.gwt.client.celltable.ImagesBarCell;
public class LeaderboardGroupConfigImagesBarCell extends ImagesBarCell {
public static final String ACTION_REMOVE = "ACTION_REMOVE";
public static final String ACTION_EDIT = "ACTION_EDIT";
- private static AdminConsoleResources resources = GWT.create(AdminConsoleResources.class);
private final StringMessages stringMessages;
public LeaderboardGroupConfigImagesBarCell(StringMessages stringMessages) {
@@ -26,7 +24,7 @@ public class LeaderboardGroupConfigImagesBarCell extends ImagesBarCell {
@Override
protected Iterable getImageSpecs() {
- return Arrays.asList(new ImageSpec(ACTION_EDIT, stringMessages.actionEdit(), makeImagePrototype(resources.editIcon())),
+ return Arrays.asList(new ImageSpec(ACTION_EDIT, stringMessages.actionEdit(), makeImagePrototype(IconResources.INSTANCE.editIcon())),
new ImageSpec(ACTION_REMOVE, stringMessages.actionRemove(), makeImagePrototype(IconResources.INSTANCE.removeIcon())));
}
}
\ No newline at end of file
diff --git a/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/ui/adminconsole/LeaderboardGroupConfigPanel.java b/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/ui/adminconsole/LeaderboardGroupConfigPanel.java
index 3e73ba1a623..0ffe02225bc 100644
--- a/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/ui/adminconsole/LeaderboardGroupConfigPanel.java
+++ b/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/ui/adminconsole/LeaderboardGroupConfigPanel.java
@@ -57,6 +57,7 @@ import com.sap.sse.gwt.client.ErrorReporter;
import com.sap.sse.gwt.client.URLEncoder;
import com.sap.sse.gwt.client.async.MarkedAsyncCallback;
import com.sap.sse.gwt.client.celltable.EntityIdentityComparator;
+import com.sap.sse.gwt.client.celltable.ImagesBarColumn;
import com.sap.sse.gwt.client.celltable.RefreshableMultiSelectionModel;
import com.sap.sse.gwt.client.celltable.SelectionCheckboxColumn;
import com.sap.sse.gwt.client.dialog.DataEntryDialog.DialogCallback;
diff --git a/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/ui/adminconsole/LeaderboardRaceConfigImagesBarCell.java b/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/ui/adminconsole/LeaderboardRaceConfigImagesBarCell.java
index 6b1f391d941..0dc3089c6a7 100644
--- a/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/ui/adminconsole/LeaderboardRaceConfigImagesBarCell.java
+++ b/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/ui/adminconsole/LeaderboardRaceConfigImagesBarCell.java
@@ -5,9 +5,9 @@ import java.util.List;
import com.google.gwt.core.client.GWT;
import com.sap.sailing.gwt.ui.client.StringMessages;
-import com.sap.sailing.gwt.ui.client.shared.controls.ImagesBarCell;
import com.sap.sailing.gwt.ui.shared.StrippedLeaderboardDTO;
import com.sap.sse.gwt.client.IconResources;
+import com.sap.sse.gwt.client.celltable.ImagesBarCell;
public class LeaderboardRaceConfigImagesBarCell extends ImagesBarCell {
public final static String ACTION_REMOVE = "ACTION_REMOVE";
@@ -31,7 +31,7 @@ public class LeaderboardRaceConfigImagesBarCell extends ImagesBarCell {
@Override
protected Iterable getImageSpecs() {
List result = new ArrayList();
- result.add(new ImageSpec(ACTION_EDIT, stringMessages.actionEdit(), makeImagePrototype(resources.editIcon())));
+ result.add(new ImageSpec(ACTION_EDIT, stringMessages.actionEdit(), makeImagePrototype(IconResources.INSTANCE.editIcon())));
result.add(new ImageSpec(ACTION_UNLINK, stringMessages.actionRaceUnlink(), makeImagePrototype(resources.unlinkIcon())));
StrippedLeaderboardDTO selectedLeaderboard = selectedLeaderboardProvider.getSelectedLeaderboard();
if (selectedLeaderboard != null && !selectedLeaderboard.type.isRegattaLeaderboard()) {
diff --git a/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/ui/adminconsole/MediaActionBarCell.java b/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/ui/adminconsole/MediaActionBarCell.java
index 8faacd4021a..8983d64c5b1 100644
--- a/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/ui/adminconsole/MediaActionBarCell.java
+++ b/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/ui/adminconsole/MediaActionBarCell.java
@@ -3,8 +3,8 @@ package com.sap.sailing.gwt.ui.adminconsole;
import java.util.Arrays;
import com.sap.sailing.gwt.ui.client.StringMessages;
-import com.sap.sailing.gwt.ui.client.shared.controls.ImagesBarCell;
import com.sap.sse.gwt.client.IconResources;
+import com.sap.sse.gwt.client.celltable.ImagesBarCell;
public class MediaActionBarCell extends ImagesBarCell {
diff --git a/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/ui/adminconsole/MediaPanel.java b/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/ui/adminconsole/MediaPanel.java
index 41d9615a7a9..a5c96c3d55e 100644
--- a/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/ui/adminconsole/MediaPanel.java
+++ b/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/ui/adminconsole/MediaPanel.java
@@ -58,6 +58,7 @@ import com.sap.sse.gwt.client.ErrorReporter;
import com.sap.sse.gwt.client.async.MarkedAsyncCallback;
import com.sap.sse.gwt.client.celltable.BaseCelltable;
import com.sap.sse.gwt.client.celltable.EntityIdentityComparator;
+import com.sap.sse.gwt.client.celltable.ImagesBarColumn;
import com.sap.sse.gwt.client.celltable.RefreshableSingleSelectionModel;
import com.sap.sse.gwt.client.dialog.DataEntryDialog.DialogCallback;
import com.sap.sse.gwt.client.panels.LabeledAbstractFilterablePanel;
diff --git a/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/ui/adminconsole/RaceLogCourseManagementWidget.java b/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/ui/adminconsole/RaceLogCourseManagementWidget.java
index cddffbcf064..c6d18b76c37 100644
--- a/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/ui/adminconsole/RaceLogCourseManagementWidget.java
+++ b/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/ui/adminconsole/RaceLogCourseManagementWidget.java
@@ -15,6 +15,7 @@ import com.sap.sailing.gwt.ui.shared.RaceCourseDTO;
import com.sap.sse.common.TimePoint;
import com.sap.sse.common.Util.Pair;
import com.sap.sse.gwt.client.ErrorReporter;
+import com.sap.sse.gwt.client.celltable.ImagesBarColumn;
import com.sap.sse.gwt.client.dialog.DataEntryDialog;
public class RaceLogCourseManagementWidget extends CourseManagementWidget {
diff --git a/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/ui/adminconsole/RaceLogTrackingCourseDefinitionDialogMarksImagesBarCell.java b/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/ui/adminconsole/RaceLogTrackingCourseDefinitionDialogMarksImagesBarCell.java
index a21886d460f..1553dd3475c 100644
--- a/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/ui/adminconsole/RaceLogTrackingCourseDefinitionDialogMarksImagesBarCell.java
+++ b/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/ui/adminconsole/RaceLogTrackingCourseDefinitionDialogMarksImagesBarCell.java
@@ -4,7 +4,7 @@ import java.util.ArrayList;
import com.google.gwt.core.client.GWT;
import com.sap.sailing.gwt.ui.client.StringMessages;
-import com.sap.sailing.gwt.ui.client.shared.controls.ImagesBarCell;
+import com.sap.sse.gwt.client.celltable.ImagesBarCell;
public class RaceLogTrackingCourseDefinitionDialogMarksImagesBarCell extends ImagesBarCell {
public static final String ACTION_PING = "ACTION_PING";
diff --git a/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/ui/adminconsole/RaceLogTrackingDeviceMappingsImagesBarCell.java b/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/ui/adminconsole/RaceLogTrackingDeviceMappingsImagesBarCell.java
index e1e57b60cfb..93105018f7e 100644
--- a/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/ui/adminconsole/RaceLogTrackingDeviceMappingsImagesBarCell.java
+++ b/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/ui/adminconsole/RaceLogTrackingDeviceMappingsImagesBarCell.java
@@ -4,9 +4,9 @@ import java.util.ArrayList;
import com.google.gwt.core.client.GWT;
import com.sap.sailing.gwt.ui.client.StringMessages;
-import com.sap.sailing.gwt.ui.client.shared.controls.ImagesBarCell;
import com.sap.sailing.gwt.ui.shared.DeviceMappingDTO;
import com.sap.sse.gwt.client.IconResources;
+import com.sap.sse.gwt.client.celltable.ImagesBarCell;
public class RaceLogTrackingDeviceMappingsImagesBarCell extends ImagesBarCell {
public static final String ACTION_CLOSE = "CLOSE";
diff --git a/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/ui/adminconsole/RaceLogTrackingEventManagementImagesBarCell.java b/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/ui/adminconsole/RaceLogTrackingEventManagementImagesBarCell.java
index 8c5f4bf10f5..da0f9c9d749 100644
--- a/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/ui/adminconsole/RaceLogTrackingEventManagementImagesBarCell.java
+++ b/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/ui/adminconsole/RaceLogTrackingEventManagementImagesBarCell.java
@@ -5,7 +5,7 @@ import java.util.ArrayList;
import com.google.gwt.core.client.GWT;
import com.google.gwt.text.shared.SafeHtmlRenderer;
import com.sap.sailing.gwt.ui.client.StringMessages;
-import com.sap.sailing.gwt.ui.client.shared.controls.ImagesBarCell;
+import com.sap.sse.gwt.client.celltable.ImagesBarCell;
public class RaceLogTrackingEventManagementImagesBarCell extends ImagesBarCell {
public static final String ACTION_DENOTE_FOR_RACELOG_TRACKING = "ACTION_DENOTE_FOR_RACELOG_TRACKING";
diff --git a/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/ui/adminconsole/RaceLogTrackingEventManagementRaceImagesBarCell.java b/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/ui/adminconsole/RaceLogTrackingEventManagementRaceImagesBarCell.java
index 633b29b0386..b4b85604ead 100644
--- a/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/ui/adminconsole/RaceLogTrackingEventManagementRaceImagesBarCell.java
+++ b/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/ui/adminconsole/RaceLogTrackingEventManagementRaceImagesBarCell.java
@@ -7,8 +7,9 @@ import com.google.gwt.core.client.GWT;
import com.sap.sailing.domain.common.abstractlog.TimePointSpecificationFoundInLog;
import com.sap.sailing.gwt.ui.adminconsole.AbstractLeaderboardConfigPanel.RaceColumnDTOAndFleetDTOWithNameBasedEquality;
import com.sap.sailing.gwt.ui.client.StringMessages;
-import com.sap.sailing.gwt.ui.client.shared.controls.ImagesBarCell;
import com.sap.sse.common.Util.Pair;
+import com.sap.sse.gwt.client.IconResources;
+import com.sap.sse.gwt.client.celltable.ImagesBarCell;
public class RaceLogTrackingEventManagementRaceImagesBarCell extends ImagesBarCell {
public final static String ACTION_DENOTE_FOR_RACELOG_TRACKING = "ACTION_DENOTE_FOR_RACELOG_TRACKING";
@@ -48,7 +49,7 @@ public class RaceLogTrackingEventManagementRaceImagesBarCell extends ImagesBarCe
result.add(new ImageSpec(ACTION_DEFINE_COURSE, stringMessages.defineCourse(), makeImagePrototype(resources.defineCourse())));
result.add(new ImageSpec(ACTION_COPY, stringMessages.copyCourseAndCompetitors(), makeImagePrototype(resources.copy())));
}
- result.add(new ImageSpec(ACTION_EDIT, stringMessages.actionEdit(), makeImagePrototype(resources.editIcon())));
+ result.add(new ImageSpec(ACTION_EDIT, stringMessages.actionEdit(), makeImagePrototype(IconResources.INSTANCE.editIcon())));
result.add(new ImageSpec(ACTION_REFRESH_RACELOG, stringMessages.refreshRaceLog(), makeImagePrototype(resources.reloadIcon())));
result.add(new ImageSpec(ACTION_SET_STARTTIME, stringMessages.setStartTime(), makeImagePrototype(resources.clockIcon())));
result.add(new ImageSpec(ACTION_SET_FINISHING_AND_FINISH_TIME, stringMessages.setFinishingAndFinishTime(), makeImagePrototype(resources.blueSmall())));
diff --git a/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/ui/adminconsole/RegattaConfigImagesBarCell.java b/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/ui/adminconsole/RegattaConfigImagesBarCell.java
index f21a987b891..3e503af8619 100644
--- a/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/ui/adminconsole/RegattaConfigImagesBarCell.java
+++ b/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/ui/adminconsole/RegattaConfigImagesBarCell.java
@@ -2,17 +2,15 @@ package com.sap.sailing.gwt.ui.adminconsole;
import java.util.Arrays;
-import com.google.gwt.core.client.GWT;
import com.google.gwt.text.shared.SafeHtmlRenderer;
import com.sap.sailing.gwt.ui.client.StringMessages;
-import com.sap.sailing.gwt.ui.client.shared.controls.ImagesBarCell;
import com.sap.sse.gwt.client.IconResources;
+import com.sap.sse.gwt.client.celltable.ImagesBarCell;
public class RegattaConfigImagesBarCell extends ImagesBarCell {
static final String ACTION_REMOVE = "ACTION_REMOVE";
public static final String ACTION_EDIT = "ACTION_EDIT";
private final StringMessages stringMessages;
- private static AdminConsoleResources resources = GWT.create(AdminConsoleResources.class);
public RegattaConfigImagesBarCell(StringMessages stringConstants) {
super();
@@ -26,7 +24,7 @@ public class RegattaConfigImagesBarCell extends ImagesBarCell {
@Override
protected Iterable getImageSpecs() {
- return Arrays.asList(new ImageSpec(ACTION_EDIT, stringMessages.actionEdit(), makeImagePrototype(resources.editIcon())),
+ return Arrays.asList(new ImageSpec(ACTION_EDIT, stringMessages.actionEdit(), makeImagePrototype(IconResources.INSTANCE.editIcon())),
new ImageSpec(ACTION_REMOVE, stringMessages.actionRemove(), makeImagePrototype(IconResources.INSTANCE.removeIcon())));
}
}
\ No newline at end of file
diff --git a/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/ui/adminconsole/RegattaDetailsComposite.java b/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/ui/adminconsole/RegattaDetailsComposite.java
index 4cc03da7388..96e19f7ae97 100644
--- a/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/ui/adminconsole/RegattaDetailsComposite.java
+++ b/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/ui/adminconsole/RegattaDetailsComposite.java
@@ -38,6 +38,7 @@ import com.sap.sse.gwt.adminconsole.AdminConsoleTableResources;
import com.sap.sse.gwt.client.ErrorReporter;
import com.sap.sse.gwt.client.async.MarkedAsyncCallback;
import com.sap.sse.gwt.client.celltable.BaseCelltable;
+import com.sap.sse.gwt.client.celltable.ImagesBarColumn;
import com.sap.sse.gwt.client.dialog.DataEntryDialog.DialogCallback;
diff --git a/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/ui/adminconsole/RegattaListComposite.java b/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/ui/adminconsole/RegattaListComposite.java
index fbf368f2267..d9043e41335 100755
--- a/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/ui/adminconsole/RegattaListComposite.java
+++ b/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/ui/adminconsole/RegattaListComposite.java
@@ -42,6 +42,7 @@ import com.sap.sse.gwt.adminconsole.AdminConsoleTableResources;
import com.sap.sse.gwt.client.ErrorReporter;
import com.sap.sse.gwt.client.async.MarkedAsyncCallback;
import com.sap.sse.gwt.client.celltable.EntityIdentityComparator;
+import com.sap.sse.gwt.client.celltable.ImagesBarColumn;
import com.sap.sse.gwt.client.celltable.RefreshableMultiSelectionModel;
import com.sap.sse.gwt.client.celltable.SelectionCheckboxColumn;
import com.sap.sse.gwt.client.dialog.DataEntryDialog.DialogCallback;
diff --git a/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/ui/adminconsole/RegattaLogTrackingDeviceMappingsDialog.java b/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/ui/adminconsole/RegattaLogTrackingDeviceMappingsDialog.java
index adf3fffae0f..16f4e4e5451 100644
--- a/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/ui/adminconsole/RegattaLogTrackingDeviceMappingsDialog.java
+++ b/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/ui/adminconsole/RegattaLogTrackingDeviceMappingsDialog.java
@@ -43,6 +43,7 @@ import com.sap.sailing.gwt.ui.shared.MarkDTO;
import com.sap.sailing.gwt.ui.shared.TypedDeviceMappingDTO;
import com.sap.sse.common.filter.Filter;
import com.sap.sse.gwt.client.ErrorReporter;
+import com.sap.sse.gwt.client.celltable.ImagesBarColumn;
import com.sap.sse.gwt.client.dialog.DataEntryDialog;
import com.sap.sse.gwt.client.panels.LabeledAbstractFilterablePanel;
diff --git a/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/ui/adminconsole/SeriesConfigImagesBarCell.java b/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/ui/adminconsole/SeriesConfigImagesBarCell.java
index d5b1f993913..3ece5911f7f 100644
--- a/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/ui/adminconsole/SeriesConfigImagesBarCell.java
+++ b/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/ui/adminconsole/SeriesConfigImagesBarCell.java
@@ -2,17 +2,15 @@ package com.sap.sailing.gwt.ui.adminconsole;
import java.util.Arrays;
-import com.google.gwt.core.client.GWT;
import com.google.gwt.text.shared.SafeHtmlRenderer;
import com.sap.sailing.gwt.ui.client.StringMessages;
-import com.sap.sailing.gwt.ui.client.shared.controls.ImagesBarCell;
import com.sap.sse.gwt.client.IconResources;
+import com.sap.sse.gwt.client.celltable.ImagesBarCell;
public class SeriesConfigImagesBarCell extends ImagesBarCell {
static final String ACTION_REMOVE = "ACTION_REMOVE";
static final String ACTION_EDIT = "ACTION_EDIT";
private final StringMessages stringMessages;
- private static AdminConsoleResources resources = GWT.create(AdminConsoleResources.class);
public SeriesConfigImagesBarCell(StringMessages stringConstants) {
super();
@@ -26,7 +24,7 @@ public class SeriesConfigImagesBarCell extends ImagesBarCell {
@Override
protected Iterable getImageSpecs() {
- return Arrays.asList(new ImageSpec(ACTION_EDIT, stringMessages.actionEdit(), makeImagePrototype(resources.editIcon())),
+ return Arrays.asList(new ImageSpec(ACTION_EDIT, stringMessages.actionEdit(), makeImagePrototype(IconResources.INSTANCE.editIcon())),
new ImageSpec(ACTION_REMOVE, stringMessages.actionRemove(), makeImagePrototype(IconResources.INSTANCE.removeIcon())));
}
}
\ No newline at end of file
diff --git a/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/ui/adminconsole/SmartphoneTrackingEventManagementPanel.java b/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/ui/adminconsole/SmartphoneTrackingEventManagementPanel.java
index ed58c332350..b9c68747b38 100644
--- a/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/ui/adminconsole/SmartphoneTrackingEventManagementPanel.java
+++ b/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/ui/adminconsole/SmartphoneTrackingEventManagementPanel.java
@@ -65,6 +65,7 @@ import com.sap.sse.common.util.NaturalComparator;
import com.sap.sse.gwt.adminconsole.AdminConsoleTableResources;
import com.sap.sse.gwt.client.ErrorReporter;
import com.sap.sse.gwt.client.async.MarkedAsyncCallback;
+import com.sap.sse.gwt.client.celltable.ImagesBarColumn;
import com.sap.sse.gwt.client.celltable.SelectionCheckboxColumn;
import com.sap.sse.gwt.client.dialog.DataEntryDialog;
import com.sap.sse.gwt.client.dialog.DataEntryDialog.DialogCallback;
diff --git a/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/ui/adminconsole/VideoConfigImagesBarCell.java b/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/ui/adminconsole/VideoConfigImagesBarCell.java
index ba8665c8697..b9f0cf12d39 100644
--- a/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/ui/adminconsole/VideoConfigImagesBarCell.java
+++ b/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/ui/adminconsole/VideoConfigImagesBarCell.java
@@ -2,17 +2,15 @@ package com.sap.sailing.gwt.ui.adminconsole;
import java.util.Arrays;
-import com.google.gwt.core.client.GWT;
import com.google.gwt.text.shared.SafeHtmlRenderer;
import com.sap.sailing.gwt.ui.client.StringMessages;
-import com.sap.sailing.gwt.ui.client.shared.controls.ImagesBarCell;
import com.sap.sse.gwt.client.IconResources;
+import com.sap.sse.gwt.client.celltable.ImagesBarCell;
public class VideoConfigImagesBarCell extends ImagesBarCell {
static final String ACTION_REMOVE = "ACTION_REMOVE";
static final String ACTION_EDIT = "ACTION_EDIT";
private final StringMessages stringMessages;
- private static AdminConsoleResources resources = GWT.create(AdminConsoleResources.class);
public VideoConfigImagesBarCell(StringMessages stringMessages) {
super();
@@ -27,7 +25,7 @@ public class VideoConfigImagesBarCell extends ImagesBarCell {
@Override
protected Iterable getImageSpecs() {
return Arrays.asList(
- new ImageSpec(ACTION_EDIT, stringMessages.actionEdit(), makeImagePrototype(resources.editIcon())),
+ new ImageSpec(ACTION_EDIT, stringMessages.actionEdit(), makeImagePrototype(IconResources.INSTANCE.editIcon())),
new ImageSpec(ACTION_REMOVE, stringMessages.actionRemove(), makeImagePrototype(IconResources.INSTANCE.removeIcon()))
);
}
diff --git a/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/ui/adminconsole/VideosListComposite.java b/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/ui/adminconsole/VideosListComposite.java
index d2942b4d43f..66288239a0a 100644
--- a/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/ui/adminconsole/VideosListComposite.java
+++ b/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/ui/adminconsole/VideosListComposite.java
@@ -33,6 +33,7 @@ import com.sap.sse.common.media.MediaTagConstants;
import com.sap.sse.common.util.NaturalComparator;
import com.sap.sse.gwt.adminconsole.AdminConsoleTableResources;
import com.sap.sse.gwt.client.celltable.BaseCelltable;
+import com.sap.sse.gwt.client.celltable.ImagesBarColumn;
import com.sap.sse.gwt.client.dialog.DataEntryDialog.DialogCallback;
import com.sap.sse.gwt.client.media.VideoDTO;
diff --git a/java/com.sap.sse.gwt.adminconsole/src/com/sap/sse/gwt/adminconsole/AdminConsoleTableResources.java b/java/com.sap.sse.gwt.adminconsole/src/com/sap/sse/gwt/adminconsole/AdminConsoleTableResources.java
index 0f933ab5477..9f1b7bc53d5 100644
--- a/java/com.sap.sse.gwt.adminconsole/src/com/sap/sse/gwt/adminconsole/AdminConsoleTableResources.java
+++ b/java/com.sap.sse.gwt.adminconsole/src/com/sap/sse/gwt/adminconsole/AdminConsoleTableResources.java
@@ -1,9 +1,11 @@
package com.sap.sse.gwt.adminconsole;
import com.google.gwt.user.cellview.client.CellTable;
+import com.sap.sse.security.ui.client.SecurityTableResources;
+import com.sap.sse.security.ui.client.SecurityTableStyle;
-public interface AdminConsoleTableResources extends CellTable.Resources {
- interface AdminConsoleTableStyle extends CellTable.Style {
+public interface AdminConsoleTableResources extends SecurityTableResources, CellTable.Resources {
+ interface AdminConsoleTableStyle extends SecurityTableStyle, CellTable.Style {
/**
* Applied to header cells of race columns
*/
diff --git a/java/com.sap.sailing.gwt.ui/src/main/resources/com/sap/sailing/gwt/ui/client/images/edit.png b/java/com.sap.sse.gwt/resources/com/sap/sse/gwt/client/images/edit.png
old mode 100644
new mode 100755
similarity index 100%
rename from java/com.sap.sailing.gwt.ui/src/main/resources/com/sap/sailing/gwt/ui/client/images/edit.png
rename to java/com.sap.sse.gwt/resources/com/sap/sse/gwt/client/images/edit.png
diff --git a/java/com.sap.sse.gwt/src/com/sap/sse/gwt/client/IconResources.java b/java/com.sap.sse.gwt/src/com/sap/sse/gwt/client/IconResources.java
index dd1a3dcf9ec..ac297a96f95 100755
--- a/java/com.sap.sse.gwt/src/com/sap/sse/gwt/client/IconResources.java
+++ b/java/com.sap.sse.gwt/src/com/sap/sse/gwt/client/IconResources.java
@@ -10,4 +10,7 @@ public interface IconResources extends ClientBundle {
@Source("images/remove.png")
ImageResource removeIcon();
+
+ @Source("images/edit.png")
+ ImageResource editIcon();
}
diff --git a/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/ui/client/shared/controls/ImagesBarCell.java b/java/com.sap.sse.gwt/src/com/sap/sse/gwt/client/celltable/ImagesBarCell.java
similarity index 96%
rename from java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/ui/client/shared/controls/ImagesBarCell.java
rename to java/com.sap.sse.gwt/src/com/sap/sse/gwt/client/celltable/ImagesBarCell.java
index 1484e2686db..35132823876 100644
--- a/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/ui/client/shared/controls/ImagesBarCell.java
+++ b/java/com.sap.sse.gwt/src/com/sap/sse/gwt/client/celltable/ImagesBarCell.java
@@ -1,4 +1,4 @@
-package com.sap.sailing.gwt.ui.client.shared.controls;
+package com.sap.sse.gwt.client.celltable;
import java.util.ArrayList;
import java.util.List;
@@ -20,7 +20,6 @@ import com.google.gwt.text.shared.SafeHtmlRenderer;
import com.google.gwt.text.shared.SimpleSafeHtmlRenderer;
import com.google.gwt.user.cellview.client.CellTable;
import com.google.gwt.user.client.ui.AbstractImagePrototype;
-import com.sap.sse.security.shared.PermissionBuilder.Action;
/**
* A cell type for use in a {@link CellTable} which renders a horizontal sequence of images. Use by subclassing and
@@ -41,9 +40,6 @@ public abstract class ImagesBarCell extends AbstractSafeHtmlCell {
private final AbstractImagePrototype imagePrototype;
private final String actionName;
private final String tooltip;
- public ImageSpec(Action action, String tooltip, AbstractImagePrototype imagePrototype) {
- this(action.name(), tooltip, imagePrototype);
- }
public ImageSpec(String actionName, String tooltip, AbstractImagePrototype imagePrototype) {
super();
this.imagePrototype = imagePrototype;
diff --git a/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/ui/adminconsole/ImagesBarColumn.java b/java/com.sap.sse.gwt/src/com/sap/sse/gwt/client/celltable/ImagesBarColumn.java
similarity index 72%
rename from java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/ui/adminconsole/ImagesBarColumn.java
rename to java/com.sap.sse.gwt/src/com/sap/sse/gwt/client/celltable/ImagesBarColumn.java
index df0c659e8f2..5bba8a66dcb 100644
--- a/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/ui/adminconsole/ImagesBarColumn.java
+++ b/java/com.sap.sse.gwt/src/com/sap/sse/gwt/client/celltable/ImagesBarColumn.java
@@ -1,7 +1,6 @@
-package com.sap.sailing.gwt.ui.adminconsole;
+package com.sap.sse.gwt.client.celltable;
import com.google.gwt.user.cellview.client.Column;
-import com.sap.sailing.gwt.ui.client.shared.controls.ImagesBarCell;
public class ImagesBarColumn extends Column {
public ImagesBarColumn(S imagesBarCell) {
diff --git a/java/com.sap.sse.gwt/src/com/sap/sse/gwt/client/panels/AbstractFilterablePanel.java b/java/com.sap.sse.gwt/src/com/sap/sse/gwt/client/panels/AbstractFilterablePanel.java
index e2865578afa..b98c94d3ddc 100644
--- a/java/com.sap.sse.gwt/src/com/sap/sse/gwt/client/panels/AbstractFilterablePanel.java
+++ b/java/com.sap.sse.gwt/src/com/sap/sse/gwt/client/panels/AbstractFilterablePanel.java
@@ -26,12 +26,12 @@ import com.sap.sse.gwt.client.celltable.RefreshableSingleSelectionModel;
/**
* This Panel contains a text box. Text entered into the text box filters the {@link CellTable} passed to the
- * constructor by adjusting the cell table's {@link ListDataProvider}'s contents using the {@link applyFilter(String,
- * List)} of the {@link AbstractListFilter} and then sorting the table again according the the sorting criteria
- * currently active (the sorting is the only reason why the {@link CellTable} actually needs to be known to an instance
- * of this class). To be initiated the method {@link #getSearchableStrings(Object)} has to be defined, which gets those
- * Strings from a T that should be considered when filtering, e.g. name or boatClass. The cell table can be
- * sorted independently from the text box (e.g., after adding new objects) by calling the method
+ * constructor by adjusting the cell table's {@link ListDataProvider}'s contents using the
+ * {@link AbstractListFilter#applyFilter(String, List)} and then sorting the table again according the the sorting
+ * criteria currently active (the sorting is the only reason why the {@link CellTable} actually needs to be known to an
+ * instance of this class). To be initiated the method {@link #getSearchableStrings(Object)} has to be defined, which
+ * gets those Strings from a T that should be considered when filtering, e.g. name or boatClass. The cell
+ * table can be sorted independently from the text box (e.g., after adding new objects) by calling the method
* {@link #updateAll(Iterable)} which then runs the filter over the new selection.
*
*
diff --git a/java/com.sap.sse.gwt/src/com/sap/sse/gwt/client/panels/LabeledAbstractFilterablePanel.java b/java/com.sap.sse.gwt/src/com/sap/sse/gwt/client/panels/LabeledAbstractFilterablePanel.java
index b237ef87ae9..8c3b42bb32b 100755
--- a/java/com.sap.sse.gwt/src/com/sap/sse/gwt/client/panels/LabeledAbstractFilterablePanel.java
+++ b/java/com.sap.sse.gwt/src/com/sap/sse/gwt/client/panels/LabeledAbstractFilterablePanel.java
@@ -7,24 +7,26 @@ import com.sap.sse.common.filter.AbstractListFilter;
/**
* This Panel contains a label and a text box. Text entered into the text box filters the {@link CellTable} passed to
- * the constructor by adjusting the cell table's {@link ListDataProvider}'s contents using the {@link
- * applyFilter(String, List)} of the {@link AbstractListFilter} and then sorting the table again according the the
- * sorting criteria currently active (the sorting is the only reason why the {@link CellTable} actually needs to be
- * known to an instance of this class). To be initiated the method {@link #getSearchableStrings(Object)} has to be
- * defined, which gets those Strings from a T that should be considered when filtering, e.g. name or
- * boatClass. The cell table can be sorted independently from the text box (e.g. after adding new objects) by calling
- * the method {@link #updateAll(Iterable)} which then runs the filter over the new selection.
+ * the constructor by adjusting the cell table's {@link ListDataProvider}'s contents using the
+ * {@link AbstractListFilter#applyFilter(String, List)} of the {@link AbstractListFilter} and then sorting the table
+ * again according the the sorting criteria currently active (the sorting is the only reason why the {@link CellTable}
+ * actually needs to be known to an instance of this class). To be initiated the method
+ * {@link #getSearchableStrings(Object)} has to be defined, which gets those Strings from a T that should
+ * be considered when filtering, e.g. name or boatClass. The cell table can be sorted independently from the text box
+ * (e.g. after adding new objects) by calling the method {@link #updateAll(Iterable)} which then runs the filter over
+ * the new selection.
+ *
*
- * Note that this panel does not contain the table that it filters. With this, this class's clients are free
- * to position the table wherever they want, not necessarily related to the text box provided by this panel in any
- * specific way.
+ * Note that this panel does not contain the table that it filters. With this, this class's clients are free to
+ * position the table wherever they want, not necessarily related to the text box provided by this panel in any specific
+ * way.
*
* @param
* @author Nicolas Klose, Axel Uhl
*
*/
public abstract class LabeledAbstractFilterablePanel extends AbstractFilterablePanel {
-
+
/**
* @param display
* Note: when using this with a cell table obtained through {@link TableWrapper#getTable()}, obtain this
@@ -32,9 +34,10 @@ public abstract class LabeledAbstractFilterablePanel extends AbstractFilterab
* {@link TableWrapper#registerSelectionModelOnNewDataProvider} method so that the selection is preserved
* across setting and removing the filter
*/
- public LabeledAbstractFilterablePanel(Label label, Iterable all, CellTable display, final ListDataProvider filtered) {
+ public LabeledAbstractFilterablePanel(Label label, Iterable all, CellTable display,
+ final ListDataProvider filtered) {
super(all, display, filtered);
insert(label, 0);
}
-
+
}
\ No newline at end of file
diff --git a/java/com.sap.sse.security.ui/src/main/java/com/sap/sse/security/ui/client/IconResources.java b/java/com.sap.sse.security.ui/src/main/java/com/sap/sse/security/ui/client/IconResources.java
index 2e82d56e3bd..0af87ed34c1 100644
--- a/java/com.sap.sse.security.ui/src/main/java/com/sap/sse/security/ui/client/IconResources.java
+++ b/java/com.sap.sse.security.ui/src/main/java/com/sap/sse/security/ui/client/IconResources.java
@@ -34,7 +34,4 @@ public interface IconResources extends ClientBundle {
@Source("images/status_grey.png")
ImageResource statusGrey();
-
- @Source("images/delete.png")
- ImageResource delete();
}
diff --git a/java/com.sap.sse.security.ui/src/main/java/com/sap/sse/security/ui/client/SecurityTableResources.css b/java/com.sap.sse.security.ui/src/main/java/com/sap/sse/security/ui/client/SecurityTableResources.css
new file mode 100755
index 00000000000..ea9e6c54321
--- /dev/null
+++ b/java/com.sap.sse.security.ui/src/main/java/com/sap/sse/security/ui/client/SecurityTableResources.css
@@ -0,0 +1,20 @@
+.cellTableCheckboxColumnCell {
+}
+
+.cellTableCheckboxSelected {
+ height: 13px;
+ width: 13px;
+ margin: auto auto;
+/* border: 1px solid #fcbb22; */
+/* background-color: #fcbb22; */
+ border: solid 1px #acacac;
+ background-color: #cacaca;
+
+}
+
+.cellTableCheckboxDeselected {
+ height: 13px;
+ width: 13px;
+ margin: auto auto;
+ border: solid 1px #acacac;
+}
diff --git a/java/com.sap.sse.security.ui/src/main/java/com/sap/sse/security/ui/client/SecurityTableResources.java b/java/com.sap.sse.security.ui/src/main/java/com/sap/sse/security/ui/client/SecurityTableResources.java
new file mode 100755
index 00000000000..011eaca31d2
--- /dev/null
+++ b/java/com.sap.sse.security.ui/src/main/java/com/sap/sse/security/ui/client/SecurityTableResources.java
@@ -0,0 +1,9 @@
+package com.sap.sse.security.ui.client;
+
+import com.google.gwt.user.cellview.client.CellTable;
+
+public interface SecurityTableResources extends CellTable.Resources {
+ @Override
+ @Source({CellTable.Style.DEFAULT_CSS, "com/sap/sse/security/ui/client/SecurityTableResources.css"})
+ SecurityTableStyle cellTableStyle();
+}
diff --git a/java/com.sap.sse.security.ui/src/main/java/com/sap/sse/security/ui/client/SecurityTableStyle.java b/java/com.sap.sse.security.ui/src/main/java/com/sap/sse/security/ui/client/SecurityTableStyle.java
new file mode 100755
index 00000000000..0470bb933ee
--- /dev/null
+++ b/java/com.sap.sse.security.ui/src/main/java/com/sap/sse/security/ui/client/SecurityTableStyle.java
@@ -0,0 +1,20 @@
+package com.sap.sse.security.ui.client;
+
+import com.google.gwt.user.cellview.client.CellTable;
+
+public interface SecurityTableStyle extends CellTable.Style {
+ /**
+ * Applied to checkbox column
+ */
+ String cellTableCheckboxColumnCell();
+
+ /**
+ * Applied to the checkbox div when the checkbox is selected
+ */
+ String cellTableCheckboxSelected();
+
+ /**
+ * Applied to the checkbox div when the checkbox is deselected
+ */
+ String cellTableCheckboxDeselected();
+}
diff --git a/java/com.sap.sse.security.ui/src/main/java/com/sap/sse/security/ui/client/component/RoleImagesBarCell.java b/java/com.sap.sse.security.ui/src/main/java/com/sap/sse/security/ui/client/component/RoleImagesBarCell.java
new file mode 100755
index 00000000000..d549b03f0f1
--- /dev/null
+++ b/java/com.sap.sse.security.ui/src/main/java/com/sap/sse/security/ui/client/component/RoleImagesBarCell.java
@@ -0,0 +1,29 @@
+package com.sap.sse.security.ui.client.component;
+
+import java.util.Arrays;
+
+import com.google.gwt.text.shared.SafeHtmlRenderer;
+import com.sap.sse.gwt.client.IconResources;
+import com.sap.sse.gwt.client.celltable.ImagesBarCell;
+import com.sap.sse.security.ui.client.i18n.StringMessages;
+
+public class RoleImagesBarCell extends ImagesBarCell {
+ static final String ACTION_REMOVE = "ACTION_REMOVE";
+ public static final String ACTION_EDIT = "ACTION_EDIT";
+ private final StringMessages stringMessages;
+
+ public RoleImagesBarCell(StringMessages stringMessages) {
+ super();
+ this.stringMessages = stringMessages;
+ }
+
+ public RoleImagesBarCell(SafeHtmlRenderer renderer, StringMessages stringMessages) {
+ this(stringMessages);
+ }
+
+ @Override
+ protected Iterable getImageSpecs() {
+ return Arrays.asList(new ImageSpec(ACTION_EDIT, stringMessages.actionEdit(), makeImagePrototype(IconResources.INSTANCE.editIcon())),
+ new ImageSpec(ACTION_REMOVE, stringMessages.actionRemove(), makeImagePrototype(IconResources.INSTANCE.removeIcon())));
+ }
+}
\ No newline at end of file
diff --git a/java/com.sap.sse.security.ui/src/main/java/com/sap/sse/security/ui/client/component/RolesPanel.java b/java/com.sap.sse.security.ui/src/main/java/com/sap/sse/security/ui/client/component/RolesPanel.java
index c6991b9c599..bf5f3c17d7a 100755
--- a/java/com.sap.sse.security.ui/src/main/java/com/sap/sse/security/ui/client/component/RolesPanel.java
+++ b/java/com.sap.sse.security.ui/src/main/java/com/sap/sse/security/ui/client/component/RolesPanel.java
@@ -1,10 +1,39 @@
package com.sap.sse.security.ui.client.component;
+import java.util.ArrayList;
+import java.util.Arrays;
+import java.util.Comparator;
+import java.util.HashSet;
+import java.util.Iterator;
+import java.util.List;
+import java.util.Set;
+
+import com.google.gwt.cell.client.FieldUpdater;
+import com.google.gwt.cell.client.SafeHtmlCell;
+import com.google.gwt.safehtml.shared.SafeHtml;
+import com.google.gwt.safehtml.shared.SafeHtmlBuilder;
import com.google.gwt.user.cellview.client.CellTable;
+import com.google.gwt.user.cellview.client.Column;
+import com.google.gwt.user.cellview.client.ColumnSortEvent.ListHandler;
+import com.google.gwt.user.cellview.client.TextColumn;
+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.HorizontalPanel;
+import com.google.gwt.user.client.ui.Label;
+import com.google.gwt.user.client.ui.VerticalPanel;
+import com.google.gwt.view.client.ListDataProvider;
+import com.sap.sse.common.util.NaturalComparator;
+import com.sap.sse.gwt.client.ErrorReporter;
+import com.sap.sse.gwt.client.celltable.EntityIdentityComparator;
import com.sap.sse.gwt.client.celltable.FlushableSortedCellTableWithStylableHeaders;
+import com.sap.sse.gwt.client.celltable.ImagesBarColumn;
+import com.sap.sse.gwt.client.celltable.RefreshableMultiSelectionModel;
+import com.sap.sse.gwt.client.celltable.SelectionCheckboxColumn;
+import com.sap.sse.gwt.client.panels.LabeledAbstractFilterablePanel;
import com.sap.sse.security.shared.Role;
+import com.sap.sse.security.shared.WildcardPermission;
+import com.sap.sse.security.ui.client.SecurityTableResources;
import com.sap.sse.security.ui.client.UserManagementServiceAsync;
import com.sap.sse.security.ui.client.i18n.StringMessages;
@@ -18,16 +47,162 @@ import com.sap.sse.security.ui.client.i18n.StringMessages;
* @author Axel Uhl (d043530)
*
*/
-public class RolesPanel extends FlowPanel {
+public class RolesPanel extends VerticalPanel {
private final Button addButton;
private final Button removeButton;
private final Button refreshButton;
private final FlushableSortedCellTableWithStylableHeaders rolesTable;
+ private final ErrorReporter errorReporter;
+ private final UserManagementServiceAsync userManagementService;
+ private final ListDataProvider rolesListDataProvider;
+ private final List allRoles;
+ private final StringMessages stringMessages;
+ private final LabeledAbstractFilterablePanel filterablePanelRoles;
+ private RefreshableMultiSelectionModel super Role> refreshableRoleMultiSelectionModel;
- public RolesPanel(StringMessages stringMessages, UserManagementServiceAsync userManagementService, CellTable.Resources tableResources) {
+ public RolesPanel(StringMessages stringMessages, UserManagementServiceAsync userManagementService, SecurityTableResources tableResources,
+ ErrorReporter errorReporter) {
+ this.errorReporter = errorReporter;
+ this.stringMessages = stringMessages;
+ this.userManagementService = userManagementService;
this.addButton = new Button(stringMessages.add());
this.removeButton = new Button(stringMessages.remove());
this.refreshButton = new Button(stringMessages.refresh());
- this.rolesTable = new FlushableSortedCellTableWithStylableHeaders<>(/* pageSize */ 50, tableResources);
+ this.allRoles = new ArrayList<>();
+ rolesListDataProvider = new ListDataProvider();
+ filterablePanelRoles = new LabeledAbstractFilterablePanel(new Label(stringMessages.filterRoles()), allRoles,
+ new CellTable(), rolesListDataProvider) {
+ @Override
+ public Iterable getSearchableStrings(Role role) {
+ return Arrays.asList(role.getName(), role.getId().toString(), role.getPermissions().toString());
+ }
+ };
+ filterablePanelRoles.getTextBox().ensureDebugId("RolesFilterTextBox");
+ rolesTable = createRolesTable(tableResources);
+ rolesTable.ensureDebugId("RolesCellTable");
+ filterablePanelRoles.setTable(rolesTable);
+ refreshableRoleMultiSelectionModel = (RefreshableMultiSelectionModel super Role>) rolesTable.getSelectionModel();
+ removeButton.addClickHandler(e->{
+ final Set selectedRoles = new HashSet(getSelectedRoles());
+ filterablePanelRoles.removeAll(selectedRoles);
+ });
+ refreshButton.addClickHandler(e->updateRoles());
+ final HorizontalPanel buttonPanel = new HorizontalPanel();
+ buttonPanel.add(refreshButton);
+ buttonPanel.add(addButton);
+ buttonPanel.add(removeButton);
+ add(buttonPanel);
+ add(filterablePanelRoles);
+ add(rolesTable);
+ updateRoles();
+ }
+
+ private Set getSelectedRoles() {
+ @SuppressWarnings("unchecked")
+ final Set result = (Set) refreshableRoleMultiSelectionModel.getSelectedSet();
+ return result;
+ }
+
+ private FlushableSortedCellTableWithStylableHeaders createRolesTable(SecurityTableResources tableResources) {
+ final FlushableSortedCellTableWithStylableHeaders table = new FlushableSortedCellTableWithStylableHeaders<>(/* pageSize */ 50, tableResources);
+ rolesListDataProvider.addDataDisplay(table);
+ table.setWidth("100%");
+ SelectionCheckboxColumn roleSelectionCheckboxColumn = new SelectionCheckboxColumn(
+ tableResources.cellTableStyle().cellTableCheckboxSelected(),
+ tableResources.cellTableStyle().cellTableCheckboxDeselected(),
+ tableResources.cellTableStyle().cellTableCheckboxColumnCell(), new EntityIdentityComparator() {
+ @Override
+ public boolean representSameEntity(Role role1, Role role2) {
+ return role1.getId().equals(role2.getId());
+ }
+ @Override
+ public int hashCode(Role t) {
+ return t.getId().hashCode();
+ }
+ }, filterablePanelRoles.getAllListDataProvider(), table);
+ ListHandler columnSortHandler = new ListHandler<>(rolesListDataProvider.getList());
+ table.addColumnSortHandler(columnSortHandler);
+ columnSortHandler.setComparator(roleSelectionCheckboxColumn, roleSelectionCheckboxColumn.getComparator());
+
+ TextColumn roleNameColumn = new TextColumn() {
+ @Override
+ public String getValue(Role role) {
+ return role.getName();
+ }
+ };
+ roleNameColumn.setSortable(true);
+ columnSortHandler.setComparator(roleNameColumn, new Comparator() {
+ @Override
+ public int compare(Role r1, Role r2) {
+ return new NaturalComparator().compare(r1.getName(), r2.getName());
+ }
+ });
+
+ Column permissionsColumn = new Column(new SafeHtmlCell()) {
+ @Override
+ public SafeHtml getValue(Role role) {
+ SafeHtmlBuilder builder = new SafeHtmlBuilder();
+ for (Iterator permissionIter=role.getPermissions().iterator(); permissionIter.hasNext(); ) {
+ final WildcardPermission permission = permissionIter.next();
+ builder.appendEscaped(permission.toString());
+ if (permissionIter.hasNext()) {
+ builder.appendHtmlConstant("
");
+ }
+ }
+ return builder.toSafeHtml();
+ }
+ };
+ permissionsColumn.setSortable(true);
+ columnSortHandler.setComparator(permissionsColumn, new Comparator() {
+ @Override
+ public int compare(Role r1, Role r2) {
+ return new NaturalComparator().compare(r1.getPermissions().toString(), r2.getPermissions().toString());
+ }
+ });
+ ImagesBarColumn regattaActionColumn = new ImagesBarColumn(
+ new RoleImagesBarCell(stringMessages));
+ regattaActionColumn.setFieldUpdater(new FieldUpdater() {
+ @Override
+ public void update(int index, Role role, String value) {
+ if (RoleImagesBarCell.ACTION_EDIT.equals(value)) {
+ editRole(role);
+ } else if (RoleImagesBarCell.ACTION_REMOVE.equals(value)) {
+ if (Window.confirm(stringMessages.doYouReallyWantToRemoveRole(role.getName()))) {
+ removeRole(role);
+ }
+ }
+ }
+ });
+
+ table.addColumn(roleSelectionCheckboxColumn, roleSelectionCheckboxColumn.getHeader());
+ table.addColumn(roleNameColumn, stringMessages.name());
+ table.addColumn(permissionsColumn, stringMessages.permissions());
+ table.addColumn(regattaActionColumn, stringMessages.actions());
+ table.setSelectionModel(roleSelectionCheckboxColumn.getSelectionModel(), roleSelectionCheckboxColumn.getSelectionManager());
+ return table;
+ }
+
+ private void removeRole(Role role) {
+ // TODO Auto-generated method stub
+ Window.alert("Remove "+role);
+ }
+
+ private void editRole(Role role) {
+ // TODO Auto-generated method stub
+ Window.alert("Edit "+role);
+ }
+
+ public void updateRoles() {
+ userManagementService.getRoles(new AsyncCallback>() {
+ @Override
+ public void onSuccess(ArrayList allRoles) {
+ filterablePanelRoles.updateAll(allRoles);
+ }
+
+ @Override
+ public void onFailure(Throwable caught) {
+ errorReporter.reportError(stringMessages.errorTryingToLoadRoles(caught.getMessage()));
+ }
+ });
}
}
diff --git a/java/com.sap.sse.security.ui/src/main/java/com/sap/sse/security/ui/client/component/SettingsPanel.java b/java/com.sap.sse.security.ui/src/main/java/com/sap/sse/security/ui/client/component/SettingsPanel.java
index ca05964b91d..aaea386b9f9 100644
--- a/java/com.sap.sse.security.ui/src/main/java/com/sap/sse/security/ui/client/component/SettingsPanel.java
+++ b/java/com.sap.sse.security.ui/src/main/java/com/sap/sse/security/ui/client/component/SettingsPanel.java
@@ -173,7 +173,7 @@ public class SettingsPanel extends LayoutPanel {
flexTable.setWidget(row, 2, statusGreen);
- final ImageResource deleteImageResource = IconResources.INSTANCE.delete();
+ final ImageResource deleteImageResource = com.sap.sse.gwt.client.IconResources.INSTANCE.removeIcon();
HTML delete = new HTML(renderer.render(deleteImageResource));
delete.addClickHandler(new ClickHandler() {
@@ -283,7 +283,7 @@ public class SettingsPanel extends LayoutPanel {
flexTable.setWidget(row, 3, statusGreen);
- final ImageResource deleteImageResource = IconResources.INSTANCE.delete();
+ final ImageResource deleteImageResource = com.sap.sse.gwt.client.IconResources.INSTANCE.removeIcon();
HTML delete = new HTML(renderer.render(deleteImageResource));
delete.addClickHandler(new ClickHandler() {
diff --git a/java/com.sap.sse.security.ui/src/main/java/com/sap/sse/security/ui/client/component/UserManagementPanel.java b/java/com.sap.sse.security.ui/src/main/java/com/sap/sse/security/ui/client/component/UserManagementPanel.java
index 260c3e9e4d3..7bb31c3b38a 100644
--- a/java/com.sap.sse.security.ui/src/main/java/com/sap/sse/security/ui/client/component/UserManagementPanel.java
+++ b/java/com.sap.sse.security.ui/src/main/java/com/sap/sse/security/ui/client/component/UserManagementPanel.java
@@ -29,6 +29,7 @@ import com.google.gwt.view.client.SingleSelectionModel;
import com.sap.sse.gwt.client.ErrorReporter;
import com.sap.sse.security.shared.AccessControlList;
import com.sap.sse.security.shared.Permission;
+import com.sap.sse.security.ui.client.SecurityTableResources;
import com.sap.sse.security.ui.client.UserChangeEventHandler;
import com.sap.sse.security.ui.client.UserManagementServiceAsync;
import com.sap.sse.security.ui.client.UserService;
@@ -38,23 +39,26 @@ import com.sap.sse.security.ui.shared.UserDTO;
public class UserManagementPanel extends DockPanel {
- private List userCreatedHandlers = new ArrayList<>();
+ private final List userCreatedHandlers = new ArrayList<>();
- private List userDeletedHandlers = new ArrayList<>();
+ private final List userDeletedHandlers = new ArrayList<>();
- private SingleSelectionModel aclSingleSelectionModel;
- private AccessControlListListDataProvider aclListDataProvider;
+ private final SingleSelectionModel aclSingleSelectionModel;
+ private final AccessControlListListDataProvider aclListDataProvider;
- private SingleSelectionModel singleSelectionModel;
+ private final SingleSelectionModel singleSelectionModel;
- private UserListDataProvider userListDataProvider;
+ private final UserListDataProvider userListDataProvider;
- public UserManagementPanel(final UserService userService, final StringMessages stringMessages, ErrorReporter errorReporter) {
- this(userService, stringMessages, Collections.emptySet(), errorReporter);
+ private final RolesPanel rolesPanel;
+
+ public UserManagementPanel(final UserService userService, final StringMessages stringMessages,
+ ErrorReporter errorReporter, SecurityTableResources tableResources) {
+ this(userService, stringMessages, Collections.emptySet(), errorReporter, tableResources);
}
public UserManagementPanel(final UserService userService, final StringMessages stringMessages,
- Iterable additionalPermissions, ErrorReporter errorReporter) {
+ Iterable additionalPermissions, ErrorReporter errorReporter, SecurityTableResources tableResources) {
final UserManagementServiceAsync userManagementService = userService.getUserManagementService();
VerticalPanel west = new VerticalPanel();
HorizontalPanel buttonPanel = new HorizontalPanel();
@@ -133,13 +137,16 @@ public class UserManagementPanel extends DockPanel {
west.add(aclPager);
west.add(aclPanel);
+ rolesPanel = new RolesPanel(stringMessages, userManagementService, tableResources, errorReporter);
+ add(rolesPanel, DockPanel.CENTER);
+
final UserList userList = new UserList();
userList.setSelectionModel(singleSelectionModel);
TextBox filterBox = new TextBox();
userListDataProvider = new UserListDataProvider(userManagementService, filterBox);
final UserDetailsView userDetailsView = new UserDetailsView(userService,
singleSelectionModel.getSelectedObject(), stringMessages, userListDataProvider, additionalPermissions, errorReporter);
- add(userDetailsView, DockPanel.CENTER);
+ add(userDetailsView, DockPanel.EAST);
userDetailsView.addUserChangeEventHandler(new UserChangeEventHandler() {
@Override
public void onUserChange(UserDTO user) {
@@ -199,6 +206,7 @@ public class UserManagementPanel extends DockPanel {
public void updateUsersAndACLs() {
userListDataProvider.updateDisplays();
aclListDataProvider.updateDisplays();
+ rolesPanel.updateRoles();
}
public void addUserCreatedEventHandler(UserCreatedEventHandler handler){
diff --git a/java/com.sap.sse.security.ui/src/main/java/com/sap/sse/security/ui/client/i18n/StringMessages.java b/java/com.sap.sse.security.ui/src/main/java/com/sap/sse/security/ui/client/i18n/StringMessages.java
index 4cba42c4a2e..6190a8f3b78 100755
--- a/java/com.sap.sse.security.ui/src/main/java/com/sap/sse/security/ui/client/i18n/StringMessages.java
+++ b/java/com.sap.sse.security.ui/src/main/java/com/sap/sse/security/ui/client/i18n/StringMessages.java
@@ -115,4 +115,10 @@ public interface StringMessages extends com.sap.sse.gwt.client.StringMessages {
String id();
String displayName();
String tenants();
+ String errorTryingToLoadRoles(String message);
+ String filterRoles();
+ String actions();
+ String actionEdit();
+ String actionRemove();
+ String doYouReallyWantToRemoveRole(String name);
}
diff --git a/java/com.sap.sse.security.ui/src/main/java/com/sap/sse/security/ui/client/i18n/StringMessages.properties b/java/com.sap.sse.security.ui/src/main/java/com/sap/sse/security/ui/client/i18n/StringMessages.properties
index be0d2975a3b..135576205d6 100644
--- a/java/com.sap.sse.security.ui/src/main/java/com/sap/sse/security/ui/client/i18n/StringMessages.properties
+++ b/java/com.sap.sse.security.ui/src/main/java/com/sap/sse/security/ui/client/i18n/StringMessages.properties
@@ -119,4 +119,10 @@ couldNotDeleteTenant=Could not delete tenant.
filterTenants=Filter tenants...
id=ID
displayName=Display Name
-tenants=Tenants
\ No newline at end of file
+tenants=Tenants
+errorTryingToLoadRoles=Error trying to load roles: {0}
+filterRoles=Filter roles
+actions=Actions
+actionEdit=Edit
+actionRemove=Remove
+doYouReallyWantToRemoveRole=Do you really want to remove role "{0}"?
\ No newline at end of file
diff --git a/java/com.sap.sse.security.ui/src/main/java/com/sap/sse/security/ui/client/i18n/StringMessages_de.properties b/java/com.sap.sse.security.ui/src/main/java/com/sap/sse/security/ui/client/i18n/StringMessages_de.properties
index ab5653491ba..1bb21f4293b 100644
--- a/java/com.sap.sse.security.ui/src/main/java/com/sap/sse/security/ui/client/i18n/StringMessages_de.properties
+++ b/java/com.sap.sse.security.ui/src/main/java/com/sap/sse/security/ui/client/i18n/StringMessages_de.properties
@@ -119,4 +119,10 @@ couldNotDeleteTenant=Mandant konnte nicht entfernt werden.
filterTenants=Mandanten filtern...
id=ID
displayName=Anzeigename
-tenants=Mandanten
\ No newline at end of file
+tenants=Mandanten
+errorTryingToLoadRoles=Fehler beim Versuch, die Rollen zu laden: {0}
+filterRoles=Rollen filtern
+actions=Aktionen
+actionEdit=Bearbeiten
+actionRemove=Löschen
+doYouReallyWantToRemoveRole=Rolle "{0}" wirklich löschen?
\ No newline at end of file
diff --git a/java/com.sap.sse.security.ui/src/main/java/com/sap/sse/security/ui/usermanagement/UserManagementEntryPoint.java b/java/com.sap.sse.security.ui/src/main/java/com/sap/sse/security/ui/usermanagement/UserManagementEntryPoint.java
index 937a4fb35b1..c726ecd0ee5 100755
--- a/java/com.sap.sse.security.ui/src/main/java/com/sap/sse/security/ui/usermanagement/UserManagementEntryPoint.java
+++ b/java/com.sap.sse.security.ui/src/main/java/com/sap/sse/security/ui/usermanagement/UserManagementEntryPoint.java
@@ -1,5 +1,6 @@
package com.sap.sse.security.ui.usermanagement;
+import com.google.gwt.core.client.GWT;
import com.google.gwt.dom.client.Style.Unit;
import com.google.gwt.user.client.Window;
import com.google.gwt.user.client.ui.RootLayoutPanel;
@@ -8,6 +9,7 @@ import com.google.gwt.user.client.ui.ScrollPanel;
import com.google.gwt.user.client.ui.TabLayoutPanel;
import com.sap.sse.security.ui.client.AbstractSecurityEntryPoint;
import com.sap.sse.security.ui.client.Resources;
+import com.sap.sse.security.ui.client.SecurityTableResources;
import com.sap.sse.security.ui.client.UserStatusEventHandler;
import com.sap.sse.security.ui.client.component.SettingsPanel;
import com.sap.sse.security.ui.client.component.UserManagementPanel;
@@ -15,6 +17,8 @@ import com.sap.sse.security.ui.loginpanel.LoginPanel;
import com.sap.sse.security.ui.shared.UserDTO;
public class UserManagementEntryPoint extends AbstractSecurityEntryPoint {
+ private final SecurityTableResources tableResources = GWT.create(SecurityTableResources.class);
+
private TabLayoutPanel center;
@Override
@@ -26,7 +30,7 @@ public class UserManagementEntryPoint extends AbstractSecurityEntryPoint {
public void onUserStatusChange(UserDTO user, boolean preAuthenticated) {
}
});
- UserManagementPanel userManagementPanel = new UserManagementPanel(getUserService(), getStringMessages(), this);
+ UserManagementPanel userManagementPanel = new UserManagementPanel(getUserService(), getStringMessages(), this, tableResources);
center.add(new ScrollPanel(userManagementPanel), getStringMessages().users());
final SettingsPanel settingsPanel = new SettingsPanel(getUserManagementService(), getStringMessages());
center.add(new ScrollPanel(settingsPanel), getStringMessages().settings());
diff --git a/java/com.sap.sse.security.ui/src/main/resources/com/sap/sse/security/ui/client/images/delete.png b/java/com.sap.sse.security.ui/src/main/resources/com/sap/sse/security/ui/client/images/delete.png
deleted file mode 100644
index a999aa37557095406138044958927177ae57a0a6..0000000000000000000000000000000000000000
GIT binary patch
literal 0
HcmV?d00001
literal 583
zcmV-N0=WH&P)00`>p^01RnV
zSad^gZEa<4bN~PV006wMvY7w?0lY~>K~z}7?boqx6G0Hh@n0|qnSg{ScmX<|B7OV<
zC`Pi1Xv3rbXu!lM?YP_HDx(q}t=f1@U)B{tD*dOz>$oN$dK`gGx%XlKY^93;^
z&WJC(S=V)~ASnxxBR=kM@?%{uZURvx-YpwPWgvDgzAnUU`M(