Merge branch 'master' into mark-rounding-inference

Conflicts:
	java/com.sap.sailing.domain.persistence/src/com/sap/sailing/domain/persistence/impl/MongoObjectFactoryImpl.java
	java/com.sap.sailing.domain.test/src/com/sap/sailing/domain/test/WindTest.java
	java/com.sap.sailing.domain.test/src/com/sap/sailing/domain/test/markpassing/AbstractMockedRaceMarkPassingTest.java
	java/com.sap.sailing.domain/META-INF/MANIFEST.MF
	java/com.sap.sailing.domain/src/com/sap/sailing/domain/markpassingcalculation/CandidateFinder.java
	java/com.sap.sailing.domain/src/com/sap/sailing/domain/tracking/TrackedRace.java
	java/com.sap.sailing.domain/src/com/sap/sailing/domain/tracking/impl/DynamicTrackedRaceImpl.java
	java/com.sap.sailing.gwt.ui.test/src/com/sap/sailing/gwt/ui/test/MockedTrackedRace.java
	java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/home/client/place/event/regattaanalytics/RegattaAnalyticsDataManager.java
	java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/home/client/place/event/seriesanalytics/EventSeriesAnalyticsDataManager.java
	java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/ui/client/SailingServiceAsync.java
	java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/ui/client/StringMessages.java
	java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/ui/client/StringMessages.properties
	java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/ui/client/StringMessages_de.properties
	java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/ui/client/StringMessages_ru.properties
	java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/ui/raceboard/RaceBoardPanel.java
This commit is contained in:
Axel Uhl committed 2015-03-26 14:51:48 +01:00
commit e1e047bd75
1019 files changed
+32705 -10430

No files matched your search

@@ -1,4 +1,4 @@
eclipse.preferences.version=1
entryPointModules=
filesCopiedToWebInfLib=gwt-servlet.jar
gwtCompileSettings=PGd3dC1jb21waWxlLXNldHRpbmdzPjxsb2ctbGV2ZWw+SU5GTzwvbG9nLWxldmVsPjxvdXRwdXQtc3R5bGU+T0JGVVNDQVRFRDwvb3V0cHV0LXN0eWxlPjxleHRyYS1hcmdzPjwhW0NEQVRBWy13YXIgLiAtbG9jYWxXb3JrZXJzIDQgLXN0cmljdCAtbG9nTGV2ZWwgVFJBQ0VdXT48L2V4dHJhLWFyZ3M+PHZtLWFyZ3M+PCFbQ0RBVEFbLVhteDIwMjRtIC1EZ3d0LnVzZWFyY2hpdmVzPWZhbHNlXV0+PC92bS1hcmdzPjxlbnRyeS1wb2ludC1tb2R1bGU+Y29tLnNhcC5zYWlsaW5nLmd3dC5Ib21lPC9lbnRyeS1wb2ludC1tb2R1bGU+PC9nd3QtY29tcGlsZS1zZXR0aW5ncz4\=
gwtCompileSettings=PGd3dC1jb21waWxlLXNldHRpbmdzPjxsb2ctbGV2ZWw+SU5GTzwvbG9nLWxldmVsPjxvdXRwdXQtc3R5bGU+T0JGVVNDQVRFRDwvb3V0cHV0LXN0eWxlPjxleHRyYS1hcmdzPjwhW0NEQVRBWy13YXIgLiAtbG9jYWxXb3JrZXJzIDQgLXN0cmljdCAtbG9nTGV2ZWwgVFJBQ0VdXT48L2V4dHJhLWFyZ3M+PHZtLWFyZ3M+PCFbQ0RBVEFbLVhteDIwMjRtIC1EZ3d0LnVzZWFyY2hpdmVzPWZhbHNlXV0+PC92bS1hcmdzPjxlbnRyeS1wb2ludC1tb2R1bGU+Y29tLnNhcC5zYWlsaW5nLmd3dC51aS5BZG1pbkNvbnNvbGU8L2VudHJ5LXBvaW50LW1vZHVsZT48ZW50cnktcG9pbnQtbW9kdWxlPmNvbS5zYXAuc2FpbGluZy5nd3QudWkuTGVhZGVyYm9hcmQ8L2VudHJ5LXBvaW50LW1vZHVsZT48ZW50cnktcG9pbnQtbW9kdWxlPmNvbS5zYXAuc2FpbGluZy5nd3QudWkuTGVhZGVyYm9hcmRFZGl0aW5nPC9lbnRyeS1wb2ludC1tb2R1bGU+PGVudHJ5LXBvaW50LW1vZHVsZT5jb20uc2FwLnNhaWxpbmcuZ3d0LnVpLlJhY2VCb2FyZDwvZW50cnktcG9pbnQtbW9kdWxlPjxlbnRyeS1wb2ludC1tb2R1bGU+Y29tLnNhcC5zYWlsaW5nLmd3dC51aS5TcGVjdGF0b3I8L2VudHJ5LXBvaW50LW1vZHVsZT48L2d3dC1jb21waWxlLXNldHRpbmdzPg\=\=
@@ -171,6 +171,17 @@ input.magnifier {
background: url(images/important-message.png) left center no-repeat;
}
.chart-busyMessage {
font-family: 'OpenSansSemiBold',Arial,Verdana,sans-serif;
font-size: 20px;
height: 70px;
margin: 0 auto;
padding: 49px 0 0 40px;
width: 400px;
color: #7c7c7c;
background: url(images/busy_indicator_circle.gif) left center no-repeat;
}
.dataMiningPanel {
margin-left: 10px;
margin-right: 10px;
@@ -0,0 +1,15 @@
<?xml version="1.0" encoding="UTF-8" standalone="no"?>
<launchConfiguration type="com.github.sdbg.debug.core.chromeMobileConnLaunchConfig">
<stringAttribute key="applicationName" value=""/>
<stringAttribute key="device" value="<YOUR-DEVICE>"/>
<booleanAttribute key="launchFile" value="false"/>
<booleanAttribute key="launchTabWithUrl" value="true"/>
<listAttribute key="org.eclipse.debug.core.MAPPED_RESOURCE_PATHS">
<listEntry value="/com.sap.sailing.gwt.ui"/>
</listAttribute>
<listAttribute key="org.eclipse.debug.core.MAPPED_RESOURCE_TYPES">
<listEntry value="4"/>
</listAttribute>
<stringAttribute key="projectName" value="com.sap.sailing.gwt.ui"/>
<stringAttribute key="url" value="http://localhost:8888/gwt/Home.html"/>
</launchConfiguration>
@@ -0,0 +1,16 @@
<?xml version="1.0" encoding="UTF-8" standalone="no"?>
<launchConfiguration type="com.github.sdbg.debug.core.chromeLaunchConfig">
<stringAttribute key="applicationArguments" value=""/>
<stringAttribute key="applicationName" value=""/>
<booleanAttribute key="launchFile" value="false"/>
<listAttribute key="org.eclipse.debug.core.MAPPED_RESOURCE_PATHS">
<listEntry value="/com.sap.sailing.gwt.ui"/>
</listAttribute>
<listAttribute key="org.eclipse.debug.core.MAPPED_RESOURCE_TYPES">
<listEntry value="4"/>
</listAttribute>
<stringAttribute key="projectName" value="com.sap.sailing.gwt.ui"/>
<booleanAttribute key="showLaunchOutput" value="false"/>
<stringAttribute key="url" value="http://127.0.0.1:8888/gwt/Home.html"/>
<stringAttribute key="urlQueryParams" value=""/>
</launchConfiguration>
@@ -0,0 +1,6 @@
<?xml version="1.0" encoding="UTF-8" standalone="no"?>
<launchConfiguration type="com.github.sdbg.debug.core.androidReverseForwardsLaunchConfig">
<stringAttribute key="device" value="<YOUR-DEVICE>"/>
<intAttribute key="deviceCommandPort" value="6565"/>
<stringAttribute key="reverseForwards" value="localhost:8888:8888,localhost:9876:9876,localhost:9875:9875"/>
</launchConfiguration>
+3 -2
View File
@@ -10,7 +10,7 @@ Require-Bundle: com.sap.sailing.domain,
com.sap.sailing.server,
com.sap.sailing.domain.tractracadapter,
com.sap.sse.mongodb,
com.mongodb.driver;bundle-version="2.6.2",
org.mongodb.mongo-java-driver;bundle-version="2.13.0",
com.sap.sailing.domain.swisstimingadapter,
com.sap.sailing.domain.persistence,
com.sap.sailing.domain.swisstimingadapter.persistence,
@@ -45,7 +45,8 @@ Require-Bundle: com.sap.sailing.domain,
com.sap.sse.operationaltransformation,
com.sap.sse,
com.sap.sse.security.common,
com.sap.sse.filestorage
com.sap.sse.filestorage,
org.apache.shiro.core;bundle-version="1.2.2"
Bundle-Activator: com.sap.sailing.gwt.ui.server.Activator
Bundle-ActivationPolicy: lazy
Import-Package: com.sap.sailing.polars,
+9 -15
View File
@@ -61,16 +61,6 @@ table {
border-collapse: separate;
}
.CombinedWindPanel {
-moz-border-radius: 4px;
-webkit-border-radius: 4px;
-o-border-radius: 4px;
-ms-border-radius: 4px;
border-radius: 4px;
background-color: rgba(255, 255, 255, 0.75);
border: 1px solid #C9CACA;
}
.CombinedWindPanelParentDiv {
padding-top: 34px;
padding-left: 10px;
@@ -477,11 +467,11 @@ img.openColumn {
}
.TimePanel-ShowExtended-Button-Open {
background: white url(images/arrows_top_black.png) center no-repeat;
background: white url(images/arrows_bottom_black.png) center no-repeat;
}
.TimePanel-ShowExtended-Button-Closed {
background: white url(images/arrows_bottom_black.png) center no-repeat;
background: white url(images/arrows_top_black.png) center no-repeat;
}
.TimePanel-ShowExtended-Button:hover {
@@ -567,13 +557,17 @@ img.openColumn {
background-color: white;
background-image: url(images/viewicons/@1x/img/SAP_RV_AudioVideo_INACTIVE.png);
background-repeat: no-repeat, no-repeat;
background-position: 4% 50%, 96% 50%
background-position: 10% 50%, 90% 50%
}
.gwt-SplitLayoutPanel-NorthSouthToggleButton-mediaplaying {
background-image: url(images/viewicons/@1x/img/SAP_RV_AudioVideo_GHOSTED.png);
}
.gwt-SplitLayoutPanel-NorthSouthToggleButton-Small-media {
background-position: 50% 50%, 100% 50% !important;
background-position: 5% 50%, 100% 50% !important;
margin-left: 0px !important;
padding: 2px 20px !important;
padding: 2px 35px !important;
}
@external gwt-ToggleButton-up, gwt-ToggleButton-down, gwt-ToggleButton-up-hovering, gwt-ToggleButton-down-hovering;
@@ -1,60 +1,60 @@
<?xml version="1.0" encoding="UTF-8" standalone="no"?>
<launchConfiguration type="com.google.gdt.eclipse.suite.webapp">
<booleanAttribute key="com.google.gdt.eclipse.core.RUN_SERVER" value="false"/>
<stringAttribute key="com.google.gdt.eclipse.suiteMainTypeProcessor.PREVIOUSLY_SET_MAIN_TYPE_NAME" value="com.google.gwt.dev.GWTShell"/>
<booleanAttribute key="com.google.gdt.eclipse.suiteWarArgumentProcessor.IS_WAR_FROM_PROJECT_PROPERTIES" value="true"/>
<listAttribute key="com.google.gwt.eclipse.core.ENTRY_POINT_MODULES">
<listEntry value="com.sap.sailing.gwt.ui.VideoPopup"/>
<listEntry value="com.sap.sailing.gwt.ui.Simulator"/>
</listAttribute>
<stringAttribute key="com.google.gwt.eclipse.core.URL" value="/gwt/Home.html"/>
<listAttribute key="org.eclipse.debug.core.MAPPED_RESOURCE_PATHS">
<listEntry value="/com.sap.sailing.gwt.ui"/>
</listAttribute>
<listAttribute key="org.eclipse.debug.core.MAPPED_RESOURCE_TYPES">
<listEntry value="4"/>
</listAttribute>
<listAttribute key="org.eclipse.debug.ui.favoriteGroups">
<listEntry value="org.eclipse.debug.ui.launchGroup.debug"/>
<listEntry value="org.eclipse.debug.ui.launchGroup.run"/>
</listAttribute>
<listAttribute key="org.eclipse.jdt.launching.CLASSPATH">
<listEntry value="&lt;?xml version=&quot;1.0&quot; encoding=&quot;UTF-8&quot; standalone=&quot;no&quot;?&gt;&#10;&lt;runtimeClasspathEntry containerPath=&quot;org.eclipse.jdt.launching.JRE_CONTAINER/org.eclipse.jdt.internal.debug.ui.launcher.StandardVMType/JavaSE-1.6&quot; javaProject=&quot;com.sap.sailing.gwt.ui&quot; path=&quot;1&quot; type=&quot;4&quot;/&gt;&#10;"/>
<listEntry value="&lt;?xml version=&quot;1.0&quot; encoding=&quot;UTF-8&quot; standalone=&quot;no&quot;?&gt;&#10;&lt;runtimeClasspathEntry internalArchive=&quot;/com.sap.sailing.gwt.ui/src/main/resources&quot; path=&quot;3&quot; type=&quot;2&quot;/&gt;&#10;"/>
<listEntry value="&lt;?xml version=&quot;1.0&quot; encoding=&quot;UTF-8&quot; standalone=&quot;no&quot;?&gt;&#10;&lt;runtimeClasspathEntry internalArchive=&quot;/com.sap.sailing.gwt.ui/src/main/java&quot; path=&quot;3&quot; type=&quot;2&quot;/&gt;&#10;"/>
<listEntry value="&lt;?xml version=&quot;1.0&quot; encoding=&quot;UTF-8&quot; standalone=&quot;no&quot;?&gt;&#10;&lt;runtimeClasspathEntry internalArchive=&quot;/com.sap.sailing.domain/src&quot; path=&quot;3&quot; type=&quot;2&quot;/&gt;&#10;"/>
<listEntry value="&lt;?xml version=&quot;1.0&quot; encoding=&quot;UTF-8&quot; standalone=&quot;no&quot;?&gt;&#10;&lt;runtimeClasspathEntry internalArchive=&quot;/com.googlecode.java-diff-utils/src&quot; path=&quot;3&quot; type=&quot;2&quot;/&gt;&#10;"/>
<listEntry value="&lt;?xml version=&quot;1.0&quot; encoding=&quot;UTF-8&quot; standalone=&quot;no&quot;?&gt;&#10;&lt;runtimeClasspathEntry internalArchive=&quot;/com.sap.sailing.domain.common/src&quot; path=&quot;3&quot; type=&quot;2&quot;/&gt;&#10;"/>
<listEntry value="&lt;?xml version=&quot;1.0&quot; encoding=&quot;UTF-8&quot; standalone=&quot;no&quot;?&gt;&#10;&lt;runtimeClasspathEntry internalArchive=&quot;/org.json.simple/src&quot; path=&quot;3&quot; type=&quot;2&quot;/&gt;&#10;"/>
<listEntry value="&lt;?xml version=&quot;1.0&quot; encoding=&quot;UTF-8&quot; standalone=&quot;no&quot;?&gt;&#10;&lt;runtimeClasspathEntry internalArchive=&quot;/com.sap.sailing.server/src&quot; path=&quot;3&quot; type=&quot;2&quot;/&gt;&#10;"/>
<listEntry value="&lt;?xml version=&quot;1.0&quot; encoding=&quot;UTF-8&quot; standalone=&quot;no&quot;?&gt;&#10;&lt;runtimeClasspathEntry internalArchive=&quot;/com.sap.sailing.domain.tractracadapter/src&quot; path=&quot;3&quot; type=&quot;2&quot;/&gt;&#10;"/>
<listEntry value="&lt;?xml version=&quot;1.0&quot; encoding=&quot;UTF-8&quot; standalone=&quot;no&quot;?&gt;&#10;&lt;runtimeClasspathEntry internalArchive=&quot;/com.sap.sailing.expeditionconnector/src&quot; path=&quot;3&quot; type=&quot;2&quot;/&gt;&#10;"/>
<listEntry value="&lt;?xml version=&quot;1.0&quot; encoding=&quot;UTF-8&quot; standalone=&quot;no&quot;?&gt;&#10;&lt;runtimeClasspathEntry internalArchive=&quot;/com.sap.sailing.declination/src&quot; path=&quot;3&quot; type=&quot;2&quot;/&gt;&#10;"/>
<listEntry value="&lt;?xml version=&quot;1.0&quot; encoding=&quot;UTF-8&quot; standalone=&quot;no&quot;?&gt;&#10;&lt;runtimeClasspathEntry internalArchive=&quot;/com.sap.sailing.declination/resources&quot; path=&quot;3&quot; type=&quot;2&quot;/&gt;&#10;"/>
<listEntry value="&lt;?xml version=&quot;1.0&quot; encoding=&quot;UTF-8&quot; standalone=&quot;no&quot;?&gt;&#10;&lt;runtimeClasspathEntry internalArchive=&quot;/com.sap.sailing.udpconnector/src&quot; path=&quot;3&quot; type=&quot;2&quot;/&gt;&#10;"/>
<listEntry value="&lt;?xml version=&quot;1.0&quot; encoding=&quot;UTF-8&quot; standalone=&quot;no&quot;?&gt;&#10;&lt;runtimeClasspathEntry internalArchive=&quot;/com.sap.sse.mongodb/src&quot; path=&quot;3&quot; type=&quot;2&quot;/&gt;&#10;"/>
<listEntry value="&lt;?xml version=&quot;1.0&quot; encoding=&quot;UTF-8&quot; standalone=&quot;no&quot;?&gt;&#10;&lt;runtimeClasspathEntry internalArchive=&quot;/com.sap.sailing.domain.swisstimingadapter/src&quot; path=&quot;3&quot; type=&quot;2&quot;/&gt;&#10;"/>
<listEntry value="&lt;?xml version=&quot;1.0&quot; encoding=&quot;UTF-8&quot; standalone=&quot;no&quot;?&gt;&#10;&lt;runtimeClasspathEntry internalArchive=&quot;/com.sap.sailing.domain.persistence/src&quot; path=&quot;3&quot; type=&quot;2&quot;/&gt;&#10;"/>
<listEntry value="&lt;?xml version=&quot;1.0&quot; encoding=&quot;UTF-8&quot; standalone=&quot;no&quot;?&gt;&#10;&lt;runtimeClasspathEntry internalArchive=&quot;/com.sap.sailing.domain.swisstimingadapter.persistence/src&quot; path=&quot;3&quot; type=&quot;2&quot;/&gt;&#10;"/>
<listEntry value="&lt;?xml version=&quot;1.0&quot; encoding=&quot;UTF-8&quot; standalone=&quot;no&quot;?&gt;&#10;&lt;runtimeClasspathEntry internalArchive=&quot;/com.sap.sailing.domain.tractracadapter.persistence/src&quot; path=&quot;3&quot; type=&quot;2&quot;/&gt;&#10;"/>
<listEntry value="&lt;?xml version=&quot;1.0&quot; encoding=&quot;UTF-8&quot; standalone=&quot;no&quot;?&gt;&#10;&lt;runtimeClasspathEntry internalArchive=&quot;/org.moxieapps.gwt.highcharts/src&quot; path=&quot;3&quot; type=&quot;2&quot;/&gt;&#10;"/>
<listEntry value="&lt;?xml version=&quot;1.0&quot; encoding=&quot;UTF-8&quot; standalone=&quot;no&quot;?&gt;&#10;&lt;runtimeClasspathEntry internalArchive=&quot;/com.sap.sailing.geocoding/src&quot; path=&quot;3&quot; type=&quot;2&quot;/&gt;&#10;"/>
<listEntry value="&lt;?xml version=&quot;1.0&quot; encoding=&quot;UTF-8&quot; standalone=&quot;no&quot;?&gt;&#10;&lt;runtimeClasspathEntry internalArchive=&quot;/com.sap.sailing.datamining.shared/src&quot; path=&quot;3&quot; type=&quot;2&quot;/&gt;&#10;"/>
<listEntry value="&lt;?xml version=&quot;1.0&quot; encoding=&quot;UTF-8&quot; standalone=&quot;no&quot;?&gt;&#10;&lt;runtimeClasspathEntry internalArchive=&quot;/com.sap.sse.common/src&quot; path=&quot;3&quot; type=&quot;2&quot;/&gt;&#10;"/>
<listEntry value="&lt;?xml version=&quot;1.0&quot; encoding=&quot;UTF-8&quot; standalone=&quot;no&quot;?&gt;&#10;&lt;runtimeClasspathEntry internalArchive=&quot;/com.sap.sse.datamining.shared/src&quot; path=&quot;3&quot; type=&quot;2&quot;/&gt;&#10;"/>
<listEntry value="&lt;?xml version=&quot;1.0&quot; encoding=&quot;UTF-8&quot; standalone=&quot;no&quot;?&gt;&#10;&lt;runtimeClasspathEntry internalArchive=&quot;/com.sap.sse.gwt/src&quot; path=&quot;3&quot; type=&quot;2&quot;/&gt;&#10;"/>
<listEntry value="&lt;?xml version=&quot;1.0&quot; encoding=&quot;UTF-8&quot; standalone=&quot;no&quot;?&gt;&#10;&lt;runtimeClasspathEntry internalArchive=&quot;/com.google.gwt.osgi/lib/gwt-user.jar&quot; path=&quot;3&quot; type=&quot;2&quot;/&gt;&#10;"/>
<listEntry value="&lt;?xml version=&quot;1.0&quot; encoding=&quot;UTF-8&quot; standalone=&quot;no&quot;?&gt;&#10;&lt;runtimeClasspathEntry id=&quot;org.eclipse.jdt.launching.classpathentry.defaultClasspath&quot;&gt;&#10;&lt;memento exportedEntriesOnly=&quot;false&quot; project=&quot;com.sap.sailing.gwt.ui&quot;/&gt;&#10;&lt;/runtimeClasspathEntry&gt;&#10;"/>
<listEntry value="&lt;?xml version=&quot;1.0&quot; encoding=&quot;UTF-8&quot; standalone=&quot;no&quot;?&gt;&#10;&lt;runtimeClasspathEntry internalArchive=&quot;/com.sap.sse.gwt.adminconsole/src&quot; path=&quot;3&quot; type=&quot;2&quot;/&gt;&#10;"/>
<listEntry value="&lt;?xml version=&quot;1.0&quot; encoding=&quot;UTF-8&quot; standalone=&quot;no&quot;?&gt;&#10;&lt;runtimeClasspathEntry internalArchive=&quot;/com.sap.sse.operationaltransformation/src&quot; path=&quot;3&quot; type=&quot;2&quot;/&gt;&#10;"/>
<listEntry value="&lt;?xml version=&quot;1.0&quot; encoding=&quot;UTF-8&quot; standalone=&quot;no&quot;?&gt;&#10;&lt;runtimeClasspathEntry internalArchive=&quot;/com.sap.sse.replication/src&quot; path=&quot;3&quot; type=&quot;2&quot;/&gt;&#10;"/>
<listEntry value="&lt;?xml version=&quot;1.0&quot; encoding=&quot;UTF-8&quot; standalone=&quot;no&quot;?&gt;&#10;&lt;runtimeClasspathEntry internalArchive=&quot;/com.sap.sse.security.common/src&quot; path=&quot;3&quot; type=&quot;2&quot;/&gt;&#10;"/>
</listAttribute>
<stringAttribute key="org.eclipse.jdt.launching.CLASSPATH_PROVIDER" value="com.google.gwt.eclipse.core.moduleClasspathProvider"/>
<booleanAttribute key="org.eclipse.jdt.launching.DEFAULT_CLASSPATH" value="false"/>
<stringAttribute key="org.eclipse.jdt.launching.JRE_CONTAINER" value="org.eclipse.jdt.launching.JRE_CONTAINER/org.eclipse.jdt.internal.debug.ui.launcher.StandardVMType/JavaSE-1.8"/>
<stringAttribute key="org.eclipse.jdt.launching.MAIN_TYPE" value="com.google.gwt.dev.DevMode"/>
<stringAttribute key="org.eclipse.jdt.launching.PROGRAM_ARGUMENTS" value="-nosuperDevMode -war &quot;${project_loc:com.sap.sailing.gwt.ui}&quot; -noserver -remoteUI &quot;${gwt_remote_ui_server_port}:${unique_id}&quot; -logLevel INFO -codeServerPort 9997 -startupUrl /gwt/Home.html com.sap.sailing.gwt.ui.Search -startupUrl /gwt/Home.html com.sap.sailing.gwt.Home -startupUrl /gwt/AdminConsole.html com.sap.sailing.gwt.ui.AdminConsole -startupUrl /gwt/LeaderboardEditing.html com.sap.sailing.gwt.ui.LeaderboardEditing -startupUrl /gwt/Leaderboard.html com.sap.sailing.gwt.ui.Leaderboard -startupUrl /gwt/Spectator.html com.sap.sailing.gwt.ui.Spectator -startupUrl /gwt/RaceBoard.html com.sap.sailing.gwt.ui.RaceBoard -startupUrl /gwt/PolarSheets.html com.sap.sailing.gwt.ui.PolarSheets -startupUrl /gwt/RegattaOverview.html com.sap.sailing.gwt.ui.RegattaOverview -startupUrl /gwt/DataMining.html com.sap.sailing.gwt.ui.DataMining -startupUrl /gwt/Simulator.html com.sap.sailing.gwt.ui.Simulator com.sap.sailing.gwt.ui.VideoPopup"/>
<stringAttribute key="org.eclipse.jdt.launching.PROJECT_ATTR" value="com.sap.sailing.gwt.ui"/>
<stringAttribute key="org.eclipse.jdt.launching.VM_ARGUMENTS" value="-Xmx2048m -XX:MaxPermSize=512m -Xdebug -Xrunjdwp:transport=dt_socket,address=7999,server=y"/>
</launchConfiguration>
<?xml version="1.0" encoding="UTF-8" standalone="no"?>
<launchConfiguration type="com.google.gdt.eclipse.suite.webapp">
<booleanAttribute key="com.google.gdt.eclipse.core.RUN_SERVER" value="false"/>
<stringAttribute key="com.google.gdt.eclipse.suiteMainTypeProcessor.PREVIOUSLY_SET_MAIN_TYPE_NAME" value="com.google.gwt.dev.GWTShell"/>
<booleanAttribute key="com.google.gdt.eclipse.suiteWarArgumentProcessor.IS_WAR_FROM_PROJECT_PROPERTIES" value="true"/>
<listAttribute key="com.google.gwt.eclipse.core.ENTRY_POINT_MODULES">
<listEntry value="com.sap.sailing.gwt.ui.VideoPopup"/>
<listEntry value="com.sap.sailing.gwt.ui.Simulator"/>
</listAttribute>
<stringAttribute key="com.google.gwt.eclipse.core.URL" value="/gwt/Home.html"/>
<listAttribute key="org.eclipse.debug.core.MAPPED_RESOURCE_PATHS">
<listEntry value="/com.sap.sailing.gwt.ui"/>
</listAttribute>
<listAttribute key="org.eclipse.debug.core.MAPPED_RESOURCE_TYPES">
<listEntry value="4"/>
</listAttribute>
<listAttribute key="org.eclipse.debug.ui.favoriteGroups">
<listEntry value="org.eclipse.debug.ui.launchGroup.debug"/>
<listEntry value="org.eclipse.debug.ui.launchGroup.run"/>
</listAttribute>
<listAttribute key="org.eclipse.jdt.launching.CLASSPATH">
<listEntry value="&lt;?xml version=&quot;1.0&quot; encoding=&quot;UTF-8&quot; standalone=&quot;no&quot;?&gt;&#10;&lt;runtimeClasspathEntry containerPath=&quot;org.eclipse.jdt.launching.JRE_CONTAINER/org.eclipse.jdt.internal.debug.ui.launcher.StandardVMType/JavaSE-1.6&quot; javaProject=&quot;com.sap.sailing.gwt.ui&quot; path=&quot;1&quot; type=&quot;4&quot;/&gt;&#10;"/>
<listEntry value="&lt;?xml version=&quot;1.0&quot; encoding=&quot;UTF-8&quot; standalone=&quot;no&quot;?&gt;&#10;&lt;runtimeClasspathEntry internalArchive=&quot;/com.sap.sailing.gwt.ui/src/main/resources&quot; path=&quot;3&quot; type=&quot;2&quot;/&gt;&#10;"/>
<listEntry value="&lt;?xml version=&quot;1.0&quot; encoding=&quot;UTF-8&quot; standalone=&quot;no&quot;?&gt;&#10;&lt;runtimeClasspathEntry internalArchive=&quot;/com.sap.sailing.gwt.ui/src/main/java&quot; path=&quot;3&quot; type=&quot;2&quot;/&gt;&#10;"/>
<listEntry value="&lt;?xml version=&quot;1.0&quot; encoding=&quot;UTF-8&quot; standalone=&quot;no&quot;?&gt;&#10;&lt;runtimeClasspathEntry internalArchive=&quot;/com.sap.sailing.domain/src&quot; path=&quot;3&quot; type=&quot;2&quot;/&gt;&#10;"/>
<listEntry value="&lt;?xml version=&quot;1.0&quot; encoding=&quot;UTF-8&quot; standalone=&quot;no&quot;?&gt;&#10;&lt;runtimeClasspathEntry internalArchive=&quot;/com.googlecode.java-diff-utils/src&quot; path=&quot;3&quot; type=&quot;2&quot;/&gt;&#10;"/>
<listEntry value="&lt;?xml version=&quot;1.0&quot; encoding=&quot;UTF-8&quot; standalone=&quot;no&quot;?&gt;&#10;&lt;runtimeClasspathEntry internalArchive=&quot;/com.sap.sailing.domain.common/src&quot; path=&quot;3&quot; type=&quot;2&quot;/&gt;&#10;"/>
<listEntry value="&lt;?xml version=&quot;1.0&quot; encoding=&quot;UTF-8&quot; standalone=&quot;no&quot;?&gt;&#10;&lt;runtimeClasspathEntry internalArchive=&quot;/org.json.simple/src&quot; path=&quot;3&quot; type=&quot;2&quot;/&gt;&#10;"/>
<listEntry value="&lt;?xml version=&quot;1.0&quot; encoding=&quot;UTF-8&quot; standalone=&quot;no&quot;?&gt;&#10;&lt;runtimeClasspathEntry internalArchive=&quot;/com.sap.sailing.server/src&quot; path=&quot;3&quot; type=&quot;2&quot;/&gt;&#10;"/>
<listEntry value="&lt;?xml version=&quot;1.0&quot; encoding=&quot;UTF-8&quot; standalone=&quot;no&quot;?&gt;&#10;&lt;runtimeClasspathEntry internalArchive=&quot;/com.sap.sailing.domain.tractracadapter/src&quot; path=&quot;3&quot; type=&quot;2&quot;/&gt;&#10;"/>
<listEntry value="&lt;?xml version=&quot;1.0&quot; encoding=&quot;UTF-8&quot; standalone=&quot;no&quot;?&gt;&#10;&lt;runtimeClasspathEntry internalArchive=&quot;/com.sap.sailing.expeditionconnector/src&quot; path=&quot;3&quot; type=&quot;2&quot;/&gt;&#10;"/>
<listEntry value="&lt;?xml version=&quot;1.0&quot; encoding=&quot;UTF-8&quot; standalone=&quot;no&quot;?&gt;&#10;&lt;runtimeClasspathEntry internalArchive=&quot;/com.sap.sailing.declination/src&quot; path=&quot;3&quot; type=&quot;2&quot;/&gt;&#10;"/>
<listEntry value="&lt;?xml version=&quot;1.0&quot; encoding=&quot;UTF-8&quot; standalone=&quot;no&quot;?&gt;&#10;&lt;runtimeClasspathEntry internalArchive=&quot;/com.sap.sailing.declination/resources&quot; path=&quot;3&quot; type=&quot;2&quot;/&gt;&#10;"/>
<listEntry value="&lt;?xml version=&quot;1.0&quot; encoding=&quot;UTF-8&quot; standalone=&quot;no&quot;?&gt;&#10;&lt;runtimeClasspathEntry internalArchive=&quot;/com.sap.sailing.udpconnector/src&quot; path=&quot;3&quot; type=&quot;2&quot;/&gt;&#10;"/>
<listEntry value="&lt;?xml version=&quot;1.0&quot; encoding=&quot;UTF-8&quot; standalone=&quot;no&quot;?&gt;&#10;&lt;runtimeClasspathEntry internalArchive=&quot;/com.sap.sse.mongodb/src&quot; path=&quot;3&quot; type=&quot;2&quot;/&gt;&#10;"/>
<listEntry value="&lt;?xml version=&quot;1.0&quot; encoding=&quot;UTF-8&quot; standalone=&quot;no&quot;?&gt;&#10;&lt;runtimeClasspathEntry internalArchive=&quot;/com.sap.sailing.domain.swisstimingadapter/src&quot; path=&quot;3&quot; type=&quot;2&quot;/&gt;&#10;"/>
<listEntry value="&lt;?xml version=&quot;1.0&quot; encoding=&quot;UTF-8&quot; standalone=&quot;no&quot;?&gt;&#10;&lt;runtimeClasspathEntry internalArchive=&quot;/com.sap.sailing.domain.persistence/src&quot; path=&quot;3&quot; type=&quot;2&quot;/&gt;&#10;"/>
<listEntry value="&lt;?xml version=&quot;1.0&quot; encoding=&quot;UTF-8&quot; standalone=&quot;no&quot;?&gt;&#10;&lt;runtimeClasspathEntry internalArchive=&quot;/com.sap.sailing.domain.swisstimingadapter.persistence/src&quot; path=&quot;3&quot; type=&quot;2&quot;/&gt;&#10;"/>
<listEntry value="&lt;?xml version=&quot;1.0&quot; encoding=&quot;UTF-8&quot; standalone=&quot;no&quot;?&gt;&#10;&lt;runtimeClasspathEntry internalArchive=&quot;/com.sap.sailing.domain.tractracadapter.persistence/src&quot; path=&quot;3&quot; type=&quot;2&quot;/&gt;&#10;"/>
<listEntry value="&lt;?xml version=&quot;1.0&quot; encoding=&quot;UTF-8&quot; standalone=&quot;no&quot;?&gt;&#10;&lt;runtimeClasspathEntry internalArchive=&quot;/org.moxieapps.gwt.highcharts/src&quot; path=&quot;3&quot; type=&quot;2&quot;/&gt;&#10;"/>
<listEntry value="&lt;?xml version=&quot;1.0&quot; encoding=&quot;UTF-8&quot; standalone=&quot;no&quot;?&gt;&#10;&lt;runtimeClasspathEntry internalArchive=&quot;/com.sap.sailing.geocoding/src&quot; path=&quot;3&quot; type=&quot;2&quot;/&gt;&#10;"/>
<listEntry value="&lt;?xml version=&quot;1.0&quot; encoding=&quot;UTF-8&quot; standalone=&quot;no&quot;?&gt;&#10;&lt;runtimeClasspathEntry internalArchive=&quot;/com.sap.sailing.datamining.shared/src&quot; path=&quot;3&quot; type=&quot;2&quot;/&gt;&#10;"/>
<listEntry value="&lt;?xml version=&quot;1.0&quot; encoding=&quot;UTF-8&quot; standalone=&quot;no&quot;?&gt;&#10;&lt;runtimeClasspathEntry internalArchive=&quot;/com.sap.sse.common/src&quot; path=&quot;3&quot; type=&quot;2&quot;/&gt;&#10;"/>
<listEntry value="&lt;?xml version=&quot;1.0&quot; encoding=&quot;UTF-8&quot; standalone=&quot;no&quot;?&gt;&#10;&lt;runtimeClasspathEntry internalArchive=&quot;/com.sap.sse.datamining.shared/src&quot; path=&quot;3&quot; type=&quot;2&quot;/&gt;&#10;"/>
<listEntry value="&lt;?xml version=&quot;1.0&quot; encoding=&quot;UTF-8&quot; standalone=&quot;no&quot;?&gt;&#10;&lt;runtimeClasspathEntry internalArchive=&quot;/com.sap.sse.gwt/src&quot; path=&quot;3&quot; type=&quot;2&quot;/&gt;&#10;"/>
<listEntry value="&lt;?xml version=&quot;1.0&quot; encoding=&quot;UTF-8&quot; standalone=&quot;no&quot;?&gt;&#10;&lt;runtimeClasspathEntry internalArchive=&quot;/com.google.gwt.osgi/lib/gwt-user.jar&quot; path=&quot;3&quot; type=&quot;2&quot;/&gt;&#10;"/>
<listEntry value="&lt;?xml version=&quot;1.0&quot; encoding=&quot;UTF-8&quot; standalone=&quot;no&quot;?&gt;&#10;&lt;runtimeClasspathEntry id=&quot;org.eclipse.jdt.launching.classpathentry.defaultClasspath&quot;&gt;&#10;&lt;memento exportedEntriesOnly=&quot;false&quot; project=&quot;com.sap.sailing.gwt.ui&quot;/&gt;&#10;&lt;/runtimeClasspathEntry&gt;&#10;"/>
<listEntry value="&lt;?xml version=&quot;1.0&quot; encoding=&quot;UTF-8&quot; standalone=&quot;no&quot;?&gt;&#10;&lt;runtimeClasspathEntry internalArchive=&quot;/com.sap.sse.gwt.adminconsole/src&quot; path=&quot;3&quot; type=&quot;2&quot;/&gt;&#10;"/>
<listEntry value="&lt;?xml version=&quot;1.0&quot; encoding=&quot;UTF-8&quot; standalone=&quot;no&quot;?&gt;&#10;&lt;runtimeClasspathEntry internalArchive=&quot;/com.sap.sse.operationaltransformation/src&quot; path=&quot;3&quot; type=&quot;2&quot;/&gt;&#10;"/>
<listEntry value="&lt;?xml version=&quot;1.0&quot; encoding=&quot;UTF-8&quot; standalone=&quot;no&quot;?&gt;&#10;&lt;runtimeClasspathEntry internalArchive=&quot;/com.sap.sse.replication/src&quot; path=&quot;3&quot; type=&quot;2&quot;/&gt;&#10;"/>
<listEntry value="&lt;?xml version=&quot;1.0&quot; encoding=&quot;UTF-8&quot; standalone=&quot;no&quot;?&gt;&#10;&lt;runtimeClasspathEntry internalArchive=&quot;/com.sap.sse.security.common/src&quot; path=&quot;3&quot; type=&quot;2&quot;/&gt;&#10;"/>
</listAttribute>
<stringAttribute key="org.eclipse.jdt.launching.CLASSPATH_PROVIDER" value="com.google.gwt.eclipse.core.moduleClasspathProvider"/>
<booleanAttribute key="org.eclipse.jdt.launching.DEFAULT_CLASSPATH" value="false"/>
<stringAttribute key="org.eclipse.jdt.launching.JRE_CONTAINER" value="org.eclipse.jdt.launching.JRE_CONTAINER/org.eclipse.jdt.internal.debug.ui.launcher.StandardVMType/JavaSE-1.8"/>
<stringAttribute key="org.eclipse.jdt.launching.MAIN_TYPE" value="com.google.gwt.dev.DevMode"/>
<stringAttribute key="org.eclipse.jdt.launching.PROGRAM_ARGUMENTS" value="-nosuperDevMode -war &quot;${project_loc:com.sap.sailing.gwt.ui}&quot; -noserver -remoteUI &quot;${gwt_remote_ui_server_port}:${unique_id}&quot; -logLevel INFO -codeServerPort 9997 -startupUrl /gwt/Home.html com.sap.sailing.gwt.ui.Search -startupUrl /gwt/Home.html com.sap.sailing.gwt.Home -startupUrl /gwt/AdminConsole.html com.sap.sailing.gwt.ui.AdminConsole -startupUrl /gwt/LeaderboardEditing.html com.sap.sailing.gwt.ui.LeaderboardEditing -startupUrl /gwt/Leaderboard.html com.sap.sailing.gwt.ui.Leaderboard -startupUrl /gwt/Spectator.html com.sap.sailing.gwt.ui.Spectator -startupUrl /gwt/RaceBoard.html com.sap.sailing.gwt.ui.RaceBoard -startupUrl /gwt/PolarSheets.html com.sap.sailing.gwt.ui.PolarSheets -startupUrl /gwt/RegattaOverview.html com.sap.sailing.gwt.ui.RegattaOverview -startupUrl /gwt/DataMining.html com.sap.sailing.gwt.ui.DataMining -startupUrl /gwt/Simulator.html com.sap.sailing.gwt.ui.Simulator com.sap.sailing.gwt.ui.VideoPopup"/>
<stringAttribute key="org.eclipse.jdt.launching.PROJECT_ATTR" value="com.sap.sailing.gwt.ui"/>
<stringAttribute key="org.eclipse.jdt.launching.VM_ARGUMENTS" value="-Xmx2048m -XX:MaxPermSize=512m -Xdebug -Xrunjdwp:transport=dt_socket,address=7999,server=y"/>
</launchConfiguration>
@@ -1,75 +1,76 @@
<?xml version="1.0" encoding="UTF-8" standalone="no"?>
<launchConfiguration type="com.google.gdt.eclipse.suite.webapp">
<booleanAttribute key="com.google.gdt.eclipse.core.RUN_SERVER" value="false"/>
<stringAttribute key="com.google.gdt.eclipse.suiteMainTypeProcessor.PREVIOUSLY_SET_MAIN_TYPE_NAME" value="com.google.gwt.dev.GWTShell"/>
<booleanAttribute key="com.google.gdt.eclipse.suiteWarArgumentProcessor.IS_WAR_FROM_PROJECT_PROPERTIES" value="true"/>
<listAttribute key="com.google.gwt.eclipse.core.ENTRY_POINT_MODULES">
<listEntry value="com.sap.sailing.gwt.ui.Simulator"/>
<listEntry value="com.sap.sailing.gwt.ui.Leaderboard"/>
<listEntry value="com.sap.sailing.gwt.ui.PolarSheets"/>
<listEntry value="com.sap.sailing.gwt.ui.RegattaOverview"/>
<listEntry value="com.sap.sailing.gwt.ui.Spectator"/>
<listEntry value="com.sap.sailing.gwt.ui.AdminConsole"/>
<listEntry value="com.sap.sailing.gwt.ui.LeaderboardEditing"/>
<listEntry value="com.sap.sailing.gwt.ui.DataMining"/>
<listEntry value="com.sap.sailing.gwt.Home"/>
<listEntry value="com.sap.sailing.gwt.ui.RaceBoard"/>
<listEntry value="com.sap.sailing.gwt.ui.YoutubePopup"/>
<listEntry value="com.sap.sailing.gwt.AutoPlay"/>
<listEntry value="com.sap.sailing.gwt.ui.VideoPopup"/>
</listAttribute>
<booleanAttribute key="com.google.gwt.eclipse.core.SUPERDEVMODE_ENABLED" value="true"/>
<stringAttribute key="com.google.gwt.eclipse.core.URL" value="/gwt/Home.html"/>
<listAttribute key="org.eclipse.debug.core.MAPPED_RESOURCE_PATHS">
<listEntry value="/com.sap.sailing.gwt.ui"/>
</listAttribute>
<listAttribute key="org.eclipse.debug.core.MAPPED_RESOURCE_TYPES">
<listEntry value="4"/>
</listAttribute>
<listAttribute key="org.eclipse.debug.ui.favoriteGroups">
<listEntry value="org.eclipse.debug.ui.launchGroup.debug"/>
<listEntry value="org.eclipse.debug.ui.launchGroup.run"/>
</listAttribute>
<booleanAttribute key="org.eclipse.jdt.launching.ATTR_USE_START_ON_FIRST_THREAD" value="false"/>
<listAttribute key="org.eclipse.jdt.launching.CLASSPATH">
<listEntry value="&lt;?xml version=&quot;1.0&quot; encoding=&quot;UTF-8&quot; standalone=&quot;no&quot;?&gt;&#13;&#10;&lt;runtimeClasspathEntry containerPath=&quot;org.eclipse.jdt.launching.JRE_CONTAINER/org.eclipse.jdt.internal.debug.ui.launcher.StandardVMType/JavaSE-1.6&quot; javaProject=&quot;com.sap.sailing.gwt.ui&quot; path=&quot;1&quot; type=&quot;4&quot;/&gt;&#13;&#10;"/>
<listEntry value="&lt;?xml version=&quot;1.0&quot; encoding=&quot;UTF-8&quot; standalone=&quot;no&quot;?&gt;&#13;&#10;&lt;runtimeClasspathEntry internalArchive=&quot;/com.sap.sailing.gwt.ui/src/main/resources&quot; path=&quot;3&quot; type=&quot;2&quot;/&gt;&#13;&#10;"/>
<listEntry value="&lt;?xml version=&quot;1.0&quot; encoding=&quot;UTF-8&quot; standalone=&quot;no&quot;?&gt;&#13;&#10;&lt;runtimeClasspathEntry internalArchive=&quot;/com.sap.sailing.gwt.ui/src/main/java&quot; path=&quot;3&quot; type=&quot;2&quot;/&gt;&#13;&#10;"/>
<listEntry value="&lt;?xml version=&quot;1.0&quot; encoding=&quot;UTF-8&quot; standalone=&quot;no&quot;?&gt;&#13;&#10;&lt;runtimeClasspathEntry internalArchive=&quot;/com.sap.sailing.domain/src&quot; path=&quot;3&quot; type=&quot;2&quot;/&gt;&#13;&#10;"/>
<listEntry value="&lt;?xml version=&quot;1.0&quot; encoding=&quot;UTF-8&quot; standalone=&quot;no&quot;?&gt;&#13;&#10;&lt;runtimeClasspathEntry internalArchive=&quot;/com.googlecode.java-diff-utils/src&quot; path=&quot;3&quot; type=&quot;2&quot;/&gt;&#13;&#10;"/>
<listEntry value="&lt;?xml version=&quot;1.0&quot; encoding=&quot;UTF-8&quot; standalone=&quot;no&quot;?&gt;&#13;&#10;&lt;runtimeClasspathEntry internalArchive=&quot;/com.sap.sailing.domain.common/src&quot; path=&quot;3&quot; type=&quot;2&quot;/&gt;&#13;&#10;"/>
<listEntry value="&lt;?xml version=&quot;1.0&quot; encoding=&quot;UTF-8&quot; standalone=&quot;no&quot;?&gt;&#13;&#10;&lt;runtimeClasspathEntry internalArchive=&quot;/org.json.simple/src&quot; path=&quot;3&quot; type=&quot;2&quot;/&gt;&#13;&#10;"/>
<listEntry value="&lt;?xml version=&quot;1.0&quot; encoding=&quot;UTF-8&quot; standalone=&quot;no&quot;?&gt;&#13;&#10;&lt;runtimeClasspathEntry internalArchive=&quot;/com.sap.sailing.server/src&quot; path=&quot;3&quot; type=&quot;2&quot;/&gt;&#13;&#10;"/>
<listEntry value="&lt;?xml version=&quot;1.0&quot; encoding=&quot;UTF-8&quot; standalone=&quot;no&quot;?&gt;&#13;&#10;&lt;runtimeClasspathEntry internalArchive=&quot;/com.sap.sailing.domain.tractracadapter/src&quot; path=&quot;3&quot; type=&quot;2&quot;/&gt;&#13;&#10;"/>
<listEntry value="&lt;?xml version=&quot;1.0&quot; encoding=&quot;UTF-8&quot; standalone=&quot;no&quot;?&gt;&#13;&#10;&lt;runtimeClasspathEntry internalArchive=&quot;/com.sap.sailing.expeditionconnector/src&quot; path=&quot;3&quot; type=&quot;2&quot;/&gt;&#13;&#10;"/>
<listEntry value="&lt;?xml version=&quot;1.0&quot; encoding=&quot;UTF-8&quot; standalone=&quot;no&quot;?&gt;&#13;&#10;&lt;runtimeClasspathEntry internalArchive=&quot;/com.sap.sailing.declination/src&quot; path=&quot;3&quot; type=&quot;2&quot;/&gt;&#13;&#10;"/>
<listEntry value="&lt;?xml version=&quot;1.0&quot; encoding=&quot;UTF-8&quot; standalone=&quot;no&quot;?&gt;&#13;&#10;&lt;runtimeClasspathEntry internalArchive=&quot;/com.sap.sailing.declination/resources&quot; path=&quot;3&quot; type=&quot;2&quot;/&gt;&#13;&#10;"/>
<listEntry value="&lt;?xml version=&quot;1.0&quot; encoding=&quot;UTF-8&quot; standalone=&quot;no&quot;?&gt;&#13;&#10;&lt;runtimeClasspathEntry internalArchive=&quot;/com.sap.sailing.udpconnector/src&quot; path=&quot;3&quot; type=&quot;2&quot;/&gt;&#13;&#10;"/>
<listEntry value="&lt;?xml version=&quot;1.0&quot; encoding=&quot;UTF-8&quot; standalone=&quot;no&quot;?&gt;&#13;&#10;&lt;runtimeClasspathEntry internalArchive=&quot;/com.sap.sse.mongodb/src&quot; path=&quot;3&quot; type=&quot;2&quot;/&gt;&#13;&#10;"/>
<listEntry value="&lt;?xml version=&quot;1.0&quot; encoding=&quot;UTF-8&quot; standalone=&quot;no&quot;?&gt;&#13;&#10;&lt;runtimeClasspathEntry internalArchive=&quot;/com.sap.sailing.domain.swisstimingadapter/src&quot; path=&quot;3&quot; type=&quot;2&quot;/&gt;&#13;&#10;"/>
<listEntry value="&lt;?xml version=&quot;1.0&quot; encoding=&quot;UTF-8&quot; standalone=&quot;no&quot;?&gt;&#13;&#10;&lt;runtimeClasspathEntry internalArchive=&quot;/com.sap.sailing.domain.persistence/src&quot; path=&quot;3&quot; type=&quot;2&quot;/&gt;&#13;&#10;"/>
<listEntry value="&lt;?xml version=&quot;1.0&quot; encoding=&quot;UTF-8&quot; standalone=&quot;no&quot;?&gt;&#13;&#10;&lt;runtimeClasspathEntry internalArchive=&quot;/com.sap.sailing.domain.swisstimingadapter.persistence/src&quot; path=&quot;3&quot; type=&quot;2&quot;/&gt;&#13;&#10;"/>
<listEntry value="&lt;?xml version=&quot;1.0&quot; encoding=&quot;UTF-8&quot; standalone=&quot;no&quot;?&gt;&#13;&#10;&lt;runtimeClasspathEntry internalArchive=&quot;/com.sap.sse.operationaltransformation/src&quot; path=&quot;3&quot; type=&quot;2&quot;/&gt;&#13;&#10;"/>
<listEntry value="&lt;?xml version=&quot;1.0&quot; encoding=&quot;UTF-8&quot; standalone=&quot;no&quot;?&gt;&#13;&#10;&lt;runtimeClasspathEntry internalArchive=&quot;/com.sap.sse.replication/src&quot; path=&quot;3&quot; type=&quot;2&quot;/&gt;&#13;&#10;"/>
<listEntry value="&lt;?xml version=&quot;1.0&quot; encoding=&quot;UTF-8&quot; standalone=&quot;no&quot;?&gt;&#13;&#10;&lt;runtimeClasspathEntry internalArchive=&quot;/com.sap.sailing.domain.tractracadapter.persistence/src&quot; path=&quot;3&quot; type=&quot;2&quot;/&gt;&#13;&#10;"/>
<listEntry value="&lt;?xml version=&quot;1.0&quot; encoding=&quot;UTF-8&quot; standalone=&quot;no&quot;?&gt;&#13;&#10;&lt;runtimeClasspathEntry internalArchive=&quot;/org.moxieapps.gwt.highcharts/src&quot; path=&quot;3&quot; type=&quot;2&quot;/&gt;&#13;&#10;"/>
<listEntry value="&lt;?xml version=&quot;1.0&quot; encoding=&quot;UTF-8&quot; standalone=&quot;no&quot;?&gt;&#13;&#10;&lt;runtimeClasspathEntry internalArchive=&quot;/com.sap.sailing.geocoding/src&quot; path=&quot;3&quot; type=&quot;2&quot;/&gt;&#13;&#10;"/>
<listEntry value="&lt;?xml version=&quot;1.0&quot; encoding=&quot;UTF-8&quot; standalone=&quot;no&quot;?&gt;&#13;&#10;&lt;runtimeClasspathEntry internalArchive=&quot;/com.sap.sailing.datamining.shared/src&quot; path=&quot;3&quot; type=&quot;2&quot;/&gt;&#13;&#10;"/>
<listEntry value="&lt;?xml version=&quot;1.0&quot; encoding=&quot;UTF-8&quot; standalone=&quot;no&quot;?&gt;&#13;&#10;&lt;runtimeClasspathEntry internalArchive=&quot;/com.sap.sse.common/src&quot; path=&quot;3&quot; type=&quot;2&quot;/&gt;&#13;&#10;"/>
<listEntry value="&lt;?xml version=&quot;1.0&quot; encoding=&quot;UTF-8&quot; standalone=&quot;no&quot;?&gt;&#13;&#10;&lt;runtimeClasspathEntry internalArchive=&quot;/com.sap.sse.datamining.shared/src&quot; path=&quot;3&quot; type=&quot;2&quot;/&gt;&#13;&#10;"/>
<listEntry value="&lt;?xml version=&quot;1.0&quot; encoding=&quot;UTF-8&quot; standalone=&quot;no&quot;?&gt;&#13;&#10;&lt;runtimeClasspathEntry internalArchive=&quot;/com.sap.sse.gwt/src&quot; path=&quot;3&quot; type=&quot;2&quot;/&gt;&#13;&#10;"/>
<listEntry value="&lt;?xml version=&quot;1.0&quot; encoding=&quot;UTF-8&quot; standalone=&quot;no&quot;?&gt;&#13;&#10;&lt;runtimeClasspathEntry internalArchive=&quot;/com.google.gwt.osgi/lib/gwt-user.jar&quot; path=&quot;3&quot; type=&quot;2&quot;/&gt;&#13;&#10;"/>
<listEntry value="&lt;?xml version=&quot;1.0&quot; encoding=&quot;UTF-8&quot; standalone=&quot;no&quot;?&gt;&#13;&#10;&lt;runtimeClasspathEntry id=&quot;org.eclipse.jdt.launching.classpathentry.defaultClasspath&quot;&gt;&#13;&#10;&lt;memento exportedEntriesOnly=&quot;false&quot; project=&quot;com.sap.sailing.gwt.ui&quot;/&gt;&#13;&#10;&lt;/runtimeClasspathEntry&gt;&#13;&#10;"/>
<listEntry value="&lt;?xml version=&quot;1.0&quot; encoding=&quot;UTF-8&quot; standalone=&quot;no&quot;?&gt;&#13;&#10;&lt;runtimeClasspathEntry internalArchive=&quot;/com.sap.sse.security/src&quot; path=&quot;3&quot; type=&quot;2&quot;/&gt;&#13;&#10;"/>
<listEntry value="&lt;?xml version=&quot;1.0&quot; encoding=&quot;UTF-8&quot; standalone=&quot;no&quot;?&gt;&#13;&#10;&lt;runtimeClasspathEntry internalArchive=&quot;/com.sap.sse.security.ui/src/main/java&quot; path=&quot;3&quot; type=&quot;2&quot;/&gt;&#13;&#10;"/>
<listEntry value="&lt;?xml version=&quot;1.0&quot; encoding=&quot;UTF-8&quot; standalone=&quot;no&quot;?&gt;&#13;&#10;&lt;runtimeClasspathEntry internalArchive=&quot;/com.sap.sse.gwt.adminconsole/src&quot; path=&quot;3&quot; type=&quot;2&quot;/&gt;&#13;&#10;"/>
<listEntry value="&lt;?xml version=&quot;1.0&quot; encoding=&quot;UTF-8&quot; standalone=&quot;no&quot;?&gt;&#13;&#10;&lt;runtimeClasspathEntry internalArchive=&quot;/com.sap.sse.security.common/src&quot; path=&quot;3&quot; type=&quot;2&quot;/&gt;&#13;&#10;"/>
</listAttribute>
<stringAttribute key="org.eclipse.jdt.launching.CLASSPATH_PROVIDER" value="com.google.gwt.eclipse.core.moduleClasspathProvider"/>
<booleanAttribute key="org.eclipse.jdt.launching.DEFAULT_CLASSPATH" value="false"/>
<stringAttribute key="org.eclipse.jdt.launching.JRE_CONTAINER" value="org.eclipse.jdt.launching.JRE_CONTAINER/org.eclipse.jdt.internal.debug.ui.launcher.StandardVMType/JavaSE-1.8"/>
<stringAttribute key="org.eclipse.jdt.launching.MAIN_TYPE" value="com.google.gwt.dev.DevMode"/>
<stringAttribute key="org.eclipse.jdt.launching.PROGRAM_ARGUMENTS" value="-superDevMode -incremental -war &quot;${project_loc:com.sap.sailing.gwt.ui}&quot; -noserver -remoteUI &quot;${gwt_remote_ui_server_port}:${unique_id}&quot; -logLevel INFO -codeServerPort 9997 -startupUrl /gwt/Home.html com.sap.sailing.gwt.Home -startupUrl /gwt/AdminConsole.html com.sap.sailing.gwt.ui.AdminConsole -startupUrl /gwt/LeaderboardEditing.html com.sap.sailing.gwt.ui.LeaderboardEditing -startupUrl /gwt/Leaderboard.html com.sap.sailing.gwt.ui.Leaderboard -startupUrl /gwt/Spectator.html com.sap.sailing.gwt.ui.Spectator -startupUrl /gwt/RaceBoard.html com.sap.sailing.gwt.ui.RaceBoard -startupUrl /gwt/PolarSheets.html com.sap.sailing.gwt.ui.PolarSheets -startupUrl /gwt/RegattaOverview.html com.sap.sailing.gwt.ui.RegattaOverview -startupUrl /gwt/DataMining.html com.sap.sailing.gwt.ui.DataMining -startupUrl /gwt/Simulator.html com.sap.sailing.gwt.ui.Simulator -startupUrl /gwt/VideoPopup.html com.sap.sailing.gwt.ui.VideoPopup com.sap.sailing.gwt.AutoPlay com.sap.sailing.gwt.ui.YoutubePopup com.sap.sailing.gwt.ui.RaceBoard com.sap.sailing.gwt.Home com.sap.sailing.gwt.ui.DataMining com.sap.sailing.gwt.ui.LeaderboardEditing com.sap.sailing.gwt.ui.AdminConsole com.sap.sailing.gwt.ui.Spectator com.sap.sailing.gwt.ui.RegattaOverview com.sap.sailing.gwt.ui.PolarSheets com.sap.sailing.gwt.ui.Leaderboard com.sap.sailing.gwt.ui.Simulator"/>
<stringAttribute key="org.eclipse.jdt.launching.PROJECT_ATTR" value="com.sap.sailing.gwt.ui"/>
<stringAttribute key="org.eclipse.jdt.launching.VM_ARGUMENTS" value="-Xms1024m -Xmx3072m"/>
</launchConfiguration>
<?xml version="1.0" encoding="UTF-8" standalone="no"?>
<launchConfiguration type="com.google.gdt.eclipse.suite.webapp">
<booleanAttribute key="com.google.gdt.eclipse.core.RUN_SERVER" value="false"/>
<stringAttribute key="com.google.gdt.eclipse.suiteMainTypeProcessor.PREVIOUSLY_SET_MAIN_TYPE_NAME" value="com.google.gwt.dev.GWTShell"/>
<booleanAttribute key="com.google.gdt.eclipse.suiteWarArgumentProcessor.IS_WAR_FROM_PROJECT_PROPERTIES" value="true"/>
<booleanAttribute key="com.google.gwt.eclipse.core.CODE_SERVER_PORT_AUTO" value="true"/>
<listAttribute key="com.google.gwt.eclipse.core.ENTRY_POINT_MODULES">
<listEntry value="com.sap.sailing.gwt.ui.Simulator"/>
<listEntry value="com.sap.sailing.gwt.ui.Leaderboard"/>
<listEntry value="com.sap.sailing.gwt.ui.PolarSheets"/>
<listEntry value="com.sap.sailing.gwt.ui.RegattaOverview"/>
<listEntry value="com.sap.sailing.gwt.ui.Spectator"/>
<listEntry value="com.sap.sailing.gwt.ui.AdminConsole"/>
<listEntry value="com.sap.sailing.gwt.ui.LeaderboardEditing"/>
<listEntry value="com.sap.sailing.gwt.ui.DataMining"/>
<listEntry value="com.sap.sailing.gwt.Home"/>
<listEntry value="com.sap.sailing.gwt.ui.RaceBoard"/>
<listEntry value="com.sap.sailing.gwt.ui.YoutubePopup"/>
<listEntry value="com.sap.sailing.gwt.AutoPlay"/>
<listEntry value="com.sap.sailing.gwt.ui.VideoPopup"/>
</listAttribute>
<booleanAttribute key="com.google.gwt.eclipse.core.SUPERDEVMODE_ENABLED" value="true"/>
<stringAttribute key="com.google.gwt.eclipse.core.URL" value="/gwt/Home.html"/>
<listAttribute key="org.eclipse.debug.core.MAPPED_RESOURCE_PATHS">
<listEntry value="/com.sap.sailing.gwt.ui"/>
</listAttribute>
<listAttribute key="org.eclipse.debug.core.MAPPED_RESOURCE_TYPES">
<listEntry value="4"/>
</listAttribute>
<listAttribute key="org.eclipse.debug.ui.favoriteGroups">
<listEntry value="org.eclipse.debug.ui.launchGroup.debug"/>
<listEntry value="org.eclipse.debug.ui.launchGroup.run"/>
</listAttribute>
<booleanAttribute key="org.eclipse.jdt.launching.ATTR_USE_START_ON_FIRST_THREAD" value="false"/>
<listAttribute key="org.eclipse.jdt.launching.CLASSPATH">
<listEntry value="&lt;?xml version=&quot;1.0&quot; encoding=&quot;UTF-8&quot; standalone=&quot;no&quot;?&gt;&#13;&#10;&lt;runtimeClasspathEntry containerPath=&quot;org.eclipse.jdt.launching.JRE_CONTAINER/org.eclipse.jdt.internal.debug.ui.launcher.StandardVMType/JavaSE-1.6&quot; javaProject=&quot;com.sap.sailing.gwt.ui&quot; path=&quot;1&quot; type=&quot;4&quot;/&gt;&#13;&#10;"/>
<listEntry value="&lt;?xml version=&quot;1.0&quot; encoding=&quot;UTF-8&quot; standalone=&quot;no&quot;?&gt;&#13;&#10;&lt;runtimeClasspathEntry internalArchive=&quot;/com.sap.sailing.gwt.ui/src/main/resources&quot; path=&quot;3&quot; type=&quot;2&quot;/&gt;&#13;&#10;"/>
<listEntry value="&lt;?xml version=&quot;1.0&quot; encoding=&quot;UTF-8&quot; standalone=&quot;no&quot;?&gt;&#13;&#10;&lt;runtimeClasspathEntry internalArchive=&quot;/com.sap.sailing.gwt.ui/src/main/java&quot; path=&quot;3&quot; type=&quot;2&quot;/&gt;&#13;&#10;"/>
<listEntry value="&lt;?xml version=&quot;1.0&quot; encoding=&quot;UTF-8&quot; standalone=&quot;no&quot;?&gt;&#13;&#10;&lt;runtimeClasspathEntry internalArchive=&quot;/com.sap.sailing.domain/src&quot; path=&quot;3&quot; type=&quot;2&quot;/&gt;&#13;&#10;"/>
<listEntry value="&lt;?xml version=&quot;1.0&quot; encoding=&quot;UTF-8&quot; standalone=&quot;no&quot;?&gt;&#13;&#10;&lt;runtimeClasspathEntry internalArchive=&quot;/com.googlecode.java-diff-utils/src&quot; path=&quot;3&quot; type=&quot;2&quot;/&gt;&#13;&#10;"/>
<listEntry value="&lt;?xml version=&quot;1.0&quot; encoding=&quot;UTF-8&quot; standalone=&quot;no&quot;?&gt;&#13;&#10;&lt;runtimeClasspathEntry internalArchive=&quot;/com.sap.sailing.domain.common/src&quot; path=&quot;3&quot; type=&quot;2&quot;/&gt;&#13;&#10;"/>
<listEntry value="&lt;?xml version=&quot;1.0&quot; encoding=&quot;UTF-8&quot; standalone=&quot;no&quot;?&gt;&#13;&#10;&lt;runtimeClasspathEntry internalArchive=&quot;/org.json.simple/src&quot; path=&quot;3&quot; type=&quot;2&quot;/&gt;&#13;&#10;"/>
<listEntry value="&lt;?xml version=&quot;1.0&quot; encoding=&quot;UTF-8&quot; standalone=&quot;no&quot;?&gt;&#13;&#10;&lt;runtimeClasspathEntry internalArchive=&quot;/com.sap.sailing.server/src&quot; path=&quot;3&quot; type=&quot;2&quot;/&gt;&#13;&#10;"/>
<listEntry value="&lt;?xml version=&quot;1.0&quot; encoding=&quot;UTF-8&quot; standalone=&quot;no&quot;?&gt;&#13;&#10;&lt;runtimeClasspathEntry internalArchive=&quot;/com.sap.sailing.domain.tractracadapter/src&quot; path=&quot;3&quot; type=&quot;2&quot;/&gt;&#13;&#10;"/>
<listEntry value="&lt;?xml version=&quot;1.0&quot; encoding=&quot;UTF-8&quot; standalone=&quot;no&quot;?&gt;&#13;&#10;&lt;runtimeClasspathEntry internalArchive=&quot;/com.sap.sailing.expeditionconnector/src&quot; path=&quot;3&quot; type=&quot;2&quot;/&gt;&#13;&#10;"/>
<listEntry value="&lt;?xml version=&quot;1.0&quot; encoding=&quot;UTF-8&quot; standalone=&quot;no&quot;?&gt;&#13;&#10;&lt;runtimeClasspathEntry internalArchive=&quot;/com.sap.sailing.declination/src&quot; path=&quot;3&quot; type=&quot;2&quot;/&gt;&#13;&#10;"/>
<listEntry value="&lt;?xml version=&quot;1.0&quot; encoding=&quot;UTF-8&quot; standalone=&quot;no&quot;?&gt;&#13;&#10;&lt;runtimeClasspathEntry internalArchive=&quot;/com.sap.sailing.declination/resources&quot; path=&quot;3&quot; type=&quot;2&quot;/&gt;&#13;&#10;"/>
<listEntry value="&lt;?xml version=&quot;1.0&quot; encoding=&quot;UTF-8&quot; standalone=&quot;no&quot;?&gt;&#13;&#10;&lt;runtimeClasspathEntry internalArchive=&quot;/com.sap.sailing.udpconnector/src&quot; path=&quot;3&quot; type=&quot;2&quot;/&gt;&#13;&#10;"/>
<listEntry value="&lt;?xml version=&quot;1.0&quot; encoding=&quot;UTF-8&quot; standalone=&quot;no&quot;?&gt;&#13;&#10;&lt;runtimeClasspathEntry internalArchive=&quot;/com.sap.sse.mongodb/src&quot; path=&quot;3&quot; type=&quot;2&quot;/&gt;&#13;&#10;"/>
<listEntry value="&lt;?xml version=&quot;1.0&quot; encoding=&quot;UTF-8&quot; standalone=&quot;no&quot;?&gt;&#13;&#10;&lt;runtimeClasspathEntry internalArchive=&quot;/com.sap.sailing.domain.swisstimingadapter/src&quot; path=&quot;3&quot; type=&quot;2&quot;/&gt;&#13;&#10;"/>
<listEntry value="&lt;?xml version=&quot;1.0&quot; encoding=&quot;UTF-8&quot; standalone=&quot;no&quot;?&gt;&#13;&#10;&lt;runtimeClasspathEntry internalArchive=&quot;/com.sap.sailing.domain.persistence/src&quot; path=&quot;3&quot; type=&quot;2&quot;/&gt;&#13;&#10;"/>
<listEntry value="&lt;?xml version=&quot;1.0&quot; encoding=&quot;UTF-8&quot; standalone=&quot;no&quot;?&gt;&#13;&#10;&lt;runtimeClasspathEntry internalArchive=&quot;/com.sap.sailing.domain.swisstimingadapter.persistence/src&quot; path=&quot;3&quot; type=&quot;2&quot;/&gt;&#13;&#10;"/>
<listEntry value="&lt;?xml version=&quot;1.0&quot; encoding=&quot;UTF-8&quot; standalone=&quot;no&quot;?&gt;&#13;&#10;&lt;runtimeClasspathEntry internalArchive=&quot;/com.sap.sse.operationaltransformation/src&quot; path=&quot;3&quot; type=&quot;2&quot;/&gt;&#13;&#10;"/>
<listEntry value="&lt;?xml version=&quot;1.0&quot; encoding=&quot;UTF-8&quot; standalone=&quot;no&quot;?&gt;&#13;&#10;&lt;runtimeClasspathEntry internalArchive=&quot;/com.sap.sse.replication/src&quot; path=&quot;3&quot; type=&quot;2&quot;/&gt;&#13;&#10;"/>
<listEntry value="&lt;?xml version=&quot;1.0&quot; encoding=&quot;UTF-8&quot; standalone=&quot;no&quot;?&gt;&#13;&#10;&lt;runtimeClasspathEntry internalArchive=&quot;/com.sap.sailing.domain.tractracadapter.persistence/src&quot; path=&quot;3&quot; type=&quot;2&quot;/&gt;&#13;&#10;"/>
<listEntry value="&lt;?xml version=&quot;1.0&quot; encoding=&quot;UTF-8&quot; standalone=&quot;no&quot;?&gt;&#13;&#10;&lt;runtimeClasspathEntry internalArchive=&quot;/org.moxieapps.gwt.highcharts/src&quot; path=&quot;3&quot; type=&quot;2&quot;/&gt;&#13;&#10;"/>
<listEntry value="&lt;?xml version=&quot;1.0&quot; encoding=&quot;UTF-8&quot; standalone=&quot;no&quot;?&gt;&#13;&#10;&lt;runtimeClasspathEntry internalArchive=&quot;/com.sap.sailing.geocoding/src&quot; path=&quot;3&quot; type=&quot;2&quot;/&gt;&#13;&#10;"/>
<listEntry value="&lt;?xml version=&quot;1.0&quot; encoding=&quot;UTF-8&quot; standalone=&quot;no&quot;?&gt;&#13;&#10;&lt;runtimeClasspathEntry internalArchive=&quot;/com.sap.sailing.datamining.shared/src&quot; path=&quot;3&quot; type=&quot;2&quot;/&gt;&#13;&#10;"/>
<listEntry value="&lt;?xml version=&quot;1.0&quot; encoding=&quot;UTF-8&quot; standalone=&quot;no&quot;?&gt;&#13;&#10;&lt;runtimeClasspathEntry internalArchive=&quot;/com.sap.sse.common/src&quot; path=&quot;3&quot; type=&quot;2&quot;/&gt;&#13;&#10;"/>
<listEntry value="&lt;?xml version=&quot;1.0&quot; encoding=&quot;UTF-8&quot; standalone=&quot;no&quot;?&gt;&#13;&#10;&lt;runtimeClasspathEntry internalArchive=&quot;/com.sap.sse.datamining.shared/src&quot; path=&quot;3&quot; type=&quot;2&quot;/&gt;&#13;&#10;"/>
<listEntry value="&lt;?xml version=&quot;1.0&quot; encoding=&quot;UTF-8&quot; standalone=&quot;no&quot;?&gt;&#13;&#10;&lt;runtimeClasspathEntry internalArchive=&quot;/com.sap.sse.gwt/src&quot; path=&quot;3&quot; type=&quot;2&quot;/&gt;&#13;&#10;"/>
<listEntry value="&lt;?xml version=&quot;1.0&quot; encoding=&quot;UTF-8&quot; standalone=&quot;no&quot;?&gt;&#13;&#10;&lt;runtimeClasspathEntry internalArchive=&quot;/com.google.gwt.osgi/lib/gwt-user.jar&quot; path=&quot;3&quot; type=&quot;2&quot;/&gt;&#13;&#10;"/>
<listEntry value="&lt;?xml version=&quot;1.0&quot; encoding=&quot;UTF-8&quot; standalone=&quot;no&quot;?&gt;&#13;&#10;&lt;runtimeClasspathEntry id=&quot;org.eclipse.jdt.launching.classpathentry.defaultClasspath&quot;&gt;&#13;&#10;&lt;memento exportedEntriesOnly=&quot;false&quot; project=&quot;com.sap.sailing.gwt.ui&quot;/&gt;&#13;&#10;&lt;/runtimeClasspathEntry&gt;&#13;&#10;"/>
<listEntry value="&lt;?xml version=&quot;1.0&quot; encoding=&quot;UTF-8&quot; standalone=&quot;no&quot;?&gt;&#13;&#10;&lt;runtimeClasspathEntry internalArchive=&quot;/com.sap.sse.security/src&quot; path=&quot;3&quot; type=&quot;2&quot;/&gt;&#13;&#10;"/>
<listEntry value="&lt;?xml version=&quot;1.0&quot; encoding=&quot;UTF-8&quot; standalone=&quot;no&quot;?&gt;&#13;&#10;&lt;runtimeClasspathEntry internalArchive=&quot;/com.sap.sse.security.ui/src/main/java&quot; path=&quot;3&quot; type=&quot;2&quot;/&gt;&#13;&#10;"/>
<listEntry value="&lt;?xml version=&quot;1.0&quot; encoding=&quot;UTF-8&quot; standalone=&quot;no&quot;?&gt;&#13;&#10;&lt;runtimeClasspathEntry internalArchive=&quot;/com.sap.sse.gwt.adminconsole/src&quot; path=&quot;3&quot; type=&quot;2&quot;/&gt;&#13;&#10;"/>
<listEntry value="&lt;?xml version=&quot;1.0&quot; encoding=&quot;UTF-8&quot; standalone=&quot;no&quot;?&gt;&#13;&#10;&lt;runtimeClasspathEntry internalArchive=&quot;/com.sap.sse.security.common/src&quot; path=&quot;3&quot; type=&quot;2&quot;/&gt;&#13;&#10;"/>
</listAttribute>
<stringAttribute key="org.eclipse.jdt.launching.CLASSPATH_PROVIDER" value="com.google.gwt.eclipse.core.moduleClasspathProvider"/>
<booleanAttribute key="org.eclipse.jdt.launching.DEFAULT_CLASSPATH" value="false"/>
<stringAttribute key="org.eclipse.jdt.launching.JRE_CONTAINER" value="org.eclipse.jdt.launching.JRE_CONTAINER/org.eclipse.jdt.internal.debug.ui.launcher.StandardVMType/JavaSE-1.8"/>
<stringAttribute key="org.eclipse.jdt.launching.MAIN_TYPE" value="com.google.gwt.dev.DevMode"/>
<stringAttribute key="org.eclipse.jdt.launching.PROGRAM_ARGUMENTS" value="-superDevMode -incremental -war &quot;${project_loc:com.sap.sailing.gwt.ui}&quot; -noserver -remoteUI &quot;${gwt_remote_ui_server_port}:${unique_id}&quot; -logLevel INFO -codeServerPort auto -startupUrl /gwt/Home.html com.sap.sailing.gwt.Home -startupUrl /gwt/AdminConsole.html com.sap.sailing.gwt.ui.AdminConsole -startupUrl /gwt/LeaderboardEditing.html com.sap.sailing.gwt.ui.LeaderboardEditing -startupUrl /gwt/Leaderboard.html com.sap.sailing.gwt.ui.Leaderboard -startupUrl /gwt/Spectator.html com.sap.sailing.gwt.ui.Spectator -startupUrl /gwt/RaceBoard.html com.sap.sailing.gwt.ui.RaceBoard -startupUrl /gwt/PolarSheets.html com.sap.sailing.gwt.ui.PolarSheets -startupUrl /gwt/RegattaOverview.html com.sap.sailing.gwt.ui.RegattaOverview -startupUrl /gwt/DataMining.html com.sap.sailing.gwt.ui.DataMining -startupUrl /gwt/Simulator.html com.sap.sailing.gwt.ui.Simulator -startupUrl /gwt/VideoPopup.html com.sap.sailing.gwt.ui.VideoPopup com.sap.sailing.gwt.AutoPlay com.sap.sailing.gwt.ui.YoutubePopup com.sap.sailing.gwt.ui.Simulator com.sap.sailing.gwt.ui.Leaderboard com.sap.sailing.gwt.ui.PolarSheets com.sap.sailing.gwt.ui.RegattaOverview com.sap.sailing.gwt.ui.Spectator com.sap.sailing.gwt.ui.AdminConsole com.sap.sailing.gwt.ui.LeaderboardEditing com.sap.sailing.gwt.ui.DataMining com.sap.sailing.gwt.Home com.sap.sailing.gwt.ui.RaceBoard"/>
<stringAttribute key="org.eclipse.jdt.launching.PROJECT_ATTR" value="com.sap.sailing.gwt.ui"/>
<stringAttribute key="org.eclipse.jdt.launching.VM_ARGUMENTS" value="-Xms1024m -Xmx3072m"/>
</launchConfiguration>
+74 -73
View File
@@ -1,73 +1,74 @@
<?xml version="1.0" encoding="UTF-8" standalone="no"?>
<launchConfiguration type="com.google.gdt.eclipse.suite.webapp">
<booleanAttribute key="com.google.gdt.eclipse.core.RUN_SERVER" value="false"/>
<stringAttribute key="com.google.gdt.eclipse.suiteMainTypeProcessor.PREVIOUSLY_SET_MAIN_TYPE_NAME" value="com.google.gwt.dev.GWTShell"/>
<booleanAttribute key="com.google.gdt.eclipse.suiteWarArgumentProcessor.IS_WAR_FROM_PROJECT_PROPERTIES" value="true"/>
<listAttribute key="com.google.gwt.eclipse.core.ENTRY_POINT_MODULES">
<listEntry value="com.sap.sailing.gwt.ui.RaceBoard"/>
<listEntry value="com.sap.sailing.gwt.Home"/>
<listEntry value="com.sap.sailing.gwt.ui.DataMining"/>
<listEntry value="com.sap.sailing.gwt.ui.YoutubePopup"/>
<listEntry value="com.sap.sailing.gwt.ui.LeaderboardEditing"/>
<listEntry value="com.sap.sailing.gwt.ui.AdminConsole"/>
<listEntry value="com.sap.sailing.gwt.ui.Spectator"/>
<listEntry value="com.sap.sailing.gwt.ui.RegattaOverview"/>
<listEntry value="com.sap.sailing.gwt.AutoPlay"/>
<listEntry value="com.sap.sailing.gwt.ui.VideoPopup"/>
<listEntry value="com.sap.sailing.gwt.ui.PolarSheets"/>
<listEntry value="com.sap.sailing.gwt.ui.Leaderboard"/>
<listEntry value="com.sap.sailing.gwt.ui.Simulator"/>
</listAttribute>
<stringAttribute key="com.google.gwt.eclipse.core.URL" value="/gwt/Home.html"/>
<listAttribute key="org.eclipse.debug.core.MAPPED_RESOURCE_PATHS">
<listEntry value="/com.sap.sailing.gwt.ui"/>
</listAttribute>
<listAttribute key="org.eclipse.debug.core.MAPPED_RESOURCE_TYPES">
<listEntry value="4"/>
</listAttribute>
<listAttribute key="org.eclipse.debug.ui.favoriteGroups">
<listEntry value="org.eclipse.debug.ui.launchGroup.debug"/>
<listEntry value="org.eclipse.debug.ui.launchGroup.run"/>
</listAttribute>
<listAttribute key="org.eclipse.jdt.launching.CLASSPATH">
<listEntry value="&lt;?xml version=&quot;1.0&quot; encoding=&quot;UTF-8&quot; standalone=&quot;no&quot;?&gt;&#13;&#10;&lt;runtimeClasspathEntry containerPath=&quot;org.eclipse.jdt.launching.JRE_CONTAINER/org.eclipse.jdt.internal.debug.ui.launcher.StandardVMType/JavaSE-1.6&quot; javaProject=&quot;com.sap.sailing.gwt.ui&quot; path=&quot;1&quot; type=&quot;4&quot;/&gt;&#13;&#10;"/>
<listEntry value="&lt;?xml version=&quot;1.0&quot; encoding=&quot;UTF-8&quot; standalone=&quot;no&quot;?&gt;&#13;&#10;&lt;runtimeClasspathEntry internalArchive=&quot;/com.sap.sailing.gwt.ui/src/main/resources&quot; path=&quot;3&quot; type=&quot;2&quot;/&gt;&#13;&#10;"/>
<listEntry value="&lt;?xml version=&quot;1.0&quot; encoding=&quot;UTF-8&quot; standalone=&quot;no&quot;?&gt;&#13;&#10;&lt;runtimeClasspathEntry internalArchive=&quot;/com.sap.sailing.gwt.ui/src/main/java&quot; path=&quot;3&quot; type=&quot;2&quot;/&gt;&#13;&#10;"/>
<listEntry value="&lt;?xml version=&quot;1.0&quot; encoding=&quot;UTF-8&quot; standalone=&quot;no&quot;?&gt;&#13;&#10;&lt;runtimeClasspathEntry internalArchive=&quot;/com.sap.sailing.domain/src&quot; path=&quot;3&quot; type=&quot;2&quot;/&gt;&#13;&#10;"/>
<listEntry value="&lt;?xml version=&quot;1.0&quot; encoding=&quot;UTF-8&quot; standalone=&quot;no&quot;?&gt;&#13;&#10;&lt;runtimeClasspathEntry internalArchive=&quot;/com.googlecode.java-diff-utils/src&quot; path=&quot;3&quot; type=&quot;2&quot;/&gt;&#13;&#10;"/>
<listEntry value="&lt;?xml version=&quot;1.0&quot; encoding=&quot;UTF-8&quot; standalone=&quot;no&quot;?&gt;&#13;&#10;&lt;runtimeClasspathEntry internalArchive=&quot;/com.sap.sailing.domain.common/src&quot; path=&quot;3&quot; type=&quot;2&quot;/&gt;&#13;&#10;"/>
<listEntry value="&lt;?xml version=&quot;1.0&quot; encoding=&quot;UTF-8&quot; standalone=&quot;no&quot;?&gt;&#13;&#10;&lt;runtimeClasspathEntry internalArchive=&quot;/org.json.simple/src&quot; path=&quot;3&quot; type=&quot;2&quot;/&gt;&#13;&#10;"/>
<listEntry value="&lt;?xml version=&quot;1.0&quot; encoding=&quot;UTF-8&quot; standalone=&quot;no&quot;?&gt;&#13;&#10;&lt;runtimeClasspathEntry internalArchive=&quot;/com.sap.sailing.server/src&quot; path=&quot;3&quot; type=&quot;2&quot;/&gt;&#13;&#10;"/>
<listEntry value="&lt;?xml version=&quot;1.0&quot; encoding=&quot;UTF-8&quot; standalone=&quot;no&quot;?&gt;&#13;&#10;&lt;runtimeClasspathEntry internalArchive=&quot;/com.sap.sailing.domain.tractracadapter/src&quot; path=&quot;3&quot; type=&quot;2&quot;/&gt;&#13;&#10;"/>
<listEntry value="&lt;?xml version=&quot;1.0&quot; encoding=&quot;UTF-8&quot; standalone=&quot;no&quot;?&gt;&#13;&#10;&lt;runtimeClasspathEntry internalArchive=&quot;/com.sap.sailing.expeditionconnector/src&quot; path=&quot;3&quot; type=&quot;2&quot;/&gt;&#13;&#10;"/>
<listEntry value="&lt;?xml version=&quot;1.0&quot; encoding=&quot;UTF-8&quot; standalone=&quot;no&quot;?&gt;&#13;&#10;&lt;runtimeClasspathEntry internalArchive=&quot;/com.sap.sailing.declination/src&quot; path=&quot;3&quot; type=&quot;2&quot;/&gt;&#13;&#10;"/>
<listEntry value="&lt;?xml version=&quot;1.0&quot; encoding=&quot;UTF-8&quot; standalone=&quot;no&quot;?&gt;&#13;&#10;&lt;runtimeClasspathEntry internalArchive=&quot;/com.sap.sailing.declination/resources&quot; path=&quot;3&quot; type=&quot;2&quot;/&gt;&#13;&#10;"/>
<listEntry value="&lt;?xml version=&quot;1.0&quot; encoding=&quot;UTF-8&quot; standalone=&quot;no&quot;?&gt;&#13;&#10;&lt;runtimeClasspathEntry internalArchive=&quot;/com.sap.sailing.udpconnector/src&quot; path=&quot;3&quot; type=&quot;2&quot;/&gt;&#13;&#10;"/>
<listEntry value="&lt;?xml version=&quot;1.0&quot; encoding=&quot;UTF-8&quot; standalone=&quot;no&quot;?&gt;&#13;&#10;&lt;runtimeClasspathEntry internalArchive=&quot;/com.sap.sse.mongodb/src&quot; path=&quot;3&quot; type=&quot;2&quot;/&gt;&#13;&#10;"/>
<listEntry value="&lt;?xml version=&quot;1.0&quot; encoding=&quot;UTF-8&quot; standalone=&quot;no&quot;?&gt;&#13;&#10;&lt;runtimeClasspathEntry internalArchive=&quot;/com.sap.sailing.domain.swisstimingadapter/src&quot; path=&quot;3&quot; type=&quot;2&quot;/&gt;&#13;&#10;"/>
<listEntry value="&lt;?xml version=&quot;1.0&quot; encoding=&quot;UTF-8&quot; standalone=&quot;no&quot;?&gt;&#13;&#10;&lt;runtimeClasspathEntry internalArchive=&quot;/com.sap.sailing.domain.persistence/src&quot; path=&quot;3&quot; type=&quot;2&quot;/&gt;&#13;&#10;"/>
<listEntry value="&lt;?xml version=&quot;1.0&quot; encoding=&quot;UTF-8&quot; standalone=&quot;no&quot;?&gt;&#13;&#10;&lt;runtimeClasspathEntry internalArchive=&quot;/com.sap.sailing.domain.swisstimingadapter.persistence/src&quot; path=&quot;3&quot; type=&quot;2&quot;/&gt;&#13;&#10;"/>
<listEntry value="&lt;?xml version=&quot;1.0&quot; encoding=&quot;UTF-8&quot; standalone=&quot;no&quot;?&gt;&#13;&#10;&lt;runtimeClasspathEntry internalArchive=&quot;/com.sap.sse.operationaltransformation/src&quot; path=&quot;3&quot; type=&quot;2&quot;/&gt;&#13;&#10;"/>
<listEntry value="&lt;?xml version=&quot;1.0&quot; encoding=&quot;UTF-8&quot; standalone=&quot;no&quot;?&gt;&#13;&#10;&lt;runtimeClasspathEntry internalArchive=&quot;/com.sap.sse.replication/src&quot; path=&quot;3&quot; type=&quot;2&quot;/&gt;&#13;&#10;"/>
<listEntry value="&lt;?xml version=&quot;1.0&quot; encoding=&quot;UTF-8&quot; standalone=&quot;no&quot;?&gt;&#13;&#10;&lt;runtimeClasspathEntry internalArchive=&quot;/com.sap.sailing.domain.tractracadapter.persistence/src&quot; path=&quot;3&quot; type=&quot;2&quot;/&gt;&#13;&#10;"/>
<listEntry value="&lt;?xml version=&quot;1.0&quot; encoding=&quot;UTF-8&quot; standalone=&quot;no&quot;?&gt;&#13;&#10;&lt;runtimeClasspathEntry internalArchive=&quot;/org.moxieapps.gwt.highcharts/src&quot; path=&quot;3&quot; type=&quot;2&quot;/&gt;&#13;&#10;"/>
<listEntry value="&lt;?xml version=&quot;1.0&quot; encoding=&quot;UTF-8&quot; standalone=&quot;no&quot;?&gt;&#13;&#10;&lt;runtimeClasspathEntry internalArchive=&quot;/com.sap.sailing.geocoding/src&quot; path=&quot;3&quot; type=&quot;2&quot;/&gt;&#13;&#10;"/>
<listEntry value="&lt;?xml version=&quot;1.0&quot; encoding=&quot;UTF-8&quot; standalone=&quot;no&quot;?&gt;&#13;&#10;&lt;runtimeClasspathEntry internalArchive=&quot;/com.sap.sailing.datamining.shared/src&quot; path=&quot;3&quot; type=&quot;2&quot;/&gt;&#13;&#10;"/>
<listEntry value="&lt;?xml version=&quot;1.0&quot; encoding=&quot;UTF-8&quot; standalone=&quot;no&quot;?&gt;&#13;&#10;&lt;runtimeClasspathEntry internalArchive=&quot;/com.sap.sse.common/src&quot; path=&quot;3&quot; type=&quot;2&quot;/&gt;&#13;&#10;"/>
<listEntry value="&lt;?xml version=&quot;1.0&quot; encoding=&quot;UTF-8&quot; standalone=&quot;no&quot;?&gt;&#13;&#10;&lt;runtimeClasspathEntry internalArchive=&quot;/com.sap.sse.datamining.shared/src&quot; path=&quot;3&quot; type=&quot;2&quot;/&gt;&#13;&#10;"/>
<listEntry value="&lt;?xml version=&quot;1.0&quot; encoding=&quot;UTF-8&quot; standalone=&quot;no&quot;?&gt;&#13;&#10;&lt;runtimeClasspathEntry internalArchive=&quot;/com.sap.sse.gwt/src&quot; path=&quot;3&quot; type=&quot;2&quot;/&gt;&#13;&#10;"/>
<listEntry value="&lt;?xml version=&quot;1.0&quot; encoding=&quot;UTF-8&quot; standalone=&quot;no&quot;?&gt;&#13;&#10;&lt;runtimeClasspathEntry internalArchive=&quot;/com.google.gwt.osgi/lib/gwt-user.jar&quot; path=&quot;3&quot; type=&quot;2&quot;/&gt;&#13;&#10;"/>
<listEntry value="&lt;?xml version=&quot;1.0&quot; encoding=&quot;UTF-8&quot; standalone=&quot;no&quot;?&gt;&#13;&#10;&lt;runtimeClasspathEntry id=&quot;org.eclipse.jdt.launching.classpathentry.defaultClasspath&quot;&gt;&#13;&#10;&lt;memento exportedEntriesOnly=&quot;false&quot; project=&quot;com.sap.sailing.gwt.ui&quot;/&gt;&#13;&#10;&lt;/runtimeClasspathEntry&gt;&#13;&#10;"/>
<listEntry value="&lt;?xml version=&quot;1.0&quot; encoding=&quot;UTF-8&quot; standalone=&quot;no&quot;?&gt;&#13;&#10;&lt;runtimeClasspathEntry internalArchive=&quot;/com.sap.sse.security/src&quot; path=&quot;3&quot; type=&quot;2&quot;/&gt;&#13;&#10;"/>
<listEntry value="&lt;?xml version=&quot;1.0&quot; encoding=&quot;UTF-8&quot; standalone=&quot;no&quot;?&gt;&#13;&#10;&lt;runtimeClasspathEntry internalArchive=&quot;/com.sap.sse.security.ui/src/main/java&quot; path=&quot;3&quot; type=&quot;2&quot;/&gt;&#13;&#10;"/>
<listEntry value="&lt;?xml version=&quot;1.0&quot; encoding=&quot;UTF-8&quot; standalone=&quot;no&quot;?&gt;&#13;&#10;&lt;runtimeClasspathEntry internalArchive=&quot;/com.sap.sse.gwt.adminconsole/src&quot; path=&quot;3&quot; type=&quot;2&quot;/&gt;&#13;&#10;"/>
<listEntry value="&lt;?xml version=&quot;1.0&quot; encoding=&quot;UTF-8&quot; standalone=&quot;no&quot;?&gt;&#13;&#10;&lt;runtimeClasspathEntry internalArchive=&quot;/com.sap.sse.security.common/src&quot; path=&quot;3&quot; type=&quot;2&quot;/&gt;&#13;&#10;"/>
</listAttribute>
<stringAttribute key="org.eclipse.jdt.launching.CLASSPATH_PROVIDER" value="com.google.gwt.eclipse.core.moduleClasspathProvider"/>
<booleanAttribute key="org.eclipse.jdt.launching.DEFAULT_CLASSPATH" value="false"/>
<stringAttribute key="org.eclipse.jdt.launching.JRE_CONTAINER" value="org.eclipse.jdt.launching.JRE_CONTAINER/org.eclipse.jdt.internal.debug.ui.launcher.StandardVMType/JavaSE-1.8"/>
<stringAttribute key="org.eclipse.jdt.launching.MAIN_TYPE" value="com.google.gwt.dev.DevMode"/>
<stringAttribute key="org.eclipse.jdt.launching.PROGRAM_ARGUMENTS" value="-nosuperDevMode -war &quot;${project_loc:com.sap.sailing.gwt.ui}&quot; -noserver -remoteUI &quot;${gwt_remote_ui_server_port}:${unique_id}&quot; -logLevel INFO -codeServerPort 9997 -startupUrl /gwt/Home.html com.sap.sailing.gwt.Home -startupUrl /gwt/AdminConsole.html com.sap.sailing.gwt.ui.AdminConsole -startupUrl /gwt/LeaderboardEditing.html com.sap.sailing.gwt.ui.LeaderboardEditing -startupUrl /gwt/Leaderboard.html com.sap.sailing.gwt.ui.Leaderboard -startupUrl /gwt/Spectator.html com.sap.sailing.gwt.ui.Spectator -startupUrl /gwt/RaceBoard.html com.sap.sailing.gwt.ui.RaceBoard -startupUrl /gwt/PolarSheets.html com.sap.sailing.gwt.ui.PolarSheets -startupUrl /gwt/RegattaOverview.html com.sap.sailing.gwt.ui.RegattaOverview -startupUrl /gwt/DataMining.html com.sap.sailing.gwt.ui.DataMining -startupUrl /gwt/Simulator.html com.sap.sailing.gwt.ui.Simulator -startupUrl /gwt/VideoPopup.html com.sap.sailing.gwt.ui.VideoPopup -startupUrl /security/ui/Login.html com.sap.sse.security.ui.Login -startupUrl /security/ui/EditProfile.html com.sap.sse.security.ui.EditProfile -startupUrl /security/ui/EmailValidation.html com.sap.sse.security.ui.EmailValidation com.sap.sailing.gwt.ui.Simulator com.sap.sailing.gwt.ui.Leaderboard com.sap.sailing.gwt.ui.PolarSheets com.sap.sailing.gwt.ui.VideoPopup com.sap.sailing.gwt.AutoPlay com.sap.sailing.gwt.ui.RegattaOverview com.sap.sailing.gwt.ui.Spectator com.sap.sailing.gwt.ui.AdminConsole com.sap.sailing.gwt.ui.LeaderboardEditing com.sap.sailing.gwt.ui.YoutubePopup com.sap.sailing.gwt.ui.DataMining com.sap.sailing.gwt.Home com.sap.sailing.gwt.ui.RaceBoard"/>
<stringAttribute key="org.eclipse.jdt.launching.PROJECT_ATTR" value="com.sap.sailing.gwt.ui"/>
<stringAttribute key="org.eclipse.jdt.launching.VM_ARGUMENTS" value="-Xmx2048m -Dgwt-usearchives=false -Dgwt.persistentunitcache=false"/>
</launchConfiguration>
<?xml version="1.0" encoding="UTF-8" standalone="no"?>
<launchConfiguration type="com.google.gdt.eclipse.suite.webapp">
<booleanAttribute key="com.google.gdt.eclipse.core.RUN_SERVER" value="false"/>
<stringAttribute key="com.google.gdt.eclipse.suiteMainTypeProcessor.PREVIOUSLY_SET_MAIN_TYPE_NAME" value="com.google.gwt.dev.GWTShell"/>
<booleanAttribute key="com.google.gdt.eclipse.suiteWarArgumentProcessor.IS_WAR_FROM_PROJECT_PROPERTIES" value="true"/>
<booleanAttribute key="com.google.gwt.eclipse.core.CODE_SERVER_PORT_AUTO" value="true"/>
<listAttribute key="com.google.gwt.eclipse.core.ENTRY_POINT_MODULES">
<listEntry value="com.sap.sailing.gwt.ui.RaceBoard"/>
<listEntry value="com.sap.sailing.gwt.Home"/>
<listEntry value="com.sap.sailing.gwt.ui.DataMining"/>
<listEntry value="com.sap.sailing.gwt.ui.YoutubePopup"/>
<listEntry value="com.sap.sailing.gwt.ui.LeaderboardEditing"/>
<listEntry value="com.sap.sailing.gwt.ui.AdminConsole"/>
<listEntry value="com.sap.sailing.gwt.ui.Spectator"/>
<listEntry value="com.sap.sailing.gwt.ui.RegattaOverview"/>
<listEntry value="com.sap.sailing.gwt.AutoPlay"/>
<listEntry value="com.sap.sailing.gwt.ui.VideoPopup"/>
<listEntry value="com.sap.sailing.gwt.ui.PolarSheets"/>
<listEntry value="com.sap.sailing.gwt.ui.Leaderboard"/>
<listEntry value="com.sap.sailing.gwt.ui.Simulator"/>
</listAttribute>
<stringAttribute key="com.google.gwt.eclipse.core.URL" value="/gwt/Home.html"/>
<listAttribute key="org.eclipse.debug.core.MAPPED_RESOURCE_PATHS">
<listEntry value="/com.sap.sailing.gwt.ui"/>
</listAttribute>
<listAttribute key="org.eclipse.debug.core.MAPPED_RESOURCE_TYPES">
<listEntry value="4"/>
</listAttribute>
<listAttribute key="org.eclipse.debug.ui.favoriteGroups">
<listEntry value="org.eclipse.debug.ui.launchGroup.debug"/>
<listEntry value="org.eclipse.debug.ui.launchGroup.run"/>
</listAttribute>
<listAttribute key="org.eclipse.jdt.launching.CLASSPATH">
<listEntry value="&lt;?xml version=&quot;1.0&quot; encoding=&quot;UTF-8&quot; standalone=&quot;no&quot;?&gt;&#13;&#10;&lt;runtimeClasspathEntry containerPath=&quot;org.eclipse.jdt.launching.JRE_CONTAINER/org.eclipse.jdt.internal.debug.ui.launcher.StandardVMType/JavaSE-1.6&quot; javaProject=&quot;com.sap.sailing.gwt.ui&quot; path=&quot;1&quot; type=&quot;4&quot;/&gt;&#13;&#10;"/>
<listEntry value="&lt;?xml version=&quot;1.0&quot; encoding=&quot;UTF-8&quot; standalone=&quot;no&quot;?&gt;&#13;&#10;&lt;runtimeClasspathEntry internalArchive=&quot;/com.sap.sailing.gwt.ui/src/main/resources&quot; path=&quot;3&quot; type=&quot;2&quot;/&gt;&#13;&#10;"/>
<listEntry value="&lt;?xml version=&quot;1.0&quot; encoding=&quot;UTF-8&quot; standalone=&quot;no&quot;?&gt;&#13;&#10;&lt;runtimeClasspathEntry internalArchive=&quot;/com.sap.sailing.gwt.ui/src/main/java&quot; path=&quot;3&quot; type=&quot;2&quot;/&gt;&#13;&#10;"/>
<listEntry value="&lt;?xml version=&quot;1.0&quot; encoding=&quot;UTF-8&quot; standalone=&quot;no&quot;?&gt;&#13;&#10;&lt;runtimeClasspathEntry internalArchive=&quot;/com.sap.sailing.domain/src&quot; path=&quot;3&quot; type=&quot;2&quot;/&gt;&#13;&#10;"/>
<listEntry value="&lt;?xml version=&quot;1.0&quot; encoding=&quot;UTF-8&quot; standalone=&quot;no&quot;?&gt;&#13;&#10;&lt;runtimeClasspathEntry internalArchive=&quot;/com.googlecode.java-diff-utils/src&quot; path=&quot;3&quot; type=&quot;2&quot;/&gt;&#13;&#10;"/>
<listEntry value="&lt;?xml version=&quot;1.0&quot; encoding=&quot;UTF-8&quot; standalone=&quot;no&quot;?&gt;&#13;&#10;&lt;runtimeClasspathEntry internalArchive=&quot;/com.sap.sailing.domain.common/src&quot; path=&quot;3&quot; type=&quot;2&quot;/&gt;&#13;&#10;"/>
<listEntry value="&lt;?xml version=&quot;1.0&quot; encoding=&quot;UTF-8&quot; standalone=&quot;no&quot;?&gt;&#13;&#10;&lt;runtimeClasspathEntry internalArchive=&quot;/org.json.simple/src&quot; path=&quot;3&quot; type=&quot;2&quot;/&gt;&#13;&#10;"/>
<listEntry value="&lt;?xml version=&quot;1.0&quot; encoding=&quot;UTF-8&quot; standalone=&quot;no&quot;?&gt;&#13;&#10;&lt;runtimeClasspathEntry internalArchive=&quot;/com.sap.sailing.server/src&quot; path=&quot;3&quot; type=&quot;2&quot;/&gt;&#13;&#10;"/>
<listEntry value="&lt;?xml version=&quot;1.0&quot; encoding=&quot;UTF-8&quot; standalone=&quot;no&quot;?&gt;&#13;&#10;&lt;runtimeClasspathEntry internalArchive=&quot;/com.sap.sailing.domain.tractracadapter/src&quot; path=&quot;3&quot; type=&quot;2&quot;/&gt;&#13;&#10;"/>
<listEntry value="&lt;?xml version=&quot;1.0&quot; encoding=&quot;UTF-8&quot; standalone=&quot;no&quot;?&gt;&#13;&#10;&lt;runtimeClasspathEntry internalArchive=&quot;/com.sap.sailing.expeditionconnector/src&quot; path=&quot;3&quot; type=&quot;2&quot;/&gt;&#13;&#10;"/>
<listEntry value="&lt;?xml version=&quot;1.0&quot; encoding=&quot;UTF-8&quot; standalone=&quot;no&quot;?&gt;&#13;&#10;&lt;runtimeClasspathEntry internalArchive=&quot;/com.sap.sailing.declination/src&quot; path=&quot;3&quot; type=&quot;2&quot;/&gt;&#13;&#10;"/>
<listEntry value="&lt;?xml version=&quot;1.0&quot; encoding=&quot;UTF-8&quot; standalone=&quot;no&quot;?&gt;&#13;&#10;&lt;runtimeClasspathEntry internalArchive=&quot;/com.sap.sailing.declination/resources&quot; path=&quot;3&quot; type=&quot;2&quot;/&gt;&#13;&#10;"/>
<listEntry value="&lt;?xml version=&quot;1.0&quot; encoding=&quot;UTF-8&quot; standalone=&quot;no&quot;?&gt;&#13;&#10;&lt;runtimeClasspathEntry internalArchive=&quot;/com.sap.sailing.udpconnector/src&quot; path=&quot;3&quot; type=&quot;2&quot;/&gt;&#13;&#10;"/>
<listEntry value="&lt;?xml version=&quot;1.0&quot; encoding=&quot;UTF-8&quot; standalone=&quot;no&quot;?&gt;&#13;&#10;&lt;runtimeClasspathEntry internalArchive=&quot;/com.sap.sse.mongodb/src&quot; path=&quot;3&quot; type=&quot;2&quot;/&gt;&#13;&#10;"/>
<listEntry value="&lt;?xml version=&quot;1.0&quot; encoding=&quot;UTF-8&quot; standalone=&quot;no&quot;?&gt;&#13;&#10;&lt;runtimeClasspathEntry internalArchive=&quot;/com.sap.sailing.domain.swisstimingadapter/src&quot; path=&quot;3&quot; type=&quot;2&quot;/&gt;&#13;&#10;"/>
<listEntry value="&lt;?xml version=&quot;1.0&quot; encoding=&quot;UTF-8&quot; standalone=&quot;no&quot;?&gt;&#13;&#10;&lt;runtimeClasspathEntry internalArchive=&quot;/com.sap.sailing.domain.persistence/src&quot; path=&quot;3&quot; type=&quot;2&quot;/&gt;&#13;&#10;"/>
<listEntry value="&lt;?xml version=&quot;1.0&quot; encoding=&quot;UTF-8&quot; standalone=&quot;no&quot;?&gt;&#13;&#10;&lt;runtimeClasspathEntry internalArchive=&quot;/com.sap.sailing.domain.swisstimingadapter.persistence/src&quot; path=&quot;3&quot; type=&quot;2&quot;/&gt;&#13;&#10;"/>
<listEntry value="&lt;?xml version=&quot;1.0&quot; encoding=&quot;UTF-8&quot; standalone=&quot;no&quot;?&gt;&#13;&#10;&lt;runtimeClasspathEntry internalArchive=&quot;/com.sap.sse.operationaltransformation/src&quot; path=&quot;3&quot; type=&quot;2&quot;/&gt;&#13;&#10;"/>
<listEntry value="&lt;?xml version=&quot;1.0&quot; encoding=&quot;UTF-8&quot; standalone=&quot;no&quot;?&gt;&#13;&#10;&lt;runtimeClasspathEntry internalArchive=&quot;/com.sap.sse.replication/src&quot; path=&quot;3&quot; type=&quot;2&quot;/&gt;&#13;&#10;"/>
<listEntry value="&lt;?xml version=&quot;1.0&quot; encoding=&quot;UTF-8&quot; standalone=&quot;no&quot;?&gt;&#13;&#10;&lt;runtimeClasspathEntry internalArchive=&quot;/com.sap.sailing.domain.tractracadapter.persistence/src&quot; path=&quot;3&quot; type=&quot;2&quot;/&gt;&#13;&#10;"/>
<listEntry value="&lt;?xml version=&quot;1.0&quot; encoding=&quot;UTF-8&quot; standalone=&quot;no&quot;?&gt;&#13;&#10;&lt;runtimeClasspathEntry internalArchive=&quot;/org.moxieapps.gwt.highcharts/src&quot; path=&quot;3&quot; type=&quot;2&quot;/&gt;&#13;&#10;"/>
<listEntry value="&lt;?xml version=&quot;1.0&quot; encoding=&quot;UTF-8&quot; standalone=&quot;no&quot;?&gt;&#13;&#10;&lt;runtimeClasspathEntry internalArchive=&quot;/com.sap.sailing.geocoding/src&quot; path=&quot;3&quot; type=&quot;2&quot;/&gt;&#13;&#10;"/>
<listEntry value="&lt;?xml version=&quot;1.0&quot; encoding=&quot;UTF-8&quot; standalone=&quot;no&quot;?&gt;&#13;&#10;&lt;runtimeClasspathEntry internalArchive=&quot;/com.sap.sailing.datamining.shared/src&quot; path=&quot;3&quot; type=&quot;2&quot;/&gt;&#13;&#10;"/>
<listEntry value="&lt;?xml version=&quot;1.0&quot; encoding=&quot;UTF-8&quot; standalone=&quot;no&quot;?&gt;&#13;&#10;&lt;runtimeClasspathEntry internalArchive=&quot;/com.sap.sse.common/src&quot; path=&quot;3&quot; type=&quot;2&quot;/&gt;&#13;&#10;"/>
<listEntry value="&lt;?xml version=&quot;1.0&quot; encoding=&quot;UTF-8&quot; standalone=&quot;no&quot;?&gt;&#13;&#10;&lt;runtimeClasspathEntry internalArchive=&quot;/com.sap.sse.datamining.shared/src&quot; path=&quot;3&quot; type=&quot;2&quot;/&gt;&#13;&#10;"/>
<listEntry value="&lt;?xml version=&quot;1.0&quot; encoding=&quot;UTF-8&quot; standalone=&quot;no&quot;?&gt;&#13;&#10;&lt;runtimeClasspathEntry internalArchive=&quot;/com.sap.sse.gwt/src&quot; path=&quot;3&quot; type=&quot;2&quot;/&gt;&#13;&#10;"/>
<listEntry value="&lt;?xml version=&quot;1.0&quot; encoding=&quot;UTF-8&quot; standalone=&quot;no&quot;?&gt;&#13;&#10;&lt;runtimeClasspathEntry internalArchive=&quot;/com.google.gwt.osgi/lib/gwt-user.jar&quot; path=&quot;3&quot; type=&quot;2&quot;/&gt;&#13;&#10;"/>
<listEntry value="&lt;?xml version=&quot;1.0&quot; encoding=&quot;UTF-8&quot; standalone=&quot;no&quot;?&gt;&#13;&#10;&lt;runtimeClasspathEntry id=&quot;org.eclipse.jdt.launching.classpathentry.defaultClasspath&quot;&gt;&#13;&#10;&lt;memento exportedEntriesOnly=&quot;false&quot; project=&quot;com.sap.sailing.gwt.ui&quot;/&gt;&#13;&#10;&lt;/runtimeClasspathEntry&gt;&#13;&#10;"/>
<listEntry value="&lt;?xml version=&quot;1.0&quot; encoding=&quot;UTF-8&quot; standalone=&quot;no&quot;?&gt;&#13;&#10;&lt;runtimeClasspathEntry internalArchive=&quot;/com.sap.sse.security/src&quot; path=&quot;3&quot; type=&quot;2&quot;/&gt;&#13;&#10;"/>
<listEntry value="&lt;?xml version=&quot;1.0&quot; encoding=&quot;UTF-8&quot; standalone=&quot;no&quot;?&gt;&#13;&#10;&lt;runtimeClasspathEntry internalArchive=&quot;/com.sap.sse.security.ui/src/main/java&quot; path=&quot;3&quot; type=&quot;2&quot;/&gt;&#13;&#10;"/>
<listEntry value="&lt;?xml version=&quot;1.0&quot; encoding=&quot;UTF-8&quot; standalone=&quot;no&quot;?&gt;&#13;&#10;&lt;runtimeClasspathEntry internalArchive=&quot;/com.sap.sse.gwt.adminconsole/src&quot; path=&quot;3&quot; type=&quot;2&quot;/&gt;&#13;&#10;"/>
<listEntry value="&lt;?xml version=&quot;1.0&quot; encoding=&quot;UTF-8&quot; standalone=&quot;no&quot;?&gt;&#13;&#10;&lt;runtimeClasspathEntry internalArchive=&quot;/com.sap.sse.security.common/src&quot; path=&quot;3&quot; type=&quot;2&quot;/&gt;&#13;&#10;"/>
</listAttribute>
<stringAttribute key="org.eclipse.jdt.launching.CLASSPATH_PROVIDER" value="com.google.gwt.eclipse.core.moduleClasspathProvider"/>
<booleanAttribute key="org.eclipse.jdt.launching.DEFAULT_CLASSPATH" value="false"/>
<stringAttribute key="org.eclipse.jdt.launching.JRE_CONTAINER" value="org.eclipse.jdt.launching.JRE_CONTAINER/org.eclipse.jdt.internal.debug.ui.launcher.StandardVMType/JavaSE-1.8"/>
<stringAttribute key="org.eclipse.jdt.launching.MAIN_TYPE" value="com.google.gwt.dev.DevMode"/>
<stringAttribute key="org.eclipse.jdt.launching.PROGRAM_ARGUMENTS" value="-nosuperDevMode -war &quot;${project_loc:com.sap.sailing.gwt.ui}&quot; -noserver -remoteUI &quot;${gwt_remote_ui_server_port}:${unique_id}&quot; -logLevel INFO -codeServerPort auto -startupUrl /gwt/Home.html com.sap.sailing.gwt.Home -startupUrl /gwt/AdminConsole.html com.sap.sailing.gwt.ui.AdminConsole -startupUrl /gwt/LeaderboardEditing.html com.sap.sailing.gwt.ui.LeaderboardEditing -startupUrl /gwt/Leaderboard.html com.sap.sailing.gwt.ui.Leaderboard -startupUrl /gwt/Spectator.html com.sap.sailing.gwt.ui.Spectator -startupUrl /gwt/RaceBoard.html com.sap.sailing.gwt.ui.RaceBoard -startupUrl /gwt/PolarSheets.html com.sap.sailing.gwt.ui.PolarSheets -startupUrl /gwt/RegattaOverview.html com.sap.sailing.gwt.ui.RegattaOverview -startupUrl /gwt/DataMining.html com.sap.sailing.gwt.ui.DataMining -startupUrl /gwt/Simulator.html com.sap.sailing.gwt.ui.Simulator -startupUrl /gwt/VideoPopup.html com.sap.sailing.gwt.ui.VideoPopup -startupUrl /security/ui/Login.html com.sap.sse.security.ui.Login -startupUrl /security/ui/EditProfile.html com.sap.sse.security.ui.EditProfile -startupUrl /security/ui/EmailValidation.html com.sap.sse.security.ui.EmailValidation com.sap.sailing.gwt.ui.Simulator com.sap.sailing.gwt.ui.Leaderboard com.sap.sailing.gwt.ui.PolarSheets com.sap.sailing.gwt.ui.VideoPopup com.sap.sailing.gwt.AutoPlay com.sap.sailing.gwt.ui.RegattaOverview com.sap.sailing.gwt.ui.Spectator com.sap.sailing.gwt.ui.AdminConsole com.sap.sailing.gwt.ui.LeaderboardEditing com.sap.sailing.gwt.ui.YoutubePopup com.sap.sailing.gwt.ui.DataMining com.sap.sailing.gwt.Home com.sap.sailing.gwt.ui.RaceBoard"/>
<stringAttribute key="org.eclipse.jdt.launching.PROJECT_ATTR" value="com.sap.sailing.gwt.ui"/>
<stringAttribute key="org.eclipse.jdt.launching.VM_ARGUMENTS" value="-Xmx2048m -Dgwt-usearchives=false -Dgwt.persistentunitcache=false"/>
</launchConfiguration>
@@ -112,6 +112,7 @@
<servlet-mapping>
<servlet-name>remoteLoggingServlet</servlet-name>
<url-pattern>/com.sap.sailing.gwt.ui.AdminConsole/remote_logging</url-pattern>
<url-pattern>/com.sap.sailing.gwt.ui.Leaderboard/remote_logging</url-pattern>
<url-pattern>/com.sap.sailing.gwt.ui.Simulator/remote_logging</url-pattern>
<url-pattern>/com.sap.sailing.gwt.ui.RaceBoard/remote_logging</url-pattern>
</servlet-mapping>
Binary file not shown.

After

Width:  |  Height:  |  Size: 3.1 KiB

Binary file not shown.
@@ -1,7 +1,6 @@
package com.sap.sailing.gwt.autoplay.client;
import com.google.gwt.core.client.GWT;
import com.google.gwt.dom.client.StyleInjector;
import com.google.gwt.user.client.rpc.ServiceDefTarget;
import com.sap.sailing.gwt.autoplay.client.app.AutoPlayAppActivityMapper;
import com.sap.sailing.gwt.autoplay.client.app.AutoPlayAppClientFactory;
@@ -26,9 +25,6 @@ public class AutoPlayEntryPoint extends AbstractMvpEntryPoint<StringMessages> {
SharedResources.INSTANCE.mediaCss().ensureInjected();
SharedResources.INSTANCE.mainCss().ensureInjected();
StyleInjector.injectAtEnd("@media (min-width: 25em) { "+SharedResources.INSTANCE.mediumCss().getText()+"}");
StyleInjector.injectAtEnd("@media (min-width: 50em) { "+SharedResources.INSTANCE.largeCss().getText()+"}");
}
@Override
@@ -8,24 +8,12 @@ import com.google.gwt.resources.client.CssResource.Shared;
public interface SharedResources extends ClientBundle {
public static final SharedResources INSTANCE = GWT.create(SharedResources.class);
@Source("com/sap/sailing/gwt/home/main.css")
@Source("com/sap/sailing/gwt/home/main.gss")
MainCss mainCss();
@Source("com/sap/sailing/gwt/home/media.css")
@Source("com/sap/sailing/gwt/home/media.gss")
MediaCss mediaCss();
public interface MinWidth25emCss extends MediaCss {
}
@Source("com/sap/sailing/gwt/home/medium.css")
MinWidth25emCss mediumCss();
public interface MinWidth50emCss extends MediaCss {
}
@Source("com/sap/sailing/gwt/home/large.css")
MinWidth50emCss largeCss();
@Shared
public interface MainCss extends CssResource {
String grid();
@@ -6,6 +6,7 @@ import com.google.gwt.i18n.client.Messages;
public interface TextMessages extends Messages {
public static final TextMessages INSTANCE = GWT.create(TextMessages.class);
String chartSelectionHint();
String chooseALanguage();
String home();
String events();
@@ -1,3 +1,4 @@
chartSelectionHint=Hint: You can also use the leaderboard (on the LEADERBOARD tab) to select the competitors displayed in the chart.
chooseALanguage=Choose a language
events=Events
home=Home
@@ -1,3 +1,4 @@
chartSelectionHint=Hinweis: Sie können auch Ergebnisstabelle (im Menü ERGEBNISSE) nutzen, um die im Diagramm angezeigten Teilnehmer auszuwählen.
chooseALanguage=Wähle eine Sprache
events=Veranstaltungen
home=Startseite
@@ -1,7 +1,6 @@
package com.sap.sailing.gwt.home.client;
import com.google.gwt.core.client.GWT;
import com.google.gwt.dom.client.StyleInjector;
import com.google.gwt.user.client.rpc.ServiceDefTarget;
import com.sap.sailing.gwt.common.client.SharedResources;
import com.sap.sailing.gwt.home.client.app.ApplicationActivityMapper;
@@ -22,9 +21,6 @@ public class HomeEntryPoint extends AbstractMvpEntryPoint<StringMessages> {
SharedResources.INSTANCE.mediaCss().ensureInjected();
SharedResources.INSTANCE.mainCss().ensureInjected();
StyleInjector.injectAtEnd("@media (min-width: 25em) { "+SharedResources.INSTANCE.mediumCss().getText()+"}");
StyleInjector.injectAtEnd("@media (min-width: 50em) { "+SharedResources.INSTANCE.largeCss().getText()+"}");
}
@Override
@@ -3,7 +3,6 @@ package com.sap.sailing.gwt.home.client.place.event.header;
import com.google.gwt.core.client.GWT;
import com.google.gwt.dom.client.ImageElement;
import com.google.gwt.dom.client.SpanElement;
import com.google.gwt.dom.client.StyleInjector;
import com.google.gwt.event.dom.client.ClickEvent;
import com.google.gwt.uibinder.client.UiBinder;
import com.google.gwt.uibinder.client.UiField;
@@ -43,7 +42,6 @@ public class CompactEventHeader extends Composite {
this.placeNavigator = placeNavigator;
EventHeaderResources.INSTANCE.css().ensureInjected();
StyleInjector.injectAtEnd("@media (min-width: 50em) { "+EventHeaderResources.INSTANCE.largeCss().getText()+"}");
initWidget(uiBinder.createAndBindUi(this));
@@ -9,7 +9,7 @@
<!-- event navigation-->
<div class="{local_res.css.eventnavigation} {local_res.css.eventnavigationcompact}">
<div class="{res.mainCss.grid}">
<div class="{res.mainCss.grid}" style="margin-left:5rem;margin-right:5rem;">
<div class="{res.mediaCss.columns}">
<g:Anchor ui:field="regattaLink">
<img ui:field="eventLogo" alt="" height="41" width="41" class="{local_res.css.eventnavigationcompact_logo}"></img>
@@ -1,6 +1,6 @@
.dropdown {
font-size: 15px;
font-size: 1rem;
/* @alternate */ font-size: 1rem;
width: 20em;
max-width: 100%;
display: inline-block;
@@ -62,12 +62,12 @@
}
.leaderboardquickaccess {
font-size: 15px;
font-size: 1rem;
/* @alternate */ font-size: 1rem;
text-align: right;
}
.eventheaderwrapper {
font-size: 15px;
font-size: 1rem;
/* @alternate */ font-size: 1rem;
}
.eventheaderwrapper[data-navigationtype='compact'] .eventheader,
.eventheaderwrapper[data-navigationtype='compact'] .eventnavigationnormal {
@@ -85,7 +85,7 @@
}
.eventheader {
font-size: 15px;
font-size: 1rem;
/* @alternate */ font-size: 1rem;
background: #f2f2f2;
padding: 2em 0;
border-bottom: 1px solid darkgray;
@@ -97,7 +97,7 @@
}
.eventheader_intro_description {
font-size: 15px;
font-size: 1rem;
/* @alternate */ font-size: 1rem;
}
.eventheader_intro_logo {
-webkit-box-shadow: 0 0 5px rgba(204,204,204,0.25);
@@ -137,7 +137,7 @@
.eventheader_intro_details_item:first-child {
padding-left: 0;
}
.eventheader_intro_details_item:nth-child\(2\) {
.eventheader_intro_details_item:nth-child(2) {
border: none;
}
.eventheader_intro_details_item:last-child {
@@ -146,6 +146,14 @@
border: none;
margin: 0;
}
@media (min-width: 50em) {
.eventheader_intro_details_item:nth-child(2) {
border-right: 1px solid #ddd;
}
.eventheader_intro_details_item:last-child {
display: inline-block;
}
}
.eventheader_sharing {
text-align: right;
}
@@ -187,7 +195,7 @@
}
.eventnavigation {
font-size: 15px;
font-size: 1rem;
/* @alternate */ font-size: 1rem;
}
.eventnavigationnormal {
position: relative;
@@ -5,7 +5,6 @@ import com.google.gwt.dom.client.DivElement;
import com.google.gwt.dom.client.ImageElement;
import com.google.gwt.dom.client.SpanElement;
import com.google.gwt.dom.client.Style.Display;
import com.google.gwt.dom.client.StyleInjector;
import com.google.gwt.event.dom.client.ClickEvent;
import com.google.gwt.uibinder.client.UiBinder;
import com.google.gwt.uibinder.client.UiField;
@@ -121,7 +120,6 @@ public class EventHeader extends AbstractEventComposite {
private void initResources() {
EventHeaderResources.INSTANCE.css().ensureInjected();
StyleInjector.injectAtEnd("@media (min-width: 50em) { "+EventHeaderResources.INSTANCE.largeCss().getText()+"}");
initWidget(uiBinder.createAndBindUi(this));
}
@@ -168,7 +166,7 @@ public class EventHeader extends AbstractEventComposite {
seriesLeaderboardAnchor.setHref(seriesAnalyticsNavigation.getTargetUrl());
StrippedLeaderboardDTO leaderboardFittingToEvent = findLeaderboardWithSameCourseArea(event);
if(leaderboardFittingToEvent != null) {
if (leaderboardFittingToEvent != null) {
regattaNameInSeriesDiv.setInnerText(leaderboardFittingToEvent.displayName);
} else {
regattaNameInSeriesDiv.getStyle().setDisplay(Display.NONE);
@@ -1,42 +0,0 @@
.eventheader_intro_details_item:nth-child\(2\) {
border-right: 1px solid #ddd;
}
.eventheader_intro_details_item:last-child {
display: inline-block;
}
.dropdown {}
.dropdown_head {}
.dropdown_head_title {}
.dropdown_head_titlebutton {}
.dropdown_content {}
.dropdown_content_link {}
.dropdown_content_link_title {}
.dropdown_content_link_subtitle {}
.leaderboardquickaccess {}
.eventheaderwrapper {}
.eventheader {}
.eventheader_intro {}
.eventheader_intro_description {}
.eventheader_intro_logo {}
.eventheader_intro_logo_image {}
.eventheader_intro_name {}
.eventheader_intro_details {}
.eventheader_intro_details_item {}
.eventheader_intro_details_itemlink {}
.eventheader_sharing {}
.eventheader_sharing_item {}
.eventheader_sharing_itememail {}
.eventheader_sharing_itemtwitter {}
.eventheader_sharing_itemfacebook {}
.locationicon {}
.eventnavigation {}
.eventnavigationnormal {}
.eventnavigationcompact,
.eventnavigationcompactfloating {}
.eventnavigationcompact_logo,
.eventnavigationcompactfloating_logo {}
.eventnavigationcompactfloating {}
.eventnavigationcompactfloating.eventnavigationfixed {}
.eventnavigation_link {}
.eventnavigation_linkactive {}
@@ -9,15 +9,9 @@ import com.google.gwt.resources.client.ImageResource;
public interface EventHeaderResources extends ClientBundle {
public static final EventHeaderResources INSTANCE = GWT.create(EventHeaderResources.class);
@Source("com/sap/sailing/gwt/home/client/place/event/header/EventHeader.css")
@Source("com/sap/sailing/gwt/home/client/place/event/header/EventHeader.gss")
LocalCss css();
public interface MinWidth50emCss extends LocalCss {
}
@Source("com/sap/sailing/gwt/home/client/place/event/header/EventHeaderLarge.css")
MinWidth50emCss largeCss();
@Shared
public interface LocalCss extends CssResource {
String dropdown();
@@ -4,6 +4,8 @@ import java.util.ArrayList;
import java.util.List;
import com.google.gwt.core.client.GWT;
import com.google.gwt.dom.client.DivElement;
import com.google.gwt.dom.client.Style.Visibility;
import com.google.gwt.event.dom.client.ChangeEvent;
import com.google.gwt.uibinder.client.UiBinder;
import com.google.gwt.uibinder.client.UiField;
@@ -14,9 +16,11 @@ import com.google.gwt.user.client.ui.ListBox;
import com.google.gwt.user.client.ui.Widget;
import com.sap.sailing.domain.common.DetailType;
import com.sap.sailing.gwt.home.client.place.event.regattaleaderboard.EventRegattaLeaderboardResources;
import com.sap.sailing.gwt.ui.client.CompetitorSelectionProvider;
import com.sap.sailing.gwt.ui.client.DetailTypeFormatter;
import com.sap.sailing.gwt.ui.client.shared.charts.MultiCompetitorLeaderboardChart;
import com.sap.sailing.gwt.ui.client.shared.charts.MultiCompetitorLeaderboardChartSettings;
import com.sap.sse.common.Util;
public class OldCompetitorCharts extends Composite {
private static OldCompetitorChartsUiBinder uiBinder = GWT.create(OldCompetitorChartsUiBinder.class);
@@ -26,6 +30,7 @@ public class OldCompetitorCharts extends Composite {
@UiField HTMLPanel oldCompetitorChartsPanel;
@UiField ListBox chartTypeSelectionListBox;
@UiField DivElement competitorSelectionStateUi;
private final List<DetailType> availableDetailsTypes;
private MultiCompetitorLeaderboardChart multiCompetitorChart;
@@ -79,4 +84,15 @@ public class OldCompetitorCharts extends Composite {
}
return result;
}
public void updateSelectionState(CompetitorSelectionProvider competitorSelectionProvider) {
int selectedCompetitorsCount = Util.size(competitorSelectionProvider.getSelectedCompetitors());
if(selectedCompetitorsCount > 0) {
int competitorsCount = Util.size(competitorSelectionProvider.getAllCompetitors());
competitorSelectionStateUi.getStyle().setVisibility(Visibility.VISIBLE);
competitorSelectionStateUi.setInnerText(selectedCompetitorsCount + "/" + competitorsCount + " competitors selected.");
} else {
competitorSelectionStateUi.getStyle().setVisibility(Visibility.HIDDEN);
}
}
}
@@ -7,7 +7,7 @@
<ui:with field="local_res" type="com.sap.sailing.gwt.home.client.place.event.regattaleaderboard.EventRegattaLeaderboardResources" />
<ui:with field="local_res2" type="com.sap.sailing.gwt.home.client.place.event.regattaanalytics.RegattaAnalyticsResources" />
<g:HTMLPanel>
<div class="{res.mainCss.grid}">
<div class="{res.mainCss.grid}" style="margin-left:5rem;margin-right:5rem;">
<div class="{res.mediaCss.small6} {res.mediaCss.column} {local_res.css.regattaleaderboard_meta_scoring}">
<h3><ui:text from="{i18n.competitorsAnalytics}" /></h3>
</div>
@@ -15,6 +15,11 @@
<ui:text from="{i18n.chooseChart}" />
<g:ListBox ui:field="chartTypeSelectionListBox" />
</div>
<div class="{res.mediaCss.column}" style="margin-bottom: 1em;">
<b><ui:text from="{i18n.chartSelectionHint}" /></b>
</div>
<div ui:field="competitorSelectionStateUi" class="{res.mediaCss.column}" style="margin-bottom: 1em;">
</div>
<div class="{res.mediaCss.small12} {res.mediaCss.columns}">
<g:HTMLPanel ui:field="oldCompetitorChartsPanel">
</g:HTMLPanel>
@@ -7,7 +7,7 @@
<ui:with field="local_res" type="com.sap.sailing.gwt.home.client.place.event.regattaleaderboard.EventRegattaLeaderboardResources" />
<ui:with field="local_res2" type="com.sap.sailing.gwt.home.client.place.event.oldleaderboard.OldLeaderboardResources" />
<g:HTMLPanel>
<div class="{res.mainCss.grid}">
<div class="{res.mainCss.grid}" style="margin-left:5rem;margin-right:5rem;margin-bottom:1rem;">
<div class="{res.mediaCss.small6} {res.mediaCss.column} {local_res.css.regattaleaderboard_meta_scoring}">
<p ui:field="lastScoringCommentDiv" class="{local_res.css.regattaleaderboard_meta_scoring_comment}"></p>
<p ui:field="scoringSchemeDiv" class="{local_res.css.regattaleaderboard_meta_scoring_type}"></p>
@@ -7,7 +7,7 @@
<ui:with field="local_res" type="com.sap.sailing.gwt.home.client.place.event.regattaleaderboard.EventRegattaLeaderboardResources" />
<ui:with field="local_res2" type="com.sap.sailing.gwt.home.client.place.event.oldmultileaderboard.OldMultiLeaderboardResources" />
<g:HTMLPanel>
<div class="{res.mainCss.grid}">
<div class="{res.mainCss.grid}" style="margin-left:5rem;margin-right:5rem;margin-bottom:1rem;">
<div class="{res.mediaCss.small6} {res.mediaCss.column} {local_res.css.regattaleaderboard_meta_scoring}">
<p ui:field="lastScoringCommentDiv" class="{local_res.css.regattaleaderboard_meta_scoring_comment}"></p>
<p ui:field="scoringSchemeDiv" class="{local_res.css.regattaleaderboard_meta_scoring_type}"></p>
@@ -3,7 +3,7 @@
*/
.latestraceresults {
font-size: 16px;
font-size: 1rem;
/* @alternate */ font-size: 1rem;
margin-top: 1.875em;
margin-bottom: 4.0625em;
}
@@ -76,7 +76,7 @@
}
.mediateaser {
font-size: 16px;
font-size: 1rem;
/* @alternate */ font-size: 1rem;
margin-top: 1.875em;
margin-bottom: 4.0625em;
}
@@ -184,7 +184,7 @@
}
.upcomingraceshort {
font-size: 16px;
font-size: 1rem;
/* @alternate */ font-size: 1rem;
padding: 0.8125em 0.625em;
zoom: 1;
}
@@ -247,7 +247,7 @@
}
.weathershort {
font-size: 16px;
font-size: 1rem;
/* @alternate */ font-size: 1rem;
font-weight: 600;
background: #eee;
height: 5em;
@@ -287,7 +287,7 @@
}
.newsupdate {
font-size: 16px;
font-size: 1rem;
/* @alternate */ font-size: 1rem;
}
.newsupdate_date {
font-size: 0.875em;
@@ -296,7 +296,7 @@
}
.dropdown {
font-size: 16px;
font-size: 1rem;
/* @alternate */ font-size: 1rem;
width: 18.75em;
display: inline-block;
}
@@ -360,12 +360,12 @@
}
.eventquickfinder.dropdown {
font-size: 16px;
font-size: 1rem;
/* @alternate */ font-size: 1rem;
float: right;
}
.eventlivebox {
font-size: 16px;
font-size: 1rem;
/* @alternate */ font-size: 1rem;
margin-top: 1.875em;
}
.eventlivebox_video_container {
@@ -381,7 +381,7 @@
background: #000;
opacity: 0.4;
-ms-filter: "progid:DXImageTransform.Microsoft.Alpha(Opacity=40)";
filter: literal("alpha(opacity=40)");
filter: alpha(opacity=40);
position: absolute;
bottom: 0px;
height: 5em;
@@ -460,5 +460,5 @@
}
.eventoverview {
font-size: 16px;
font-size: 1rem;
/* @alternate */ font-size: 1rem;
}
@@ -7,7 +7,7 @@ import com.google.gwt.resources.client.CssResource;
public interface EventOverviewResources extends ClientBundle {
public static final EventOverviewResources INSTANCE = GWT.create(EventOverviewResources.class);
@Source("com/sap/sailing/gwt/home/client/place/event/overview/EventOverview.css")
@Source("com/sap/sailing/gwt/home/client/place/event/overview/EventOverview.gss")
LocalCss css();
public interface LocalCss extends CssResource {
@@ -1,6 +1,6 @@
.regatta {
font-size: 15px;
font-size: 1rem;
/* @alternate */ font-size: 1rem;
border-bottom: 1px solid #d9d9d9;
padding: 1.333333333333333em 0;
}
@@ -16,11 +16,11 @@
.regatta[data-rendermode='link']:focus {
background-color: #fcfcfc;
}
.regatta[data-rendermode='link']:nth-child\(odd\) {
.regatta[data-rendermode='link']:nth-child(odd) {
background-color: #f8f8f8;
}
.regatta[data-rendermode='link']:nth-child\(odd\):hover,
.regatta[data-rendermode='link']:nth-child\(odd\):focus {
.regatta[data-rendermode='link']:nth-child(odd):hover,
.regatta[data-rendermode='link']:nth-child(odd):focus {
background-color: #f3f3f3;
}
.regatta_intro {
@@ -91,6 +91,12 @@
min-height: 2.666666666666667em;
}
@media (min-width: 50em) {
.regatta_intro_phases_phase {
display: inline-block;
border-right: 1px solid #ccc;
}
}
.regatta_intro_phases_phase_name {
font-size: 0.866666666666667em;
}
@@ -8,7 +8,6 @@ import com.google.gwt.dom.client.DivElement;
import com.google.gwt.dom.client.HeadingElement;
import com.google.gwt.dom.client.SpanElement;
import com.google.gwt.dom.client.Style.Display;
import com.google.gwt.dom.client.StyleInjector;
import com.google.gwt.event.dom.client.ClickEvent;
import com.google.gwt.uibinder.client.UiBinder;
import com.google.gwt.uibinder.client.UiField;
@@ -97,7 +96,6 @@ public class Regatta extends Composite {
// competitorWithRank3 = new RegattaCompetitor(3, null);
RegattaResources.INSTANCE.css().ensureInjected();
StyleInjector.injectAtEnd("@media (min-width: 50em) { "+RegattaResources.INSTANCE.largeCss().getText()+"}");
initWidget(uiBinder.createAndBindUi(this));
}
@@ -1,33 +0,0 @@
.regatta_intro_phases_phase {
display: inline-block;
border-right: 1px solid #ccc;
}
.regatta {}
.regatta_intro {}
.regatta_intro_image {}
.regatta_intro_header {}
.regatta_intro_header_name {}
.regatta_intro_header_namelink:hover,
.regatta_intro_header_namelink:focus {}
.regatta_intro_header_details {}
.regatta_intro_header_details_item {}
.regatta_intro_header_details_item_value {}
.regatta_intro_header_details_label {}
.regatta_intro_phases {}
.regatta_intro_phases_phase_name {}
.regatta_intro_phases_phase_races {}
.regatta_intro_phases_phase_races_race {}
.regatta_intro_phases_leaderboardlink {}
.regatta_intro_scheduled {}
.regatta_intro_results {}
.regatta_intro_results_competitor {}
.regatta_intro_results_competitor_name {}
.regatta_intro_fleets {}
.regatta_intro_fleets_fleet {}
.regatta_intro_fleets_fleet:last-child {}
.regatta_intro_fleets_fleet_item {}
.regatta_intro_fleets_fleet_itemfirst {}
.regatta_intro_fleets_fleet_item_value {}
.regatta_intro_fleets_fleet_item_flag {}
.regatta_intro_fleets_fleet_live {}
.regatta_intro_details_itemhideoncompact {}
@@ -6,6 +6,7 @@ import com.google.gwt.uibinder.client.UiBinder;
import com.google.gwt.uibinder.client.UiField;
import com.google.gwt.user.client.ui.UIObject;
import com.sap.sailing.domain.common.dto.RaceColumnDTO;
import com.sap.sailing.domain.common.dto.RaceColumnDTO.RaceColumnLiveState;
import com.sap.sse.gwt.client.player.Timer;
public class RegattaPhaseRace extends UIObject {
@@ -14,7 +15,7 @@ public class RegattaPhaseRace extends UIObject {
interface RegattaPhaseRaceUiBinder extends UiBinder<DivElement, RegattaPhaseRace> {
}
@UiField DivElement raceStatus;
@UiField DivElement raceColumnStatus;
private enum DataStatusEnum {
FINISHED ("finished"), LIVE("live"), SCHEDULED("scheduled");
@@ -31,14 +32,20 @@ public class RegattaPhaseRace extends UIObject {
RegattaResources.INSTANCE.css().ensureInjected();
setElement(uiBinder.createAndBindUi(this));
DataStatusEnum dataStatus;
if(raceColumn.hasLiveRaces(timerForClientServerOffset.getLiveTimePointInMillis())) {
dataStatus = DataStatusEnum.LIVE;
} else if (raceColumn.hasTrackedRaces()) {
dataStatus = DataStatusEnum.FINISHED;
} else {
dataStatus = DataStatusEnum.SCHEDULED;
DataStatusEnum dataStatus = DataStatusEnum.SCHEDULED;
RaceColumnLiveState liveState = raceColumn.getLiveState(timerForClientServerOffset.getLiveTimePointInMillis());
switch(liveState) {
case NOT_TRACKED:
dataStatus = DataStatusEnum.SCHEDULED;
break;
case TRACKED:
dataStatus = DataStatusEnum.FINISHED;
break;
case TRACKED_AND_LIVE:
dataStatus = DataStatusEnum.LIVE;
break;
}
raceStatus.setAttribute(DataStatusEnum.ATTRIBUTE_NAME, dataStatus.attributeValue);
raceColumnStatus.setAttribute(DataStatusEnum.ATTRIBUTE_NAME, dataStatus.attributeValue);
}
}
@@ -5,5 +5,5 @@
<ui:with field="i18n" type="com.sap.sailing.gwt.common.client.i18n.TextMessages"/>
<ui:with field="res" type="com.sap.sailing.gwt.common.client.SharedResources" />
<ui:with field="local_res" type="com.sap.sailing.gwt.home.client.place.event.regatta.RegattaResources" />
<div ui:field="raceStatus" class="{local_res.css.regatta_intro_phases_phase_races_race}"></div>
<div ui:field="raceColumnStatus" class="{local_res.css.regatta_intro_phases_phase_races_race}"></div>
</ui:UiBinder>
@@ -8,13 +8,8 @@ import com.google.gwt.resources.client.CssResource.Shared;
public interface RegattaResources extends ClientBundle {
public static final RegattaResources INSTANCE = GWT.create(RegattaResources.class);
@Source("com/sap/sailing/gwt/home/client/place/event/regatta/Regatta.css")
@Source("com/sap/sailing/gwt/home/client/place/event/regatta/Regatta.gss")
LocalCss css();
public interface MinWidth50emCss extends LocalCss {
}
@Source("com/sap/sailing/gwt/home/client/place/event/regatta/RegattaLarge.css")
MinWidth50emCss largeCss();
@Shared
public interface LocalCss extends CssResource {
@@ -182,6 +182,7 @@ public class RegattaAnalytics extends Composite implements LeaderboardUpdateList
setActiveTabPanel(competitorChartsTabPanel, competitorChartsAnchor);
DetailType selectedChartDetailType = oldCompetitorChartsComposite.getSelectedChartDetailType();
regattaAnalyticsManager.showCompetitorChart(selectedChartDetailType);
oldCompetitorChartsComposite.updateSelectionState(regattaAnalyticsManager.getCompetitorSelectionProvider());
handleClickEvent(event, competitorChartsNavigation);
}
@@ -1,7 +1,13 @@
package com.sap.sailing.gwt.home.client.place.event.regattaanalytics;
import java.util.ArrayList;
import java.util.Iterator;
import java.util.List;
import com.sap.sailing.domain.common.DetailType;
import com.sap.sailing.domain.common.RegattaAndRaceIdentifier;
import com.sap.sailing.domain.common.dto.CompetitorDTO;
import com.sap.sailing.gwt.ui.client.CompetitorSelectionChangeListener;
import com.sap.sailing.gwt.ui.client.CompetitorSelectionModel;
import com.sap.sailing.gwt.ui.client.DebugIdHelper;
import com.sap.sailing.gwt.ui.client.SailingServiceAsync;
@@ -12,6 +18,7 @@ import com.sap.sailing.gwt.ui.client.shared.components.Component;
import com.sap.sailing.gwt.ui.client.shared.components.SettingsDialog;
import com.sap.sailing.gwt.ui.leaderboard.LeaderboardPanel;
import com.sap.sailing.gwt.ui.leaderboard.LeaderboardSettings;
import com.sap.sse.common.Util;
import com.sap.sse.gwt.client.ErrorReporter;
import com.sap.sse.gwt.client.async.AsyncActionsExecutor;
import com.sap.sse.gwt.client.player.Timer;
@@ -32,7 +39,8 @@ public class RegattaAnalyticsDataManager {
private final UserAgentDetails userAgent;
private final SailingServiceAsync sailingService;
private final Timer timer;
private final int MAX_COMPETITORS_IN_CHART = 30;
public RegattaAnalyticsDataManager(final SailingServiceAsync sailingService, AsyncActionsExecutor asyncActionsExecutor, Timer timer, ErrorReporter errorReporter, UserAgentDetails userAgent) {
this.competitorSelectionProvider = new CompetitorSelectionModel(/* hasMultiSelection */true);
this.sailingService = sailingService;
@@ -73,12 +81,32 @@ public class RegattaAnalyticsDataManager {
return multiCompetitorChart;
}
public CompetitorSelectionModel getCompetitorSelectionProvider() {
return competitorSelectionProvider;
}
public void showCompetitorChart(DetailType chartDetailType) {
// preselect the top N competitors in case there was no selection before and there too many competitors for a chart
int competitorsCount = Util.size(competitorSelectionProvider.getAllCompetitors());
int selectedCompetitorsCount = Util.size(competitorSelectionProvider.getSelectedCompetitors());
if(selectedCompetitorsCount == 0 && competitorsCount > MAX_COMPETITORS_IN_CHART) {
List<CompetitorDTO> selectedCompetitors = new ArrayList<CompetitorDTO>();
Iterator<CompetitorDTO> allCompetitorsIt = competitorSelectionProvider.getAllCompetitors().iterator();
int counter = 0;
while(counter < MAX_COMPETITORS_IN_CHART) {
selectedCompetitors.add(allCompetitorsIt.next());
counter++;
}
competitorSelectionProvider.setSelection(selectedCompetitors, (CompetitorSelectionChangeListener[]) null);
}
MultiCompetitorLeaderboardChart multiCompetitorChart = getMultiCompetitorChart();
MultiCompetitorLeaderboardChartSettings settings = new MultiCompetitorLeaderboardChartSettings(chartDetailType);
multiCompetitorChart.updateSettings(settings);
multiCompetitorChart.setVisible(true);
timer.addTimeListener(multiCompetitorChart);
multiCompetitorChart.clearChart();
multiCompetitorChart.timeChanged(timer.getTime(), null);
}
@@ -52,12 +52,12 @@
.regattalink:hover .regatta_intro_image {
opacity: 0.9;
-ms-filter: "progid:DXImageTransform.Microsoft.Alpha(Opacity=90)";
filter: literal("alpha(opacity=90)");
filter: alpha(opacity=90);
}
.regattalink:nth-child\(even\) {
.regattalink:nth-child(even) {
background-color: #f8f8f8;
}
.regattalink:nth-child\(even\):hover {
.regattalink:nth-child(even):hover {
background-color: #f3f3f3;
}
.regatta_intro {
@@ -7,7 +7,7 @@ import com.google.gwt.resources.client.CssResource;
public interface EventRegattaHeaderResources extends ClientBundle {
public static final EventRegattaHeaderResources INSTANCE = GWT.create(EventRegattaHeaderResources.class);
@Source("com/sap/sailing/gwt/home/client/place/event/regattaheader/EventRegattaHeader.css")
@Source("com/sap/sailing/gwt/home/client/place/event/regattaheader/EventRegattaHeader.gss")
LocalCss css();
public interface LocalCss extends CssResource {
@@ -38,6 +38,8 @@
text-align: center;
}
.regattaleaderboard {
margin-left: 5rem;
margin-right: 5rem;
font-size: 15px;
font-size: 1rem;
width: 100%;
@@ -1,6 +1,6 @@
.eventregattaraces {
font-size: 15px;
font-size: 1rem;
/* @alternate */ font-size: 1rem;
}
.eventregattaraces_phase {
margin: 2em 0;
@@ -69,7 +69,7 @@
.eventregattaraces_legend_item:before {
content: ' ';
position: absolute;
top: literal("-0.2em");
top: -0.2em;
left: 0.666666666666667em;
width: 1.733333333333333em;
height: 1.733333333333333em;
@@ -130,7 +130,7 @@
display: block;
float: none;
margin-right: 0.555555555555556em;
margin-top: literal("-0.194444444444444em");
margin-top: -0.194444444444444em;
font-size: 2.4em;
color: #ccc;
font-weight: 700;
@@ -168,7 +168,7 @@
.eventregattarace_features_list,
.eventregattarace_legs_list {
font-size: 15px;
font-size: 1rem;
/* @alternate */ font-size: 1rem;
}
.eventregattarace_features {
min-height: 0;
@@ -252,7 +252,7 @@
}
.regattanavigation {
font-size: 15px;
font-size: 1rem;
/* @alternate */ font-size: 1rem;
text-align: center;
border-bottom: 1px solid #ddd;
}
@@ -277,3 +277,11 @@
.regattanavigation_linkactive:focus {
border-bottom-color: #d89a00;
}
@media (min-width: 25em) {
.eventregattarace_nameshort {
float: left;
}
.eventregattarace_flag {
display: inline-block;
}
}
@@ -4,7 +4,6 @@ import java.util.ArrayList;
import java.util.List;
import com.google.gwt.core.client.GWT;
import com.google.gwt.dom.client.StyleInjector;
import com.google.gwt.uibinder.client.UiBinder;
import com.google.gwt.uibinder.client.UiField;
import com.google.gwt.user.client.ui.HTMLPanel;
@@ -43,7 +42,6 @@ public class EventRegattaRaces extends AbstractEventComposite {
regatta = new Regatta(event, timerForClientServerOffset, true, placeNavigator, pageNavigator);
EventRegattaRacesResources.INSTANCE.css().ensureInjected();
StyleInjector.injectAtEnd("@media (min-width: 25em) { "+EventRegattaRacesResources.INSTANCE.mediumCss().getText()+"}");
initWidget(uiBinder.createAndBindUi(this));
}
@@ -1,50 +0,0 @@
.eventregattarace_nameshort {
float: left;
}
.eventregattarace_flag {
display: inline-block;
}
.eventregattaraces {}
.eventregattaraces_phase {}
.eventregattaraces_phase_name {}
.eventregattaraces_phase_day {}
.eventregattaraces_phase_races {}
.eventregattaraces_phase_fleets {}
.eventregattaraces_phase_fleet {}
.eventregattaraces_phase_fleet_name {}
.eventregattaraces_phase_fleet_count {}
.eventregattaraces_legend {}
.eventregattaraces_legend_item {}
.eventregattarace {}
.eventregattarace_fleetindicator {}
.eventregattarace_details {}
.eventregattarace_name {}
.eventregattarace_flag {}
.eventregattarace_wind {}
.eventregattarace_wind_strength {}
.eventregattarace_leader {}
.eventregattarace_leader_name {}
.eventregattarace_features,
.eventregattarace_legs {}
.eventregattarace_features_list,
.eventregattarace_legs_list {}
.eventregattarace_features {}
.eventregattarace_legs_leg {}
.eventregattarace_action {}
.eventregattarace_action_watch,
.eventregattarace_action_analyze {}
.eventregattarace_action_watch {}
.eventregattarace_actiondisabled {}
.eventregattarace_feature {}
.eventregattarace_featuregps {}
.eventregattarace_featurewind {}
.eventregattarace_featurevideo {}
.eventregattarace_featureaudio {}
.eventregattarace_featureunavailable {}
.regattanavigation {}
.regattanavigation_link {}
.regattanavigation_linkactive {}
.eventregattaraces_legend_itemgps {}
.eventregattaraces_legend_itemwind {}
.eventregattaraces_legend_itemvideo {}
.eventregattaraces_legend_itemaudio {}
@@ -16,6 +16,7 @@ import com.sap.sailing.domain.common.dto.CompetitorDTO;
import com.sap.sailing.domain.common.dto.FleetDTO;
import com.sap.sailing.domain.common.dto.RaceColumnDTO;
import com.sap.sailing.domain.common.dto.RaceDTO;
import com.sap.sailing.domain.common.dto.RaceDTO.RaceLiveState;
import com.sap.sailing.gwt.home.client.place.event.EventPlaceNavigator;
import com.sap.sailing.gwt.ui.shared.StrippedLeaderboardDTO;
import com.sap.sse.gwt.client.player.Timer;
@@ -23,8 +24,6 @@ import com.sap.sse.gwt.client.player.Timer;
public class EventRegattaRacesRace extends Composite {
private static EventRegattaRacesRaceUiBinder uiBinder = GWT.create(EventRegattaRacesRaceUiBinder.class);
private enum SimpleRaceStates { NOT_TRACKED, TRACKED, TRACKED_AND_LIVE, TRACKED_BUT_NOT_SCHEDULED };
interface EventRegattaRacesRaceUiBinder extends UiBinder<Widget, EventRegattaRacesRace> {
}
@@ -62,16 +61,12 @@ public class EventRegattaRacesRace extends Composite {
private final DateTimeFormat raceTimeFormat = DateTimeFormat.getFormat("EEE, h:mm a");
private final FleetDTO fleet;
private final RaceColumnDTO raceColumn;
private final RaceDTO race;
private final Timer timerForClientServerOffset;
private Element[] allConditionalElements;
public EventRegattaRacesRace(StrippedLeaderboardDTO leaderboard, FleetDTO fleet, RaceColumnDTO raceColumn, Timer timerForClientServerOffset, EventPlaceNavigator pageNavigator) {
this.fleet = fleet;
this.raceColumn = raceColumn;
this.timerForClientServerOffset = timerForClientServerOffset;
race = raceColumn.getRace(fleet);
@@ -97,25 +92,6 @@ public class EventRegattaRacesRace extends Composite {
updateUI();
}
private SimpleRaceStates getSimpleRaceState() {
SimpleRaceStates simpleRaceState = SimpleRaceStates.NOT_TRACKED;
if(race != null && race.trackedRace != null && race.trackedRace.hasGPSData && race.trackedRace.hasWindData) {
simpleRaceState = SimpleRaceStates.TRACKED;
if(isLive()) {
simpleRaceState = SimpleRaceStates.TRACKED_AND_LIVE;
if(race.startOfRace == null) {
simpleRaceState = SimpleRaceStates.TRACKED_BUT_NOT_SCHEDULED;
}
}
}
return simpleRaceState;
}
private boolean isLive() {
return raceColumn.isLive(fleet, timerForClientServerOffset.getLiveTimePointInMillis());
}
private void updateUI() {
averageRaceWind.setInnerText("tbd.");
@@ -123,7 +99,8 @@ public class EventRegattaRacesRace extends Composite {
hideElement(el);
}
switch(getSimpleRaceState()) {
RaceLiveState liveState = race != null ? race.getLiveState(timerForClientServerOffset.getLiveTimePointInMillis()) : RaceLiveState.NOT_TRACKED;
switch(liveState) {
case NOT_TRACKED:
showElement(raceNotTrackedDiv);
break;
@@ -8,13 +8,7 @@ import com.google.gwt.resources.client.CssResource.Shared;
public interface EventRegattaRacesResources extends ClientBundle {
public static final EventRegattaRacesResources INSTANCE = GWT.create(EventRegattaRacesResources.class);
public interface MinWidth25emCss extends LocalCss {
}
@Source("com/sap/sailing/gwt/home/client/place/event/regattaraces/EventRegattaRacesMedium.css")
MinWidth25emCss mediumCss();
@Source("com/sap/sailing/gwt/home/client/place/event/regattaraces/EventRegattaRaces.css")
@Source("com/sap/sailing/gwt/home/client/place/event/regattaraces/EventRegattaRaces.gss")
LocalCss css();
@Shared
@@ -213,6 +213,7 @@ public class EventSeriesAnalytics extends Composite implements LeaderboardUpdate
setActiveTabPanel(competitorChartsTabPanel, eventSeriesAnalyticsManager.getMultiCompetitorChart(), competitorChartsAnchor);
DetailType selectedChartDetailType = oldCompetitorChartsComposite.getSelectedChartDetailType();
eventSeriesAnalyticsManager.showCompetitorChart(selectedChartDetailType);
oldCompetitorChartsComposite.updateSelectionState(eventSeriesAnalyticsManager.getCompetitorSelectionProvider());
handleClickEvent(event, competitorChartsNavigation);
}
@@ -1,8 +1,13 @@
package com.sap.sailing.gwt.home.client.place.event.seriesanalytics;
import java.util.ArrayList;
import java.util.Iterator;
import java.util.List;
import com.sap.sailing.domain.common.DetailType;
import com.sap.sailing.domain.common.RaceIdentifier;
import com.sap.sailing.domain.common.RegattaAndRaceIdentifier;
import com.sap.sailing.gwt.ui.client.CompetitorSelectionChangeListener;
import com.sap.sailing.gwt.ui.client.CompetitorSelectionModel;
import com.sap.sailing.gwt.ui.client.DebugIdHelper;
import com.sap.sailing.gwt.ui.client.SailingServiceAsync;
@@ -14,6 +19,7 @@ import com.sap.sailing.gwt.ui.client.shared.components.SettingsDialog;
import com.sap.sailing.gwt.ui.leaderboard.LeaderboardPanel;
import com.sap.sailing.gwt.ui.leaderboard.LeaderboardSettings;
import com.sap.sailing.gwt.ui.leaderboard.MultiLeaderboardPanel;
import com.sap.sse.common.Util;
import com.sap.sse.gwt.client.ErrorReporter;
import com.sap.sse.gwt.client.async.AsyncActionsExecutor;
import com.sap.sse.gwt.client.player.Timer;
@@ -37,6 +43,7 @@ public class EventSeriesAnalyticsDataManager {
private final UserAgentDetails userAgent;
private final SailingServiceAsync sailingService;
private final Timer timer;
private final int MAX_COMPETITORS_IN_CHART = 30;
public EventSeriesAnalyticsDataManager(final SailingServiceAsync sailingService, AsyncActionsExecutor asyncActionsExecutor, Timer timer, ErrorReporter errorReporter, UserAgentDetails userAgent) {
this.competitorSelectionProvider = new CompetitorSelectionModel(/* hasMultiSelection */true);
@@ -94,14 +101,34 @@ public class EventSeriesAnalyticsDataManager {
}
public void showCompetitorChart(DetailType chartDetailType) {
// preselect the top N competitors in case there was no selection before and there too many competitors for a chart
int competitorsCount = Util.size(competitorSelectionProvider.getAllCompetitors());
int selectedCompetitorsCount = Util.size(competitorSelectionProvider.getSelectedCompetitors());
if(selectedCompetitorsCount == 0 && competitorsCount > MAX_COMPETITORS_IN_CHART) {
List<CompetitorDTO> selectedCompetitors = new ArrayList<CompetitorDTO>();
Iterator<CompetitorDTO> allCompetitorsIt = competitorSelectionProvider.getAllCompetitors().iterator();
int counter = 0;
while(counter < MAX_COMPETITORS_IN_CHART) {
selectedCompetitors.add(allCompetitorsIt.next());
counter++;
}
competitorSelectionProvider.setSelection(selectedCompetitors, (CompetitorSelectionChangeListener[]) null);
}
MultiCompetitorLeaderboardChart multiCompetitorChart = getMultiCompetitorChart();
MultiCompetitorLeaderboardChartSettings settings = new MultiCompetitorLeaderboardChartSettings(chartDetailType);
multiCompetitorChart.updateSettings(settings);
multiCompetitorChart.setVisible(true);
timer.addTimeListener(multiCompetitorChart);
multiCompetitorChart.clearChart();
multiCompetitorChart.timeChanged(timer.getTime(), null);
}
public CompetitorSelectionModel getCompetitorSelectionProvider() {
return competitorSelectionProvider;
}
public void hideCompetitorChart() {
MultiCompetitorLeaderboardChart multiCompetitorChart = getMultiCompetitorChart();
multiCompetitorChart.setVisible(false);
@@ -1,13 +1,13 @@
.eventteasercontainer {
font-size: 15px;
font-size: 1rem;
/* @alternate */ font-size: 1rem;
text-align: center;
width: 100%;
height: 24em;
}
.eventteaser {
font-size: 15px;
font-size: 1rem;
/* @alternate */ font-size: 1rem;
display: inline-block;
margin-bottom: 3em;
text-align: left;
@@ -22,7 +22,7 @@
.eventteaser:hover .eventteaser_image {
opacity: 0.9;
-ms-filter: "progid:DXImageTransform.Microsoft.Alpha(Opacity=90)";
filter: literal("alpha(opacity=90)");
filter: alpha(opacity=90);
}
.eventteaser_image {
position: relative;
@@ -45,24 +45,24 @@
}
.eventsoverviewnavigation {
font-size: 15px;
font-size: 1rem;
/* @alternate */ font-size: 1rem;
}
.eventsoverviewnavigation .gridalternator {
overflow: visible;
}
.eventsoverviewrecent {
font-size: 15px;
font-size: 1rem;
/* @alternate */ font-size: 1rem;
}
.eventsoverviewrecent_year {
border-bottom: 1px solid #ccc;
transiton: opacity 0.1s;
}
.eventsoverviewrecent_year:nth-child\(even\) {
.eventsoverviewrecent_year:nth-child(even) {
background: #f8f8f8;
}
.eventsoverviewrecent_year:nth-child\(even\) .eventsoverviewrecent_year_header:hover,
.eventsoverviewrecent_year:nth-child\(even\) .eventsoverviewrecent_year_header:focus {
.eventsoverviewrecent_year:nth-child(even) .eventsoverviewrecent_year_header:hover,
.eventsoverviewrecent_year:nth-child(even) .eventsoverviewrecent_year_header:focus {
background-color: #f3f3f3;
}
.eventsoverviewrecent_yearcollapsed .eventsoverviewrecent_year_header_info_arrow_image {
@@ -7,7 +7,7 @@ import com.google.gwt.resources.client.CssResource;
public interface EventsOverviewRecentResources extends ClientBundle {
public static final EventsOverviewRecentResources INSTANCE = GWT.create(EventsOverviewRecentResources.class);
@Source("com/sap/sailing/gwt/home/client/place/events/recent/EventsOverviewRecent.css")
@Source("com/sap/sailing/gwt/home/client/place/events/recent/EventsOverviewRecent.gss")
LocalCss css();
public interface LocalCss extends CssResource {
@@ -144,6 +144,9 @@ public class RegattaActivity extends AbstractActivity {
List<DetailType> maneuverDetails = getDetailTypeListFromParamValue(parameterMap.get(LeaderboardUrlSettings.PARAM_MANEUVER_DETAIL));
List<DetailType> raceDetails = getDetailTypeListFromParamValue(parameterMap.get(LeaderboardUrlSettings.PARAM_RACE_DETAIL));
List<DetailType> overallDetails = getDetailTypeListFromParamValue(parameterMap.get(LeaderboardUrlSettings.PARAM_OVERALL_DETAIL));
if (overallDetails.isEmpty()) {
overallDetails = Collections.singletonList(DetailType.REGATTA_RANK);
}
List<DetailType> legDetails = getDetailTypeListFromParamValue(parameterMap.get(LeaderboardUrlSettings.PARAM_LEG_DETAIL));
List<String> namesOfRacesToShow = getStringListFromParamValue(parameterMap.get(LeaderboardUrlSettings.PARAM_RACE_NAME));
boolean showAddedScores = parameterMap.containsKey(LeaderboardUrlSettings.PARAM_SHOW_ADDED_SCORES) ?
@@ -153,13 +156,27 @@ public class RegattaActivity extends AbstractActivity {
boolean autoExpandPreSelectedRace = parameterMap.containsKey(LeaderboardUrlSettings.PARAM_AUTO_EXPAND_PRESELECTED_RACE) ?
Boolean.valueOf(parameterMap.get(LeaderboardUrlSettings.PARAM_AUTO_EXPAND_PRESELECTED_RACE).get(0)) :
(namesOfRacesToShow != null && namesOfRacesToShow.size() == 1);
boolean showCompetitorSailIdColumn = true;
boolean showCompetitorFullNameColumn = true;
if (parameterMap.containsKey(LeaderboardUrlSettings.PARAM_SHOW_COMPETITOR_NAME_COLUMNS)) {
String value = parameterMap.get(LeaderboardUrlSettings.PARAM_SHOW_COMPETITOR_NAME_COLUMNS).get(0);
if (value.equals(LeaderboardUrlSettings.COMPETITOR_NAME_COLUMN_FULL_NAME)) {
showCompetitorSailIdColumn = false;
} else if (value.equals(LeaderboardUrlSettings.COMPETITOR_NAME_COLUMN_SAIL_ID)) {
showCompetitorFullNameColumn = false;
} else if (value.trim().equals("")) {
showCompetitorFullNameColumn = false;
showCompetitorSailIdColumn = false;
}
}
result = new LeaderboardSettings(maneuverDetails, legDetails, raceDetails, overallDetails,
/* namesOfRaceColumnsToShow */ null,
namesOfRacesToShow, numberOfLastRacesToShow,
autoExpandPreSelectedRace, refreshIntervalMillis, /* sort by column */ (namesOfRacesToShow != null && !namesOfRacesToShow.isEmpty()) ?
namesOfRacesToShow.get(0) : null,
/* ascending */ true, /* updateUponPlayStateChange */ raceDetails.isEmpty() && legDetails.isEmpty(),
raceColumnSelectionStrategy, showAddedScores, showOverallColumnWithNumberOfRacesSailedPerCompetitor);
raceColumnSelectionStrategy, showAddedScores, showOverallColumnWithNumberOfRacesSailedPerCompetitor,
showCompetitorSailIdColumn, showCompetitorFullNameColumn);
} else {
final List<DetailType> overallDetails = Collections.singletonList(DetailType.REGATTA_RANK);
@@ -145,6 +145,9 @@ public class SeriesActivity extends AbstractActivity {
List<DetailType> maneuverDetails = getDetailTypeListFromParamValue(parameterMap.get(LeaderboardUrlSettings.PARAM_MANEUVER_DETAIL));
List<DetailType> raceDetails = getDetailTypeListFromParamValue(parameterMap.get(LeaderboardUrlSettings.PARAM_RACE_DETAIL));
List<DetailType> overallDetails = getDetailTypeListFromParamValue(parameterMap.get(LeaderboardUrlSettings.PARAM_OVERALL_DETAIL));
if (overallDetails.isEmpty()) {
overallDetails = Collections.singletonList(DetailType.REGATTA_RANK);
}
List<DetailType> legDetails = getDetailTypeListFromParamValue(parameterMap.get(LeaderboardUrlSettings.PARAM_LEG_DETAIL));
List<String> namesOfRacesToShow = getStringListFromParamValue(parameterMap.get(LeaderboardUrlSettings.PARAM_RACE_NAME));
boolean showAddedScores = parameterMap.containsKey(LeaderboardUrlSettings.PARAM_SHOW_ADDED_SCORES) ?
@@ -154,13 +157,27 @@ public class SeriesActivity extends AbstractActivity {
boolean autoExpandPreSelectedRace = parameterMap.containsKey(LeaderboardUrlSettings.PARAM_AUTO_EXPAND_PRESELECTED_RACE) ?
Boolean.valueOf(parameterMap.get(LeaderboardUrlSettings.PARAM_AUTO_EXPAND_PRESELECTED_RACE).get(0)) :
(namesOfRacesToShow != null && namesOfRacesToShow.size() == 1);
boolean showCompetitorSailIdColumn = true;
boolean showCompetitorFullNameColumn = true;
if (parameterMap.containsKey(LeaderboardUrlSettings.PARAM_SHOW_COMPETITOR_NAME_COLUMNS)) {
String value = parameterMap.get(LeaderboardUrlSettings.PARAM_SHOW_COMPETITOR_NAME_COLUMNS).get(0);
if (value.equals(LeaderboardUrlSettings.COMPETITOR_NAME_COLUMN_FULL_NAME)) {
showCompetitorSailIdColumn = false;
} else if (value.equals(LeaderboardUrlSettings.COMPETITOR_NAME_COLUMN_SAIL_ID)) {
showCompetitorFullNameColumn = false;
} else if (value.trim().equals("")) {
showCompetitorFullNameColumn = false;
showCompetitorSailIdColumn = false;
}
}
result = new LeaderboardSettings(maneuverDetails, legDetails, raceDetails, overallDetails,
/* namesOfRaceColumnsToShow */ null,
namesOfRacesToShow, numberOfLastRacesToShow,
autoExpandPreSelectedRace, refreshIntervalMillis, /* sort by column */ (namesOfRacesToShow != null && !namesOfRacesToShow.isEmpty()) ?
namesOfRacesToShow.get(0) : null,
/* ascending */ true, /* updateUponPlayStateChange */ raceDetails.isEmpty() && legDetails.isEmpty(),
raceColumnSelectionStrategy, showAddedScores, showOverallColumnWithNumberOfRacesSailedPerCompetitor);
raceColumnSelectionStrategy, showAddedScores, showOverallColumnWithNumberOfRacesSailedPerCompetitor,
showCompetitorSailIdColumn, showCompetitorFullNameColumn);
} else {
final List<DetailType> overallDetails = Collections.singletonList(DetailType.REGATTA_RANK);
@@ -1,6 +1,6 @@
.sitefooter {
font-size: 15px;
font-size: 1rem;
/* @alternate */ font-size: 1rem;
background: #333;
border-top: 5px solid #fff;
color: #fff;
@@ -35,3 +35,17 @@
cursor: pointer;
margin-left: 0.666666666666667em;
}
@media (min-width: 25em) {
.sitefooter {
line-height: 4.666666666666667em;
}
.sitefooter_copyright {
float: left;
}
.sitefooter_links_link {
display: inline-block;
}
.sitefooter_language {
text-align: right;
}
}
@@ -7,7 +7,6 @@ import java.util.Map.Entry;
import com.google.gwt.core.client.GWT;
import com.google.gwt.dom.client.DivElement;
import com.google.gwt.dom.client.Style.Display;
import com.google.gwt.dom.client.StyleInjector;
import com.google.gwt.event.dom.client.ClickEvent;
import com.google.gwt.http.client.UrlBuilder;
import com.google.gwt.i18n.client.LocaleInfo;
@@ -20,11 +19,11 @@ import com.google.gwt.user.client.Window.Location;
import com.google.gwt.user.client.ui.Anchor;
import com.google.gwt.user.client.ui.Composite;
import com.google.gwt.user.client.ui.Widget;
import com.google.gwt.user.client.ui.impl.HyperlinkImpl;
import com.sap.sailing.gwt.home.client.app.HomePlacesNavigator;
import com.sap.sailing.gwt.home.client.app.PlaceNavigation;
import com.sap.sailing.gwt.home.client.place.whatsnew.WhatsNewPlace;
import com.sap.sailing.gwt.home.client.place.whatsnew.WhatsNewPlace.WhatsNewNavigationTabs;
import com.google.gwt.user.client.ui.impl.HyperlinkImpl;
public class Footer extends Composite {
private static FooterPanelUiBinder uiBinder = GWT.create(FooterPanelUiBinder.class);
@@ -52,7 +51,6 @@ public class Footer extends Composite {
localeAndLanguages.put("de", "Deutsch");
FooterResources.INSTANCE.css().ensureInjected();
StyleInjector.injectAtEnd("@media (min-width: 25em) { "+FooterResources.INSTANCE.mediumCss().getText()+"}");
initWidget(uiBinder.createAndBindUi(this));
@@ -1,18 +0,0 @@
.sitefooter {
line-height: 4.666666666666667em;
}
.sitefooter_copyright {
float: left;
}
.sitefooter_links_link {
display: inline-block;
}
.sitefooter_language {
text-align: right;
}
.sitefooter_copyright {}
.sitefooter_links {}
.sitefooter_links_link {}
.sitefooter_links_link:last-child {}
.sitefooter_language {}
.sitefooter_language_link {}
@@ -3,21 +3,14 @@ package com.sap.sailing.gwt.home.client.shared.footer;
import com.google.gwt.core.client.GWT;
import com.google.gwt.resources.client.ClientBundle;
import com.google.gwt.resources.client.CssResource;
import com.google.gwt.resources.client.CssResource.NotStrict;
import com.google.gwt.resources.client.CssResource.Shared;
public interface FooterResources extends ClientBundle {
public static final FooterResources INSTANCE = GWT.create(FooterResources.class);
@Source("com/sap/sailing/gwt/home/client/shared/footer/Footer.css")
@Source("com/sap/sailing/gwt/home/client/shared/footer/Footer.gss")
LocalCss css();
public interface MinWidth25emCss extends LocalCss {
}
@NotStrict
@Source("com/sap/sailing/gwt/home/client/shared/footer/FooterMedium.css")
MinWidth25emCss mediumCss();
@Shared
public interface LocalCss extends CssResource {
String sitefooter();
@@ -1,6 +1,6 @@
.siteheader {
font-size: 15px;
font-size: 1rem;
/* @alternate */ font-size: 1rem;
background: #333;
border-bottom: 5px solid #f0ab00;
min-height: 4.333333333333333em;
@@ -22,6 +22,11 @@
line-height: 4.333333333333333em;
color: #f6f9fc;
}
@media (min-width: 50em) {
.logotitle {
display: inline;
}
}
.sitenavigation {
float: right;
text-align: right;
@@ -69,7 +74,7 @@
}
.search {
font-size: 15px;
font-size: 1rem;
/* @alternate */ font-size: 1rem;
display: inline-block;
width: 100%;
margin-top: 0.2em;
@@ -102,7 +107,7 @@
.searchsmall .search_textfield {
opacity: 0;
-ms-filter: "progid:DXImageTransform.Microsoft.Alpha(Opacity=0)";
filter: literal("alpha(opacity=0)");
filter: alpha(opacity=0);
pointer-events: none;
-webkit-transition: height 0.1s ease;
-moz-transition: height 0.1s ease;
@@ -4,7 +4,6 @@ import java.util.Arrays;
import java.util.List;
import com.google.gwt.core.client.GWT;
import com.google.gwt.dom.client.StyleInjector;
import com.google.gwt.event.dom.client.ClickEvent;
import com.google.gwt.event.dom.client.KeyCodes;
import com.google.gwt.event.dom.client.KeyPressEvent;
@@ -56,7 +55,6 @@ public class Header extends Composite {
this.navigator = navigator;
HeaderResources.INSTANCE.css().ensureInjected();
StyleInjector.injectAtEnd("@media (min-width: 50em) { "+HeaderResources.INSTANCE.largeCss().getText()+"}");
initWidget(uiBinder.createAndBindUi(this));
links = Arrays.asList(new Anchor[] { startPageLink, eventsPageLink, solutionsPageLink });
@@ -1,25 +0,0 @@
.logotitle {
display: inline;
}
.siteheader {}
.siteheader_full {}
.logo {}
.sitenavigation {}
.sitenavigation_link {}
.sitenavigation_link:hover,
.sitenavigation_link:focus {}
.sitenavigation_linkactive,
.sitenavigation_link:hover,
.sitenavigation_link:focus {}
.sitenavigation_search {}
.sitenavigationexpanded .searchsmall {}
.sitenavigationexpanded .searchsmall .search_textfield {}
.search {}
.search_textfield {}
.search_button {}
.search_button:hover,
.search_button:focus {}
.searchsmall {}
.searchsmall .search_textfield {}
.searchsmall .search_button {}
.submit {}
@@ -9,15 +9,9 @@ import com.google.gwt.resources.client.ImageResource;
public interface HeaderResources extends ClientBundle {
public static final HeaderResources INSTANCE = GWT.create(HeaderResources.class);
@Source("com/sap/sailing/gwt/home/client/shared/header/Header.css")
@Source("com/sap/sailing/gwt/home/client/shared/header/Header.gss")
LocalCss css();
public interface MinWidth50emCss extends LocalCss {
}
@Source("com/sap/sailing/gwt/home/client/shared/header/HeaderLarge.css")
MinWidth50emCss largeCss();
@Shared
public interface LocalCss extends CssResource {
String siteheader();
@@ -1,6 +1,6 @@
.solutions {
font-size: 15px;
font-size: 1rem;
/* @alternate */ font-size: 1rem;
padding-top: 3.4em;
}
.solutions_nav {
@@ -44,10 +44,10 @@
position: relative;
z-index: 2;
}
.solutions_content:nth-child\(odd\) {
.solutions_content:nth-child(odd) {
background-color: #f8f8f8;
}
.solutions_content:nth-child\(even\) {
.solutions_content:nth-child(even) {
background-color: #fff;
}
.solutions_content .parallax {
@@ -77,14 +77,14 @@
}
.solutions_contentrace {
font-size: 15px;
font-size: 1rem;
/* @alternate */ font-size: 1rem;
}
.solutions_contentrace .gridalternator {
padding: 2.666666666666667em 0 10%;
}
.solutions_contentrace .parallax {
font-size: 15px;
font-size: 1rem;
/* @alternate */ font-size: 1rem;
}
.solutions_contentrace .parallax .background {
margin: auto;
@@ -105,7 +105,7 @@
}
.solutions_contentpost {
font-size: 15px;
font-size: 1rem;
/* @alternate */ font-size: 1rem;
}
.solutions_contentpost .gridalternator {
background-repeat: no-repeat;
@@ -118,14 +118,14 @@
}
.solutions_contenttraining {
font-size: 15px;
font-size: 1rem;
/* @alternate */ font-size: 1rem;
}
.solutions_contenttraining .gridalternator {
padding-top: 5em;
}
.solutions_contenttraining .parallax {
font-size: 15px;
font-size: 1rem;
/* @alternate */ font-size: 1rem;
}
.solutions_contenttraining .parallax .background {
margin: auto;
@@ -143,7 +143,7 @@
}
.solutions_contentsimulator {
font-size: 15px;
font-size: 1rem;
/* @alternate */ font-size: 1rem;
}
.solutions_contentsimulator .gridalternator {
background-repeat: no-repeat;
@@ -158,3 +158,56 @@
display: inline-block;
margin-top: 2.666666666666667em;
}
@media (min-width: 25em) {
.solutions_nav_link {
margin-right: 1em;
}
.solutions_content .gridalternator {
padding: 5em 0;
}
.solutions_contentsap .gridalternator {
padding: 5em 0 5.666666666666667em;
}
.solutions_contentrace .gridalternator {
padding: 4em 0 15%;
}
.solutions_contentrace .parallax .background {
background-position: center 16.666666666666668em;
}
.solutions_contentpost .gridalternator {
padding: 3.333333333333333em 0;
}
.solutions_contenttraining .gridalternator {
padding-top: 6.666666666666667em;
}
.solutions_contentsimulator .gridalternator {
padding: 5em 0 6.666666666666667em;
}
}
@media (min-width: 50em) {
.solutions_nav_link {
margin-right: 2em;
}
.solutions_content .gridalternator {
padding: 6.666666666666667em 0;
}
.solutions_contentsap .gridalternator {
padding: 6.666666666666667em 0 12em;
}
.solutions_contentrace .gridalternator {
padding: 4em 0 20%;
}
.solutions_contentrace .parallax .background {
background-position: center 13.333333333333334em;
}
.solutions_contentpost .gridalternator {
padding: 5em 0;
}
.solutions_contenttraining .gridalternator {
padding-top: 8.333333333333334em;
}
.solutions_contentsimulator .gridalternator {
padding: 6.666666666666667em 0 13.333333333333334em;
}
}
@@ -3,7 +3,6 @@ package com.sap.sailing.gwt.home.client.shared.solutions;
import com.google.gwt.core.client.GWT;
import com.google.gwt.core.client.Scheduler;
import com.google.gwt.dom.client.DivElement;
import com.google.gwt.dom.client.StyleInjector;
import com.google.gwt.event.dom.client.ClickEvent;
import com.google.gwt.uibinder.client.UiBinder;
import com.google.gwt.uibinder.client.UiField;
@@ -63,9 +62,6 @@ public class Solutions extends Composite {
this.placesNavigator = placesNavigator;
SolutionsResources.INSTANCE.css().ensureInjected();
StyleInjector.injectAtEnd("@media (min-width: 25em) { "+SolutionsResources.INSTANCE.mediumCss().getText()+"}");
StyleInjector.injectAtEnd("@media (min-width: 50em) { "+SolutionsResources.INSTANCE.largeCss().getText()+"}");
initWidget(uiBinder.createAndBindUi(this));
@@ -1,30 +0,0 @@
.solutions_nav_link {
margin-right: 2em;
}
.solutions_content .gridalternator {
padding: 6.666666666666667em 0;
}
.solutions_contentsap .gridalternator {
padding: 6.666666666666667em 0 12em;
}
.solutions_contentrace .gridalternator {
padding: 4em 0 20%;
}
.solutions_contentrace .parallax .background {
background-position: center 13.333333333333334em;
}
.solutions_contentpost .gridalternator {
padding: 5em 0;
}
.solutions_contenttraining .gridalternator {
padding-top: 8.333333333333334em;
}
.solutions_contentsimulator .gridalternator {
padding: 6.666666666666667em 0 13.333333333333334em;
}
.solutions_content_linkappstore{}
.noparallax{}
.solutions{}
.solutions_nav{}
.solutions_nav_linkactive{}
.solutions_navsticky{}
@@ -1,30 +0,0 @@
.solutions_nav_link {
margin-right: 1em;
}
.solutions_content .gridalternator {
padding: 5em 0;
}
.solutions_contentsap .gridalternator {
padding: 5em 0 5.666666666666667em;
}
.solutions_contentrace .gridalternator {
padding: 4em 0 15%;
}
.solutions_contentrace .parallax .background {
background-position: center 16.666666666666668em;
}
.solutions_contentpost .gridalternator {
padding: 3.333333333333333em 0;
}
.solutions_contenttraining .gridalternator {
padding-top: 6.666666666666667em;
}
.solutions_contentsimulator .gridalternator {
padding: 5em 0 6.666666666666667em;
}
.solutions_content_linkappstore{}
.noparallax{}
.solutions{}
.solutions_nav{}
.solutions_nav_linkactive{}
.solutions_navsticky{}
@@ -8,21 +8,9 @@ import com.google.gwt.resources.client.CssResource.Shared;
public interface SolutionsResources extends ClientBundle {
public static final SolutionsResources INSTANCE = GWT.create(SolutionsResources.class);
@Source("com/sap/sailing/gwt/home/client/shared/solutions/Solutions.css")
@Source("com/sap/sailing/gwt/home/client/shared/solutions/Solutions.gss")
LocalCss css();
public interface MinWidth25emCss extends LocalCss {
}
@Source("com/sap/sailing/gwt/home/client/shared/solutions/SolutionsMedium.css")
MinWidth25emCss mediumCss();
public interface MinWidth50emCss extends LocalCss {
}
@Source("com/sap/sailing/gwt/home/client/shared/solutions/SolutionsLarge.css")
MinWidth50emCss largeCss();
@Shared
public interface LocalCss extends CssResource {
String solutions();
@@ -6,72 +6,17 @@
-moz-backface-visibility: hidden;
-ms-backface-visibility: hidden;
-o-backface-visibility: hidden;
-webkit-backface-visibility: hidden;
-moz-backface-visibility: hidden;
-ms-backface-visibility: hidden;
backface-visibility: hidden;
z-index: 1;
}
.swiperwrapper {
position: relative;
width: 100%;
-webkit-transition-property: -webkit-transform, left, top;
-webkit-transition-duration: 0s;
-webkit-transform: translate3d(0px, 0, 0);
-webkit-transition-timing-function: ease;
-moz-transition-property: -moz-transform, left, top;
-moz-transition-duration: 0s;
-moz-transform: translate3d(0px, 0, 0);
-moz-transition-timing-function: ease;
-o-transition-property: -o-transform, left, top;
-o-transition-duration: 0s;
-o-transform: translate3d(0px, 0, 0);
-o-transition-timing-function: ease;
-o-transform: translate(0px, 0px);
-ms-transition-property: -ms-transform, left, top;
-ms-transition-duration: 0s;
-ms-transform: translate3d(0px, 0, 0);
-ms-transition-timing-function: ease;
-webkit-transition-property: -webkit-transform, left, top;
-moz-transition-property: -moz-transform, left, top;
-o-transition-property: -o-transform, left, top;
-ms-transition-property: -ms-transform, left, top;
transition-property: transform, left, top;
-webkit-transition-duration: 0s;
-moz-transition-duration: 0s;
-o-transition-duration: 0s;
-ms-transition-duration: 0s;
transition-duration: 0s;
-webkit-transform: translate3d(0px, 0, 0);
-moz-transform: translate3d(0px, 0, 0);
-o-transform: translate3d(0px, 0, 0);
-ms-transform: translate3d(0px, 0, 0);
transform: translate3d(0px, 0, 0);
-webkit-transition-timing-function: ease;
-moz-transition-timing-function: ease;
-o-transition-timing-function: ease;
-ms-transition-timing-function: ease;
transition-timing-function: ease;
-webkit-box-sizing: content-box;
-moz-box-sizing: content-box;
-webkit-box-sizing: content-box;
-moz-box-sizing: content-box;
box-sizing: content-box;
}
.swiperslide {
font-size: 15px;
font-size: 1rem;
/* @alternate */ font-size: 1rem;
float: left;
}
.swiperwp8horizontal {
-ms-touch-action: pan-y;
}
.swiperwp8vertical {
-ms-touch-action: pan-x;
}
.countdown {
font-size: 15px;
font-size: 1rem;
/* @alternate */ font-size: 1rem;
}
.countdown_pane {
border: 0.266666666666667em solid #fff;
@@ -99,7 +44,7 @@
}
.stageteaser {
font-size: 15px;
font-size: 1rem;
/* @alternate */ font-size: 1rem;
position: relative;
width: 100%;
}
@@ -147,7 +92,7 @@
.stageteaser_content_headerhidden {
opacity: 0;
-ms-filter: "progid:DXImageTransform.Microsoft.Alpha(Opacity=0)";
filter: literal("alpha(opacity=0)");
filter: alpha(opacity=0);
}
.stageteaser_content_header_subtitle {
font-size: 2em;
@@ -163,7 +108,7 @@
}
.stageteaser_content_header_countdown {
font-size: 15px;
font-size: 1rem;
/* @alternate */ font-size: 1rem;
}
.stageteaser_content_band {
position: absolute;
@@ -211,7 +156,7 @@
}
.stageteaser_content_band_item[data-bandcount="1"] .stageteaser_content_band_text {
font-size: 18px;
font-size: 1.2rem;
/* @alternate */ font-size: 1.2rem;
}
.stageteaser_content_band_item[data-bandcount="1"] .stageteaser_content_band_text_headline {
display: inline-block;
@@ -230,7 +175,7 @@
}
.stage {
font-size: 15px;
font-size: 1rem;
/* @alternate */ font-size: 1rem;
height: 38.666666666666664em;
position: relative;
clear: both;
@@ -241,7 +186,7 @@
}
.stage_controls {
font-size: 15px;
font-size: 1rem;
/* @alternate */ font-size: 1rem;
}
.stage_progress {
height: 0.333333333333333em;
@@ -8,7 +8,7 @@ import com.google.gwt.resources.client.ImageResource;
public interface StageResources extends ClientBundle {
public static final StageResources INSTANCE = GWT.create(StageResources.class);
@Source("com/sap/sailing/gwt/home/client/shared/stage/Stage.css")
@Source("com/sap/sailing/gwt/home/client/shared/stage/Stage.gss")
LocalCss css();
public interface LocalCss extends CssResource {
@@ -32,10 +32,7 @@ public interface StageResources extends ClientBundle {
String stageteaser_content_band_text_name();
String stageteaser_content_band_action();
String swipercontainer();
String swiperwrapper();
String swiperslide();
String swiperwp8horizontal();
String swiperwp8vertical();
String stage();
String stage_teasers();
String stage_controls();
@@ -2,8 +2,10 @@ package com.sap.sailing.gwt.ui.adminconsole;
import java.util.ArrayList;
import java.util.Comparator;
import java.util.HashSet;
import java.util.List;
import java.util.Map;
import java.util.Set;
import com.google.gwt.core.client.GWT;
import com.google.gwt.event.dom.client.ClickEvent;
@@ -29,8 +31,11 @@ import com.sap.sailing.domain.common.RegattaNameAndRaceName;
import com.sap.sailing.domain.common.dto.FleetDTO;
import com.sap.sailing.domain.common.dto.NamedDTO;
import com.sap.sailing.domain.common.dto.RaceColumnDTO;
import com.sap.sailing.gwt.ui.adminconsole.RaceColumnInLeaderboardDialog.RaceColumnDescriptor;
import com.sap.sailing.gwt.ui.client.LeaderboardsDisplayer;
import com.sap.sailing.gwt.ui.client.LeaderboardsRefresher;
import com.sap.sailing.gwt.ui.client.ParallelExecutionCallback;
import com.sap.sailing.gwt.ui.client.ParallelExecutionHolder;
import com.sap.sailing.gwt.ui.client.RaceSelectionChangeListener;
import com.sap.sailing.gwt.ui.client.RaceSelectionModel;
import com.sap.sailing.gwt.ui.client.RaceSelectionProvider;
@@ -39,11 +44,14 @@ import com.sap.sailing.gwt.ui.client.RegattasDisplayer;
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.SelectionCheckboxColumn;
import com.sap.sailing.gwt.ui.shared.RaceLogDTO;
import com.sap.sailing.gwt.ui.shared.RegattaDTO;
import com.sap.sailing.gwt.ui.shared.RegattaLogDTO;
import com.sap.sailing.gwt.ui.shared.StrippedLeaderboardDTO;
import com.sap.sse.common.Util;
import com.sap.sse.gwt.client.ErrorReporter;
import com.sap.sse.gwt.client.async.MarkedAsyncCallback;
import com.sap.sse.gwt.client.dialog.DataEntryDialog.DialogCallback;
import com.sap.sse.gwt.client.panels.LabeledAbstractFilterablePanel;
public abstract class AbstractLeaderboardConfigPanel extends FormPanel implements SelectedLeaderboardProvider,
@@ -122,7 +130,7 @@ public abstract class AbstractLeaderboardConfigPanel extends FormPanel implement
public AbstractLeaderboardConfigPanel(final SailingServiceAsync sailingService, RegattaRefresher regattaRefresher,
LeaderboardsRefresher leaderboardsRefresher, final ErrorReporter errorReporter,
StringMessages theStringConstants, SetSelectionModel<RaceColumnDTOAndFleetDTOWithNameBasedEquality> raceColumnTableSelectionModel) {
StringMessages theStringConstants, boolean multiSelection) {
this.stringMessages = theStringConstants;
this.sailingService = sailingService;
leaderboardList = new ListDataProvider<StrippedLeaderboardDTO>();
@@ -227,16 +235,13 @@ public abstract class AbstractLeaderboardConfigPanel extends FormPanel implement
}
});
vPanel.add(reloadAllRaceLogs);
Label lblRaceNamesIn = new Label(stringMessages.races());
vPanel.add(lblRaceNamesIn);
raceColumnTable = new RaceTableWrapper<SetSelectionModel<RaceColumnDTOAndFleetDTOWithNameBasedEquality>>(
sailingService, stringMessages, errorReporter, raceColumnTableSelectionModel);
sailingService, stringMessages, errorReporter, multiSelection);
raceColumnTable.getTable().setWidth("100%");
addColumnsToRacesTable(raceColumnTable.getTable());
this.raceColumnTableSelectionModel = raceColumnTableSelectionModel;
this.raceColumnTableSelectionModel = raceColumnTable.getSelectionModel();
raceColumnTableSelectionModel.addSelectionChangeHandler(new SelectionChangeEvent.Handler() {
public void onSelectionChange(SelectionChangeEvent event) {
leaderboardRaceColumnSelectionChanged();
@@ -266,11 +271,6 @@ public abstract class AbstractLeaderboardConfigPanel extends FormPanel implement
protected ListDataProvider<StrippedLeaderboardDTO> getListDataProvider() {
return leaderboardList;
}
@Override
public Boolean getValue(StrippedLeaderboardDTO row) {
return leaderboardTable.getSelectionModel().isSelected(row);
}
};
selectionCheckboxColumn.setSortable(true);
leaderboardColumnListHandler.setComparator(selectionCheckboxColumn, new Comparator<StrippedLeaderboardDTO>() {
@@ -527,4 +527,126 @@ public abstract class AbstractLeaderboardConfigPanel extends FormPanel implement
protected LeaderboardsRefresher getLeaderboardsRefresher() {
return leaderboardsRefresher;
}
protected void editRaceColumnOfLeaderboard(final RaceColumnDTOAndFleetDTOWithNameBasedEquality raceColumnWithFleet) {
final String selectedLeaderboardName = getSelectedLeaderboardName();
final boolean oldIsMedalRace = raceColumnWithFleet.getA().isMedalRace();
final String oldRaceColumnName = raceColumnWithFleet.getA().getRaceColumnName();
final Double oldExplicitFactor = raceColumnWithFleet.getA().getExplicitFactor();
// use a set to avoid duplicates in the case of regatta leaderboards with multiple fleets per column
Set<RaceColumnDTO> existingRacesWithoutThisRace = new HashSet<RaceColumnDTO>();
for (RaceColumnDTOAndFleetDTOWithNameBasedEquality pair : raceColumnTable.getDataProvider().getList()) {
existingRacesWithoutThisRace.add(pair.getA());
}
existingRacesWithoutThisRace.remove(raceColumnWithFleet.getA());
final RaceColumnInLeaderboardDialog raceDialog = new RaceColumnInLeaderboardDialog(existingRacesWithoutThisRace,
raceColumnWithFleet.getA(), getSelectedLeaderboard().type.isRegattaLeaderboard(), stringMessages, new DialogCallback<RaceColumnDescriptor>() {
@Override
public void cancel() {
}
@Override
public void ok(final RaceColumnDescriptor result) {
boolean rename = !oldRaceColumnName.equals(result.getName());
boolean updateIsMedalRace = oldIsMedalRace != result.isMedalRace();
boolean updateFactor = oldExplicitFactor != result.getExplicitFactor();
List<ParallelExecutionCallback<Void>> callbacks = new ArrayList<ParallelExecutionCallback<Void>>();
final ParallelExecutionCallback<Void> renameLeaderboardColumnCallback = new ParallelExecutionCallback<Void>();
if (rename) {
callbacks.add(renameLeaderboardColumnCallback);
}
final ParallelExecutionCallback<Void> updateIsMedalRaceCallback = new ParallelExecutionCallback<Void>();
if (updateIsMedalRace) {
callbacks.add(updateIsMedalRaceCallback);
}
final ParallelExecutionCallback<Void> updateLeaderboardColumnFactorCallback = new ParallelExecutionCallback<Void>();
if (updateFactor) {
callbacks.add(updateLeaderboardColumnFactorCallback);
}
new ParallelExecutionHolder(callbacks.toArray(new ParallelExecutionCallback<?>[0])) {
@Override
public void handleSuccess() {
loadAndRefreshLeaderboard(selectedLeaderboardName, result.getName());
}
@Override
public void handleFailure(Throwable t) {
errorReporter.reportError("Error trying to update data of race column "
+ oldRaceColumnName + " in leaderboard " + selectedLeaderboardName + ": "
+ t.getMessage());
}
};
if (rename) {
sailingService.renameLeaderboardColumn(selectedLeaderboardName, oldRaceColumnName,
result.getName(), renameLeaderboardColumnCallback);
}
if (updateIsMedalRace) {
sailingService.updateIsMedalRace(selectedLeaderboardName, result.getName(),
result.isMedalRace(), updateIsMedalRaceCallback);
}
if (updateFactor) {
sailingService.updateLeaderboardColumnFactor(selectedLeaderboardName, result.getName(),
result.getExplicitFactor(), updateLeaderboardColumnFactorCallback);
}
}
});
raceDialog.show();
}
protected void showRaceLog(final RaceColumnDTO raceColumnDTO, final FleetDTO fleetDTO) {
final String selectedLeaderboardName = getSelectedLeaderboardName();
sailingService.getRaceLog(selectedLeaderboardName, raceColumnDTO, fleetDTO,
new MarkedAsyncCallback<RaceLogDTO>(
new AsyncCallback<RaceLogDTO>() {
@Override
public void onFailure(Throwable caught) {
errorReporter.reportError(caught.getMessage(), true);
}
@Override
public void onSuccess(RaceLogDTO result) {
openRaceLogDialog(result);
}
}));
}
private void openRaceLogDialog(RaceLogDTO raceLogDTO) {
RaceLogDialog dialog = new RaceLogDialog(raceLogDTO, stringMessages, new DialogCallback<RaceLogDTO>() {
@Override
public void cancel() {
}
@Override
public void ok(RaceLogDTO result) {
}
});
dialog.show();
}
protected void showRegattaLog() {
final String selectedLeaderboardName = getSelectedLeaderboardName();
sailingService.getRegattaLog(selectedLeaderboardName,
new MarkedAsyncCallback<RegattaLogDTO>(
new AsyncCallback<RegattaLogDTO>() {
@Override
public void onFailure(Throwable caught) {
errorReporter.reportError(caught.getMessage(), true);
}
@Override
public void onSuccess(RegattaLogDTO result) {
openRegattaLogDialog(result);
}
}));
}
private void openRegattaLogDialog(RegattaLogDTO regattaLogDTO) {
RegattaLogDialog dialog = new RegattaLogDialog(regattaLogDTO, stringMessages, new DialogCallback<RegattaLogDTO>() {
@Override
public void cancel() {
}
@Override
public void ok(RegattaLogDTO result) {
}
});
dialog.show();
}
}
@@ -0,0 +1,184 @@
package com.sap.sailing.gwt.ui.adminconsole;
import java.util.Comparator;
import java.util.Date;
import com.google.gwt.core.client.GWT;
import com.google.gwt.user.cellview.client.CellTable;
import com.google.gwt.user.cellview.client.ColumnSortEvent.ListHandler;
import com.google.gwt.user.cellview.client.TextColumn;
import com.google.gwt.user.client.ui.ScrollPanel;
import com.google.gwt.user.client.ui.VerticalPanel;
import com.google.gwt.user.client.ui.Widget;
import com.google.gwt.view.client.ListDataProvider;
import com.google.gwt.view.client.SelectionModel;
import com.google.gwt.view.client.SingleSelectionModel;
import com.sap.sailing.domain.common.impl.NaturalComparator;
import com.sap.sailing.gwt.ui.client.StringMessages;
import com.sap.sailing.gwt.ui.common.client.DateAndTimeFormatterUtil;
import com.sap.sailing.gwt.ui.shared.AbstractLogDTO;
import com.sap.sailing.gwt.ui.shared.AbstractLogEventDTO;
import com.sap.sse.gwt.client.dialog.DataEntryDialog;
public abstract class AbstractLogDialog<R extends AbstractLogDTO<E>, E extends AbstractLogEventDTO> extends DataEntryDialog<R> {
private final R logDTO;
private final SelectionModel<E> selectionModel;
private final CellTable<E> raceLogEventsTable;
private ListDataProvider<E> raceLogEventsList;
public AbstractLogDialog(final R logDTO, final StringMessages stringMessages, String logName, DialogCallback<R> callback) {
super(logName, null, stringMessages.ok(), stringMessages.cancel(), /* validator */ null, callback);
this.logDTO = logDTO;
raceLogEventsList = new ListDataProvider<E>();
selectionModel = new SingleSelectionModel<E>();
AdminConsoleTableResources tableRes = GWT.create(AdminConsoleTableResources.class);
raceLogEventsTable = new CellTable<E>(/* pageSize */10000, tableRes);
raceLogEventsTable.ensureDebugId("TrackedRacesTable");
raceLogEventsTable.setSelectionModel(selectionModel);
raceLogEventsList.setList(logDTO.getEntries());
ListHandler<E> columnSortHandler = new ListHandler<>(raceLogEventsList.getList());
raceLogEventsTable.addColumnSortHandler(columnSortHandler);
TextColumn<E> logEventAuthorColumn = new TextColumn<E>() {
@Override
public String getValue(E logEventDTO) {
return String.valueOf(logEventDTO.getAuthorName());
}
};
logEventAuthorColumn.setSortable(true);
columnSortHandler.setComparator(logEventAuthorColumn, new Comparator<E>() {
@Override
public int compare(E r1, E r2) {
return new NaturalComparator().compare(r1.getAuthorName(), r1.getAuthorName());
}
});
TextColumn<E> logEventAuthorPriorityColumn = new TextColumn<E>() {
@Override
public String getValue(E logEventDTO) {
return String.valueOf(logEventDTO.getAuthorPriority());
}
};
logEventAuthorPriorityColumn.setSortable(true);
columnSortHandler.setComparator(logEventAuthorPriorityColumn, new Comparator<E>() {
@Override
public int compare(E r1, E r2) {
return r1.getAuthorPriority() - r2.getAuthorPriority();
}
});
TextColumn<E> logEventCreatedColumn = new TextColumn<E>() {
@Override
public String getValue(E raceLogEventDTO) {
Date createdAt = raceLogEventDTO.getCreatedAt();
if(createdAt != null) {
return DateAndTimeFormatterUtil.defaultDateFormatter.render(createdAt) + " " +
DateAndTimeFormatterUtil.defaultTimeFormatter.render(createdAt);
}
return "";
}
};
logEventCreatedColumn.setSortable(true);
columnSortHandler.setComparator(logEventCreatedColumn, new Comparator<E>() {
@Override
public int compare(E r1, E r2) {
if (r1.getCreatedAt() != null && r2.getCreatedAt() != null) {
return r1.getCreatedAt().compareTo(r2.getCreatedAt());
}
return r1.getCreatedAt() == null ? (r2.getCreatedAt() == null ? 0 : -1) : 1;
}
});
TextColumn<E> logEventLogicalTimeColumn = new TextColumn<E>() {
@Override
public String getValue(E logEventDTO) {
Date logicalTimePoint = logEventDTO.getLogicalTimePoint();
if (logicalTimePoint != null) {
return DateAndTimeFormatterUtil.defaultDateFormatter.render(logicalTimePoint) + " " +
DateAndTimeFormatterUtil.defaultTimeFormatter.render(logicalTimePoint);
}
return "";
}
};
logEventLogicalTimeColumn.setSortable(true);
columnSortHandler.setComparator(logEventLogicalTimeColumn, new Comparator<E>() {
@Override
public int compare(E r1, E r2) {
if (r1.getLogicalTimePoint() != null && r2.getLogicalTimePoint() != null) {
return r1.getLogicalTimePoint().compareTo(r2.getLogicalTimePoint());
}
return r1.getLogicalTimePoint() == null ? (r2.getLogicalTimePoint() == null ? 0 : -1) : 1;
}
});
TextColumn<E> logEventTypeColumn = new TextColumn<E>() {
@Override
public String getValue(E logEventDTO) {
return logEventDTO.getType();
}
};
logEventTypeColumn.setSortable(true);
columnSortHandler.setComparator(logEventTypeColumn, new Comparator<E>() {
@Override
public int compare(E r1, E r2) {
return new NaturalComparator().compare(r1.getType(), r2.getType());
}
});
TextColumn<E> logEventInfoColumn = new TextColumn<E>() {
@Override
public String getValue(E logEventDTO) {
return logEventDTO.getInfo();
}
};
logEventInfoColumn.setSortable(true);
columnSortHandler.setComparator(logEventInfoColumn, new Comparator<E>() {
@Override
public int compare(E o1, E o2) {
return new NaturalComparator().compare(o1.getInfo(), o2.getInfo());
}
});
addFirstColumns(raceLogEventsTable, columnSortHandler);
raceLogEventsTable.addColumn(logEventTypeColumn, stringMessages.type());
raceLogEventsTable.addColumn(logEventCreatedColumn, "Created at");
raceLogEventsTable.addColumn(logEventLogicalTimeColumn, "Logical timepoint");
raceLogEventsTable.addColumn(logEventAuthorColumn, "Author");
raceLogEventsTable.addColumn(logEventAuthorPriorityColumn, "Priority");
raceLogEventsTable.addColumn(logEventInfoColumn, "Info");
addLastColumns(raceLogEventsTable, columnSortHandler);
raceLogEventsList.addDataDisplay(raceLogEventsTable);
raceLogEventsTable.getColumnSortList().push(logEventLogicalTimeColumn);
}
protected void addFirstColumns(CellTable<E> table, ListHandler<E> columnSortHandler) {}
protected void addLastColumns(CellTable<E> table, ListHandler<E> columnSortHandler) {}
@Override
protected R getResult() {
return null;
}
@Override
protected Widget getAdditionalWidget() {
VerticalPanel vPanel = new VerticalPanel();
addFirstWidgetComponents(vPanel);
ScrollPanel scrollPanel = new ScrollPanel(raceLogEventsTable);
scrollPanel.setSize("960px", "500px");
vPanel.add(scrollPanel);
addLastWidgetComponents(vPanel);
return vPanel;
}
protected R getLogDTO() {
return logDTO;
}
protected void addFirstWidgetComponents(VerticalPanel vPanel) {}
protected void addLastWidgetComponents(VerticalPanel vPanel) {}
}
@@ -18,11 +18,11 @@ import com.google.gwt.user.client.ui.TextBox;
import com.google.gwt.user.client.ui.VerticalPanel;
import com.google.gwt.user.client.ui.Widget;
import com.sap.sailing.domain.common.dto.CompetitorDTO;
import com.sap.sailing.domain.common.racelog.RaceLogServletConstants;
import com.sap.sailing.domain.common.racelog.tracking.DeviceMappingConstants;
import com.sap.sailing.domain.common.racelog.tracking.MappableToDevice;
import com.sap.sailing.gwt.ui.adminconsole.DeviceMappingQRCodeWidget.QRCodeURLCreationException;
import com.sap.sailing.domain.common.racelog.tracking.QRCodeURLCreationException;
import com.sap.sailing.gwt.ui.adminconsole.ItemToMapToDeviceSelectionPanel.SelectionChangedHandler;
import com.sap.sailing.gwt.ui.client.GwtUrlHelper;
import com.sap.sailing.gwt.ui.client.SailingServiceAsync;
import com.sap.sailing.gwt.ui.client.StringMessages;
import com.sap.sailing.gwt.ui.shared.BetterDateTimeBox;
@@ -103,7 +103,7 @@ public class AddDeviceMappingToRaceLogDialog extends DataEntryDialog<DeviceMappi
});
deviceId = createTextBox("");
itemSelectionPanel = new ItemToMapToDeviceSelectionPanel(sailingService, stringMessages, errorReporter,
new SelectionChangedHandler() {
@Override
@@ -120,7 +120,7 @@ public class AddDeviceMappingToRaceLogDialog extends DataEntryDialog<DeviceMappi
}
}, mapping != null ? mapping.mappedTo : null);
//load table content
// load table content
sailingService.getCompetitorRegistrations(leaderboardName, raceColumnName, fleetName,
itemSelectionPanel.getSetCompetitorsCallback());
@@ -136,7 +136,7 @@ public class AddDeviceMappingToRaceLogDialog extends DataEntryDialog<DeviceMappi
qrWidget = new DeviceMappingQRCodeWidget(stringMessages, new DeviceMappingQRCodeWidget.URLFactory() {
@SuppressWarnings("deprecation")
@Override
public String createURL(String baseUrlWithoutTrailingSlash, String mappedItemQueryParam)
public String createURL(String baseUrlWithoutTrailingSlash, String mappedItemType, String mappedItemId)
throws QRCodeURLCreationException {
if (from.getValue() == null) {
throw new QRCodeURLCreationException("from not set");
@@ -147,14 +147,11 @@ public class AddDeviceMappingToRaceLogDialog extends DataEntryDialog<DeviceMappi
long fromMillis = from.getValue().getTime();
long toMillis = to.getValue().getTime();
if (fromMillis > toMillis) {
throw new QRCodeURLCreationException("from cannt lie after to");
throw new QRCodeURLCreationException("from can't lie after to");
}
return baseUrlWithoutTrailingSlash + DeviceMappingConstants.APK_PATH + "?"
+ RaceLogServletConstants.PARAMS_LEADERBOARD_NAME + "=" + DeviceMappingQRCodeWidget.encode(leaderboardName) + "&"
+ RaceLogServletConstants.PARAMS_RACE_COLUMN_NAME + "=" + DeviceMappingQRCodeWidget.encode(raceColumnName)
+ "&" + RaceLogServletConstants.PARAMS_RACE_FLEET_NAME + "=" + DeviceMappingQRCodeWidget.encode(fleetName)
+ "&" + mappedItemQueryParam + "&" + DeviceMappingConstants.URL_FROM_MILLIS + "=" + fromMillis
+ "&" + DeviceMappingConstants.URL_TO_MILLIS + "=" + toMillis;
return DeviceMappingConstants.getDeviceMappingForRaceLogUrl(baseUrlWithoutTrailingSlash,
leaderboardName, raceColumnName, fleetName, mappedItemType, mappedItemId, fromMillis, toMillis,
GwtUrlHelper.INSTANCE);
}
});
qrWidget.generateQRCode();
@@ -13,15 +13,16 @@ import com.google.gwt.user.client.ui.Panel;
import com.google.gwt.user.client.ui.VerticalPanel;
import com.sap.sailing.domain.common.dto.CompetitorDTO;
import com.sap.sailing.domain.common.racelog.tracking.DeviceMappingConstants;
import com.sap.sailing.gwt.ui.adminconsole.DeviceMappingQRCodeWidget.QRCodeURLCreationException;
import com.sap.sailing.domain.common.racelog.tracking.QRCodeURLCreationException;
import com.sap.sailing.gwt.ui.adminconsole.ItemToMapToDeviceSelectionPanel.SelectionChangedHandler;
import com.sap.sailing.gwt.ui.client.GwtUrlHelper;
import com.sap.sailing.gwt.ui.client.SailingServiceAsync;
import com.sap.sailing.gwt.ui.client.StringMessages;
import com.sap.sailing.gwt.ui.common.client.GenericListBox;
import com.sap.sailing.gwt.ui.common.client.GenericListBox.ValueBuilder;
import com.sap.sailing.gwt.ui.shared.EventDTO;
import com.sap.sailing.gwt.ui.shared.MarkDTO;
import com.sap.sse.gwt.client.ErrorReporter;
import com.sap.sse.gwt.client.controls.GenericListBox;
import com.sap.sse.gwt.client.controls.GenericListBox.ValueBuilder;
public class AddDeviceMappingToRegattaLogDialog extends AbstractCancelableDialog {
private DeviceMappingQRCodeWidget qrWidget;
@@ -35,11 +36,11 @@ public class AddDeviceMappingToRegattaLogDialog extends AbstractCancelableDialog
setupUi();
center();
}
@Override
protected void addMainContent(Panel mainPanel) {
super.addMainContent(mainPanel);
CaptionPanel inputPanel = new CaptionPanel();
Grid inputGrid = new Grid(1, 2);
inputPanel.add(inputGrid);
@@ -62,13 +63,13 @@ public class AddDeviceMappingToRegattaLogDialog extends AbstractCancelableDialog
public void onSuccess(Collection<EventDTO> result) {
events.addItems(result);
}
@Override
public void onFailure(Throwable caught) {
errorReporter.reportError("Could not load events: " + caught.getMessage());
}
});
itemSelectionPanel = new ItemToMapToDeviceSelectionPanel(sailingService, stringMessages, errorReporter,
new SelectionChangedHandler() {
@Override
@@ -85,33 +86,33 @@ public class AddDeviceMappingToRegattaLogDialog extends AbstractCancelableDialog
}
}, null);
//load table content
// load table content
sailingService.getCompetitorRegistrations(leaderboardName, itemSelectionPanel.getSetCompetitorsCallback());
//TODO marks from RegattaLog also?
// fetching marks definitions from the race logs; note that currently there are no mark *definitions*
// on regatta logs although there can be mark/device assignments on a regatta log which then gives the
// mark a position that applies across all races in the regatta-like thing
sailingService.getMarksInRaceLogsAndTrackedRaces(leaderboardName, itemSelectionPanel.getSetMarksCallback());
qrWidget = new DeviceMappingQRCodeWidget(stringMessages, new DeviceMappingQRCodeWidget.URLFactory() {
@Override
public String createURL(String baseUrlWithoutTrailingSlash, String mappedItemQueryParam)
public String createURL(String baseUrlWithoutTrailingSlash, String mappedItemType, String mappedItemId)
throws QRCodeURLCreationException {
if (events.getValue() == null) {
throw new QRCodeURLCreationException("no event selected");
throw new QRCodeURLCreationException(stringMessages.noEventSelected());
}
String eventIdAsString = events.getValue().id.toString();
return baseUrlWithoutTrailingSlash + DeviceMappingConstants.URL_BASE
+ "?" + DeviceMappingConstants.URL_EVENT_ID + "=" + DeviceMappingQRCodeWidget.encode(eventIdAsString)
+ "&" + DeviceMappingConstants.URL_LEADERBOARD_NAME + "=" + DeviceMappingQRCodeWidget.encode(leaderboardName)
+ "&" + mappedItemQueryParam;
return DeviceMappingConstants.getDeviceMappingForRegattaLogUrl(baseUrlWithoutTrailingSlash, eventIdAsString,
leaderboardName, mappedItemType, mappedItemId, GwtUrlHelper.INSTANCE);
}
});
qrWidget.generateQRCode();
VerticalPanel leftSidePanel = new VerticalPanel();
leftSidePanel.add(inputPanel);
CaptionPanel qrContentPanel = new CaptionPanel();
leftSidePanel.add(qrContentPanel);
qrContentPanel.add(qrWidget);
HorizontalPanel panel = new HorizontalPanel();
mainPanel.add(panel);
panel.add(leftSidePanel);
@@ -9,6 +9,8 @@ import com.google.gwt.user.client.rpc.AsyncCallback;
import com.google.gwt.user.client.rpc.ServiceDefTarget;
import com.google.gwt.user.client.ui.RootLayoutPanel;
import com.google.gwt.user.client.ui.TabLayoutPanel;
import com.sap.sailing.domain.common.security.Permission;
import com.sap.sailing.domain.common.security.SailingPermissionsForRoleProvider;
import com.sap.sailing.gwt.ui.client.AbstractSailingEntryPoint;
import com.sap.sailing.gwt.ui.client.LeaderboardGroupsDisplayer;
import com.sap.sailing.gwt.ui.client.LeaderboardGroupsRefresher;
@@ -49,8 +51,8 @@ public class AdminConsoleEntryPoint extends AbstractSailingEntryPoint implements
}
private void createUI() {
AdminConsolePanel panel = new AdminConsolePanel(getUserService(), sailingService,
getStringMessages().releaseNotes(), "/release_notes_admin.html", /* error reporter */ this, SecurityStylesheetResources.INSTANCE.css());
AdminConsolePanel panel = new AdminConsolePanel(getUserService(), SailingPermissionsForRoleProvider.INSTANCE,
sailingService, getStringMessages().releaseNotes(), "/release_notes_admin.html", /* error reporter */ this, SecurityStylesheetResources.INSTANCE.css());
BetterDateTimeBox.initialize();
regattasDisplayers = new HashSet<>();
leaderboardsDisplayers = new HashSet<>();
@@ -63,7 +65,7 @@ public class AdminConsoleEntryPoint extends AbstractSailingEntryPoint implements
getWidget().fillEvents();
fillLeaderboardGroups();
}
}, getStringMessages().events(), SailingAdminConsoleFeatures.MANAGE_EVENTS);
}, getStringMessages().events(), Permission.MANAGE_EVENTS);
leaderboardGroupsDisplayers.add(eventManagementPanel);
RegattaManagementPanel regattaManagementPanel = new RegattaManagementPanel(
@@ -74,13 +76,12 @@ public class AdminConsoleEntryPoint extends AbstractSailingEntryPoint implements
public void refreshAfterBecomingVisible() {
fillRegattas();
}
}, getStringMessages().regattas(), SailingAdminConsoleFeatures.MANAGE_REGATTAS);
}, getStringMessages().regattas(), Permission.MANAGE_REGATTAS);
regattasDisplayers.add(regattaManagementPanel);
/* LEADERBOARDS */
final TabLayoutPanel leaderboardTabPanel = panel.addVerticalTab(getStringMessages().leaderboards(),
"LeaderboardPanel", SailingAdminConsoleFeatures.MANAGE_LEADERBOARDS);
final TabLayoutPanel leaderboardTabPanel = panel.addVerticalTab(getStringMessages().leaderboards(), "LeaderboardPanel");
final LeaderboardConfigPanel leaderboardConfigPanel = new LeaderboardConfigPanel(sailingService, this, this,
getStringMessages(), /* showRaceDetails */true, this);
leaderboardConfigPanel.ensureDebugId("LeaderboardConfiguration");
@@ -89,7 +90,7 @@ public class AdminConsoleEntryPoint extends AbstractSailingEntryPoint implements
public void refreshAfterBecomingVisible() {
fillLeaderboards();
}
}, getStringMessages().leaderboardConfiguration(), SailingAdminConsoleFeatures.MANAGE_LEADERBOARDS);
}, getStringMessages().leaderboardConfiguration(), Permission.MANAGE_LEADERBOARDS);
regattasDisplayers.add(leaderboardConfigPanel);
leaderboardsDisplayers.add(leaderboardConfigPanel);
@@ -102,20 +103,19 @@ public class AdminConsoleEntryPoint extends AbstractSailingEntryPoint implements
fillLeaderboards();
fillLeaderboardGroups();
}
}, getStringMessages().leaderboardGroups(), SailingAdminConsoleFeatures.MANAGE_LEADERBOARD_GROUPS);
}, getStringMessages().leaderboardGroups(), Permission.MANAGE_LEADERBOARD_GROUPS);
regattasDisplayers.add(leaderboardGroupConfigPanel);
leaderboardGroupsDisplayers.add(leaderboardGroupConfigPanel);
leaderboardsDisplayers.add(leaderboardGroupConfigPanel);
/* RACES */
final TabLayoutPanel racesTabPanel = panel.addVerticalTab(getStringMessages().races(),
"RacesPanel", SailingAdminConsoleFeatures.MANAGE_TRACKED_RACES);
final TabLayoutPanel racesTabPanel = panel.addVerticalTab(getStringMessages().races(), "RacesPanel");
TrackedRacesManagementPanel trackedRacesManagementPanel = new TrackedRacesManagementPanel(sailingService, this,
this, getStringMessages());
trackedRacesManagementPanel.ensureDebugId("TrackedRacesManagement");
panel.addToTabPanel(racesTabPanel, new DefaultRefreshableAdminConsolePanel<TrackedRacesManagementPanel>(trackedRacesManagementPanel),
getStringMessages().trackedRaces(), SailingAdminConsoleFeatures.SHOW_TRACKED_RACES);
getStringMessages().trackedRaces(), Permission.SHOW_TRACKED_RACES);
regattasDisplayers.add(trackedRacesManagementPanel);
final CompetitorPanel competitorPanel = new CompetitorPanel(sailingService, getStringMessages(), this);
@@ -124,17 +124,17 @@ public class AdminConsoleEntryPoint extends AbstractSailingEntryPoint implements
public void refreshAfterBecomingVisible() {
getWidget().refreshCompetitorList();
}
}, getStringMessages().competitors(), SailingAdminConsoleFeatures.MANAGE_ALL_COMPETITORS);
}, getStringMessages().competitors(), Permission.MANAGE_ALL_COMPETITORS);
RaceCourseManagementPanel raceCourseManagementPanel = new RaceCourseManagementPanel(sailingService, this, this, getStringMessages());
panel.addToTabPanel(racesTabPanel, new DefaultRefreshableAdminConsolePanel<RaceCourseManagementPanel>(raceCourseManagementPanel), getStringMessages().courseLayout(), SailingAdminConsoleFeatures.MANAGE_COURSE_LAYOUT);
panel.addToTabPanel(racesTabPanel, new DefaultRefreshableAdminConsolePanel<RaceCourseManagementPanel>(raceCourseManagementPanel), getStringMessages().courseLayout(), Permission.MANAGE_COURSE_LAYOUT);
regattasDisplayers.add(raceCourseManagementPanel);
final AsyncActionsExecutor asyncActionsExecutor = new AsyncActionsExecutor();
WindPanel windPanel = new WindPanel(sailingService, asyncActionsExecutor, this, this, getStringMessages());
panel.addToTabPanel(racesTabPanel, new DefaultRefreshableAdminConsolePanel<WindPanel>(windPanel), getStringMessages().wind(),
SailingAdminConsoleFeatures.MANAGE_WIND);
Permission.MANAGE_WIND);
regattasDisplayers.add(windPanel);
final MediaPanel mediaPanel = new MediaPanel(regattasDisplayers, sailingService, this, mediaService, this, getStringMessages());
@@ -143,29 +143,28 @@ public class AdminConsoleEntryPoint extends AbstractSailingEntryPoint implements
public void refreshAfterBecomingVisible() {
getWidget().onShow();
}
}, getStringMessages().mediaPanel(), SailingAdminConsoleFeatures.MANAGE_MEDIA);
}, getStringMessages().mediaPanel(), Permission.MANAGE_MEDIA);
/* CONNECTORS */
final TabLayoutPanel connectorsTabPanel = panel.addVerticalTab(getStringMessages().connectors(),
"TrackingProviderPanel", SailingAdminConsoleFeatures.MANAGE_TRACKED_RACES);
final TabLayoutPanel connectorsTabPanel = panel.addVerticalTab(getStringMessages().connectors(), "TrackingProviderPanel");
TracTracEventManagementPanel tractracEventManagementPanel = new TracTracEventManagementPanel(sailingService,
this, this, getStringMessages());
tractracEventManagementPanel.ensureDebugId("TracTracEventManagement");
panel.addToTabPanel(connectorsTabPanel, new DefaultRefreshableAdminConsolePanel<TracTracEventManagementPanel>(tractracEventManagementPanel),
getStringMessages().tracTracEvents(), SailingAdminConsoleFeatures.MANAGE_TRACKED_RACES);
getStringMessages().tracTracEvents(), Permission.MANAGE_TRACKED_RACES);
regattasDisplayers.add(tractracEventManagementPanel);
SwissTimingReplayConnectorPanel swissTimingReplayConnectorPanel = new SwissTimingReplayConnectorPanel(
sailingService, this, this, getStringMessages());
panel.addToTabPanel(connectorsTabPanel, new DefaultRefreshableAdminConsolePanel<SwissTimingReplayConnectorPanel>(swissTimingReplayConnectorPanel),
getStringMessages().swissTimingArchiveConnector(), SailingAdminConsoleFeatures.MANAGE_TRACKED_RACES);
getStringMessages().swissTimingArchiveConnector(), Permission.MANAGE_TRACKED_RACES);
regattasDisplayers.add(swissTimingReplayConnectorPanel);
SwissTimingEventManagementPanel swisstimingEventManagementPanel = new SwissTimingEventManagementPanel(
sailingService, this, this, getStringMessages());
panel.addToTabPanel(connectorsTabPanel, new DefaultRefreshableAdminConsolePanel<SwissTimingEventManagementPanel>(swisstimingEventManagementPanel),
getStringMessages().swissTimingEvents(), SailingAdminConsoleFeatures.MANAGE_TRACKED_RACES);
getStringMessages().swissTimingEvents(), Permission.MANAGE_TRACKED_RACES);
regattasDisplayers.add(swisstimingEventManagementPanel);
final RaceLogTrackingEventManagementPanel raceLogTrackingEventManagementPanel = new RaceLogTrackingEventManagementPanel(
@@ -175,56 +174,56 @@ public class AdminConsoleEntryPoint extends AbstractSailingEntryPoint implements
public void refreshAfterBecomingVisible() {
fillLeaderboards();
}
}, getStringMessages().raceLogTracking(), SailingAdminConsoleFeatures.MANAGE_TRACKED_RACES);
}, getStringMessages().raceLogTracking(), Permission.MANAGE_TRACKED_RACES);
regattasDisplayers.add(raceLogTrackingEventManagementPanel);
leaderboardsDisplayers.add(raceLogTrackingEventManagementPanel);
IgtimiAccountsPanel igtimiAccountsPanel = new IgtimiAccountsPanel(sailingService, this, getStringMessages());
igtimiAccountsPanel.ensureDebugId("IgtimiAccounts");
panel.addToTabPanel(connectorsTabPanel, new DefaultRefreshableAdminConsolePanel<IgtimiAccountsPanel>(igtimiAccountsPanel),
getStringMessages().igtimiAccounts(), SailingAdminConsoleFeatures.MANAGE_IGTIMI_ACCOUNTS);
getStringMessages().igtimiAccounts(), Permission.MANAGE_IGTIMI_ACCOUNTS);
ResultImportUrlsManagementPanel resultImportUrlsManagementPanel = new ResultImportUrlsManagementPanel(sailingService, this, getStringMessages());
panel.addToTabPanel(connectorsTabPanel, new DefaultRefreshableAdminConsolePanel<ResultImportUrlsManagementPanel>(resultImportUrlsManagementPanel),
getStringMessages().resultImportUrls(), SailingAdminConsoleFeatures.MANAGE_RESULT_IMPORT_URLS);
getStringMessages().resultImportUrls(), Permission.MANAGE_RESULT_IMPORT_URLS);
StructureImportManagementPanel structureImportUrlsManagementPanel = new StructureImportManagementPanel(sailingService, this, getStringMessages(), this, eventManagementPanel);
panel.addToTabPanel(connectorsTabPanel, new DefaultRefreshableAdminConsolePanel<StructureImportManagementPanel>(structureImportUrlsManagementPanel),
getStringMessages().structureImportUrls(), SailingAdminConsoleFeatures.MANAGE_STRUCTURE_IMPORT_URLS);
getStringMessages().structureImportUrls(), Permission.MANAGE_STRUCTURE_IMPORT_URLS);
/* ADVANCED */
final TabLayoutPanel advancedTabPanel = panel.addVerticalTab(getStringMessages().advanced(),
"AdvancedPanel", SailingAdminConsoleFeatures.MANAGE_REPLICATION);
final TabLayoutPanel advancedTabPanel = panel.addVerticalTab(getStringMessages().advanced(), "AdvancedPanel");
final ReplicationPanel replicationPanel = new ReplicationPanel(sailingService, this, getStringMessages());
panel.addToTabPanel(advancedTabPanel, new DefaultRefreshableAdminConsolePanel<ReplicationPanel>(replicationPanel) {
@Override
public void refreshAfterBecomingVisible() {
replicationPanel.updateReplicaList();
}
}, getStringMessages().replication(), SailingAdminConsoleFeatures.MANAGE_REPLICATION);
}, getStringMessages().replication(), Permission.MANAGE_REPLICATION);
final MasterDataImportPanel masterDataImportPanel = new MasterDataImportPanel(getStringMessages(), sailingService,
this, eventManagementPanel, this, this);
panel.addToTabPanel(advancedTabPanel, new DefaultRefreshableAdminConsolePanel<MasterDataImportPanel>(masterDataImportPanel),
getStringMessages().masterDataImportPanel(), SailingAdminConsoleFeatures.MANAGE_MASTERDATA_IMPORT);
getStringMessages().masterDataImportPanel(), Permission.MANAGE_MASTERDATA_IMPORT);
RemoteSailingServerInstancesManagementPanel sailingServerInstancesManagementPanel = new RemoteSailingServerInstancesManagementPanel(sailingService, this, getStringMessages());
panel.addToTabPanel(advancedTabPanel, new DefaultRefreshableAdminConsolePanel<RemoteSailingServerInstancesManagementPanel>(sailingServerInstancesManagementPanel),
getStringMessages().sailingServers(), SailingAdminConsoleFeatures.MANAGE_SAILING_SERVER_INSTANCES);
getStringMessages().sailingServers(), Permission.MANAGE_SAILING_SERVER_INSTANCES);
final DeviceConfigurationUserPanel deviceConfigurationUserPanel = new DeviceConfigurationUserPanel(sailingService,
getStringMessages(), this);
panel.addToTabPanel(advancedTabPanel, new DefaultRefreshableAdminConsolePanel<DeviceConfigurationUserPanel>(deviceConfigurationUserPanel),
getStringMessages().deviceConfiguration(), SailingAdminConsoleFeatures.MANAGE_DEVICE_CONFIGURATION);
getStringMessages().deviceConfiguration(), Permission.MANAGE_DEVICE_CONFIGURATION);
final UserManagementPanel userManagementPanel = new UserManagementPanel(getUserService(), StringMessages.INSTANCE);
final UserManagementPanel userManagementPanel = new UserManagementPanel(getUserService(), StringMessages.INSTANCE,
SailingPermissionsForRoleProvider.INSTANCE);
panel.addToTabPanel(advancedTabPanel, new DefaultRefreshableAdminConsolePanel<UserManagementPanel>(userManagementPanel),
getStringMessages().userManagement(), SailingAdminConsoleFeatures.MANAGE_USERS);
getStringMessages().userManagement(), Permission.MANAGE_USERS);
final FileStoragePanel fileStoragePanel = new FileStoragePanel(sailingService, this);
panel.addToTabPanel(advancedTabPanel, new DefaultRefreshableAdminConsolePanel<FileStoragePanel>(fileStoragePanel),
getStringMessages().fileStorage(), SailingAdminConsoleFeatures.MANAGE_FILE_STORAGE);
getStringMessages().fileStorage(), Permission.MANAGE_FILE_STORAGE);
panel.initUI();
fillRegattas();
@@ -11,9 +11,6 @@ interface AdminConsoleResources extends ClientBundle {
@Source("com/sap/sailing/gwt/ui/client/images/settingsActionIcon.png")
ImageResource settingsActionIcon();
@Source("com/sap/sse/gwt/client/images/remove.png")
ImageResource removeIcon();
@Source("com/sap/sailing/gwt/ui/client/images/edit.png")
ImageResource editIcon();
@@ -97,4 +94,7 @@ interface AdminConsoleResources extends ClientBundle {
@Source("com/sap/sailing/gwt/ui/client/images/close_time_range.png")
ImageResource closeTimeRange();
@Source("com/sap/sailing/gwt/ui/client/images/compose_mail_small.png")
ImageResource inviteBuoyTenders();
}
@@ -4,7 +4,6 @@ import com.google.gwt.event.dom.client.KeyUpEvent;
import com.google.gwt.event.dom.client.KeyUpHandler;
import com.google.gwt.event.logical.shared.ValueChangeEvent;
import com.google.gwt.event.logical.shared.ValueChangeHandler;
import com.google.gwt.http.client.URL;
import com.google.gwt.user.client.Window;
import com.google.gwt.user.client.ui.Grid;
import com.google.gwt.user.client.ui.HasHorizontalAlignment;
@@ -13,7 +12,7 @@ import com.google.gwt.user.client.ui.Label;
import com.google.gwt.user.client.ui.TextBox;
import com.google.gwt.user.client.ui.VerticalPanel;
import com.google.gwt.user.client.ui.Widget;
import com.sap.sailing.gwt.ui.adminconsole.DeviceMappingQRCodeWidget.QRCodeURLCreationException;
import com.sap.sailing.domain.common.racelog.tracking.QRCodeURLCreationException;
import com.sap.sailing.gwt.ui.client.StringMessages;
import com.sap.sailing.gwt.ui.client.shared.components.QRCodeComposite;
@@ -91,9 +90,4 @@ public abstract class BaseQRIdentifierWidget implements IsWidget {
protected void setError(String text) {
error.setText(text);
}
public static String encode(String value) {
//pathSegment instead of queryString, so that ' ' is encoded as '%20'
return URL.encodePathSegment(value);
}
}
@@ -20,6 +20,7 @@ import com.sap.sse.common.CountryCode;
import com.sap.sse.common.CountryCodeFactory;
import com.sap.sse.common.Util;
import com.sap.sse.common.impl.RGBColor;
import com.sap.sse.gwt.adminconsole.URLFieldWithFileUpload;
import com.sap.sse.gwt.client.dialog.DataEntryDialog;
/**
@@ -38,11 +39,13 @@ public class CompetitorEditDialog extends DataEntryDialog<CompetitorDTO> {
private final TextBox displayColorTextBox;
private final ListBox threeLetterIocCountryCode;
private final TextBox sailId;
private final TextBox email;
private final StringMessages stringMessages;
private final URLFieldWithFileUpload imageUrlAndUploadComposite;
public CompetitorEditDialog(final StringMessages stringMessages, CompetitorDTO competitorToEdit,
DialogCallback<CompetitorDTO> callback) {
super(stringMessages.editCompetitor(), stringMessages.editCompetitor(), stringMessages.ok(), stringMessages
super(stringMessages.editCompetitor(), null, stringMessages.ok(), stringMessages
.cancel(), new Validator<CompetitorDTO>() {
@Override
public String getErrorMessage(CompetitorDTO valueToValidate) {
@@ -89,6 +92,7 @@ public class CompetitorEditDialog extends DataEntryDialog<CompetitorDTO> {
}
this.name = createTextBox(competitorToEdit.getName());
this.email = createTextBox(competitorToEdit.getEmail());
this.displayColorTextBox = createTextBox(competitorToEdit.getColor() == null ? "" : competitorToEdit.getColor().getAsHtml());
this.threeLetterIocCountryCode = createListBox(/* isMultipleSelect */ false);
CountryCodeFactory ccf = CountryCodeFactory.INSTANCE;
@@ -118,6 +122,8 @@ public class CompetitorEditDialog extends DataEntryDialog<CompetitorDTO> {
}
}
this.sailId = createTextBox(competitorToEdit.getSailID());
imageUrlAndUploadComposite = new URLFieldWithFileUpload(stringMessages);
imageUrlAndUploadComposite.setURL(competitorToEdit.getImageURL());
}
@@ -170,17 +176,17 @@ public class CompetitorEditDialog extends DataEntryDialog<CompetitorDTO> {
}
}
BoatClassDTO boatClass = new BoatClassDTO(boatClassName.getValue(boatClassName.getSelectedIndex()), 0);
CompetitorDTO result = new CompetitorDTOImpl(name.getText(), color,
CompetitorDTO result = new CompetitorDTOImpl(name.getText(), color, email.getText(),
/* twoLetterIsoCountryCode */ null,
threeLetterIocCountryCode.getValue(threeLetterIocCountryCode.getSelectedIndex()),
/* countryName */ null, sailId.getText(), competitorToEdit.getIdAsString(),
boatClass);
imageUrlAndUploadComposite.getURL(), boatClass);
return result;
}
@Override
protected Widget getAdditionalWidget() {
Grid result = new Grid(5, 2);
Grid result = new Grid(7, 2);
result.setWidget(0, 0, new Label(stringMessages.name()));
result.setWidget(0, 1, name);
result.setWidget(1, 0, new Label(stringMessages.sailNumber()));
@@ -189,8 +195,12 @@ public class CompetitorEditDialog extends DataEntryDialog<CompetitorDTO> {
result.setWidget(2, 1, threeLetterIocCountryCode);
result.setWidget(3, 0, new Label(stringMessages.color()));
result.setWidget(3, 1, displayColorTextBox);
result.setWidget(4, 0, new Label(stringMessages.boatClass()));
result.setWidget(4, 1, boatClassName);
result.setWidget(4, 0, new Label(stringMessages.email()));
result.setWidget(4, 1, email);
result.setWidget(5, 0, new Label(stringMessages.boatClass()));
result.setWidget(5, 1, boatClassName);
result.setWidget(6, 0, new Label(stringMessages.imageURL()));
result.setWidget(6, 1, imageUrlAndUploadComposite);
return result;
}
@@ -1,18 +1,24 @@
package com.sap.sailing.gwt.ui.adminconsole;
import java.util.ArrayList;
import java.util.Collection;
import java.util.Collections;
import java.util.List;
import java.util.Set;
import com.google.gwt.cell.client.FieldUpdater;
import com.google.gwt.event.dom.client.ClickEvent;
import com.google.gwt.event.dom.client.ClickHandler;
import com.google.gwt.i18n.client.LocaleInfo;
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.Grid;
import com.google.gwt.user.client.ui.HorizontalPanel;
import com.google.gwt.user.client.ui.SimplePanel;
import com.google.gwt.user.client.ui.TextBox;
import com.google.gwt.user.client.ui.VerticalPanel;
import com.google.gwt.user.client.ui.Widget;
import com.google.gwt.view.client.MultiSelectionModel;
import com.google.gwt.view.client.SelectionChangeEvent;
import com.google.gwt.view.client.SelectionChangeEvent.Handler;
@@ -20,8 +26,13 @@ import com.sap.sailing.domain.common.dto.CompetitorDTO;
import com.sap.sailing.domain.common.dto.CompetitorDTOImpl;
import com.sap.sailing.gwt.ui.client.SailingServiceAsync;
import com.sap.sailing.gwt.ui.client.StringMessages;
import com.sap.sailing.gwt.ui.shared.EventDTO;
import com.sap.sse.common.Util;
import com.sap.sse.common.Util.Pair;
import com.sap.sse.gwt.client.ErrorReporter;
import com.sap.sse.gwt.client.controls.GenericListBox;
import com.sap.sse.gwt.client.controls.GenericListBox.ValueBuilder;
import com.sap.sse.gwt.client.dialog.DataEntryDialog;
import com.sap.sse.gwt.client.dialog.DataEntryDialog.DialogCallback;
/**
@@ -43,15 +54,14 @@ public class CompetitorPanel extends SimplePanel {
this(sailingService, null, stringMessages, errorReporter);
}
public CompetitorPanel(final SailingServiceAsync sailingService, String leaderboardName, final StringMessages stringMessages,
final ErrorReporter errorReporter) {
public CompetitorPanel(final SailingServiceAsync sailingService, final String leaderboardName,
final StringMessages stringMessages, final ErrorReporter errorReporter) {
super();
this.sailingService = sailingService;
this.stringMessages = stringMessages;
this.errorReporter = errorReporter;
this.leaderboardName = leaderboardName;
this.competitorTable = new CompetitorTableWrapper<>(sailingService, stringMessages, errorReporter,
new MultiSelectionModel<CompetitorDTO>(), false);
this.competitorTable = new CompetitorTableWrapper<>(sailingService, stringMessages, errorReporter, /* multiSelection */ true, /* enablePager */ false);
this.competitorSelectionModel = competitorTable.getSelectionModel();
VerticalPanel mainPanel = new VerticalPanel();
this.setWidget(mainPanel);
@@ -79,16 +89,56 @@ public class CompetitorPanel extends SimplePanel {
buttonPanel.add(allowReloadButton);
Button addCompetitorButton = new Button(stringMessages.add());
addCompetitorButton.addClickHandler(new ClickHandler() {
@Override
public void onClick(ClickEvent event) {
openAddCompetitorDialog();
}
});
@Override
public void onClick(ClickEvent event) {
openAddCompetitorDialog();
}
});
buttonPanel.add(addCompetitorButton);
Button selectAllButton = new Button(stringMessages.selectAll());
selectAllButton.addClickHandler(new ClickHandler() {
@Override
public void onClick(ClickEvent event) {
for (CompetitorDTO c : competitorTable.getDataProvider().getList()) {
competitorSelectionModel.setSelected(c, true);
}
}
});
buttonPanel.add(selectAllButton);
//only if this competitor panel is connected to a leaderboard, we want to enable invitations
if (leaderboardName != null) {
final Button inviteCompetitorsButton = new Button(stringMessages.inviteCompetitors());
inviteCompetitorsButton.addClickHandler(new ClickHandler() {
@Override
public void onClick(ClickEvent event) {
Set<CompetitorDTO> competitors = competitorSelectionModel.getSelectedSet();
boolean emailProvidedForAll = isEmailProvidedForAll(competitors);
if (emailProvidedForAll) {
openChooseEventDialogAndSendMails(competitors);
} else {
Window.alert(stringMessages.notAllCompetitorsProvideEmail());
}
}
private boolean isEmailProvidedForAll(Iterable<CompetitorDTO> allCompetitors) {
for (CompetitorDTO competitor : allCompetitors) {
if (!competitor.hasEmail()) {
return false;
}
}
return true;
}
});
buttonPanel.add(inviteCompetitorsButton);
}
competitorsPanel.add(buttonPanel);
//competitor table
// competitor table
ImagesBarColumn<CompetitorDTO, CompetitorConfigImagesBarCell> competitorActionColumn = new ImagesBarColumn<CompetitorDTO, CompetitorConfigImagesBarCell>(
new CompetitorConfigImagesBarCell(stringMessages));
competitorActionColumn.setFieldUpdater(new FieldUpdater<CompetitorDTO, String>() {
@@ -112,21 +162,24 @@ public class CompetitorPanel extends SimplePanel {
}
});
allowReloadButton.setEnabled(!competitorSelectionModel.getSelectedSet().isEmpty());
if(leaderboardName != null) {
if (leaderboardName != null) {
refreshCompetitorList();
}
}
private void allowUpdate(final Iterable<CompetitorDTO> competitors) {
List<CompetitorDTO> serializableSingletonList = new ArrayList<CompetitorDTO>();
Util.addAll(competitors, serializableSingletonList);
sailingService.allowCompetitorResetToDefaults(serializableSingletonList, new AsyncCallback<Void>() {
@Override public void onFailure(Throwable caught) {
errorReporter.reportError("Error trying to allow resetting competitors "+competitors
+" to defaults: "+caught.getMessage());
@Override
public void onFailure(Throwable caught) {
errorReporter.reportError("Error trying to allow resetting competitors " + competitors
+ " to defaults: " + caught.getMessage());
}
@Override public void onSuccess(Void result) {
@Override
public void onSuccess(Void result) {
Window.alert(stringMessages.successfullyAllowedCompetitorReset(competitors.toString()));
}
});
@@ -143,7 +196,7 @@ public class CompetitorPanel extends SimplePanel {
sailingService.addOrUpdateCompetitor(competitor, new AsyncCallback<CompetitorDTO>() {
@Override
public void onFailure(Throwable caught) {
errorReporter.reportError("Error trying to update competitor: "+caught.getMessage());
errorReporter.reportError("Error trying to update competitor: " + caught.getMessage());
}
@Override
@@ -159,6 +212,101 @@ public class CompetitorPanel extends SimplePanel {
}).show();
}
private class SelectEventAndHostnameDialog extends DataEntryDialog<Pair<EventDTO, String>> {
private GenericListBox<EventDTO> events;
private TextBox serverUrl;
public SelectEventAndHostnameDialog(DialogCallback<Pair<EventDTO, String>> callback) {
super(stringMessages.selectEventForInvitation(), null, stringMessages.inviteCompetitors(), stringMessages.cancel(),
new Validator<Pair<EventDTO, String>>() {
@Override
public String getErrorMessage(Pair<EventDTO, String> valueToValidate) {
if (valueToValidate.getA() == null) {
return stringMessages.pleaseSelectAnEvent();
} else if (valueToValidate.getB() == null || valueToValidate.getB().isEmpty()) {
return stringMessages.pleaseEnterA(stringMessages.hostname());
}
return null;
}
}, false, callback);
}
@Override
protected Pair<EventDTO, String> getResult() {
EventDTO event = events.getValue();
String serverUrlString = serverUrl.getValue();
if (serverUrlString.endsWith("/")) {
serverUrlString = serverUrlString.substring(0, serverUrlString.length() - 1);
}
return new Pair<>(event, serverUrlString);
}
@Override
protected Widget getAdditionalWidget() {
Grid grid = new Grid(2, 2);
grid.setWidget(0, 0, createLabel(stringMessages.hostname()));
serverUrl = createTextBox(Window.Location.getProtocol() + "//" + Window.Location.getHost());
grid.setWidget(0, 1, serverUrl);
grid.setWidget(1, 0, createLabel(stringMessages.event()));
events = createGenericListBox(new ValueBuilder<EventDTO>() {
@Override
public String getValue(EventDTO item) {
if (item == null) {
return "";
}
return item.getName();
}
}, false);
grid.setWidget(1, 1, events);
events.addItem((EventDTO) null);
sailingService.getEventsForLeaderboard(leaderboardName, new AsyncCallback<Collection<EventDTO>>() {
@Override
public void onSuccess(Collection<EventDTO> result) {
events.addItems(result);
}
@Override
public void onFailure(Throwable caught) {
errorReporter.reportError("Could not load events: " + caught.getMessage());
}
});
return grid;
}
}
private String getLocaleInfo() {
return LocaleInfo.getCurrentLocale().getLocaleName();
}
private void openChooseEventDialogAndSendMails(final Set<CompetitorDTO> competitors) {
new SelectEventAndHostnameDialog(new DialogCallback<Pair<EventDTO, String>>() {
@Override
public void ok(Pair<EventDTO, String> result) {
sailingService.inviteCompetitorsForTrackingViaEmail(result.getB(), result.getA(), leaderboardName,
competitors, getLocaleInfo(), new AsyncCallback<Void>() {
@Override
public void onFailure(Throwable caught) {
Window.alert(stringMessages.sendingMailsFailed() + caught.getMessage());
}
@Override
public void onSuccess(Void result) {
Window.alert(stringMessages.sendingMailsSuccessfull());
}
});
}
@Override
public void cancel() {
}
}).show();
}
public void refreshCompetitorList() {
competitorTable.refreshCompetitorList(leaderboardName);
}
@@ -28,12 +28,11 @@ import com.sap.sse.gwt.client.panels.LabeledAbstractFilterablePanel;
public class CompetitorTableWrapper<S extends SelectionModel<CompetitorDTO>> extends TableWrapper<CompetitorDTO, S> {
private final LabeledAbstractFilterablePanel<CompetitorDTO> filterField;
public CompetitorTableWrapper(SailingServiceAsync sailingService, StringMessages stringMessages,ErrorReporter errorReporter,
S selectionModel, boolean enablePager) {
super(sailingService, stringMessages, errorReporter, selectionModel, enablePager);
ListHandler<CompetitorDTO> competitorColumnListHandler = new ListHandler<CompetitorDTO>(dataProvider.getList());
boolean multiSelection, boolean enablePager) {
super(sailingService, stringMessages, errorReporter, multiSelection, enablePager);
ListHandler<CompetitorDTO> competitorColumnListHandler = getColumnSortHandler();
// competitors table
TextColumn<CompetitorDTO> competitorNameColumn = new TextColumn<CompetitorDTO>() {
@@ -101,14 +100,32 @@ public class CompetitorTableWrapper<S extends SelectionModel<CompetitorDTO>> ext
}
});
Column<CompetitorDTO, SafeHtml> imageColumn = new Column<CompetitorDTO, SafeHtml>(new SafeHtmlCell()) {
@Override
public SafeHtml getValue(CompetitorDTO competitor) {
SafeHtmlBuilder sb = new SafeHtmlBuilder();
if (competitor.getImageURL() != null && !competitor.getImageURL().isEmpty()) {
sb.appendHtmlConstant("<img src=\"/sailingserver/api/v1/file?uri=" + competitor.getImageURL()
+ "\" height=\"40px\" title=\"" + competitor.getImageURL() + "\"/>");
}
return sb.toSafeHtml();
}
};
imageColumn.setSortable(true);
competitorColumnListHandler.setComparator(imageColumn, new Comparator<CompetitorDTO>() {
private final NaturalComparator comparator = new NaturalComparator(/* case sensitive */ false);
@Override
public int compare(CompetitorDTO o1, CompetitorDTO o2) {
return comparator.compare(o1.getImageURL(), o2.getImageURL());
}
});
TextColumn<CompetitorDTO> competitorIdColumn = new TextColumn<CompetitorDTO>() {
@Override
public String getValue(CompetitorDTO competitor) {
return competitor.getIdAsString();
}
};
competitorIdColumn.setSortable(true);
competitorColumnListHandler.setComparator(competitorIdColumn, new Comparator<CompetitorDTO>() {
@Override
@@ -117,9 +134,22 @@ public class CompetitorTableWrapper<S extends SelectionModel<CompetitorDTO>> ext
}
});
TextColumn<CompetitorDTO> competitorEMailColumn = new TextColumn<CompetitorDTO>() {
@Override
public String getValue(CompetitorDTO competitor) {
return competitor.getEmail();
}
};
competitorEMailColumn.setSortable(true);
competitorColumnListHandler.setComparator(competitorEMailColumn, new Comparator<CompetitorDTO>() {
@Override
public int compare(CompetitorDTO o1, CompetitorDTO o2) {
return new NaturalComparator(false).compare(o1.getEmail(), o2.getEmail());
}
});
filterField = new LabeledAbstractFilterablePanel<CompetitorDTO>(new Label(stringMessages.filterCompetitors()),
new ArrayList<CompetitorDTO>(), table, dataProvider) {
@Override
public Iterable<String> getSearchableStrings(CompetitorDTO t) {
List<String> string = new ArrayList<String>();
@@ -129,13 +159,14 @@ public class CompetitorTableWrapper<S extends SelectionModel<CompetitorDTO>> ext
return string;
}
};
mainPanel.insert(filterField, 0);
table.addColumnSortHandler(competitorColumnListHandler);
table.addColumn(sailIdColumn, stringMessages.sailNumber());
table.addColumn(competitorNameColumn, stringMessages.name());
table.addColumn(boatClassColumn, stringMessages.boatClass());
table.addColumn(displayColorColumn, stringMessages.color());
table.addColumn(imageColumn, stringMessages.imageURL());
table.addColumn(competitorEMailColumn, stringMessages.email());
table.addColumn(competitorIdColumn, stringMessages.id());
}
@@ -10,10 +10,9 @@ import com.sap.sailing.gwt.ui.shared.MarkDTO;
import com.sap.sse.gwt.client.ErrorReporter;
public class ControlPointTableWrapper<S extends SelectionModel<ControlPointDTO>> extends TableWrapper<ControlPointDTO, S> {
public ControlPointTableWrapper(S selectionModel, SailingServiceAsync sailingService, final StringMessages stringMessages,
public ControlPointTableWrapper(boolean multiSelection, SailingServiceAsync sailingService, final StringMessages stringMessages,
ErrorReporter errorReporter) {
super(sailingService, stringMessages, errorReporter, selectionModel, true);
super(sailingService, stringMessages, errorReporter, multiSelection, /* enablePager */ true);
TextColumn<ControlPointDTO> nameColumn = new TextColumn<ControlPointDTO>() {
@Override
public String getValue(ControlPointDTO d) {
@@ -34,7 +34,7 @@ import com.sap.sse.gwt.client.dialog.DataEntryDialog;
public abstract class CourseManagementWidget implements IsWidget {
protected final MarkTableWrapper<MultiSelectionModel<MarkDTO>> marks;
protected final ControlPointTableWrapper<MultiSelectionModel<ControlPointDTO>> multiMarkControlPoints;
protected final ControlPointTableWrapper<SingleSelectionModel<ControlPointDTO>> multiMarkControlPoints;
protected final WaypointTableWrapper<SingleSelectionModel<WaypointDTO>> waypoints;
protected final Grid mainPanel;
@@ -69,11 +69,11 @@ public abstract class CourseManagementWidget implements IsWidget {
mainPanel.getRowFormatter().setVerticalAlign(0, HasVerticalAlignment.ALIGN_TOP);
waypoints = new WaypointTableWrapper<SingleSelectionModel<WaypointDTO>>(
new SingleSelectionModel<WaypointDTO>(), sailingService, stringMessages, errorReporter);
multiMarkControlPoints = new ControlPointTableWrapper<MultiSelectionModel<ControlPointDTO>>(
new MultiSelectionModel<ControlPointDTO>(), sailingService, stringMessages, errorReporter);
/* multiSelection */ false, sailingService, stringMessages, errorReporter);
multiMarkControlPoints = new ControlPointTableWrapper<SingleSelectionModel<ControlPointDTO>>(
/* multiSelection */ false, sailingService, stringMessages, errorReporter);
marks = new MarkTableWrapper<MultiSelectionModel<MarkDTO>>(
new MultiSelectionModel<MarkDTO>(), sailingService, stringMessages, errorReporter);
/* multiSelection */ true, sailingService, stringMessages, errorReporter);
CaptionPanel waypointsPanel = new CaptionPanel(stringMessages.waypoints());
CaptionPanel controlPointsPanel = new CaptionPanel(stringMessages.twoMarkControlPoint());
@@ -2,13 +2,12 @@ package com.sap.sailing.gwt.ui.adminconsole;
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.components.ImagesBarCell;
import com.sap.sse.gwt.client.IconResources;
public class CourseManagementWidgetWaypointsImagesBarCell extends ImagesBarCell {
public static final String ACTION_DELETE = "ACTION_DELETE";
private static AdminConsoleResources resources = GWT.create(AdminConsoleResources.class);
private final StringMessages stringMessages;
public CourseManagementWidgetWaypointsImagesBarCell(StringMessages stringMessages) {
@@ -19,7 +18,7 @@ public class CourseManagementWidgetWaypointsImagesBarCell extends ImagesBarCell
@Override
protected Iterable<ImageSpec> getImageSpecs() {
ArrayList<ImageSpec> result = new ArrayList<ImageSpec>();
result.add(new ImageSpec(ACTION_DELETE, stringMessages.remove(), makeImagePrototype(resources.removeIcon())));
result.add(new ImageSpec(ACTION_DELETE, stringMessages.remove(), makeImagePrototype(IconResources.INSTANCE.removeIcon())));
return result;
}
}
@@ -2,7 +2,6 @@ package com.sap.sailing.gwt.ui.adminconsole;
import java.util.List;
import com.google.gwt.core.client.GWT;
import com.google.gwt.user.client.ui.TabPanel;
import com.google.gwt.user.client.ui.VerticalPanel;
import com.sap.sailing.gwt.ui.client.SailingServiceAsync;
@@ -12,12 +11,11 @@ import com.sap.sailing.gwt.ui.shared.EventDTO;
import com.sap.sailing.gwt.ui.shared.RegattaDTO;
import com.sap.sailing.gwt.ui.shared.SeriesDTO;
import com.sap.sse.gwt.client.ErrorReporter;
import com.sap.sse.gwt.client.IconResources;
import com.sap.sse.gwt.client.controls.listedit.ListEditorComposite;
public class DefaultRegattaCreateDialog extends AbstractRegattaWithSeriesAndFleetsDialog<EventAndRegattaDTO> {
private static AdminConsoleResources resources = GWT.create(AdminConsoleResources.class);
public DefaultRegattaCreateDialog(List<EventDTO> existingEvents, RegattaDTO selectedRegatta,
SailingServiceAsync sailingService, ErrorReporter errorReporter, StringMessages stringMessages,
com.sap.sse.gwt.client.dialog.DataEntryDialog.DialogCallback<EventAndRegattaDTO> callback) {
@@ -34,7 +32,7 @@ public class DefaultRegattaCreateDialog extends AbstractRegattaWithSeriesAndFlee
}
protected ListEditorComposite<SeriesDTO> createSeriesEditor(Iterable<SeriesDTO> series) {
return new SeriesWithFleetsDefaultListEditor(series, stringMessages, resources.removeIcon(), /* enableFleetRemoval */ false);
return new SeriesWithFleetsDefaultListEditor(series, stringMessages, IconResources.INSTANCE.removeIcon(), /* enableFleetRemoval */ false);
}
protected void setupAdditionalWidgetsOnPanel(final VerticalPanel panel) {
@@ -5,7 +5,6 @@ import java.util.Arrays;
import java.util.Collections;
import java.util.List;
import com.google.gwt.core.client.GWT;
import com.google.gwt.event.dom.client.ChangeEvent;
import com.google.gwt.event.dom.client.ChangeHandler;
import com.google.gwt.event.dom.client.ClickEvent;
@@ -20,6 +19,7 @@ import com.google.gwt.user.client.ui.Widget;
import com.sap.sailing.domain.common.configuration.DeviceConfigurationMatcherType;
import com.sap.sailing.gwt.ui.client.StringMessages;
import com.sap.sailing.gwt.ui.shared.DeviceConfigurationMatcherDTO;
import com.sap.sse.gwt.client.IconResources;
import com.sap.sse.gwt.client.dialog.DataEntryDialog;
public class DeviceConfigurationCreateMatcherDialog extends DataEntryDialog<DeviceConfigurationMatcherDTO> {
@@ -63,7 +63,6 @@ public class DeviceConfigurationCreateMatcherDialog extends DataEntryDialog<Devi
}
private static AdminConsoleResources resources = GWT.create(AdminConsoleResources.class);
private ListBox typeBox;
private List<TextBox> devicesBoxes;
@@ -164,7 +163,7 @@ public class DeviceConfigurationCreateMatcherDialog extends DataEntryDialog<Devi
}
private PushButton createRemoveButton(final Grid devicesGrid) {
PushButton removeButton = new PushButton(new Image(resources.removeIcon()));
PushButton removeButton = new PushButton(new Image(IconResources.INSTANCE.removeIcon()));
removeButton.addClickHandler(new ClickHandler() {
@Override
public void onClick(ClickEvent event) {
@@ -29,6 +29,7 @@ import com.sap.sailing.gwt.ui.shared.DeviceConfigurationDTO;
import com.sap.sailing.gwt.ui.shared.DeviceConfigurationDTO.RegattaConfigurationDTO;
import com.sap.sailing.gwt.ui.shared.DeviceConfigurationMatcherDTO;
import com.sap.sse.gwt.client.ErrorReporter;
import com.sap.sse.gwt.client.IconResources;
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;
@@ -206,7 +207,7 @@ public class DeviceConfigurationDetailComposite extends Composite {
List<String> initialValues = originalConfiguration.allowedCourseAreaNames == null ? Collections
.<String> emptyList() : originalConfiguration.allowedCourseAreaNames;
allowedCourseAreasList = new StringListEditorComposite(initialValues, stringMessages, stringMessages.courseAreas(), resources.removeIcon(),
allowedCourseAreasList = new StringListEditorComposite(initialValues, stringMessages, stringMessages.courseAreas(), IconResources.INSTANCE.removeIcon(),
SuggestedCourseAreaNames.suggestedCourseAreaNames, stringMessages.enterCourseAreaName());
allowedCourseAreasList.setWidth("80%");
allowedCourseAreasList.addValueChangeHandler(dirtyValueMarker);
@@ -219,7 +220,7 @@ public class DeviceConfigurationDetailComposite extends Composite {
List<String> initialValues = originalConfiguration.byNameDesignerCourseNames == null ? Collections
.<String> emptyList() : originalConfiguration.byNameDesignerCourseNames;
courseNamesList = new StringListEditorComposite(initialValues, stringMessages, stringMessages.courseNames(), resources.removeIcon(), suggestedCourseNames,
courseNamesList = new StringListEditorComposite(initialValues, stringMessages, stringMessages.courseNames(), IconResources.INSTANCE.removeIcon(), suggestedCourseNames,
stringMessages.enterCourseName());
courseNamesList.setWidth("80%");
courseNamesList.addValueChangeHandler(dirtyValueMarker);
@@ -11,7 +11,7 @@ public class DeviceIdentifierTableWrapper extends TableWrapper<DeviceIdentifierD
public DeviceIdentifierTableWrapper(SailingServiceAsync sailingService, StringMessages stringMessages,
ErrorReporter errorReporter) {
super(sailingService, stringMessages, errorReporter, new MultiSelectionModel<DeviceIdentifierDTO>(), false);
super(sailingService, stringMessages, errorReporter, /* multiSelection */ true, /* enablePager */ false);
TextColumn<DeviceIdentifierDTO> typeColumn = new TextColumn<DeviceIdentifierDTO>() {
@Override
@@ -2,6 +2,7 @@ package com.sap.sailing.gwt.ui.adminconsole;
import com.google.gwt.http.client.URL;
import com.sap.sailing.domain.common.racelog.tracking.DeviceMappingConstants;
import com.sap.sailing.domain.common.racelog.tracking.QRCodeURLCreationException;
import com.sap.sailing.gwt.ui.client.StringMessages;
import com.sap.sailing.gwt.ui.client.shared.components.QRCodeComposite;
@@ -13,15 +14,8 @@ public class DeviceMappingQRCodeWidget extends BaseQRIdentifierWidget {
private String mappedItemId;
private String mappedItemType;
static class QRCodeURLCreationException extends Exception {
private static final long serialVersionUID = -8243995470804772458L;
public QRCodeURLCreationException(String message) {
super(message);
}
}
static interface URLFactory {
String createURL(String baseUrlWithoutTrailingSlash, String mappedItemQueryParam)
String createURL(String baseUrlWithoutTrailingSlash, String mappedItemType, String mappedItemId)
throws QRCodeURLCreationException;
}
@@ -52,6 +46,6 @@ public class DeviceMappingQRCodeWidget extends BaseQRIdentifierWidget {
throw new QRCodeURLCreationException("No item selected for mapping");
}
return urlFactory.createURL(serverUrl, mappedItemType + "=" + encode(mappedItemId));
return urlFactory.createURL(serverUrl, mappedItemType, mappedItemId);
}
}
@@ -30,8 +30,7 @@ public class DeviceMappingTableWrapper extends TableWrapper<DeviceMappingDTO, Si
public DeviceMappingTableWrapper(SailingServiceAsync sailingService, final StringMessages stringMessages,
ErrorReporter errorReporter) {
super(sailingService, stringMessages, errorReporter, new SingleSelectionModel<DeviceMappingDTO>(), true);
super(sailingService, stringMessages, errorReporter, /* multiSelection */ false, /* enablePager */ true);
showPingMappingsCb = new CheckBox(stringMessages.showPingMarkMappings());
showPingMappingsCb.addValueChangeHandler(new ValueChangeHandler<Boolean>() {
@Override
@@ -40,12 +39,9 @@ public class DeviceMappingTableWrapper extends TableWrapper<DeviceMappingDTO, Si
}
});
mainPanel.insert(showPingMappingsCb, 0);
table.setWidth("1000px", true);
table.addStyleName("wrap-cols");
ListHandler<DeviceMappingDTO> listHandler = new ListHandler<DeviceMappingDTO>(dataProvider.getList());
ListHandler<DeviceMappingDTO> listHandler = getColumnSortHandler();
TextColumn<DeviceMappingDTO> itemTypeCol = new TextColumn<DeviceMappingDTO>() {
@Override
public String getValue(DeviceMappingDTO mapping) {
@@ -6,6 +6,7 @@ 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.components.ImagesBarCell;
import com.sap.sse.gwt.client.IconResources;
public class EventConfigImagesBarCell extends ImagesBarCell {
static final String ACTION_REMOVE = "ACTION_REMOVE";
@@ -27,7 +28,7 @@ public class EventConfigImagesBarCell extends ImagesBarCell {
protected Iterable<ImageSpec> getImageSpecs() {
return Arrays.asList(
new ImageSpec(ACTION_EDIT, stringMessages.actionEdit(), makeImagePrototype(resources.editIcon())),
new ImageSpec(ACTION_REMOVE, stringMessages.actionRemove(), makeImagePrototype(resources.removeIcon()))
new ImageSpec(ACTION_REMOVE, stringMessages.actionRemove(), makeImagePrototype(IconResources.INSTANCE.removeIcon()))
);
}
}
@@ -8,7 +8,6 @@ import java.util.Date;
import java.util.List;
import java.util.UUID;
import com.google.gwt.core.client.GWT;
import com.google.gwt.dom.client.Style.Unit;
import com.google.gwt.event.logical.shared.ValueChangeEvent;
import com.google.gwt.event.logical.shared.ValueChangeHandler;
@@ -28,11 +27,11 @@ import com.sap.sailing.gwt.ui.shared.CourseAreaDTO;
import com.sap.sailing.gwt.ui.shared.EventDTO;
import com.sap.sailing.gwt.ui.shared.LeaderboardGroupDTO;
import com.sap.sailing.gwt.ui.shared.VenueDTO;
import com.sap.sse.gwt.client.IconResources;
import com.sap.sse.gwt.client.controls.listedit.StringConstantsListEditorComposite;
import com.sap.sse.gwt.client.controls.listedit.StringListInlineEditorComposite;
public abstract class EventDialog extends DataEntryDialogWithBootstrap<EventDTO> {
private final AdminConsoleResources resources = GWT.create(AdminConsoleResources.class);
protected StringMessages stringMessages;
protected TextBox nameEntryField;
protected TextArea descriptionEntryField;
@@ -131,22 +130,22 @@ public abstract class EventDialog extends DataEntryDialogWithBootstrap<EventDTO>
};
courseAreaNameList = new StringListInlineEditorComposite(Collections.<String> emptyList(),
new StringListInlineEditorComposite.ExpandedUi(stringMessages, resources.removeIcon(), /* suggestValues */
new StringListInlineEditorComposite.ExpandedUi(stringMessages, IconResources.INSTANCE.removeIcon(), /* suggestValues */
SuggestedCourseAreaNames.suggestedCourseAreaNames, stringMessages.enterCourseAreaName(), 50));
courseAreaNameList.addValueChangeHandler(valueChangeHandler);
final List<String> imageSuggestionURLs = Arrays.asList(new String[] { "http://", "https://", "http://www.", "https://www" });
imageURLList = new StringListInlineEditorComposite(Collections.<String> emptyList(),
new StringListInlineEditorComposite.ExpandedUi(stringMessages, resources.removeIcon(),
new StringListInlineEditorComposite.ExpandedUi(stringMessages, IconResources.INSTANCE.removeIcon(),
/* suggestValues */ imageSuggestionURLs, stringMessages.enterImageURL(), 80));
imageURLList.addValueChangeHandler(valueChangeHandler);
List<String> videoURLSuggestions = new ArrayList<>(imageSuggestionURLs);
videoURLSuggestions.add("http://www.youtube.com/watch?v=");
videoURLList = new StringListInlineEditorComposite(Collections.<String> emptyList(),
new StringListInlineEditorComposite.ExpandedUi(stringMessages, resources.removeIcon(),
new StringListInlineEditorComposite.ExpandedUi(stringMessages, IconResources.INSTANCE.removeIcon(),
/* suggestValues */ videoURLSuggestions, stringMessages.enterVideoURL(), 80));
videoURLList.addValueChangeHandler(valueChangeHandler);
sponsorImageURLList = new StringListInlineEditorComposite(Collections.<String> emptyList(),
new StringListInlineEditorComposite.ExpandedUi(stringMessages, resources.removeIcon(),
new StringListInlineEditorComposite.ExpandedUi(stringMessages, IconResources.INSTANCE.removeIcon(),
/* suggestValues */ imageSuggestionURLs, stringMessages.enterSponsorImageURL(), 80));
sponsorImageURLList.addValueChangeHandler(valueChangeHandler);
List<String> leaderboardGroupNames = new ArrayList<>();
@@ -154,7 +153,7 @@ public abstract class EventDialog extends DataEntryDialogWithBootstrap<EventDTO>
leaderboardGroupNames.add(leaderboardGroupDTO.getName());
}
leaderboardGroupList = new StringConstantsListEditorComposite(Collections.<String> emptyList(),
new StringConstantsListEditorComposite.ExpandedUi(stringMessages, resources.removeIcon(),
new StringConstantsListEditorComposite.ExpandedUi(stringMessages, IconResources.INSTANCE.removeIcon(),
leaderboardGroupNames, "Select a leaderboard group..."));
leaderboardGroupList.addValueChangeHandler(valueChangeHandler);
}
@@ -46,7 +46,7 @@ public class GateCreationDialog extends DataEntryDialog<GateDTO> {
name = createTextBox("");
marksWrapper = new MarkTableWrapper<MultiSelectionModel<MarkDTO>>(
new MultiSelectionModel<MarkDTO>(), sailingService, stringMessages, errorReporter);
/* multiSelection */ true, sailingService, stringMessages, errorReporter);
marksWrapper.getDataProvider().getList().addAll(marks);
marksWrapper.getSelectionModel().addSelectionChangeHandler(new Handler() {
@@ -35,6 +35,7 @@ import com.sap.sailing.gwt.ui.client.SailingServiceAsync;
import com.sap.sailing.gwt.ui.client.StringMessages;
import com.sap.sailing.gwt.ui.client.shared.components.ImagesBarCell;
import com.sap.sse.gwt.client.ErrorReporter;
import com.sap.sse.gwt.client.IconResources;
import com.sap.sse.gwt.client.dialog.DataEntryDialog;
import com.sap.sse.gwt.client.panels.LabeledAbstractFilterablePanel;
@@ -48,7 +49,6 @@ public class IgtimiAccountsPanel extends FlowPanel {
public static class AccountImagesBarCell extends ImagesBarCell {
public static final String ACTION_REMOVE = "ACTION_REMOVE";
private static AdminConsoleResources resources = GWT.create(AdminConsoleResources.class);
private final StringMessages stringMessages;
public AccountImagesBarCell(StringMessages stringMessages) {
@@ -64,7 +64,7 @@ public class IgtimiAccountsPanel extends FlowPanel {
@Override
protected Iterable<ImageSpec> getImageSpecs() {
return Arrays.asList(
new ImageSpec(ACTION_REMOVE, stringMessages.actionRemove(), makeImagePrototype(resources.removeIcon())));
new ImageSpec(ACTION_REMOVE, stringMessages.actionRemove(), makeImagePrototype(IconResources.INSTANCE.removeIcon())));
}
}
@@ -48,9 +48,7 @@ public class ImportFixesAndAddMappingsDialog extends DataEntryDialog<Collection<
return null;
}
}, true, callback);
this.stringMessages = stringMessages;
deviceIdTable = new TrackFileImportDeviceIdentifierTableWrapper(sailingService, stringMessages, errorReporter);
importWidget = new TrackFileImportWidget(deviceIdTable, stringMessages, sailingService, errorReporter);
deviceIdTable.getSelectionModel().addSelectionChangeHandler(new SelectionChangeEvent.Handler() {
@@ -59,11 +57,9 @@ public class ImportFixesAndAddMappingsDialog extends DataEntryDialog<Collection<
deviceSelectionChanged(deviceIdTable.getSelectionModel().getSelectedObject());
}
});
competitorTable = new CompetitorTableWrapper<>(sailingService, stringMessages, errorReporter,
new SingleSelectionModel<CompetitorDTO>(), true);
competitorTable = new CompetitorTableWrapper<>(sailingService, stringMessages, errorReporter, /* multiSelection */ false, true);
markTable = new MarkTableWrapper<SingleSelectionModel<MarkDTO>>(
new SingleSelectionModel<MarkDTO>(), sailingService, stringMessages, errorReporter);
/* multiSelection */ false, sailingService, stringMessages, errorReporter);
competitorTable.getSelectionModel().addSelectionChangeHandler(new SelectionChangeEvent.Handler() {
@Override
@@ -71,14 +67,12 @@ public class ImportFixesAndAddMappingsDialog extends DataEntryDialog<Collection<
mappedToSelectionChanged(competitorTable.getSelectionModel().getSelectedObject());
}
});
markTable.getSelectionModel().addSelectionChangeHandler(new SelectionChangeEvent.Handler() {
@Override
public void onSelectionChange(SelectionChangeEvent event) {
mappedToSelectionChanged(markTable.getSelectionModel().getSelectedObject());
}
});
sailingService.getCompetitorRegistrations(leaderboardName, raceColumnName, fleetName, new AsyncCallback<Collection<CompetitorDTO>>() {
@Override
public void onSuccess(Collection<CompetitorDTO> result) {
@@ -90,10 +84,9 @@ public class ImportFixesAndAddMappingsDialog extends DataEntryDialog<Collection<
errorReporter.reportError("Could not load competitors: " + caught.getMessage());
}
});
sailingService.getMarksInRaceLog(leaderboardName, raceColumnName, fleetName, new AsyncCallback<Collection<MarkDTO>>() {
sailingService.getMarksInRaceLog(leaderboardName, raceColumnName, fleetName, new AsyncCallback<Iterable<MarkDTO>>() {
@Override
public void onSuccess(Collection<MarkDTO> result) {
public void onSuccess(Iterable<MarkDTO> result) {
markTable.refresh(result);
}
@@ -0,0 +1,98 @@
package com.sap.sailing.gwt.ui.adminconsole;
import java.util.Collection;
import com.google.gwt.user.client.Window;
import com.google.gwt.user.client.rpc.AsyncCallback;
import com.google.gwt.user.client.ui.Grid;
import com.google.gwt.user.client.ui.TextBox;
import com.google.gwt.user.client.ui.Widget;
import com.sap.sailing.gwt.ui.client.SailingServiceAsync;
import com.sap.sailing.gwt.ui.client.StringMessages;
import com.sap.sailing.gwt.ui.shared.EventDTO;
import com.sap.sse.common.Util.Triple;
import com.sap.sse.gwt.client.ErrorReporter;
import com.sap.sse.gwt.client.controls.GenericListBox;
import com.sap.sse.gwt.client.controls.GenericListBox.ValueBuilder;
import com.sap.sse.gwt.client.dialog.DataEntryDialog;
public class InviteBuoyTenderDialog extends DataEntryDialog<Triple<EventDTO, String, String>> {
private GenericListBox<EventDTO> events;
private TextBox serverUrl;
private TextBox emails;
private StringMessages stringMessages;
private SailingServiceAsync sailingService;
private String leaderboardName;
private ErrorReporter errorReporter;
public InviteBuoyTenderDialog(final StringMessages stringMessages, SailingServiceAsync sailingService, String leaderboardName, ErrorReporter errorReporter, DialogCallback<Triple<EventDTO, String, String>> callback) {
super(stringMessages.selectEventForInvitation(), null, stringMessages.inviteCompetitors(), stringMessages
.cancel(), new Validator<Triple<EventDTO, String, String>>() {
@Override
public String getErrorMessage(Triple<EventDTO, String, String> valueToValidate) {
if (valueToValidate.getA() == null) {
return stringMessages.pleaseSelectAnEvent();
} else if (valueToValidate.getB() == null || valueToValidate.getB().isEmpty()) {
return stringMessages.pleaseEnterA(stringMessages.hostname());
} else if (valueToValidate.getC() == null || valueToValidate.getC().isEmpty()) {
return stringMessages.pleaseEnterA(stringMessages.email())+stringMessages.orMultipleEmails() ;
}
return null;
}
}, false, callback);
this.stringMessages = stringMessages;
this.sailingService = sailingService;
this.leaderboardName = leaderboardName;
this.errorReporter = errorReporter;
}
@Override
protected Triple<EventDTO, String, String> getResult() {
EventDTO event = events.getValue();
String serverUrlString = serverUrl.getValue();
String emailsString = emails.getValue();
if (serverUrlString.endsWith("/")) {
serverUrlString = serverUrlString.substring(0, serverUrlString.length() - 1);
}
return new Triple<>(event, serverUrlString, emailsString);
}
@Override
protected Widget getAdditionalWidget() {
Grid grid = new Grid(3, 3);
grid.setWidget(0, 0, createLabel(stringMessages.hostname()));
serverUrl = createTextBox(Window.Location.getProtocol() + "//" + Window.Location.getHost());
emails = createTextBox("test@example.com,test2@example.com");
grid.setWidget(0, 1, serverUrl);
grid.setWidget(1, 0, createLabel(stringMessages.event()));
events = createGenericListBox(new ValueBuilder<EventDTO>() {
@Override
public String getValue(EventDTO item) {
if (item == null) {
return "";
}
return item.getName();
}
}, false);
grid.setWidget(1, 1, events);
events.addItem((EventDTO) null);
sailingService.getEventsForLeaderboard(leaderboardName, new AsyncCallback<Collection<EventDTO>>() {
@Override
public void onSuccess(Collection<EventDTO> result) {
events.addItems(result);
}
@Override
public void onFailure(Throwable caught) {
errorReporter.reportError("Could not load events: " + caught.getMessage());
}
});
grid.setWidget(2, 0, createLabel(stringMessages.email()));
grid.setWidget(2, 1, emails);
return grid;
}
}
@@ -31,16 +31,12 @@ public class ItemToMapToDeviceSelectionPanel implements IsWidget {
public ItemToMapToDeviceSelectionPanel(SailingServiceAsync sailingService, StringMessages stringMessages,
ErrorReporter errorReporter, final SelectionChangedHandler handler, MappableToDevice selected) {
this.selected = selected;
this.errorReporter = errorReporter;
final SingleSelectionModel<MarkDTO> markSelectionModel = new SingleSelectionModel<MarkDTO>();
competitorTable = new CompetitorTableWrapper<>(sailingService, stringMessages, errorReporter,
new SingleSelectionModel<CompetitorDTO>(), true);
markTable = new MarkTableWrapper<SingleSelectionModel<MarkDTO>>(markSelectionModel, sailingService,
competitorTable = new CompetitorTableWrapper<>(sailingService, stringMessages, errorReporter, /* multiSelection */ false, /* enablePager */ true);
markTable = new MarkTableWrapper<SingleSelectionModel<MarkDTO>>(/* multiSelection */ false, sailingService,
stringMessages, errorReporter);
final SingleSelectionModel<MarkDTO> markSelectionModel = markTable.getSelectionModel();
competitorTable.getSelectionModel().addSelectionChangeHandler(new SelectionChangeEvent.Handler() {
@Override
public void onSelectionChange(SelectionChangeEvent event) {
@@ -53,8 +49,7 @@ public class ItemToMapToDeviceSelectionPanel implements IsWidget {
}
}
});
markTable.getSelectionModel().addSelectionChangeHandler(new SelectionChangeEvent.Handler() {
markSelectionModel.addSelectionChangeHandler(new SelectionChangeEvent.Handler() {
@Override
public void onSelectionChange(SelectionChangeEvent event) {
if (markSelectionModel.getSelectedSet().size() == 1) {
@@ -65,8 +60,7 @@ public class ItemToMapToDeviceSelectionPanel implements IsWidget {
}
}
});
//build UI
// build UI
this.mainPanel = new VerticalPanel();
CaptionPanel marksPanel = new CaptionPanel(stringMessages.mark());
CaptionPanel competitorsPanel = new CaptionPanel(stringMessages.competitor());
@@ -113,10 +107,10 @@ public class ItemToMapToDeviceSelectionPanel implements IsWidget {
};
}
public AsyncCallback<Collection<MarkDTO>> getSetMarksCallback() {
return new AsyncCallback<Collection<MarkDTO>>() {
public AsyncCallback<Iterable<MarkDTO>> getSetMarksCallback() {
return new AsyncCallback<Iterable<MarkDTO>>() {
@Override
public void onSuccess(Collection<MarkDTO> result) {
public void onSuccess(Iterable<MarkDTO> result) {
markTable.refresh(result);
select(result, markTable.getSelectionModel());
}
@@ -6,6 +6,7 @@ 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.components.ImagesBarCell;
import com.sap.sse.gwt.client.IconResources;
public class LeaderboardConfigImagesBarCell extends ImagesBarCell {
public static final String ACTION_REMOVE = "ACTION_REMOVE";
@@ -15,6 +16,7 @@ public class LeaderboardConfigImagesBarCell extends ImagesBarCell {
public static final String ACTION_CONFIGURE_URL = "ACTION_CONFIGURE_URL";
public static final String ACTION_EXPORT_XML = "ACTION_EXPORT_XML";
public static final String ACTION_OPEN_COACH_DASHBOARD = "ACTION_OPEN_COACH_DASHBOARD";
public static final String ACTION_SHOW_REGATTA_LOG = "ACTION_SHOW_REGATTA_LOG";
private static AdminConsoleResources resources = GWT.create(AdminConsoleResources.class);
private final StringMessages stringMessages;
@@ -35,8 +37,9 @@ public class LeaderboardConfigImagesBarCell extends ImagesBarCell {
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())),
new ImageSpec(ACTION_REMOVE, stringMessages.actionRemove(), makeImagePrototype(resources.removeIcon())),
new ImageSpec(ACTION_REMOVE, stringMessages.actionRemove(), makeImagePrototype(IconResources.INSTANCE.removeIcon())),
new ImageSpec(ACTION_EXPORT_XML, stringMessages.actionExportXML(), makeImagePrototype(resources.exportXMLIcon())),
new ImageSpec(ACTION_OPEN_COACH_DASHBOARD, stringMessages.actionOpenDashboard(), makeImagePrototype(resources.openCoachDashboard())));
new ImageSpec(ACTION_OPEN_COACH_DASHBOARD, stringMessages.actionOpenDashboard(), makeImagePrototype(resources.openCoachDashboard())),
new ImageSpec(ACTION_SHOW_REGATTA_LOG, stringMessages.regattaLog(), makeImagePrototype(resources.flagIcon())));
}
}
@@ -30,7 +30,6 @@ import com.google.gwt.user.client.rpc.AsyncCallback;
import com.google.gwt.user.client.ui.Button;
import com.google.gwt.user.client.ui.HasHorizontalAlignment;
import com.google.gwt.user.client.ui.Panel;
import com.google.gwt.view.client.SingleSelectionModel;
import com.sap.sailing.domain.common.RegattaIdentifier;
import com.sap.sailing.domain.common.RegattaName;
import com.sap.sailing.domain.common.dto.AbstractLeaderboardDTO;
@@ -38,12 +37,9 @@ import com.sap.sailing.domain.common.dto.CompetitorDTO;
import com.sap.sailing.domain.common.dto.FleetDTO;
import com.sap.sailing.domain.common.dto.RaceColumnDTO;
import com.sap.sailing.gwt.ui.adminconsole.DisablableCheckboxCell.IsEnabled;
import com.sap.sailing.gwt.ui.adminconsole.RaceColumnInLeaderboardDialog.RaceColumnDescriptor;
import com.sap.sailing.gwt.ui.client.EntryPointLinkFactory;
import com.sap.sailing.gwt.ui.client.LeaderboardsDisplayer;
import com.sap.sailing.gwt.ui.client.LeaderboardsRefresher;
import com.sap.sailing.gwt.ui.client.ParallelExecutionCallback;
import com.sap.sailing.gwt.ui.client.ParallelExecutionHolder;
import com.sap.sailing.gwt.ui.client.RaceSelectionChangeListener;
import com.sap.sailing.gwt.ui.client.RegattaRefresher;
import com.sap.sailing.gwt.ui.client.RegattasDisplayer;
@@ -53,7 +49,6 @@ import com.sap.sailing.gwt.ui.client.shared.controls.SelectionCheckboxColumn;
import com.sap.sailing.gwt.ui.leaderboard.LeaderboardEntryPoint;
import com.sap.sailing.gwt.ui.leaderboard.ScoringSchemeTypeFormatter;
import com.sap.sailing.gwt.ui.shared.EventDTO;
import com.sap.sailing.gwt.ui.shared.RaceLogDTO;
import com.sap.sailing.gwt.ui.shared.RaceLogSetStartTimeAndProcedureDTO;
import com.sap.sailing.gwt.ui.shared.StrippedLeaderboardDTO;
import com.sap.sse.common.Util;
@@ -76,7 +71,6 @@ TrackedRaceChangedListener, LeaderboardsDisplayer {
private Button columnMoveDownButton;
public static class AnchorCell extends AbstractCell<SafeHtml> {
@Override
public void render(com.google.gwt.cell.client.Cell.Context context, SafeHtml safeHtml, SafeHtmlBuilder sb) {
sb.append(safeHtml);
@@ -87,13 +81,12 @@ TrackedRaceChangedListener, LeaderboardsDisplayer {
@SafeHtmlTemplates.Template("<a href=\"{0}\">{1}</a>")
SafeHtml cell(String url, String displayName);
}
public LeaderboardConfigPanel(final SailingServiceAsync sailingService, RegattaRefresher regattaRefresher,
final ErrorReporter errorReporter, StringMessages theStringConstants, final boolean showRaceDetails,
LeaderboardsRefresher leaderboardsRefresher) {
super(sailingService, regattaRefresher, leaderboardsRefresher, errorReporter, theStringConstants,
new SingleSelectionModel<RaceColumnDTOAndFleetDTOWithNameBasedEquality>());
/* multi-selection */ false);
this.showRaceDetails = showRaceDetails;
leaderboardTable.ensureDebugId("LeaderboardsCellTable");
}
@@ -268,6 +261,8 @@ TrackedRaceChangedListener, LeaderboardsDisplayer {
Map<String, String> dashboardURLParameters = new HashMap<String, String>();
dashboardURLParameters.put("leaderboardName", leaderboardDTO.name);
Window.open(EntryPointLinkFactory.createDashboardLink(dashboardURLParameters), "", null);
} else if (LeaderboardConfigImagesBarCell.ACTION_SHOW_REGATTA_LOG.equals(value)) {
showRegattaLog();
}
}
});
@@ -485,35 +480,6 @@ TrackedRaceChangedListener, LeaderboardsDisplayer {
}).show();
}
private void showRaceLog(final RaceColumnDTO raceColumnDTO, final FleetDTO fleetDTO) {
final String selectedLeaderboardName = getSelectedLeaderboardName();
sailingService.getRaceLog(selectedLeaderboardName, raceColumnDTO, fleetDTO,
new MarkedAsyncCallback<RaceLogDTO>(
new AsyncCallback<RaceLogDTO>() {
@Override
public void onFailure(Throwable caught) {
errorReporter.reportError(caught.getMessage(), true);
}
@Override
public void onSuccess(RaceLogDTO result) {
openRaceLogDialog(result);
}
}));
}
private void openRaceLogDialog(RaceLogDTO raceLogDTO) {
RaceLogDialog dialog = new RaceLogDialog(raceLogDTO, stringMessages, new DialogCallback<RaceLogDTO>() {
@Override
public void cancel() {
}
@Override
public void ok(RaceLogDTO result) {
}
});
dialog.show();
}
private void removeRaceColumn(final RaceColumnDTO raceColumnDTO) {
final String selectedLeaderboardName = getSelectedLeaderboardName();
final String raceColumnString = raceColumnDTO.getRaceColumnName();
@@ -595,70 +561,6 @@ TrackedRaceChangedListener, LeaderboardsDisplayer {
}
}
private void editRaceColumnOfLeaderboard(final RaceColumnDTOAndFleetDTOWithNameBasedEquality raceColumnWithFleet) {
final String selectedLeaderboardName = getSelectedLeaderboardName();
final boolean oldIsMedalRace = raceColumnWithFleet.getA().isMedalRace();
final String oldRaceColumnName = raceColumnWithFleet.getA().getRaceColumnName();
final Double oldExplicitFactor = raceColumnWithFleet.getA().getExplicitFactor();
// use a set to avoid duplicates in the case of regatta leaderboards with multiple fleets per column
Set<RaceColumnDTO> existingRacesWithoutThisRace = new HashSet<RaceColumnDTO>();
for (RaceColumnDTOAndFleetDTOWithNameBasedEquality pair : raceColumnTable.getDataProvider().getList()) {
existingRacesWithoutThisRace.add(pair.getA());
}
existingRacesWithoutThisRace.remove(raceColumnWithFleet.getA());
final RaceColumnInLeaderboardDialog raceDialog = new RaceColumnInLeaderboardDialog(existingRacesWithoutThisRace,
raceColumnWithFleet.getA(), getSelectedLeaderboard().type.isRegattaLeaderboard(), stringMessages, new DialogCallback<RaceColumnDescriptor>() {
@Override
public void cancel() {
}
@Override
public void ok(final RaceColumnDescriptor result) {
boolean rename = !oldRaceColumnName.equals(result.getName());
boolean updateIsMedalRace = oldIsMedalRace != result.isMedalRace();
boolean updateFactor = oldExplicitFactor != result.getExplicitFactor();
List<ParallelExecutionCallback<Void>> callbacks = new ArrayList<ParallelExecutionCallback<Void>>();
final ParallelExecutionCallback<Void> renameLeaderboardColumnCallback = new ParallelExecutionCallback<Void>();
if (rename) {
callbacks.add(renameLeaderboardColumnCallback);
}
final ParallelExecutionCallback<Void> updateIsMedalRaceCallback = new ParallelExecutionCallback<Void>();
if (updateIsMedalRace) {
callbacks.add(updateIsMedalRaceCallback);
}
final ParallelExecutionCallback<Void> updateLeaderboardColumnFactorCallback = new ParallelExecutionCallback<Void>();
if (updateFactor) {
callbacks.add(updateLeaderboardColumnFactorCallback);
}
new ParallelExecutionHolder(callbacks.toArray(new ParallelExecutionCallback<?>[0])) {
@Override
public void handleSuccess() {
loadAndRefreshLeaderboard(selectedLeaderboardName, result.getName());
}
@Override
public void handleFailure(Throwable t) {
errorReporter.reportError("Error trying to update data of race column "
+ oldRaceColumnName + " in leaderboard " + selectedLeaderboardName + ": "
+ t.getMessage());
}
};
if (rename) {
sailingService.renameLeaderboardColumn(selectedLeaderboardName, oldRaceColumnName,
result.getName(), renameLeaderboardColumnCallback);
}
if (updateIsMedalRace) {
sailingService.updateIsMedalRace(selectedLeaderboardName, result.getName(),
result.isMedalRace(), updateIsMedalRaceCallback);
}
if (updateFactor) {
sailingService.updateLeaderboardColumnFactor(selectedLeaderboardName, result.getName(),
result.getExplicitFactor(), updateLeaderboardColumnFactorCallback);
}
}
});
raceDialog.show();
}
private void setIsMedalRace(String leaderboardName, final RaceColumnDTO raceInLeaderboard,
final boolean isMedalRace) {
sailingService.updateIsMedalRace(leaderboardName, raceInLeaderboard.getRaceColumnName(), isMedalRace,
@@ -6,6 +6,7 @@ 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.components.ImagesBarCell;
import com.sap.sse.gwt.client.IconResources;
public class LeaderboardGroupConfigImagesBarCell extends ImagesBarCell {
public static final String ACTION_REMOVE = "ACTION_REMOVE";
@@ -26,6 +27,6 @@ public class LeaderboardGroupConfigImagesBarCell extends ImagesBarCell {
@Override
protected Iterable<ImageSpec> getImageSpecs() {
return Arrays.asList(new ImageSpec(ACTION_EDIT, stringMessages.actionEdit(), makeImagePrototype(resources.editIcon())),
new ImageSpec(ACTION_REMOVE, stringMessages.actionRemove(), makeImagePrototype(resources.removeIcon())));
new ImageSpec(ACTION_REMOVE, stringMessages.actionRemove(), makeImagePrototype(IconResources.INSTANCE.removeIcon())));
}
}
@@ -44,6 +44,7 @@ import com.sap.sailing.gwt.ui.client.LeaderboardsRefresher;
import com.sap.sailing.gwt.ui.client.RegattaRefresher;
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.SelectionCheckboxColumn;
import com.sap.sailing.gwt.ui.leaderboard.ScoringSchemeTypeFormatter;
import com.sap.sailing.gwt.ui.raceboard.RaceBoardViewConfiguration;
import com.sap.sailing.gwt.ui.shared.LeaderboardGroupDTO;
@@ -63,6 +64,8 @@ public class LeaderboardGroupConfigPanel extends AbstractRegattaPanel implements
SafeHtml cell(String url, String displayName);
}
private static AdminConsoleTableResources tableResources = GWT.create(AdminConsoleTableResources.class);
private static final AnchorTemplates ANCHORTEMPLATE = GWT.create(AnchorTemplates.class);
private VerticalPanel mainPanel;
@@ -186,6 +189,16 @@ public class LeaderboardGroupConfigPanel extends AbstractRegattaPanel implements
ListHandler<StrippedLeaderboardDTO> leaderboardsListHandler = new ListHandler<StrippedLeaderboardDTO>(leaderboardsProvider.getList());
leaderboardsTable = new CellTable<StrippedLeaderboardDTO>(10000, tableRes);
leaderboardsTable.ensureDebugId("LeaderboardsCellTable");
SelectionCheckboxColumn<StrippedLeaderboardDTO> leaderboardTableSelectionColumn =
new SelectionCheckboxColumn<StrippedLeaderboardDTO>(
tableResources.cellTableStyle().cellTableCheckboxSelected(), tableResources.cellTableStyle().cellTableCheckboxDeselected(), tableResources.cellTableStyle().cellTableCheckboxColumnCell()) {
@Override
protected ListDataProvider<StrippedLeaderboardDTO> getListDataProvider() {
return leaderboardsProvider;
}
};
leaderboardsSelectionModel = leaderboardTableSelectionColumn.getSelectionModel();
leaderboardsTable.setSelectionModel(leaderboardsSelectionModel, leaderboardTableSelectionColumn.getSelectionManager());
leaderboardsFilterablePanel = new LabeledAbstractFilterablePanel<StrippedLeaderboardDTO>(filterLeaderboardsLabel, availableLeaderboards, leaderboardsTable, leaderboardsProvider) {
@Override
public Iterable<String> getSearchableStrings(StrippedLeaderboardDTO t) {
@@ -240,10 +253,10 @@ public class LeaderboardGroupConfigPanel extends AbstractRegattaPanel implements
leaderboardsTable.setWidth("100%");
leaderboardsTable.addColumnSortHandler(leaderboardsListHandler);
leaderboardsTable.addColumn(leaderboardTableSelectionColumn, leaderboardTableSelectionColumn.getHeader());
leaderboardsTable.addColumn(leaderboardsNameColumn, stringMessages.leaderboardName());
leaderboardsTable.addColumn(leaderboardsRacesColumn, stringMessages.races());
leaderboardsSelectionModel = new MultiSelectionModel<StrippedLeaderboardDTO>();
leaderboardsSelectionModel.addSelectionChangeHandler(new SelectionChangeEvent.Handler() {
@Override
public void onSelectionChange(SelectionChangeEvent event) {
@@ -251,11 +264,8 @@ public class LeaderboardGroupConfigPanel extends AbstractRegattaPanel implements
moveToGroupButton.setEnabled(selectedLeaderboards != null && selectedLeaderboards.size() > 0);
}
});
leaderboardsTable.setSelectionModel(leaderboardsSelectionModel);
leaderboardsProvider.addDataDisplay(leaderboardsTable);
leaderboardsPanel.add(leaderboardsTable);
return leaderboardsCaptionPanel;
}
@@ -350,11 +360,23 @@ public class LeaderboardGroupConfigPanel extends AbstractRegattaPanel implements
groupDetailsTable = new CellTable<StrippedLeaderboardDTO>(10000, tableRes);
groupDetailsTable.ensureDebugId("LeaderboardGroupsCellTable");
groupDetailsProvider = new ListDataProvider<StrippedLeaderboardDTO>();
groupDetailsProvider.addDataDisplay(groupDetailsTable);
SelectionCheckboxColumn<StrippedLeaderboardDTO> groupDetailsTableSelectionColumn =
new SelectionCheckboxColumn<StrippedLeaderboardDTO>(
tableResources.cellTableStyle().cellTableCheckboxSelected(), tableResources.cellTableStyle().cellTableCheckboxDeselected(), tableResources.cellTableStyle().cellTableCheckboxColumnCell()) {
@Override
protected ListDataProvider<StrippedLeaderboardDTO> getListDataProvider() {
return groupDetailsProvider;
}
};
groupDetailsTable.setWidth("100%");
groupDetailsTable.addColumn(groupDetailsTableSelectionColumn, groupDetailsTableSelectionColumn.getHeader());
groupDetailsTable.addColumn(groupDetailsNameColumn, stringMessages.leaderboardName());
groupDetailsTable.addColumn(groupDetailsRacesColumn, stringMessages.races());
groupDetailsSelectionModel = new MultiSelectionModel<StrippedLeaderboardDTO>();
groupDetailsSelectionModel = groupDetailsTableSelectionColumn.getSelectionModel();
groupDetailsSelectionModel.addSelectionChangeHandler(new SelectionChangeEvent.Handler() {
@Override
public void onSelectionChange(SelectionChangeEvent event) {
@@ -364,10 +386,7 @@ public class LeaderboardGroupConfigPanel extends AbstractRegattaPanel implements
leaderboardUpButton.setEnabled(selectedLeaderboardsInGroup != null && selectedLeaderboardsInGroup.size() == 1);
}
});
groupDetailsTable.setSelectionModel(groupDetailsSelectionModel);
groupDetailsProvider = new ListDataProvider<StrippedLeaderboardDTO>();
groupDetailsProvider.addDataDisplay(groupDetailsTable);
groupDetailsTable.setSelectionModel(groupDetailsSelectionModel, groupDetailsTableSelectionColumn.getSelectionManager());
groupDetailsPanel.add(groupDetailsTable);
//Create details functionality
@@ -8,6 +8,7 @@ import com.sap.sailing.domain.common.LeaderboardType;
import com.sap.sailing.gwt.ui.client.StringMessages;
import com.sap.sailing.gwt.ui.client.shared.components.ImagesBarCell;
import com.sap.sailing.gwt.ui.shared.StrippedLeaderboardDTO;
import com.sap.sse.gwt.client.IconResources;
public class LeaderboardRaceConfigImagesBarCell extends ImagesBarCell {
public final static String ACTION_REMOVE = "ACTION_REMOVE";
@@ -35,7 +36,7 @@ public class LeaderboardRaceConfigImagesBarCell extends ImagesBarCell {
StrippedLeaderboardDTO selectedLeaderboard = selectedLeaderboardProvider.getSelectedLeaderboard();
if (selectedLeaderboard != null && selectedLeaderboard.type != LeaderboardType.RegattaLeaderboard && selectedLeaderboard.type != LeaderboardType.RegattaMetaLeaderboard) {
// race columns cannot be removed from a regatta leaderboard; they need to be removed from the regatta instead
result.add(new ImageSpec(ACTION_REMOVE, stringMessages.actionRaceRemove(), makeImagePrototype(resources.removeIcon())));
result.add(new ImageSpec(ACTION_REMOVE, stringMessages.actionRaceRemove(), makeImagePrototype(IconResources.INSTANCE.removeIcon())));
}
result.add(new ImageSpec(ACTION_REFRESH_RACELOG, stringMessages.refreshRaceLog(), makeImagePrototype(resources.reloadIcon())));
result.add(new ImageSpec(ACTION_SET_STARTTIME, stringMessages.setStartTime(), makeImagePrototype(resources.clockIcon())));
@@ -1,13 +1,11 @@
package com.sap.sailing.gwt.ui.adminconsole;
import java.util.Collection;
import java.util.Collections;
import java.util.Comparator;
import com.google.gwt.safehtml.shared.SafeHtml;
import com.google.gwt.user.cellview.client.Column;
import com.google.gwt.user.cellview.client.TextColumn;
import com.google.gwt.user.client.rpc.AsyncCallback;
import com.google.gwt.view.client.SelectionModel;
import com.sap.sailing.gwt.ui.adminconsole.ColorColumn.ColorRetriever;
import com.sap.sailing.gwt.ui.client.SailingServiceAsync;
@@ -19,10 +17,9 @@ import com.sap.sse.common.impl.RGBColor;
import com.sap.sse.gwt.client.ErrorReporter;
public class MarkTableWrapper<S extends SelectionModel<MarkDTO>> extends TableWrapper<MarkDTO, S> {
public MarkTableWrapper(S selectionModel, SailingServiceAsync sailingService, StringMessages stringMessages,
public MarkTableWrapper(boolean multiSelection, SailingServiceAsync sailingService, StringMessages stringMessages,
ErrorReporter errorReporter) {
super(sailingService, stringMessages, errorReporter, selectionModel, true);
super(sailingService, stringMessages, errorReporter, multiSelection, true);
TextColumn<MarkDTO> markNameColumn = new TextColumn<MarkDTO>() {
@Override
public String getValue(MarkDTO markDTO) {
@@ -94,10 +91,8 @@ public class MarkTableWrapper<S extends SelectionModel<MarkDTO>> extends TableWr
table.addColumn(markUUIDColumn, "UUID");
}
public void refresh(Collection<MarkDTO> marks) {
dataProvider.getList().clear();
dataProvider.getList().addAll(marks);
dataProvider.flush();
public void refresh(Iterable<MarkDTO> marks) {
super.refresh(marks);
Collections.sort(dataProvider.getList(), new Comparator<MarkDTO>() {
@Override
public int compare(MarkDTO o1, MarkDTO o2) {
@@ -105,18 +100,4 @@ public class MarkTableWrapper<S extends SelectionModel<MarkDTO>> extends TableWr
}
});
}
public void refresh(String leaderboardName, String raceColumnName, String fleetName) {
sailingService.getMarksInRaceLog(leaderboardName, raceColumnName, fleetName, new AsyncCallback<Collection<MarkDTO>>() {
@Override
public void onSuccess(Collection<MarkDTO> result) {
refresh(result);
}
@Override
public void onFailure(Throwable caught) {
errorReporter.reportError("Could not load marks: " + caught.getMessage());
}
});
}
}
Loaded 100 of 1019 files, more files were not shown because too many files have changed in this diff. Show more