Merge remote-tracking branch 'server/design2015-races' into yes2015-with-design2015

Conflicts:
	java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/regattaoverview/client/SailingFlagsBuilder.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
This commit is contained in:
Axel Uhl committed 2015-05-22 11:22:13 +02:00
commit 8b0f9cbe7f
60 files changed
+7443 -6614

No files matched your search

@@ -1,47 +1,47 @@
<?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="false"/>
<stringAttribute key="com.google.gwt.eclipse.core.CODE_SERVER_PORT" value="9998"/>
<listAttribute key="com.google.gwt.eclipse.core.ENTRY_POINT_MODULES">
<listEntry value="com.sap.sailing.dashboards.gwt.RibDashboard"/>
</listAttribute>
<booleanAttribute key="com.google.gwt.eclipse.core.SUPERDEVMODE_ENABLED" value="true"/>
<stringAttribute key="com.google.gwt.eclipse.core.URL" value="/dashboards/RibDashboard.html"/>
<listAttribute key="org.eclipse.debug.core.MAPPED_RESOURCE_PATHS">
<listEntry value="/com.sap.sailing.dashboards.gwt"/>
</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="true"/>
<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; 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&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.dashboards.gwt/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.dashboards.gwt/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.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.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.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.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 id=&quot;org.eclipse.jdt.launching.classpathentry.defaultClasspath&quot;&gt;&#10;&lt;memento exportedEntriesOnly=&quot;false&quot; project=&quot;com.sap.sailing.dashboards.gwt&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.google.gwt.osgi/lib/gwt-servlet.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 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 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.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.sse.gwt.adminconsole/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="-superDevMode -incremental -war &quot;${project_loc:com.sap.sailing.dashboards.gwt}&quot; -startupUrl /dashboards/RibDashboard.html -noserver -remoteUI &quot;${gwt_remote_ui_server_port}:${unique_id}&quot; -logLevel INFO -codeServerPort 9998 com.sap.sailing.dashboards.gwt.RibDashboard"/>
<stringAttribute key="org.eclipse.jdt.launching.PROJECT_ATTR" value="com.sap.sailing.dashboards.gwt"/>
<stringAttribute key="org.eclipse.jdt.launching.VM_ARGUMENTS" value="-Xmx2048m"/>
</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="false"/>
<stringAttribute key="com.google.gwt.eclipse.core.CODE_SERVER_PORT" value="9998"/>
<listAttribute key="com.google.gwt.eclipse.core.ENTRY_POINT_MODULES">
<listEntry value="com.sap.sailing.dashboards.gwt.RibDashboard"/>
</listAttribute>
<booleanAttribute key="com.google.gwt.eclipse.core.SUPERDEVMODE_ENABLED" value="true"/>
<stringAttribute key="com.google.gwt.eclipse.core.URL" value="/dashboards/RibDashboard.html"/>
<listAttribute key="org.eclipse.debug.core.MAPPED_RESOURCE_PATHS">
<listEntry value="/com.sap.sailing.dashboards.gwt"/>
</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="true"/>
<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; 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&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.dashboards.gwt/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.dashboards.gwt/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.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.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.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.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 id=&quot;org.eclipse.jdt.launching.classpathentry.defaultClasspath&quot;&gt;&#10;&lt;memento exportedEntriesOnly=&quot;false&quot; project=&quot;com.sap.sailing.dashboards.gwt&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.google.gwt.osgi/lib/gwt-servlet.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 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 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.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.sse.gwt.adminconsole/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="-superDevMode -incremental -war &quot;${project_loc:com.sap.sailing.dashboards.gwt}&quot; -startupUrl /dashboards/RibDashboard.html -noserver -remoteUI &quot;${gwt_remote_ui_server_port}:${unique_id}&quot; -logLevel INFO -codeServerPort 9998 com.sap.sailing.dashboards.gwt.RibDashboard"/>
<stringAttribute key="org.eclipse.jdt.launching.PROJECT_ATTR" value="com.sap.sailing.dashboards.gwt"/>
<stringAttribute key="org.eclipse.jdt.launching.VM_ARGUMENTS" value="-XstartOnFirstThread -Xmx2048m"/>
</launchConfiguration>
File diff suppressed because it is too large. Load diff
File diff suppressed because it is too large. Load diff
@@ -1,268 +0,0 @@
/** Add css rules here for your application. */
/*
body #calendar:after
content: " ";
display: block;
height: 0;
clear: both;
visibility: hidden;
*/
.clearafter {
clear: both;
font-size: 1px;
height: 0px;
line-height: 0px;
margin: -1px 0 0;
width: 100%;
}
.cover {
left: -1000px;
overflow: hidden;
position: absolute;
top: -1000px;
}
body {
background: url(images/spectatorview-bg.png) no-repeat left top #ebebeb;
font-family: 'OpenSansRegular', Arial, Verdana, sans-serif;
line-height: 1;
font-size: 16px;
font-weight: 400;
padding: 85px 0 120px 0;
margin: 0;
color: #3b3b3b;
}
a {
color: #2968c0;
text-decoration: underline;
}
table td,select,button,checkbox {
line-height: 1;
font-family: 'OpenSansRegular', Arial, Verdana, sans-serif;
font-size: 16px;
}
.contentOuterPanel {
background: #dddcdc;
margin: 0 12px 0 12px;
padding: 12px;
}
/** Example rules used by the template application (remove for your app) */
h1 {
font-size: 2em;
font-weight: bold;
color: #777777;
margin: 40px 0px 70px;
text-align: center;
}
table {
border-collapse: separate;
}
.LogoAndTitlePanel {
height: 68px;
font-family: Arial, Verdana, sans-serif;
position: fixed;
width: 100%;
top: 0;
background-image: url(images/white_gradient_header.png), url(images/header_bg_modern.png);
background-position: center top, 0 0;
background-repeat: no-repeat, repeat-x;
box-shadow: 0 0 20px #858585;
-moz-box-shadow: 0 0 20px #858585;
-webkit-box-shadow: 0 0 20px #858585;
-o-box-shadow: 0 0 20px #858585;
-ms-box-shadow: 0 0 20px #858585;
}
.LogoAndTitlePanel:after {
content: " ";
display: block;
height: 0;
clear: both;
visibility: hidden;
}
.sapLogo {
float: left;
margin: 13px 0 0 12px;
}
.sailingAnalyticsLabelPanel {
margin: 10px 0 0 0;
}
.sailingAnalyticsLabel {
float: left;
color: #fff;
font-size: 14px;
font-weight: bold;
margin: 15px 0 0 0;
}
.RegattaOverview-TitleLabel {
font-size: 18px;
font-weight: 500;
}
.RegattaOverview-EventLabel {
font-weight:bold;
}
.RegattaOverview-VenueLabel {
margin-left:10px;
}
.RegattaOverview-ClockLabel {
margin-left:30px;
margin-right:10px;
}
.RegattaOverview-RefreshStopTime {
float:right;
margin-left:10px;
}
.RegattaOverview-functionBar {
height: 43px;
border: 1px solid #aaaaaa;
background: url(images/functionBar_bg.png) 0 0 repeat-x;
-moz-border-radius-topleft: 5px;
-webkit-border-top-left-radius: 5px;
-o-border-top-left-radius: 5px;
-ms-border-top-left-radius: 5px;
border-top-left-radius: 5px;
-moz-border-radius-topright: 5px;
-webkit-border-top-right-radius: 5px;
-o-border-top-right-radius: 5px;
-ms-border-top-right-radius: 5px;
border-top-right-radius: 5px;
-moz-border-radius-bottomleft: 5px;
-webkit-border-bottom-left-radius: 5px;
-o-border-bottom-left-radius: 5px;
-ms-border-bottom-left-radius: 5px;
border-bottom-left-radius: 5px;
-moz-border-radius-bottomright: 5px;
-webkit-border-bottom-right-radius: 5px;
-o-border-bottom-right-radius: 5px;
-ms-border-bottom-right-radius: 5px;
border-bottom-right-radius: 5px;
margin: 0 0 15px 0;
}
.RegattaOverview-contentWrapper {
padding: 18px;
}
.RegattaOverview-wordWrap {
word-wrap: break-word;
}
.RegattaOverview-circle {
width: 10px;
height: 10px;
-moz-border-radius-topleft: 50%;
-webkit-border-top-left-radius: 50%;
-o-border-top-left-radius: 50%;
-ms-border-top-left-radius: 50%;
border-top-left-radius: 50%;
-moz-border-radius-topright: 50%;
-webkit-border-top-right-radius: 50%;
-o-border-top-right-radius: 50%;
-ms-border-top-right-radius: 50%;
border-top-right-radius: 50%;
-moz-border-radius-bottomleft: 50%;
-webkit-border-bottom-left-radius: 50%;
-o-border-bottom-left-radius: 50%;
-ms-border-bottom-left-radius: 50%;
border-bottom-left-radius: 50%;
-moz-border-radius-bottomright: 50%;
-webkit-border-bottom-right-radius: 50%;
-o-border-bottom-right-radius: 50%;
-ms-border-bottom-right-radius: 50%;
border-bottom-right-radius: 50%;
float: left;
margin: 2px 6px 0 0;
}
.circleBlue {
background: #008fcc;
}
.circleYellow {
background: #fbba00;
}
.circleGreen {
background: #8ab54e;
}
.circleGrey {
background: #ebebeb;
}
.RaceDetailPanel {
background: #ebebeb;
border-top:5px solid #858585;
padding: 6px;
}
.RaceDetailPanel-header {
font-weight: bold;
}
.RaceDetailPanel-content td {
padding-right: 20px;
}
.RegattaOverview-Leaderboards {
padding-top: 20px;
font-size: 16px;
}
.viewerToolbar-innerElement {
background: url("images/btn-cta-orangeleft.png") repeat-x scroll center 0 transparent;
border-bottom-left-radius: 3px;
border-top-left-radius: 3px;
color: #FFFFFF;
cursor: pointer;
font-family: UbuntuBold,Verdana,Arial,sans-serif;
font-size: 14px;
margin: 0 15px 0 0;
padding: 2px 7px 2px 3px;
height: 18px;
display: inline-block;
text-decoration: none;
-moz-border-radius: 5px 0 0 5px;
-webkit-border-radius: 5px 0 0 5px;
-o-border-radius: 5px 0 0 5px;
-ms-border-radius: 5px 0 0 5px;
border-radius: 5px 0 0 5px;
-moz-box-shadow: 0 1px 3px rgba(0, 0, 0, 0.3);
-webkit-box-shadow: 0 1px 3px rgba(0, 0, 0, 0.3);
-o-box-shadow: 0 1px 3px rgba(0, 0, 0, 0.3);
-ms-box-shadow: 0 1px 3px rgba(0, 0, 0, 0.3);
box-shadow: 0 1px 3px rgba(0, 0, 0, 0.3);
text-shadow: 0 -1px 1px rgba(0, 0, 0, 0.25);
border-bottom: 1px solid rgba(0, 0, 0, 0.25);
}
.viewerToolbar-innerElement:active {
top: 1px;
position: relative;
}
.viewerToolbar-innerElement:hover {
background: url("images/btn-cta-orangeleft.png") repeat-x scroll center -30px transparent;
cursor: pointer;
}
.viewerToolbar-innerElement label {
cursor: pointer;
}
@@ -1,57 +1,31 @@
<!doctype html>
<!-- The DOCTYPE declaration above will set the -->
<!-- browser's rendering engine into -->
<!-- "Standards Mode". Replacing this declaration -->
<!-- with a "Quirks Mode" doctype may lead to some -->
<!-- differences in layout. -->
<html>
<head>
<!--[if lt IE 9]>
<meta http-equiv="REFRESH" content="0; url=http://www.sapsailing.com/browser-info.html">
<![endif]-->
<meta http-equiv="content-type" content="text/html; charset=UTF-8">
<!-- <meta name="viewport" content="width=device-width" />-->
<meta content='width = device-width, initial-scale = 1.0, user-scalable = yes' name='viewport'>
<meta content='yes' name='apple-mobile-web-app-capable'>
<meta content='black' name='apple-mobile-web-app-status-bar-style'>
<!-- <link href='iphone-splash-screen.png' rel='apple-touch-startup-image'> -->
<link href='images/sap-sailing-app-icon.png' rel='apple-touch-icon'>
<link rel="shortcut icon" type="image/x-icon" href="images/sap.ico" />
<!--<link href='http://fonts.googleapis.com/css?family=Ubuntu:300,400,500,700,300italic,400italic,500italic,700italic' rel='stylesheet' type='text/css'>-->
<!-- -->
<!-- Consider inlining CSS to reduce the number of requested files -->
<!-- -->
<!-- -->
<!-- Any title is fine -->
<!-- -->
<title>SAP Sailing Analytics Regatta Overview</title>
<link rel="stylesheet" type="text/css" href="/clean/sailing-clean-1.0.cache.css">
<link rel="stylesheet" type="text/css" href="/sailing-fontface-1.0.cache.css">
<link rel="stylesheet" type="text/css" href="CommonControls.css">
<link rel="stylesheet" type="text/css" href="RegattaOverview.css">
<!-- -->
<!-- This script loads your compiled module. -->
<!-- If you add any GWT meta tags, they must -->
<!-- be added before this line. -->
<!-- -->
<script type="text/javascript" language="javascript" src="com.sap.sailing.gwt.ui.RegattaOverview/com.sap.sailing.gwt.ui.RegattaOverview.nocache.js"></script>
<script
type="text/javascript"
language="javascript"
src="com.sap.sailing.gwt.regattaoverview.RegattaOverview/com.sap.sailing.gwt.regattaoverview.RegattaOverview.nocache.js"
></script>
</head>
<!-- -->
<!-- The body can have arbitrary html, or -->
<!-- you can leave the body empty if you want -->
<!-- to create a completely dynamic UI. -->
<!-- -->
<body>
<!-- OPTIONAL: include this if you want history support -->
<iframe src="javascript:''" id="__gwt_historyFrame" tabIndex='-1' style="position:absolute;width:0;height:0;border:0"></iframe>
<!-- RECOMMENDED if your web app will not function without JavaScript enabled -->
<noscript>
<div style="width: 22em; position: absolute; left: 50%; margin-left: -11em; color: red; background-color: white; border: 1px solid red; padding: 4px; font-family: sans-serif">
@@ -59,6 +33,5 @@
in order for this application to display correctly.
</div>
</noscript>
</body>
</html>
@@ -1,77 +1,77 @@
<?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.sse.gwt.theme/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>
<?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.regattaoverview.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.sse.gwt.theme/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.regattaoverview.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.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>
+75 -75
View File
@@ -1,75 +1,75 @@
<?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.sse.gwt.theme/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>
<?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.regattaoverview.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.sse.gwt.theme/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.regattaoverview.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.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>
+1 -2
View File
@@ -29,9 +29,8 @@ bin.includes = META-INF/,\
com.sap.sailing.gwt.ui.Simulator/,\
Simulator.html,\
Simulator.css,\
RegattaOverview.css,\
RegattaOverview.html,\
com.sap.sailing.gwt.ui.RegattaOverview/,\
com.sap.sailing.gwt.regattaoverview.RegattaOverview/,\
com.sap.sailing.gwt.ui.VideoPopup/,\
VideoPopup.html,\
VideoPopup.css,\
@@ -8,8 +8,10 @@
<inherits name="com.google.gwt.resources.Resources" />
<inherits name="com.google.gwt.logging.Logging"/>
<inherits name="com.google.gwt.cell.Cell"/>
<!-- Other module inherits -->
<inherits name='com.sap.sse.gwt.theme.SSEThemeLibrary'/>
<inherits name="com.sap.sse.gwt.EmulatedJRE" />
<inherits name="com.sap.sse.gwt.SSESharedGWT" />
<inherits name="com.sap.sse.SSECommon" />
@@ -29,7 +31,7 @@
<inherits name='com.github.gwtbootstrap.datetimepicker.DatetimepickerNoResources' />
<!-- Specify the app entry point class. -->
<entry-point class='com.sap.sailing.gwt.ui.regattaoverview.RegattaOverviewEntryPoint'/>
<entry-point class='com.sap.sailing.gwt.regattaoverview.client.RegattaOverviewEntryPoint'/>
<set-property name="gwt.logging.enabled" value="TRUE"/>
<set-property name="gwt.logging.logLevel" value="FINE"/>
@@ -42,18 +44,27 @@
<extend-property name="locale" values="de"/>
<extend-property name="locale" values="ru"/>
<source path='common'/>
<source path='client'/>
<source path='controls'/>
<source path='adminconsole'/>
<source path='usermanagement'/>
<source path='masterdataimport'/>
<source path='components'/>
<source path='leaderboard'/>
<source path='regattaoverview'/>
<source path='shared'/>
<source path='test'/>
<source path='actions'/>
<source path='simulator'/>
<inherits name="com.sap.sse.gwt.theme.SSEThemeLibrary"/>
<inherits name='com.sap.sailing.gwt.ui.SourceClient'/>
<inherits name='com.sap.sailing.gwt.ui.SourceActions'/>
<inherits name='com.sap.sailing.gwt.ui.SourceShared'/>
<inherits name="com.sap.sailing.gwt.ui.SourceLeaderboard"/>
<inherits name='com.sap.sailing.gwt.ui.SourceCommon'/>
<inherits name='com.sap.sailing.gwt.ui.SourceSimulator'/>
<!-- <inherits name='com.sap.sailing.gwt.ui.SourceControl'/> -->
<!-- <inherits name='com.sap.sailing.gwt.ui.SourceComponents'/> -->
<!-- <inherits name='com.sap.sailing.gwt.ui.SourceLeaderboard'/> -->
<!-- <inherits name='com.sap.sailing.gwt.ui.SourceRaceboard'/> -->
<!-- TODO -->
<!-- <source path='test'/> -->
<!-- <source path='actions'/> -->
<!-- <source path='simulator'/> -->
</module>
@@ -1,4 +1,4 @@
package com.sap.sailing.gwt.ui.regattaoverview;
package com.sap.sailing.gwt.regattaoverview.client;
import java.util.Date;
@@ -0,0 +1,36 @@
package com.sap.sailing.gwt.regattaoverview.client;
import com.google.gwt.event.shared.EventHandler;
import com.google.gwt.event.shared.GwtEvent;
import com.sap.sailing.gwt.ui.shared.EventDTO;
public class EventDTOLoadedEvent extends GwtEvent<EventDTOLoadedEvent.Handler> {
public static final Type<Handler> TYPE = new Type<EventDTOLoadedEvent.Handler>();
public interface Handler extends EventHandler {
void onEventDTOLoaded(EventDTOLoadedEvent e);
}
private final EventDTO currentEvent;
public EventDTOLoadedEvent(EventDTO currentEvent) {
super();
this.currentEvent = currentEvent;
}
public EventDTO getCurrentEvent() {
return currentEvent;
}
@Override
public Type<Handler> getAssociatedType() {
return TYPE;
}
@Override
protected void dispatch(Handler handler) {
handler.onEventDTOLoaded(this);
}
}
@@ -0,0 +1,44 @@
package com.sap.sailing.gwt.regattaoverview.client;
import java.util.Date;
import com.google.gwt.event.shared.EventHandler;
import com.google.gwt.event.shared.GwtEvent;
import com.google.gwt.i18n.client.DateTimeFormat;
public class EventTimeUpdateEvent extends GwtEvent<EventTimeUpdateEvent.Handler> {
public static final Type<Handler> TYPE = new Type<EventTimeUpdateEvent.Handler>();
private final DateTimeFormat timeFormatter = DateTimeFormat.getFormat("HH:mm:ss");
public interface Handler extends EventHandler {
void onEventDTOLoaded(EventTimeUpdateEvent e);
}
private final Date updatedTime;
public EventTimeUpdateEvent(Date updatedTime) {
super();
this.updatedTime = updatedTime;
}
public Date getUpdatedTime() {
return updatedTime;
}
public String getFormattedUpdatedTime() {
return timeFormatter.format(updatedTime);
}
@Override
public Type<Handler> getAssociatedType() {
return TYPE;
}
@Override
protected void dispatch(Handler handler) {
handler.onEventDTOLoaded(this);
}
}
@@ -1,4 +1,4 @@
package com.sap.sailing.gwt.ui.regattaoverview;
package com.sap.sailing.gwt.regattaoverview.client;
import java.util.HashMap;
import java.util.Map;
@@ -1,4 +1,4 @@
package com.sap.sailing.gwt.ui.regattaoverview;
package com.sap.sailing.gwt.regattaoverview.client;
import com.sap.sailing.domain.common.racelog.Flags;
import com.sap.sailing.gwt.ui.client.StringMessages;
@@ -1,4 +1,4 @@
package com.sap.sailing.gwt.ui.regattaoverview;
package com.sap.sailing.gwt.regattaoverview.client;
import com.google.gwt.event.dom.client.ClickEvent;
import com.google.gwt.event.dom.client.ClickHandler;
@@ -42,6 +42,8 @@ public class RaceDetailPanel extends SimplePanel {
private final NumberFormat decimalFormat = NumberFormat.getFormat("#.##");
private final RaceStateFlagsInterpreter flagInterpreter;
private final StringMessages stringMessages;
private static RegattaOverviewResources.LocalCss style = RegattaOverviewResources.INSTANCE.css();
private final Button closeButton;
private final Label headerLabel = new Label();
@@ -75,10 +77,10 @@ public class RaceDetailPanel extends SimplePanel {
}
});
this.addStyleName("RaceDetailPanel");
this.addStyleName(style.raceDetailPanel());
HorizontalPanel headerPanel = new HorizontalPanel();
headerPanel.addStyleName("RaceDetailPanel-header");
headerPanel.addStyleName(style.raceDetailPanel_header());
headerPanel.setWidth("100%");
headerPanel.add(headerLabel);
headerPanel.setHorizontalAlignment(HasHorizontalAlignment.ALIGN_RIGHT);
@@ -113,7 +115,7 @@ public class RaceDetailPanel extends SimplePanel {
resetProcedureGrid();
HorizontalPanel contentPanel = new HorizontalPanel();
contentPanel.addStyleName("RaceDetailPanel-content");
contentPanel.addStyleName(style.raceDetailPanel_content());
contentPanel.add(basicsGrid);
contentPanel.add(managementGrid);
contentPanel.add(procedureGrid);
@@ -1,4 +1,4 @@
package com.sap.sailing.gwt.ui.regattaoverview;
package com.sap.sailing.gwt.regattaoverview.client;
import com.sap.sailing.domain.common.racelog.utils.RaceStateFlagsInterpretationTemplate;
import com.sap.sailing.gwt.ui.client.StringMessages;
@@ -0,0 +1,180 @@
body {
margin: 0px;
padding: 0px;
}
.container {
width: 100%;
height: 100%;
}
.titleLabel {
font-size: 18px;
font-weight: 500;
}
.eventDescription {
vertical-align: top;
height: 40px;
}
.repeatedInfoLabel {
margin: 10px;
font-size: 20px;
font-weight: 700;
}
.eventLabel {
color: #fff;
vertical-align: top;
font-size: 20px;
font-weight: 700;
}
.venueLabel {
color: #fff;
font-size: 18px;
vertical-align: top;
}
.clockLabel {
margin-left:30px;
margin-right:10px;
color: white;
font-size: 20px;
font-weight: 700;
}
.refreshStopTime {
float:right;
margin-left:10px;
}
.functionBar {
height: 80px;
background-color: #fff;
padding: 2px 2px 5px 0px;
text-align: right;
}
.functionBarLeft {
height: 80px;
background-color: #fff;
padding: 2px 2px 5px 0px;
text-align: left;
}
.contentWrapper {
}
.circle {
width: 10px;
height: 10px;
border-radius: 50%;
float: left;
margin: 2px 6px 0 0;
}
.circleBlue {
background: #008fcc;
}
.circleYellow {
background: #fbba00;
}
.circleGreen {
background: #8ab54e;
}
.circleGrey {
background: #ebebeb;
}
.raceDetailPanel {
background: #f2f2f2;
border-top: 1px solid #dedede;
padding: 6px;
}
.raceDetailPanel_header {
font-weight: bold;
}
.raceDetailPanel_content td {
padding-right: 20px;
}
.leaderboards {
padding-top: 20px;
font-size: 16px;
margin: 10px;
width: calc(100% - 20px);
}
.viewerToolbar_innerElement {
font-size: 13px;
display: inline-block;
color: white;
border: none;
padding: 2px 8px 4px 8px;
border-radius: 3px;
height: 26px;
line-height: 24px;
background-color: #efaa00;
-webkit-transition: background-color 0.2s;
-moz-transition: background-color 0.2s;
transition: background-color 0.2s;
text-decoration: none;
cursor: pointer;
margin: 5px;
}
.viewerToolbar_innerElement:active {
}
.viewerToolbar_innerElement:hover {
cursor: pointer;
}
.viewerToolbar_innerElement label {
cursor: pointer;
}
.button {
margin: 10px;
}
.buttonLeaderboard {
height: 2.666666666666667em;
background-color: #9f9f9f;
}
.refreshButton, .refreshButton:ACTIVE {
width: 2.666666666666667em;
height: 2.666666666666667em;
background-color: #9f9f9f;
background-image: url("images/home/reload.png");
background-size: 40%;
background-repeat: no-repeat;
background-position: center center;
}
.refreshButton_live {
background-color: #f0ab00;
}
.refreshButton_playing {
background-color: #f0ab00;
}
.settingsButton {
width: 2.666666666666667em;
height: 2.666666666666667em;
background-color: #9f9f9f;
background-image: url("images/home/settings.png");
background-size: 40%;
background-repeat: no-repeat;
background-position: center center;
}
@@ -1,156 +1,189 @@
package com.sap.sailing.gwt.ui.regattaoverview;
import java.util.ArrayList;
import java.util.List;
import java.util.UUID;
import com.google.gwt.dom.client.Style.Unit;
import com.google.gwt.event.dom.client.ClickEvent;
import com.google.gwt.event.dom.client.ClickHandler;
import com.google.gwt.user.client.Window;
import com.google.gwt.user.client.ui.DockLayoutPanel;
import com.google.gwt.user.client.ui.FlowPanel;
import com.google.gwt.user.client.ui.Panel;
import com.google.gwt.user.client.ui.RootLayoutPanel;
import com.google.gwt.user.client.ui.RootPanel;
import com.google.gwt.user.client.ui.ScrollPanel;
import com.sap.sailing.gwt.ui.client.AbstractSailingEntryPoint;
import com.sap.sailing.gwt.ui.client.LogoAndTitlePanel;
import com.sap.sailing.gwt.ui.regattaoverview.RegattaRaceStatesComponent.EntryHandler;
import com.sap.sailing.gwt.ui.shared.RegattaOverviewEntryDTO;
import com.sap.sse.gwt.client.URLEncoder;
public class RegattaOverviewEntryPoint extends AbstractSailingEntryPoint {
private final static String PARAM_EVENT = "event";
private final static String PARAM_ONLY_RUNNING_RACES = "onlyrunningraces";
private final static String PARAM_ONLY_RACES_OF_SAME_DAY = "onlyracesofsameday";
private final static String PARAM_REGATTA = "regatta";
private final static String PARAM_COURSE_AREA = "coursearea";
private DockLayoutPanel containerPanel;
private RaceDetailPanel detailPanel;
private RegattaOverviewPanel regattaPanel;
@Override
public void doOnModuleLoad() {
super.doOnModuleLoad();
RootLayoutPanel rootPanel = RootLayoutPanel.get();
containerPanel = new DockLayoutPanel(Unit.PX);
rootPanel.add(containerPanel);
boolean embedded = Window.Location.getParameter("embedded") != null
&& Window.Location.getParameter("embedded").equalsIgnoreCase("true");
if (!embedded) {
LogoAndTitlePanel logoAndTitlePanel = new LogoAndTitlePanel(getStringMessages().eventOverview(), getStringMessages(), this, getUserService());
logoAndTitlePanel.addStyleName("LogoAndTitlePanel");
containerPanel.addNorth(logoAndTitlePanel, 68);
} else {
RootPanel.getBodyElement().getStyle().setPadding(0, Unit.PX);
RootPanel.getBodyElement().getStyle().setPaddingTop(20, Unit.PX);
}
String eventIdAsString = Window.Location.getParameter(PARAM_EVENT);
if (eventIdAsString == null) {
Window.alert("Missing parameter");
return;
}
createAndAddDetailPanel();
createAndAddRegattaPanel(UUID.fromString(eventIdAsString));
toggleDetailPanel(false);
regattaPanel.setEntryClickedHandler(new EntryHandler() {
@Override
public void onEntryClicked(RegattaOverviewEntryDTO entry) {
detailPanel.show(entry);
toggleDetailPanel(true);
}
@Override
public void onEntryUpdated(RegattaOverviewEntryDTO entry) {
detailPanel.update(entry);
}
});
}
private void toggleDetailPanel(boolean visibile) {
containerPanel.setWidgetHidden(detailPanel, !visibile);
}
private void createAndAddRegattaPanel(UUID eventId) {
RegattaRaceStatesSettings settings = createRegattaRaceStatesSettingsFromURL();
regattaPanel = new RegattaOverviewPanel(sailingService, this, getStringMessages(), eventId, settings, userAgent);
Panel centerPanel = new FlowPanel();
centerPanel.add(regattaPanel);
ScrollPanel scrollPanel = new ScrollPanel(centerPanel);
containerPanel.add(scrollPanel);
}
private void createAndAddDetailPanel() {
detailPanel = new RaceDetailPanel(getStringMessages(), new ClickHandler() {
@Override
public void onClick(ClickEvent event) {
toggleDetailPanel(false);
}
});
containerPanel.addSouth(detailPanel, 110);
}
public static RegattaRaceStatesSettings createRegattaRaceStatesSettingsFromURL() {
List<UUID> visibleCourseAreas = new ArrayList<UUID>();
List<String> visibleRegattas = new ArrayList<String>();
boolean showOnlyCurrentlyRunningRaces = Window.Location.getParameter(PARAM_ONLY_RUNNING_RACES) == null
|| !Window.Location.getParameter(PARAM_ONLY_RUNNING_RACES).equalsIgnoreCase("false");
boolean showOnlyRacesOfSameDay = Window.Location.getParameter(PARAM_ONLY_RACES_OF_SAME_DAY) != null
&& Window.Location.getParameter(PARAM_ONLY_RACES_OF_SAME_DAY).equalsIgnoreCase("true");
if (Window.Location.getParameterMap().containsKey(PARAM_COURSE_AREA)) {
for (String value : Window.Location.getParameterMap().get(PARAM_COURSE_AREA)) {
visibleCourseAreas.add(UUID.fromString(value));
}
}
if (Window.Location.getParameterMap().containsKey(PARAM_REGATTA)) {
visibleRegattas.addAll(Window.Location.getParameterMap().get(PARAM_REGATTA));
}
return new RegattaRaceStatesSettings(visibleCourseAreas, visibleRegattas, showOnlyRacesOfSameDay, showOnlyCurrentlyRunningRaces);
}
public static String getUrl(UUID eventId, RegattaRaceStatesSettings settings,
boolean isSetVisibleCourseAreasInUrl, boolean isSetVisibleRegattasInUrl) {
String debugParam = Window.Location.getParameter("gwt.codesvr");
String showOnlyCurrentlyRunningRaces = "&" + PARAM_ONLY_RUNNING_RACES + "=" + (settings.isShowOnlyCurrentlyRunningRaces() ? "true" : "false");
String showOnlyRacesOfSameDay = "&" + PARAM_ONLY_RACES_OF_SAME_DAY + "=" + (settings.isShowOnlyRacesOfSameDay() ? "true" : "false");
StringBuilder visibleCourseAreas = new StringBuilder();
if (isSetVisibleCourseAreasInUrl) {
for (UUID visibleCourseArea : settings.getVisibleCourseAreas()) {
visibleCourseAreas.append('&');
visibleCourseAreas.append(PARAM_COURSE_AREA);
visibleCourseAreas.append('=');
visibleCourseAreas.append(visibleCourseArea.toString());
}
}
StringBuilder visibleRegattas = new StringBuilder();
if (isSetVisibleRegattasInUrl) {
for (String visibleRegatta : settings.getVisibleRegattas()) {
visibleRegattas.append('&');
visibleRegattas.append(PARAM_REGATTA);
visibleRegattas.append('=');
visibleRegattas.append(visibleRegatta);
}
}
String link = URLEncoder.encode("/gwt/RegattaOverview.html?" + PARAM_EVENT+ "=" + eventId.toString()
+ visibleCourseAreas.toString()
+ visibleRegattas.toString()
+ showOnlyCurrentlyRunningRaces
+ showOnlyRacesOfSameDay
+ (debugParam != null && !debugParam.isEmpty() ? "&gwt.codesvr=" + debugParam : ""));
return link;
}
package com.sap.sailing.gwt.regattaoverview.client;
import java.util.ArrayList;
import java.util.List;
import java.util.UUID;
import com.google.gwt.dom.client.Style.Unit;
import com.google.gwt.event.dom.client.ClickEvent;
import com.google.gwt.event.dom.client.ClickHandler;
import com.google.gwt.user.client.Window;
import com.google.gwt.user.client.ui.DockLayoutPanel;
import com.google.gwt.user.client.ui.FlowPanel;
import com.google.gwt.user.client.ui.Label;
import com.google.gwt.user.client.ui.Panel;
import com.google.gwt.user.client.ui.RootLayoutPanel;
import com.google.gwt.user.client.ui.ScrollPanel;
import com.sap.sailing.gwt.regattaoverview.client.RegattaRaceStatesComponent.EntryHandler;
import com.sap.sailing.gwt.ui.client.AbstractSailingEntryPoint;
import com.sap.sailing.gwt.ui.shared.RegattaOverviewEntryDTO;
import com.sap.sse.gwt.client.URLEncoder;
import com.sap.sse.gwt.theme.client.component.sapheader2.SAPHeader2;
import com.sap.sse.gwt.theme.client.resources.ThemeResources;
public class RegattaOverviewEntryPoint extends AbstractSailingEntryPoint {
private final static String PARAM_EVENT = "event";
private final static String PARAM_ONLY_RUNNING_RACES = "onlyrunningraces";
private final static String PARAM_ONLY_RACES_OF_SAME_DAY = "onlyracesofsameday";
private final static String PARAM_REGATTA = "regatta";
private final static String PARAM_COURSE_AREA = "coursearea";
private DockLayoutPanel containerPanel;
private RaceDetailPanel detailPanel;
private RegattaOverviewPanel regattaPanel;
private SAPHeader2 logoAndTitlePanel;
private final Label eventNameLabel = new Label();
private final Label venueNameLabel = new Label();
private final Label clockLabel = new Label();
private final RegattaOverviewResources.LocalCss style = RegattaOverviewResources.INSTANCE.css();
@Override
public void doOnModuleLoad() {
super.doOnModuleLoad();
ThemeResources.INSTANCE.mediaCss().ensureInjected();
ThemeResources.INSTANCE.mainCss().ensureInjected();
RegattaOverviewResources.INSTANCE.css().ensureInjected();
RootLayoutPanel rootPanel = RootLayoutPanel.get();
containerPanel = new DockLayoutPanel(Unit.PX);
rootPanel.add(containerPanel);
containerPanel.addStyleName(RegattaOverviewResources.INSTANCE.css().container());
FlowPanel descriptionUi = new FlowPanel();
descriptionUi.setStyleName(style.eventDescription());
eventNameLabel.addStyleName(style.eventLabel());
venueNameLabel.addStyleName(style.venueLabel());
clockLabel.addStyleName(style.clockLabel());
descriptionUi.add(eventNameLabel);
descriptionUi.add(venueNameLabel);
SAPHeader2 logoAndTitlePanel = new SAPHeader2(getStringMessages().sapSailingAnalytics(), descriptionUi, false);
logoAndTitlePanel.addWidgetToRightSide(clockLabel);
containerPanel.addNorth(logoAndTitlePanel, 75);
String eventIdAsString = Window.Location.getParameter(PARAM_EVENT);
if (eventIdAsString == null) {
Window.alert("Missing parameter");
return;
}
createAndAddDetailPanel();
createAndAddRegattaPanel(UUID.fromString(eventIdAsString));
toggleDetailPanel(false);
regattaPanel.setEntryClickedHandler(new EntryHandler() {
@Override
public void onEntryClicked(RegattaOverviewEntryDTO entry) {
detailPanel.show(entry);
toggleDetailPanel(true);
}
@Override
public void onEntryUpdated(RegattaOverviewEntryDTO entry) {
detailPanel.update(entry);
}
});
}
private void toggleDetailPanel(boolean visibile) {
containerPanel.setWidgetSize(detailPanel, visibile ? 110 : 0);
containerPanel.animate(500);
// containerPanel.setWidgetHidden(detailPanel, !visibile);
}
private void createAndAddRegattaPanel(UUID eventId) {
RegattaRaceStatesSettings settings = createRegattaRaceStatesSettingsFromURL();
regattaPanel = new RegattaOverviewPanel(sailingService, this, getStringMessages(), eventId, settings, userAgent);
regattaPanel.addHandler(new EventDTOLoadedEvent.Handler() {
@Override
public void onEventDTOLoaded(EventDTOLoadedEvent e) {
eventNameLabel.setText(e.getCurrentEvent().getName());
venueNameLabel.setText(e.getCurrentEvent().venue.getName());
}
}, EventDTOLoadedEvent.TYPE);
regattaPanel.addHandler(new EventTimeUpdateEvent.Handler() {
@Override
public void onEventDTOLoaded(EventTimeUpdateEvent e) {
clockLabel.setText(e.getFormattedUpdatedTime());
}
}, EventTimeUpdateEvent.TYPE);
Panel centerPanel = new FlowPanel();
centerPanel.add(regattaPanel);
ScrollPanel scrollPanel = new ScrollPanel(centerPanel);
containerPanel.add(scrollPanel);
}
private void createAndAddDetailPanel() {
detailPanel = new RaceDetailPanel(getStringMessages(), new ClickHandler() {
@Override
public void onClick(ClickEvent event) {
toggleDetailPanel(false);
}
});
containerPanel.addSouth(detailPanel, 110);
}
public static RegattaRaceStatesSettings createRegattaRaceStatesSettingsFromURL() {
List<UUID> visibleCourseAreas = new ArrayList<UUID>();
List<String> visibleRegattas = new ArrayList<String>();
boolean showOnlyCurrentlyRunningRaces = Window.Location.getParameter(PARAM_ONLY_RUNNING_RACES) == null
|| !Window.Location.getParameter(PARAM_ONLY_RUNNING_RACES).equalsIgnoreCase("false");
boolean showOnlyRacesOfSameDay = Window.Location.getParameter(PARAM_ONLY_RACES_OF_SAME_DAY) != null
&& Window.Location.getParameter(PARAM_ONLY_RACES_OF_SAME_DAY).equalsIgnoreCase("true");
if (Window.Location.getParameterMap().containsKey(PARAM_COURSE_AREA)) {
for (String value : Window.Location.getParameterMap().get(PARAM_COURSE_AREA)) {
visibleCourseAreas.add(UUID.fromString(value));
}
}
if (Window.Location.getParameterMap().containsKey(PARAM_REGATTA)) {
visibleRegattas.addAll(Window.Location.getParameterMap().get(PARAM_REGATTA));
}
return new RegattaRaceStatesSettings(visibleCourseAreas, visibleRegattas, showOnlyRacesOfSameDay, showOnlyCurrentlyRunningRaces);
}
public static String getUrl(UUID eventId, RegattaRaceStatesSettings settings,
boolean isSetVisibleCourseAreasInUrl, boolean isSetVisibleRegattasInUrl) {
String debugParam = Window.Location.getParameter("gwt.codesvr");
String showOnlyCurrentlyRunningRaces = "&" + PARAM_ONLY_RUNNING_RACES + "=" + (settings.isShowOnlyCurrentlyRunningRaces() ? "true" : "false");
String showOnlyRacesOfSameDay = "&" + PARAM_ONLY_RACES_OF_SAME_DAY + "=" + (settings.isShowOnlyRacesOfSameDay() ? "true" : "false");
StringBuilder visibleCourseAreas = new StringBuilder();
if (isSetVisibleCourseAreasInUrl) {
for (UUID visibleCourseArea : settings.getVisibleCourseAreas()) {
visibleCourseAreas.append('&');
visibleCourseAreas.append(PARAM_COURSE_AREA);
visibleCourseAreas.append('=');
visibleCourseAreas.append(visibleCourseArea.toString());
}
}
StringBuilder visibleRegattas = new StringBuilder();
if (isSetVisibleRegattasInUrl) {
for (String visibleRegatta : settings.getVisibleRegattas()) {
visibleRegattas.append('&');
visibleRegattas.append(PARAM_REGATTA);
visibleRegattas.append('=');
visibleRegattas.append(visibleRegatta);
}
}
String link = URLEncoder.encode("/gwt/RegattaOverview.html?" + PARAM_EVENT+ "=" + eventId.toString()
+ visibleCourseAreas.toString()
+ visibleRegattas.toString()
+ showOnlyCurrentlyRunningRaces
+ showOnlyRacesOfSameDay
+ (debugParam != null && !debugParam.isEmpty() ? "&gwt.codesvr=" + debugParam : ""));
return link;
}
}
@@ -1,374 +1,350 @@
package com.sap.sailing.gwt.ui.regattaoverview;
import java.util.ArrayList;
import java.util.Date;
import java.util.List;
import java.util.UUID;
import com.google.gwt.dom.client.Style;
import com.google.gwt.dom.client.Style.Unit;
import com.google.gwt.event.dom.client.ClickEvent;
import com.google.gwt.event.dom.client.ClickHandler;
import com.google.gwt.event.logical.shared.ValueChangeEvent;
import com.google.gwt.event.logical.shared.ValueChangeHandler;
import com.google.gwt.i18n.client.DateTimeFormat;
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.CheckBox;
import com.google.gwt.user.client.ui.FlexTable;
import com.google.gwt.user.client.ui.Grid;
import com.google.gwt.user.client.ui.HasVerticalAlignment;
import com.google.gwt.user.client.ui.HorizontalPanel;
import com.google.gwt.user.client.ui.Label;
import com.google.gwt.user.client.ui.SimplePanel;
import com.google.gwt.user.client.ui.TabPanel;
import com.google.gwt.user.client.ui.VerticalPanel;
import com.sap.sailing.gwt.ui.client.CompetitorSelectionModel;
import com.sap.sailing.gwt.ui.client.SailingServiceAsync;
import com.sap.sailing.gwt.ui.client.StringMessages;
import com.sap.sailing.gwt.ui.leaderboard.LeaderboardPanel;
import com.sap.sailing.gwt.ui.leaderboard.LeaderboardSettings;
import com.sap.sailing.gwt.ui.leaderboard.LeaderboardSettingsFactory;
import com.sap.sailing.gwt.ui.regattaoverview.RegattaRaceStatesComponent.EntryHandler;
import com.sap.sailing.gwt.ui.shared.EventDTO;
import com.sap.sailing.gwt.ui.shared.RaceGroupDTO;
import com.sap.sailing.gwt.ui.shared.StrippedLeaderboardDTO;
import com.sap.sse.gwt.client.ErrorReporter;
import com.sap.sse.gwt.client.async.AsyncActionsExecutor;
import com.sap.sse.gwt.client.async.MarkedAsyncCallback;
import com.sap.sse.gwt.client.player.TimeListener;
import com.sap.sse.gwt.client.player.Timer;
import com.sap.sse.gwt.client.player.Timer.PlayModes;
import com.sap.sse.gwt.client.player.Timer.PlayStates;
import com.sap.sse.gwt.client.shared.components.SettingsDialog;
import com.sap.sse.gwt.client.useragent.UserAgentDetails;
public class RegattaOverviewPanel extends SimplePanel {
private final static String STYLE_VIEWER_TOOLBAR_INNERELEMENT = "viewerToolbar-innerElement";
private final long serverUpdateRateInMs = 10000;
private final long uiUpdateRateInMs = 450;
private final Timer serverUpdateTimer;
private final Timer uiUpdateTimer;
private final SailingServiceAsync sailingService;
protected final StringMessages stringMessages;
protected final ErrorReporter errorReporter;
private final UUID eventId;
private EventDTO eventDTO;
private List<RaceGroupDTO> raceGroupDTOs;
private List<EventAndRaceGroupAvailabilityListener> eventRaceGroupListeners;
private boolean showLeaderboard = false;
private RegattaRaceStatesComponent regattaRaceStatesComponent;
private final TabPanel leaderboardsTabPanel;
private final Label eventNameLabel;
private final Label venueNameLabel;
private final Label timeLabel;
private final Button settingsButton;
private final Button refreshNowButton;
private final Button startStopUpdatingButton;
private final CheckBox leaderboardCheckBox;
private final UserAgentDetails userAgent;
private final DateTimeFormat timeFormatter = DateTimeFormat.getFormat("HH:mm:ss");
private static final String STYLE_NAME_PREFIX = "RegattaOverview-";
private static final String STYLE_REFRESH_STOP_TIME = STYLE_NAME_PREFIX + "RefreshStopTime";
private static final String STYLE_FUNCTION_BAR = STYLE_NAME_PREFIX + "functionBar";
private static final String STYLE_CONTENT_WRAPPER = STYLE_NAME_PREFIX + "contentWrapper";
private static final String STYLE_TITLE_LABEL = STYLE_NAME_PREFIX + "TitleLabel";
private static final String STYLE_EVENT_LABEL = STYLE_NAME_PREFIX + "EventLabel";
private static final String STYLE_VENUE_LABEL = STYLE_NAME_PREFIX + "VenueLabel";
private static final String STYLE_CLOCK_LABEL = STYLE_NAME_PREFIX + "ClockLabel";
public void setEntryClickedHandler(EntryHandler handler) {
regattaRaceStatesComponent.setEntryClickedHandler(handler);
}
public RegattaOverviewPanel(SailingServiceAsync sailingService, final ErrorReporter errorReporter, final StringMessages stringMessages,
UUID eventId, RegattaRaceStatesSettings settings, UserAgentDetails userAgent) {
this.sailingService = sailingService;
this.stringMessages = stringMessages;
this.errorReporter = errorReporter;
this.eventId = eventId;
this.serverUpdateTimer = new Timer(PlayModes.Live, serverUpdateRateInMs);
this.uiUpdateTimer = new Timer(PlayModes.Live, uiUpdateRateInMs);
this.eventDTO = null;
this.userAgent = userAgent;
this.raceGroupDTOs = new ArrayList<RaceGroupDTO>();
this.eventRaceGroupListeners = new ArrayList<EventAndRaceGroupAvailabilityListener>();
retrieveEvent();
retrieveRegattaStructure();
VerticalPanel mainPanel = new VerticalPanel();
setWidget(mainPanel);
mainPanel.setWidth("100%");
mainPanel.addStyleName(STYLE_CONTENT_WRAPPER);
regattaRaceStatesComponent = new RegattaRaceStatesComponent(sailingService, errorReporter, stringMessages, eventId, settings, uiUpdateTimer);
this.eventRaceGroupListeners.add(regattaRaceStatesComponent);
regattaRaceStatesComponent.setWidth("100%");
refreshNowButton = new Button(stringMessages.refreshNow());
refreshNowButton.addClickHandler(new ClickHandler() {
@Override
public void onClick(ClickEvent event) {
regattaRaceStatesComponent.loadAndUpdateEventLog();
}
});
settingsButton = new Button(stringMessages.settings());
settingsButton.addClickHandler(new ClickHandler() {
@Override
public void onClick(ClickEvent event) {
new SettingsDialog<RegattaRaceStatesSettings>(regattaRaceStatesComponent, stringMessages).show();
}
});
startStopUpdatingButton = new Button(stringMessages.stopUpdating());
startStopUpdatingButton.addClickHandler(new ClickHandler() {
@Override
public void onClick(ClickEvent event) {
if (serverUpdateTimer.getPlayState().equals(PlayStates.Playing)) {
serverUpdateTimer.pause();
startStopUpdatingButton.setText(stringMessages.startUpdating());
} else if (serverUpdateTimer.getPlayState().equals(PlayStates.Paused)) {
serverUpdateTimer.play();
startStopUpdatingButton.setText(stringMessages.stopUpdating());
}
}
});
this.refreshNowButton.getElement().getStyle().setMarginLeft(20.0, Unit.PX);
this.startStopUpdatingButton.getElement().getStyle().setMarginLeft(20.0, Unit.PX);
this.serverUpdateTimer.addTimeListener(new TimeListener() {
@Override
public void timeChanged(Date newTime, Date oldTime) {
regattaRaceStatesComponent.onUpdateServer();
}
});
this.serverUpdateTimer.play();
this.uiUpdateTimer.addTimeListener(new TimeListener() {
@Override
public void timeChanged(Date newTime, Date oldTime) {
onUpdateUI(newTime);
}
});
this.uiUpdateTimer.play();
eventNameLabel = new Label();
eventNameLabel.addStyleName(STYLE_EVENT_LABEL);
eventNameLabel.addStyleName(STYLE_TITLE_LABEL);
venueNameLabel = new Label();
venueNameLabel.addStyleName(STYLE_TITLE_LABEL);
venueNameLabel.addStyleName(STYLE_VENUE_LABEL);
timeLabel = new Label();
timeLabel.addStyleName(STYLE_TITLE_LABEL);
timeLabel.addStyleName(STYLE_CLOCK_LABEL);
FlexTable flexTable = new FlexTable();
flexTable.setWidth("100%");
flexTable.addStyleName(STYLE_FUNCTION_BAR);
Grid eventVenueGrid = new Grid(1, 2);
eventVenueGrid.setCellPadding(5);
eventVenueGrid.setWidget(0, 0, eventNameLabel);
eventVenueGrid.setWidget(0, 1, venueNameLabel);
flexTable.setWidget(0, 0, eventVenueGrid);
flexTable.getCellFormatter().setVerticalAlignment(0, 0, HasVerticalAlignment.ALIGN_MIDDLE);
final boolean showLeaderboardButton = Window.Location.getParameter("enableLeaderboard") != null
&& Window.Location.getParameter("enableLeaderboard").equalsIgnoreCase("true");
if (showLeaderboardButton) {
leaderboardCheckBox = addLeaderboardEnablerButton();
leaderboardCheckBox.getElement().getStyle().setMarginLeft(20.0, Unit.PX);
} else {
leaderboardCheckBox = null;
}
HorizontalPanel refreshStartStopClockPanel = getRefreshStartStopClockPanel();
flexTable.setWidget(0, 1, refreshStartStopClockPanel);
mainPanel.add(flexTable);
mainPanel.add(regattaRaceStatesComponent);
if (showLeaderboardButton) {
leaderboardsTabPanel = new TabPanel();
leaderboardsTabPanel.setStyleName("RegattaOverview-Leaderboards");
leaderboardsTabPanel.setVisible(false);
mainPanel.add(leaderboardsTabPanel);
} else {
leaderboardsTabPanel = null;
}
onUpdateUI(uiUpdateTimer.getLiveTimePointAsDate());
}
private CheckBox addLeaderboardEnablerButton() {
final CheckBox checkBox = new CheckBox(stringMessages.leaderboard());
checkBox.getElement().getStyle().setFloat(Style.Float.LEFT);
checkBox.setEnabled(true);
checkBox.setValue(false);
checkBox.setTitle(stringMessages.showHideComponent("Leaderboard"));
checkBox.addStyleName(STYLE_VIEWER_TOOLBAR_INNERELEMENT);
checkBox.addValueChangeHandler(new ValueChangeHandler<Boolean>() {
@Override
public void onValueChange(ValueChangeEvent<Boolean> newValue) {
boolean visible = checkBox.getValue();
showLeaderboard = visible;
loadLeaderboard();
}
});
return checkBox;
}
private void loadLeaderboard() {
/*
* Load a tabbed widget with one tab per regatta. Each tab contains the leaderboard for the regatta.
*/
if (leaderboardsTabPanel != null) {
if (showLeaderboard) {
final CompetitorSelectionModel competitorSelectionProvider = new CompetitorSelectionModel(/* hasMultiSelection */ true);
final LeaderboardSettings leaderboardSettings = LeaderboardSettingsFactory.getInstance().createNewDefaultSettings(null, null, null, /* autoExpandFirstRace */ false, /* showRegattaRank */ true);
sailingService.getLeaderboardsByEvent(eventDTO, new MarkedAsyncCallback<List<StrippedLeaderboardDTO>>(
new AsyncCallback<List<StrippedLeaderboardDTO>>() {
@Override
public void onSuccess(List<StrippedLeaderboardDTO> result) {
leaderboardsTabPanel.clear();
for (StrippedLeaderboardDTO leaderboard : result) {
LeaderboardPanel leaderboardPanel = new LeaderboardPanel(sailingService,
new AsyncActionsExecutor(), leaderboardSettings, false,
/*preSelectedRace*/null,
competitorSelectionProvider,
null, leaderboard.name,
errorReporter, stringMessages, userAgent, /*showRaceDetails*/false);
leaderboardsTabPanel.add(leaderboardPanel, leaderboard.getDisplayName() + " " + stringMessages.leaderboard());
}
if (!result.isEmpty()) {
leaderboardsTabPanel.setVisible(true);
leaderboardsTabPanel.selectTab(0);
} else {
leaderboardCheckBox.setValue(false);
errorReporter.reportError("Error trying to load leaderboard. Either the event could not be associated to Regatta or there are no tracked races.");
}
}
@Override
public void onFailure(Throwable caught) {
}
}));
} else {
leaderboardsTabPanel.clear();
leaderboardsTabPanel.setVisible(false);
}
}
}
private HorizontalPanel getRefreshStartStopClockPanel() {
HorizontalPanel refreshStartStopClockPanel = new HorizontalPanel();
refreshStartStopClockPanel.setSpacing(5);
refreshStartStopClockPanel.setStyleName(STYLE_REFRESH_STOP_TIME);
refreshStartStopClockPanel.setVerticalAlignment(HasVerticalAlignment.ALIGN_MIDDLE);
if (leaderboardCheckBox != null) {
refreshStartStopClockPanel.add(leaderboardCheckBox);
}
refreshStartStopClockPanel.add(settingsButton);
refreshStartStopClockPanel.add(refreshNowButton);
refreshStartStopClockPanel.add(startStopUpdatingButton);
refreshStartStopClockPanel.add(timeLabel);
return refreshStartStopClockPanel;
}
public void onUpdateUI(Date time) {
timeLabel.setText(timeFormatter.format(time));
}
private void retrieveEvent() {
sailingService.getEventById(eventId, false, new MarkedAsyncCallback<EventDTO>(
new AsyncCallback<EventDTO>() {
@Override
public void onFailure(Throwable cause) {
settingsButton.setEnabled(false);
errorReporter.reportError("Error trying to load event with id " + eventId + " : "
+ cause.getMessage());
}
@Override
public void onSuccess(EventDTO result) {
if (result != null) {
setEvent(result);
}
}
}));
}
private void fillEventAndVenueName() {
eventNameLabel.setText(eventDTO.getName());
venueNameLabel.setText(eventDTO.venue.getName());
}
protected void setEvent(EventDTO event) {
eventDTO = event;
onEventUpdated();
}
private void onEventUpdated() {
fillEventAndVenueName();
for (EventAndRaceGroupAvailabilityListener listener : this.eventRaceGroupListeners) {
listener.onEventUpdated(eventDTO);
}
checkToEnableSettingsButton();
}
private void retrieveRegattaStructure() {
sailingService.getRegattaStructureForEvent(eventId, new MarkedAsyncCallback<List<RaceGroupDTO>>(
new AsyncCallback<List<RaceGroupDTO>>() {
@Override
public void onFailure(Throwable cause) {
errorReporter.reportError("Error trying to load regattas for event with id " + eventId + " : "
+ cause.getMessage());
}
@Override
public void onSuccess(List<RaceGroupDTO> result) {
if (result != null) {
setRaceGroups(result);
}
}
}));
}
protected void setRaceGroups(List<RaceGroupDTO> result) {
raceGroupDTOs.clear();
raceGroupDTOs.addAll(result);
onRaceGroupsUpdated();
}
private void onRaceGroupsUpdated() {
for (EventAndRaceGroupAvailabilityListener listener : this.eventRaceGroupListeners) {
listener.onRaceGroupsUpdated(raceGroupDTOs);
}
checkToEnableSettingsButton();
}
private void checkToEnableSettingsButton() {
if (eventDTO != null && raceGroupDTOs.size() > 0) {
settingsButton.setEnabled(true);
}
}
}
package com.sap.sailing.gwt.regattaoverview.client;
import java.util.ArrayList;
import java.util.Date;
import java.util.List;
import java.util.UUID;
import com.google.gwt.dom.client.Style.Unit;
import com.google.gwt.event.dom.client.ClickEvent;
import com.google.gwt.event.dom.client.ClickHandler;
import com.google.gwt.event.logical.shared.ValueChangeEvent;
import com.google.gwt.event.logical.shared.ValueChangeHandler;
import com.google.gwt.user.client.Window;
import com.google.gwt.user.client.rpc.AsyncCallback;
import com.google.gwt.user.client.ui.Anchor;
import com.google.gwt.user.client.ui.CheckBox;
import com.google.gwt.user.client.ui.FlexTable;
import com.google.gwt.user.client.ui.FlowPanel;
import com.google.gwt.user.client.ui.Label;
import com.google.gwt.user.client.ui.SimplePanel;
import com.google.gwt.user.client.ui.TabPanel;
import com.google.gwt.user.client.ui.VerticalPanel;
import com.sap.sailing.gwt.regattaoverview.client.RegattaRaceStatesComponent.EntryHandler;
import com.sap.sailing.gwt.ui.client.CompetitorSelectionModel;
import com.sap.sailing.gwt.ui.client.SailingServiceAsync;
import com.sap.sailing.gwt.ui.client.StringMessages;
import com.sap.sailing.gwt.ui.leaderboard.LeaderboardPanel;
import com.sap.sailing.gwt.ui.leaderboard.LeaderboardSettings;
import com.sap.sailing.gwt.ui.leaderboard.LeaderboardSettingsFactory;
import com.sap.sailing.gwt.ui.shared.EventDTO;
import com.sap.sailing.gwt.ui.shared.RaceGroupDTO;
import com.sap.sailing.gwt.ui.shared.StrippedLeaderboardDTO;
import com.sap.sse.gwt.client.ErrorReporter;
import com.sap.sse.gwt.client.async.AsyncActionsExecutor;
import com.sap.sse.gwt.client.async.MarkedAsyncCallback;
import com.sap.sse.gwt.client.player.TimeListener;
import com.sap.sse.gwt.client.player.Timer;
import com.sap.sse.gwt.client.player.Timer.PlayModes;
import com.sap.sse.gwt.client.player.Timer.PlayStates;
import com.sap.sse.gwt.client.shared.components.SettingsDialog;
import com.sap.sse.gwt.client.useragent.UserAgentDetails;
import com.sap.sse.gwt.theme.client.resources.ThemeResources;
public class RegattaOverviewPanel extends SimplePanel {
private final long serverUpdateRateInMs = 10000;
private final long uiUpdateRateInMs = 450;
private final Timer serverUpdateTimer;
private final Timer uiUpdateTimer;
private final SailingServiceAsync sailingService;
protected final StringMessages stringMessages;
protected final ErrorReporter errorReporter;
private final UUID eventId;
private EventDTO eventDTO;
private List<RaceGroupDTO> raceGroupDTOs;
private List<EventAndRaceGroupAvailabilityListener> eventRaceGroupListeners;
private boolean showLeaderboard = false;
private RegattaRaceStatesComponent regattaRaceStatesComponent;
private final TabPanel leaderboardsTabPanel;
private final Anchor settingsButton;
private final Anchor refreshNowButton;
private final Anchor startStopUpdatingButton;
private final CheckBox leaderboardCheckBox;
private final UserAgentDetails userAgent;
private final Label repeatedInfoLabel = new Label();
private final RegattaOverviewResources.LocalCss style = RegattaOverviewResources.INSTANCE.css();
private final ThemeResources RES = ThemeResources.INSTANCE;
public void setEntryClickedHandler(EntryHandler handler) {
regattaRaceStatesComponent.setEntryClickedHandler(handler);
}
public RegattaOverviewPanel(
SailingServiceAsync sailingService,
final ErrorReporter errorReporter,
final StringMessages stringMessages,
UUID eventId,
RegattaRaceStatesSettings settings,
UserAgentDetails userAgent) {
this.sailingService = sailingService;
this.stringMessages = stringMessages;
this.errorReporter = errorReporter;
this.eventId = eventId;
this.serverUpdateTimer = new Timer(PlayModes.Live, serverUpdateRateInMs);
this.uiUpdateTimer = new Timer(PlayModes.Live, uiUpdateRateInMs);
this.eventDTO = null;
this.userAgent = userAgent;
this.raceGroupDTOs = new ArrayList<RaceGroupDTO>();
this.eventRaceGroupListeners = new ArrayList<EventAndRaceGroupAvailabilityListener>();
retrieveEvent();
retrieveRegattaStructure();
VerticalPanel mainPanel = new VerticalPanel();
setWidget(mainPanel);
mainPanel.setWidth("100%");
mainPanel.addStyleName(style.contentWrapper());
regattaRaceStatesComponent = new RegattaRaceStatesComponent(sailingService, errorReporter, stringMessages, eventId, settings, uiUpdateTimer);
this.eventRaceGroupListeners.add(regattaRaceStatesComponent);
regattaRaceStatesComponent.setWidth("100%");
refreshNowButton = new Anchor(stringMessages.refreshNow());
refreshNowButton.setStyleName(RES.mainCss().button());
refreshNowButton.addStyleName(style.button());
refreshNowButton.addClickHandler(new ClickHandler() {
@Override
public void onClick(ClickEvent event) {
regattaRaceStatesComponent.loadAndUpdateEventLog();
}
});
settingsButton = new Anchor("&nbsp;", true);
settingsButton.setStyleName(style.settingsButton());
settingsButton.addStyleName(RES.mainCss().button());
settingsButton.addStyleName(style.button());
settingsButton.addClickHandler(new ClickHandler() {
@Override
public void onClick(ClickEvent event) {
new SettingsDialog<RegattaRaceStatesSettings>(regattaRaceStatesComponent, stringMessages).show();
}
});
startStopUpdatingButton = new Anchor("&nbsp;", true);
startStopUpdatingButton.setStyleName(RES.mainCss().button());
startStopUpdatingButton.addStyleName(style.refreshButton());
startStopUpdatingButton.addStyleName(style.button());
startStopUpdatingButton.addClickHandler(new ClickHandler() {
@Override
public void onClick(ClickEvent event) {
if (serverUpdateTimer.getPlayState().equals(PlayStates.Playing)) {
serverUpdateTimer.pause();
startStopUpdatingButton.removeStyleName(style.refreshButton_live());
} else if (serverUpdateTimer.getPlayState().equals(PlayStates.Paused)) {
serverUpdateTimer.play();
startStopUpdatingButton.addStyleName(style.refreshButton_live());
}
}
});
this.serverUpdateTimer.addTimeListener(new TimeListener() {
@Override
public void timeChanged(Date newTime, Date oldTime) {
regattaRaceStatesComponent.onUpdateServer();
}
});
this.serverUpdateTimer.play();
startStopUpdatingButton.addStyleName(style.refreshButton_live());
this.uiUpdateTimer.addTimeListener(new TimeListener() {
@Override
public void timeChanged(Date newTime, Date oldTime) {
fireEvent(new EventTimeUpdateEvent(newTime));
}
});
this.uiUpdateTimer.play();
final boolean showLeaderboardButton = Window.Location.getParameter("enableLeaderboard") != null
&& Window.Location.getParameter("enableLeaderboard").equalsIgnoreCase("true");
if (showLeaderboardButton) {
leaderboardCheckBox = addLeaderboardEnablerButton();
} else {
leaderboardCheckBox = null;
}
FlowPanel flowPanelLeft = new FlowPanel();
flowPanelLeft.addStyleName(style.functionBarLeft());
flowPanelLeft.add(repeatedInfoLabel);
repeatedInfoLabel.setStyleName(style.repeatedInfoLabel());
regattaRaceStatesComponent.setRepeatedInfoLabel(repeatedInfoLabel);
FlowPanel flowPanelRight = new FlowPanel();
flowPanelRight.addStyleName(style.functionBar());
if (leaderboardCheckBox != null) {
flowPanelRight.add(leaderboardCheckBox);
}
// flexTable.add(refreshNowButton);
flowPanelRight.add(startStopUpdatingButton);
flowPanelRight.add(settingsButton);
FlexTable leftRightToolbar = new FlexTable();
leftRightToolbar.setWidget(0, 1, flowPanelRight);
leftRightToolbar.setWidget(0, 0, flowPanelLeft);
leftRightToolbar.getElement().getStyle().setWidth(100, Unit.PCT);
mainPanel.add(leftRightToolbar);
mainPanel.add(regattaRaceStatesComponent);
if (showLeaderboardButton) {
leaderboardsTabPanel = new TabPanel();
leaderboardsTabPanel.setStyleName(style.leaderboards());
leaderboardsTabPanel.setVisible(false);
mainPanel.add(leaderboardsTabPanel);
} else {
leaderboardsTabPanel = null;
}
}
private CheckBox addLeaderboardEnablerButton() {
final CheckBox checkBox = new CheckBox(stringMessages.leaderboard());
checkBox.setEnabled(true);
checkBox.setValue(false);
checkBox.setTitle(stringMessages.showHideComponent("Leaderboard"));
// checkBox.getElement().getStyle().setMarginRight(10, Unit.PX);
checkBox.setStyleName(RES.mainCss().button());
checkBox.addStyleName(style.button());
checkBox.addStyleName(style.buttonLeaderboard());
checkBox.addValueChangeHandler(new ValueChangeHandler<Boolean>() {
@Override
public void onValueChange(ValueChangeEvent<Boolean> newValue) {
boolean visible = checkBox.getValue();
showLeaderboard = visible;
loadLeaderboard();
}
});
return checkBox;
}
private void loadLeaderboard() {
/*
* Load a tabbed widget with one tab per regatta. Each tab contains the leaderboard for the regatta.
*/
if (leaderboardsTabPanel != null) {
if (showLeaderboard) {
final CompetitorSelectionModel competitorSelectionProvider = new CompetitorSelectionModel(/* hasMultiSelection */ true);
final LeaderboardSettings leaderboardSettings = LeaderboardSettingsFactory.getInstance().createNewDefaultSettings(null, null, null, /* autoExpandFirstRace */ false, /* showRegattaRank */ true);
sailingService.getLeaderboardsByEvent(eventDTO, new MarkedAsyncCallback<List<StrippedLeaderboardDTO>>(
new AsyncCallback<List<StrippedLeaderboardDTO>>() {
@Override
public void onSuccess(List<StrippedLeaderboardDTO> result) {
leaderboardsTabPanel.clear();
for (StrippedLeaderboardDTO leaderboard : result) {
LeaderboardPanel leaderboardPanel = new LeaderboardPanel(sailingService,
new AsyncActionsExecutor(), leaderboardSettings, false,
/*preSelectedRace*/null,
competitorSelectionProvider,
null, leaderboard.name,
errorReporter, stringMessages, userAgent, /*showRaceDetails*/false);
leaderboardsTabPanel.add(leaderboardPanel, leaderboard.getDisplayName() + " " + stringMessages.leaderboard());
}
if (!result.isEmpty()) {
leaderboardsTabPanel.setVisible(true);
leaderboardsTabPanel.selectTab(0);
} else {
leaderboardCheckBox.setValue(false);
errorReporter.reportError("Error trying to load leaderboard. Either the event could not be associated to Regatta or there are no tracked races.");
}
}
@Override
public void onFailure(Throwable caught) {
}
}));
} else {
leaderboardsTabPanel.clear();
leaderboardsTabPanel.setVisible(false);
}
}
}
private void retrieveEvent() {
sailingService.getEventById(eventId, false, new MarkedAsyncCallback<EventDTO>(
new AsyncCallback<EventDTO>() {
@Override
public void onFailure(Throwable cause) {
settingsButton.setEnabled(false);
errorReporter.reportError("Error trying to load event with id " + eventId + " : "
+ cause.getMessage());
}
@Override
public void onSuccess(EventDTO result) {
if (result != null) {
setEvent(result);
}
}
}));
}
protected void setEvent(EventDTO event) {
eventDTO = event;
onEventUpdated();
}
private void onEventUpdated() {
fireEvent(new EventDTOLoadedEvent(eventDTO));
for (EventAndRaceGroupAvailabilityListener listener : this.eventRaceGroupListeners) {
listener.onEventUpdated(eventDTO);
}
checkToEnableSettingsButton();
}
private void retrieveRegattaStructure() {
sailingService.getRegattaStructureForEvent(eventId, new MarkedAsyncCallback<List<RaceGroupDTO>>(
new AsyncCallback<List<RaceGroupDTO>>() {
@Override
public void onFailure(Throwable cause) {
errorReporter.reportError("Error trying to load regattas for event with id " + eventId + " : "
+ cause.getMessage());
}
@Override
public void onSuccess(List<RaceGroupDTO> result) {
if (result != null) {
setRaceGroups(result);
}
}
}));
}
protected void setRaceGroups(List<RaceGroupDTO> result) {
raceGroupDTOs.clear();
raceGroupDTOs.addAll(result);
onRaceGroupsUpdated();
}
private void onRaceGroupsUpdated() {
for (EventAndRaceGroupAvailabilityListener listener : this.eventRaceGroupListeners) {
listener.onRaceGroupsUpdated(raceGroupDTOs);
}
checkToEnableSettingsButton();
}
private void checkToEnableSettingsButton() {
if (eventDTO != null && raceGroupDTOs.size() > 0) {
settingsButton.setEnabled(true);
}
}
}
@@ -0,0 +1,50 @@
package com.sap.sailing.gwt.regattaoverview.client;
import com.google.gwt.core.client.GWT;
import com.google.gwt.resources.client.ClientBundle;
import com.google.gwt.resources.client.CssResource;
public interface RegattaOverviewResources extends ClientBundle {
public static final RegattaOverviewResources INSTANCE = GWT.create(RegattaOverviewResources.class);
@Source("RegattaOverview.gss")
LocalCss css();
public interface LocalCss extends CssResource {
String container();
String titleLabel();
String eventLabel();
String venueLabel();
String clockLabel();
String refreshStopTime();
String functionBar();
String contentWrapper();
String circle();
String circleBlue();
String circleYellow();
String circleGreen();
String circleGrey();
String raceDetailPanel();
String raceDetailPanel_header();
String raceDetailPanel_content();
String leaderboards();
String viewerToolbar_innerElement();
String settingsButton();
String refreshButton();
String refreshButton_live();
String refreshButton_playing();
String eventDescription();
String button();
String buttonLeaderboard();
String functionBarLeft();
String repeatedInfoLabel();
}
}
@@ -0,0 +1,43 @@
package com.sap.sailing.gwt.regattaoverview.client;
import java.util.List;
import com.sap.sailing.domain.common.LeaderboardNameConstants;
import com.sap.sailing.domain.common.dto.FleetDTO;
import com.sap.sailing.gwt.ui.shared.RaceGroupDTO;
import com.sap.sailing.gwt.ui.shared.RaceGroupSeriesDTO;
public class RegattaOverviewUtils {
public static boolean hasAnyRaceGroupASeries(List<RaceGroupDTO> raceGroupDTOs) {
boolean result = false;
if (raceGroupDTOs != null) {
for (RaceGroupDTO raceGroup : raceGroupDTOs) {
for (RaceGroupSeriesDTO series : raceGroup.getSeries()) {
if (!series.getName().equals(LeaderboardNameConstants.DEFAULT_SERIES_NAME)) {
result = true;
break;
}
}
}
}
return result;
}
public static boolean hasAnyRaceGroupAFleet(List<RaceGroupDTO> raceGroupDTOs) {
boolean result = false;
if (raceGroupDTOs != null) {
for (RaceGroupDTO raceGroup : raceGroupDTOs) {
for (RaceGroupSeriesDTO series : raceGroup.getSeries()) {
for (FleetDTO fleet : series.getFleets()) {
if (!fleet.getName().equals(LeaderboardNameConstants.DEFAULT_FLEET_NAME)) {
result = true;
break;
}
}
}
}
}
return result;
}
}
@@ -1,4 +1,4 @@
package com.sap.sailing.gwt.ui.regattaoverview;
package com.sap.sailing.gwt.regattaoverview.client;
import com.google.gwt.resources.client.ClientBundle;
import com.google.gwt.resources.client.ImageResource;
@@ -1,4 +1,4 @@
package com.sap.sailing.gwt.ui.regattaoverview;
package com.sap.sailing.gwt.regattaoverview.client;
import java.util.ArrayList;
import java.util.List;
@@ -1,4 +1,4 @@
package com.sap.sailing.gwt.ui.regattaoverview;
package com.sap.sailing.gwt.regattaoverview.client;
import java.util.ArrayList;
import java.util.HashMap;
@@ -1,4 +1,4 @@
package com.sap.sailing.gwt.ui.regattaoverview;
package com.sap.sailing.gwt.regattaoverview.client;
import java.util.ArrayList;
import java.util.List;
@@ -0,0 +1,89 @@
.cellTableWidget {
border-spacing: 0px;
font-size:16px;
}
.cellTableWidget a {
color: black;
}
/** v-align images in the table header
* grey background for table header
*/
.cellTableHeader {
position: relative;
vertical-align: bottom;
background-color: #f2f2f2;
background-color: #fff;
padding: 20px 5px;
text-align: left;
border-bottom: 1px solid black;
text-shadow: none;
font-size: 16px;
}
.cellTableHeader:FOCUS {
outline: none;
}
.cellTableFirstColumnHeader {
}
.cellTableLastColumnHeader {
}
.cellTableHeader>span>img:first-child {
position: relative;
vertical-align: middle;
}
.cellTableEvenRow {
background-color: #fafafa;
}
.cellTableEvenRowCell {
border: none;
border-bottom: 1px solid #dedede;
padding: 20px 5px 20px 10px;
vertical-align: top;
}
.cellTableOddRow {
background-color: #fdfdfd;
}
.cellTableOddRowCell {
border: none;
border-bottom: 1px solid #dedede;
padding: 20px 5px 20px 10px;
vertical-align: top;
}
.cellTableHoveredRow {
background-color: rgba(229, 242, 249, 0.5);
border-bottom: 1px solid #e5e5e5;
}
.cellTableSelectedRow {
color: #000000;
background-color: rgba(229, 242, 249, 0.5);
}
.cellTableSelectedRowCell {
border-top: 2px solid #21a0e4 !important;
border-bottom: 2px solid #21a0e4 !important;
}
.cellTableRaceNameColumnHeader {
background-color: #e0e0e0;
padding: 5px 20px;
}
.cellTableRaceNameColumn {
background-color: #e0e0e0 !important;
}
@@ -1,4 +1,4 @@
package com.sap.sailing.gwt.ui.regattaoverview;
package com.sap.sailing.gwt.regattaoverview.client;
import com.google.gwt.user.cellview.client.CellTable;
@@ -1,4 +1,4 @@
package com.sap.sailing.gwt.ui.regattaoverview;
package com.sap.sailing.gwt.regattaoverview.client;
import com.google.gwt.core.client.GWT;
import com.google.gwt.dom.client.Style.Display;
@@ -20,6 +20,13 @@ public class SailingFlagsBuilder {
private final static FlagImageResolver flagImageResolver = new FlagImageResolver();
interface SailingFlagsTemplates extends SafeHtmlTemplates {
/**
* @param title
* the tool-tip to display for the image on mouse-over
* @param upperFlag
* how to render the image; this needs to be an &lt;img&gt; tag, not enclosed by any other element,
* as returned by {@link ImagesBarCell#makeImagePrototype(ImageResource)}
*/
@SafeHtmlTemplates.Template("<div title=\"{0}\">{1}</div>")
SafeHtml cell(String title, SafeHtml content);
@@ -0,0 +1,310 @@
/**
* The header of the pages to an event
*/
.jsdropdown {
position: relative;
}
.jsdropdown_head,
.jsdropdown_content {
text-indent: 0;
}
.dropdown {
font-size: 1rem;
width: 20em;
max-width: 100%;
display: inline-block;
text-align: left;
}
.dropdown_head {
display: block;
}
.dropdown_head_title {
font-size: 1.866666666666667em;
cursor: pointer;
background: #f8f8f8;
color: #cfcfcf;
height: 1.464285714285714em;
line-height: 1.428571428571429em;
padding-left: 0.535714285714286em;
font-weight: 700;
}
.dropdown_head_title_button {
float: right;
}
.dropdown_content {
position: absolute;
z-index: 1;
background: #f6f9fc;
display: none;
width: 20em;
height: auto;
max-height: 23.333333333333332em;
overflow: auto;
box-shadow: 0 0.066666666666667em 0.266666666666667em #eee;
border-bottom: solid 1px #eee;
}
.jsdropdownactive .dropdown_content {
display: block;
}
.dropdown_content_link {
display: block;
cursor: pointer;
padding: 1.333333333333333em 3.333333333333333em 1em 1em;
border-bottom: 1px solid #f4f4f4;
}
.dropdown_content_link:hover,
.dropdown_content_link:focus {
background: #f8f8f8;
text-decoration: none;
}
.dropdown_content_link:hover .dropdown_content_link_title,
.dropdown_content_link:focus .dropdown_content_link_title {
text-decoration: underline;
}
.dropdown_content_link_title {
color: #008fcc;
display: block;
font-weight: 600;
font-size: 1.2em;
}
.dropdown_content_link_subtitle {
color: #cfcfcf;
font-size: 1.066666666666667em;
}
.dropdownregattas {
width: 100%;
min-width: 21.333333333333332em;
margin-left: -0.666666666666667em;
}
.dropdownregattas_head {
display: inherit;
}
.dropdownregattas_head_title {
padding-left: 0.357142857142857em;
background: #f2f2f2;
color: #333;
border-radius: 0.107142857142857em;
border: 1px solid transparent;
}
.dropdownregattas_head_title:hover {
border: 1px solid #cfcfcf;
background-color: #eee;
text-decoration: none;
}
.dropdownregattas_head_title_button {
position: relative;
display: inline-block;
margin-left: 0.714285714285714em;
top: 50%;
height: 0.285714285714286em;
width: 0.428571428571429em;
background-image: url("images/home/dropdown__button--arrow@2x.png");
background-position: center bottom;
background-repeat: no-repeat;
background-size: 100%;
-webkit-transform: translate(-50%, -50%);
-moz-transform: translate(-50%, -50%);
-ms-transform: translate(-50%, -50%);
transform: translate(-50%, -50%);
float: none;
}
.dropdownregattas_content {
width: auto;
background-color: #fff;
border: 1px solid #ccc;
box-shadow: 0.133333333333333em 0.133333333333333em 0.333333333333333em #ccc;
}
.dropdownregattas_content_link {
position: relative;
border: none;
}
.dropdownregattas_content_link:hover {
text-decoration: none;
}
.dropdownregattas_content_linkactive:after {
content: '';
position: absolute;
right: 1.333333333333333em;
top: 50%;
height: 0.933333333333333em;
width: 0.933333333333333em;
background-image: url("images/home/dropdown__check@2x.png");
background-repeat: no-repeat;
background-position: right center;
background-size: contain;
-webkit-transform: translate(0, -50%);
-moz-transform: translate(0, -50%);
-ms-transform: translate(0, -50%);
transform: translate(0, -50%);
}
.dropdownregattas_content_link_title {
color: #666;
}
.leaderboardquickaccess {
font-size: 1rem;
text-align: right;
}
.eventheader {
position: relative;
font-size: 1rem;
color: #666;
background: #f2f2f2;
border-bottom: 1px solid #dedede;
}
.eventheader_breadcrumb {
font-size: 1rem;
/* @alternate */font-size: 0.866666666666667em;
font-weight: 600;
padding: 0.666666666666667em 0;
}
.eventheader_breadcrumbback {
position: absolute;
top: 0;
bottom: 0;
left: 0;
width: 1.333333333333333em;
border-right: 1px solid #cfcfcf;
background-color: #dedede;
background-image: url("images/home/breadcrumb-arrow__back.png");
background-position: center center;
background-repeat: no-repeat;
background-size: 50%;
-webkit-transition: background-color 0.2s, border-color 0.2s;
-moz-transition: background-color 0.2s, border-color 0.2s;
transition: background-color 0.2s, border-color 0.2s;
}
.eventheader_breadcrumbback:hover {
background-color: #cfcfcf;
}
.eventheader_intro {
padding-left: 6em;
margin: 0.666666666666667em 0;
min-height: 5em;
position: relative;
}
.eventheader_intro_logo {
position: absolute;
top: 0;
left: 0;
width: 5em;
height: 5em;
border: 0.333333333333333em solid #f6f9fc;
box-shadow: 0 0 5px rgba(238,238,238,0.5);
}
.eventheader_intro_logo_image {
height: 100%;
width: 100%;
background-position: center;
background-size: contain;
background-repeat: no-repeat;
}
.eventheader_intro_name {
display: inline-block;
margin: 0 0.333333333333333em 0 0;
font-size: 1.866666666666667em;
color: #333;
}
.eventheader_intro_details {
margin-bottom: 0.666666666666667em;
padding-bottom: 0.666666666666667em;
font-weight: 700;
color: #333;
}
.eventheader_intro_details_item {
display: inline-block;
border-left: 1px solid #cfcfcf;
margin: 0.266666666666667em 0 0.266666666666667em 0.333333333333333em;
padding-left: 0.666666666666667em;
color: #666;
}
.eventheader_intro_details_itemlink {
color: inherit;
}
.eventheader_intro_details_item:first-child {
margin-left: 0;
padding-left: 0;
border: none;
}
.eventheader_status {
text-align: right;
}
.eventheader_status_title {
text-transform: uppercase;
}
.eventheader_status_body {
font-size: 1rem;
}
.locationicon {
vertical-align: text-bottom;
margin-right: 0.333333333333333em;
}
.eventnavigation {
font-size: 0;
margin-bottom: -1px;
}
.eventnavigationnormal {
position: relative;
}
.eventnavigation_dropdown {
display: inline-block;
position: relative;
}
.eventnavigation_dropdown_toggle {
cursor: pointer;
display: inline-block;
}
@media (min-width: 61em) {
.eventnavigation_dropdown_toggle {
display: none;
}
}
.eventnavigation_dropdown_toggle_icon {
display: inline-block;
position: relative;
top: 50%;
width: 0.8em;
height: 0.533333333333333em;
vertical-align: middle;
background-image: url("images/home/dropdown__button--arrow@2x.png");
background-size: 100%;
background-repeat: no-repeat;
background-position: center bottom;
}
.eventnavigation_dropdown_container {
position: absolute;
left: 0;
z-index: 99;
}
@media (min-width: 61em) {
.eventnavigation_dropdown_container {
display: inline-block;
position: relative;
left: auto;
}
}
.eventnavigation_dropdown_containerhidden {
display: none;
}
@media (min-width: 61em) {
.eventnavigation_dropdown_containerhidden {
display: inline-block;
}
}
.eventnavigation_dropdown_container .navbar_button {
border-top-width: 0;
width: 16.666666666666668em;
}
@media (min-width: 61em) {
.eventnavigation_dropdown_container .navbar_button {
border-top-width: 1px;
width: auto;
}
}
@media (min-width: 61em) {
.eventnavigation_dropdown_container .navbar_buttonhidden {
display: inline-block;
}
}
.eventnavigation .navbar_button {
font-size: 1.2rem;
}
@@ -0,0 +1,49 @@
package com.sap.sailing.gwt.regattaoverview.client.eventheader;
import java.util.Date;
import com.google.gwt.core.client.GWT;
import com.google.gwt.dom.client.DivElement;
import com.google.gwt.dom.client.SpanElement;
import com.google.gwt.uibinder.client.UiBinder;
import com.google.gwt.uibinder.client.UiField;
import com.google.gwt.user.client.ui.Composite;
import com.google.gwt.user.client.ui.Widget;
import com.sap.sailing.gwt.home.client.shared.EventDatesFormatterUtil;
public class EventHeader extends Composite {
private static EventHeaderUiBinder uiBinder = GWT.create(EventHeaderUiBinder.class);
interface EventHeaderUiBinder extends UiBinder<Widget, EventHeader> {
}
@UiField DivElement eventLogo;
@UiField SpanElement eventName;
@UiField DivElement eventDate;
@UiField SpanElement eventVenue;
@UiField DivElement eventVenueContainer;
public EventHeader() {
EventHeaderResources.INSTANCE.css().ensureInjected();
initWidget(uiBinder.createAndBindUi(this));
}
public void setLogoUrl(String displayName, Date startDate, Date endDate, String venue, String url) {
final String logoUrl = url != null ? url : EventHeaderResources.INSTANCE.defaultEventLogoImage().getSafeUri()
.asString();
eventLogo.getStyle().setBackgroundImage("url(" + logoUrl + ")");
eventLogo.setTitle(displayName);
eventDate.setInnerHTML(EventDatesFormatterUtil.formatDateRangeWithYear(startDate, endDate));
eventVenue.setInnerText(venue);
// String venue = event.getLocationAndVenue();
// if(event.getVenueCountry() != null && !event.getVenueCountry().isEmpty()) {
// venue += ", " + event.getVenueCountry();
// }
}
}
@@ -0,0 +1,30 @@
<!DOCTYPE ui:UiBinder SYSTEM "http://dl.google.com/gwt/DTD/xhtml.ent">
<ui:UiBinder xmlns:ui="urn:ui:com.google.gwt.uibinder"
xmlns:g="urn:import:com.google.gwt.user.client.ui"
xmlns:s="urn:import:com.sap.sailing.gwt.home.client.shared" xmlns:t="urn:import:com.sap.sailing.gwt.common.client.controls.tabbar"
xmlns:sharing="urn:import:com.sap.sailing.gwt.home.client.shared.sharing">
<ui:with field="i18n" type="com.sap.sailing.gwt.ui.client.StringMessages" />
<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.partials.header.EventHeaderResources" />
<g:HTMLPanel addStyleNames="{res.mediaCss.grid}">
<div class="{res.mediaCss.small12} {res.mediaCss.large9} {res.mediaCss.columns}">
<div class="{local_res.css.eventheader_intro}">
<div class="{local_res.css.eventheader_intro_logo}">
<div ui:field="eventLogo" class="{local_res.css.eventheader_intro_logo_image}" />
</div>
<h2 ui:field="staticTitle" class="{local_res.css.eventheader_intro_name}">
<span ui:field="eventName"></span>
</h2>
<div class="{local_res.css.eventheader_intro_details}">
<!-- IF event.venue && event.eventType !== 'multi-regatta-event' -->
<div ui:field="eventDate" class="{local_res.css.eventheader_intro_details_item}">
</div>
<div ui:field="eventVenueContainer" class="{local_res.css.eventheader_intro_details_item}">
<img src="images/home/location-icon.png" class="{local_res.css.locationicon}"></img>
<span ui:field="eventVenue"></span>
</div>
</div>
</div>
</div>
</g:HTMLPanel>
</ui:UiBinder>
@@ -0,0 +1,64 @@
package com.sap.sailing.gwt.regattaoverview.client.eventheader;
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.ImageResource;
public interface EventHeaderResources extends ClientBundle {
public static final EventHeaderResources INSTANCE = GWT.create(EventHeaderResources.class);
@Source("EventHeader.gss")
LocalCss css();
public interface LocalCss extends CssResource {
String jsdropdown();
String jsdropdown_head();
String jsdropdown_content();
String dropdown();
String dropdown_head();
String dropdown_head_title();
String dropdown_head_title_button();
String dropdown_content();
String jsdropdownactive();
String dropdown_content_link();
String dropdown_content_link_title();
String dropdown_content_link_subtitle();
String dropdownregattas();
String dropdownregattas_head();
String dropdownregattas_head_title();
String dropdownregattas_head_title_button();
String dropdownregattas_content();
String dropdownregattas_content_link();
String dropdownregattas_content_linkactive();
String dropdownregattas_content_link_title();
String leaderboardquickaccess();
String eventheader();
String eventheader_breadcrumb();
String eventheader_breadcrumbback();
String eventheader_intro();
String eventheader_intro_logo();
String eventheader_intro_logo_image();
String eventheader_intro_name();
String eventheader_intro_details();
String eventheader_intro_details_item();
String eventheader_intro_details_itemlink();
String eventheader_status();
String eventheader_status_title();
String eventheader_status_body();
String locationicon();
String eventnavigation();
String eventnavigationnormal();
String eventnavigation_dropdown();
String eventnavigation_dropdown_toggle();
String eventnavigation_dropdown_toggle_icon();
String eventnavigation_dropdown_container();
String eventnavigation_dropdown_containerhidden();
String navbar_button();
String navbar_buttonhidden();
}
@Source("com/sap/sailing/gwt/home/images/default_event_logo.jpg")
ImageResource defaultEventLogoImage();
}
@@ -53,16 +53,18 @@
<!-- Turning CSS obfuscation on, which is the default -->
<!-- <set-configuration-property name="CssResource.style" value="obf"/> -->
<source path='common'/>
<source path='client'/>
<source path='controls'/>
<source path='components'/>
<source path='adminconsole'/>
<source path='leaderboard'/>
<source path='raceboard'/>
<inherits name='com.sap.sailing.gwt.ui.SourceClient'/>
<inherits name='com.sap.sailing.gwt.ui.SourceShared'/>
<inherits name='com.sap.sailing.gwt.ui.SourceCommon'/>
<inherits name='com.sap.sailing.gwt.ui.SourceControl'/>
<inherits name='com.sap.sailing.gwt.ui.SourceComponents'/>
<inherits name='com.sap.sailing.gwt.ui.SourceLeaderboard'/>
<inherits name='com.sap.sailing.gwt.ui.SourceRaceboard'/>
<source path='masterdataimport'/>
<source path='usermanagement'/>
<source path='shared'/>
<source path='test'/>
<source path='actions'/>
<source path='simulator'/>
@@ -0,0 +1,9 @@
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE module PUBLIC "-//Google Inc.//DTD Google Web Toolkit 2.7.0//EN" "http://gwtproject.org/doctype/2.7.0/gwt-module.dtd">
<module>
<inherits name='com.google.gwt.user.User'/>
<source path="actions"/>
</module>
@@ -0,0 +1,9 @@
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE module PUBLIC "-//Google Inc.//DTD Google Web Toolkit 2.7.0//EN" "http://gwtproject.org/doctype/2.7.0/gwt-module.dtd">
<module>
<inherits name='com.google.gwt.user.User'/>
<source path="client" />
</module>
@@ -0,0 +1,9 @@
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE module PUBLIC "-//Google Inc.//DTD Google Web Toolkit 2.7.0//EN" "http://gwtproject.org/doctype/2.7.0/gwt-module.dtd">
<module>
<inherits name='com.google.gwt.user.User'/>
<source path='common'/>
</module>
@@ -0,0 +1,9 @@
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE module PUBLIC "-//Google Inc.//DTD Google Web Toolkit 2.7.0//EN" "http://gwtproject.org/doctype/2.7.0/gwt-module.dtd">
<module>
<inherits name='com.google.gwt.user.User'/>
<source path="components"/>
</module>
@@ -0,0 +1,16 @@
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE module PUBLIC "-//Google Inc.//DTD Google Web Toolkit 2.7.0//EN" "http://gwtproject.org/doctype/2.7.0/gwt-module.dtd">
<module>
<inherits name='com.google.gwt.user.User'/>
<source path='controls'/>
<!-- TODO -->
<!-- <source path='masterdataimport'/> -->
<!-- <source path='shared'/> -->
<!-- <source path='test'/> -->
<!-- <source path='actions'/> -->
<!-- <source path='simulator'/> -->
</module>
@@ -0,0 +1,9 @@
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE module PUBLIC "-//Google Inc.//DTD Google Web Toolkit 2.7.0//EN" "http://gwtproject.org/doctype/2.7.0/gwt-module.dtd">
<module>
<inherits name='com.google.gwt.user.User'/>
<source path="leaderboard"/>
</module>
@@ -0,0 +1,9 @@
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE module PUBLIC "-//Google Inc.//DTD Google Web Toolkit 2.7.0//EN" "http://gwtproject.org/doctype/2.7.0/gwt-module.dtd">
<module>
<inherits name='com.google.gwt.user.User'/>
<source path="raceboard"/>
</module>
@@ -0,0 +1,8 @@
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE module PUBLIC "-//Google Inc.//DTD Google Web Toolkit 2.7.0//EN" "http://gwtproject.org/doctype/2.7.0/gwt-module.dtd">
<module>
<inherits name="com.google.gwt.user.User"/>
<source path="shared"/>
</module>
@@ -0,0 +1,16 @@
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE module PUBLIC "-//Google Inc.//DTD Google Web Toolkit 2.7.0//EN" "http://gwtproject.org/doctype/2.7.0/gwt-module.dtd">
<module>
<inherits name='com.google.gwt.user.User'/>
<source path='simulator'/>
<!-- TODO -->
<!-- <source path='masterdataimport'/> -->
<!-- <source path='shared'/> -->
<!-- <source path='test'/> -->
<!-- <source path='actions'/> -->
<!-- <source path='simulator'/> -->
</module>
@@ -0,0 +1,10 @@
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE module PUBLIC "-//Google Inc.//DTD Google Web Toolkit 2.7.0//EN" "http://gwtproject.org/doctype/2.7.0/gwt-module.dtd">
<module>
<inherits name='com.google.gwt.user.User'/>
<inherits name='com.sap.sailing.gwt.ui.SourceClient'/>
<inherits name='com.sap.sailing.gwt.ui.SourceCommon'/>
<inherits name='com.sap.sailing.gwt.ui.SourceControl'/>
</module>
File diff suppressed because it is too large. Load diff
@@ -99,7 +99,9 @@ enterVideoURL=Enter video URL...
defineNewConnection=Define a new connection
seriesLeaderboard=Series leaderboard
resultsMailRecipient=Results mail recipient
protestTimeFinishesAt=Protest time ends at
protestTime=Protest time
protestTimeFinishesAt=ends at
protestTimeFinishedAt=ended at
racesInLeaderboard=积分榜中的比赛轮次
pleaseEnterABoatClass=Please enter a boat class
estimatedTimeToNextWaypointInSecondsTooltip=参赛队到达下个航路点所需要的预计时间
@@ -776,7 +778,6 @@ optimality=Optimality
sortBy=Sort by
errorUpdatingRaceCourse=Error updating race course: {0}
raceWithThisNameAlreadyExistsInRegatta=A race with that name already exists in this regatta.
protestTimeFinishedAt=Protest time ended at
addCourseArea=Add course area
scoringSchemeHighPointFirstGetsOne=High Point, winner gets 1 point
valueAscending=Value (Ascending)
@@ -729,6 +729,7 @@ dropReplicaConnection=Разъединить соединение
timePanelName=Контроль времени
competitorFilterExplanation=Фильтр отображает всех участников, соответствующих критериям:
dropReplicaConnection=Разъединить соединения
protestTime=Protest time
protestTimeFinishesAt=Срок подачи протеста истекает в
protestTimeFinishedAt=Срок подачи протеста истек в
flags=Флаги
@@ -1,111 +0,0 @@
.cellTableWidget {
border-left: 1px solid #c9caca;
border-top: 1px solid #c9caca;
}
/** v-align images in the table header
* grey background for table header
*/
.cellTableHeader {
position: relative;
vertical-align: middle;
background-color: #e5e5e5;
border-right: 1px solid #ffffff !important;
border-top: none !important;
border-bottom: 1px solid #c9caca !important;
padding: 3px 12px;
text-align: center;
}
.cellTableFirstColumnHeader {
position: relative;
vertical-align: middle;
background-color: #e5e5e5;
border-left: none !important;
border-right: 1px solid #ffffff !important;
border-top: none !important;
border-bottom: 1px solid #c9caca !important;
padding: 3px 12px;
text-align: center;
}
.cellTableLastColumnHeader {
position: relative;
vertical-align: middle;
background-color: #e5e5e5;
border-right: 1px solid #c9caca !important;
border-top: none !important;
border-bottom: 1px solid #c9caca !important;
padding: 3px 12px;
text-align: center;
}
.cellTableHeader > span > img:first-child {
position: relative;
vertical-align: middle;
}
.cellTableEvenRow {
border-bottom: 1px solid #e5e5e5;
background-color: rgba(255,255,255,0.5);
}
.cellTableEvenRowCell {
border-right: 1px solid #c9caca !important;
border-left: none;
border-top: none !important;
border-bottom: 1px solid #c9caca !important;
padding: 5px 17px 5px !important;
white-space: nowrap;
}
.cellTableOddRow {
border-bottom: 1px solid #e5e5e5;
background-color: rgba(242,242,242,0.5);
}
.cellTableOddRowCell {
border-left: none !important;
border-right: 1px solid #c9caca !important;
border-top: none !important;
border-bottom: 1px solid #c9caca !important;
padding: 5px 17px 5px !important;
white-space: nowrap;
}
.cellTableHoveredRow {
background-color: rgba(229,242,249,0.5);
border-bottom: 1px solid #e5e5e5;
}
.cellTableSelectedRow {
color: #000000;
background-color: rgba(229,242,249,0.5);
border-right: 2px solid #21a0e4 !important;
border-left: 2px solid #21a0e4 !important;
border: 2px solid #21a0e4;
}
.cellTableSelectedRow > td:FIRST-CHILD {
border-left: 2px solid rgba(33,160,228,0.5) !important;
}
.cellTableSelectedRow > td:LAST-CHILD {
border-right: 2px solid rgba(33,160,228,0.5) !important;
}
.cellTableSelectedRowCell {
border-left: none;
border-right: 1px solid #e5e5e5;
border-top: 2px solid #21a0e4 !important;
border-bottom: 2px solid #21a0e4 !important;
}
.cellTableRaceNameColumnHeader {
background-color: #e0e0e0;
padding: 3px 12px;
}
.cellTableRaceNameColumn {
background-color: #e0e0e0 !important;
}
@@ -3930,20 +3930,26 @@ public class SailingServiceImpl extends ProxiedRemoteServiceServlet implements S
String regattaName = getRegattaNameFromLeaderboard(leaderboard);
if (leaderboard instanceof RegattaLeaderboard) {
RegattaLeaderboard regattaLeaderboard = (RegattaLeaderboard) leaderboard;
BoatClass boatClass = regattaLeaderboard.getRegatta().getBoatClass();
for (Series series : regattaLeaderboard.getRegatta().getSeries()) {
Map<String, List<RegattaOverviewEntryDTO>> entriesPerFleet = new HashMap<String, List<RegattaOverviewEntryDTO>>();
for (RaceColumn raceColumn : series.getRaceColumns()) {
getRegattaOverviewEntries(showOnlyRacesOfSameDay, dayToCheck,
usedCourseArea, leaderboard, regattaName, series.getName(), raceColumn, entriesPerFleet);
usedCourseArea, leaderboard, boatClass.getName(), regattaName, series.getName(), raceColumn, entriesPerFleet);
}
result.addAll(getRegattaOverviewEntriesToBeShown(showOnlyCurrentlyRunningRaces, entriesPerFleet));
}
} else {
} else if(leaderboard instanceof FlexibleLeaderboard) {
BoatClass boatClass = null;
for (TrackedRace trackedRace : leaderboard.getTrackedRaces()) {
boatClass = trackedRace.getRace().getBoatClass();
break;
}
Map<String, List<RegattaOverviewEntryDTO>> entriesPerFleet = new HashMap<String, List<RegattaOverviewEntryDTO>>();
for (RaceColumn raceColumn : leaderboard.getRaceColumns()) {
getRegattaOverviewEntries(showOnlyRacesOfSameDay, dayToCheck, usedCourseArea,
leaderboard, regattaName, LeaderboardNameConstants.DEFAULT_SERIES_NAME, raceColumn, entriesPerFleet);
leaderboard, boatClass.getName(), regattaName, LeaderboardNameConstants.DEFAULT_SERIES_NAME, raceColumn, entriesPerFleet);
}
result.addAll(getRegattaOverviewEntriesToBeShown(showOnlyCurrentlyRunningRaces, entriesPerFleet));
}
@@ -4080,12 +4086,12 @@ public class SailingServiceImpl extends ProxiedRemoteServiceServlet implements S
}
private void getRegattaOverviewEntries(boolean showOnlyRacesOfSameDay, Calendar dayToCheck,
CourseArea courseArea, Leaderboard leaderboard, String regattaName, String seriesName, RaceColumn raceColumn,
CourseArea courseArea, Leaderboard leaderboard, String boatClassName, String regattaName, String seriesName, RaceColumn raceColumn,
Map<String, List<RegattaOverviewEntryDTO>> entriesPerFleet) {
for (Fleet fleet : raceColumn.getFleets()) {
RegattaOverviewEntryDTO entry = createRegattaOverviewEntryDTO(courseArea,
leaderboard, regattaName, seriesName, raceColumn, fleet,
leaderboard, boatClassName, regattaName, seriesName, raceColumn, fleet,
showOnlyRacesOfSameDay, dayToCheck);
if (entry != null) {
addRegattaOverviewEntryToEntriesPerFleet(entriesPerFleet, fleet, entry);
@@ -4134,7 +4140,7 @@ public class SailingServiceImpl extends ProxiedRemoteServiceServlet implements S
entriesPerFleet.get(fleet.getName()).add(entry);
}
private RegattaOverviewEntryDTO createRegattaOverviewEntryDTO(CourseArea courseArea, Leaderboard leaderboard,
private RegattaOverviewEntryDTO createRegattaOverviewEntryDTO(CourseArea courseArea, Leaderboard leaderboard, String boatClassName,
String regattaName, String seriesName, RaceColumn raceColumn, Fleet fleet, boolean showOnlyRacesOfSameDay, Calendar dayToCheck) {
RegattaOverviewEntryDTO entry = new RegattaOverviewEntryDTO();
if (courseArea != null) {
@@ -4144,6 +4150,7 @@ public class SailingServiceImpl extends ProxiedRemoteServiceServlet implements S
entry.courseAreaName = "Default";
entry.courseAreaIdAsString = "Default";
}
entry.boatClassName = boatClassName;
entry.regattaDisplayName = regattaName;
entry.regattaName = leaderboard.getName();
entry.raceInfo = createRaceInfoDTO(seriesName, raceColumn, fleet);
@@ -10,6 +10,7 @@ public class RegattaOverviewEntryDTO implements IsSerializable {
public String regattaDisplayName;
public RaceInfoDTO raceInfo;
public String regattaName;
public String boatClassName;
public Date currentServerTime;
// for GWT serialization
@@ -17,4 +17,7 @@ Web-ContextPath: /theme
Export-Package: com.sap.sse.gwt.theme.client,
com.sap.sse.gwt.theme.client.component.celltable,
com.sap.sse.gwt.theme.client.component.imagegallery,
com.sap.sse.gwt.theme.client.component.videogallery
com.sap.sse.gwt.theme.client.component.videogallery,
com.sap.sse.gwt.theme.client.component.sapheader,
com.sap.sse.gwt.theme.client.component.sapheader2,
com.sap.sse.gwt.theme.client.resources
@@ -0,0 +1,62 @@
.siteheader {
font-size: 1rem;
background: #333;
border-bottom: 4px solid #f0ab00;
height: 75px;
line-height: 1,1em;
width: 100%;
overflow: hidden;
vertical-align: top;
position: relative;
}
.siteheaderLeft {
position: relative; top:10px;left:10px;
display: inline-block;
text-align: left;
height: 50px;
vertical-align: top;
}
.siteheaderCentered {
position: absolute; top:10px;left:235px;
display: inline-block;
text-align: left;
height:50px;
vertical-align: top;
}
.siteheaderRight {
position: absolute; top:10px;right:10px;
text-align: right;
display: inline-block;
height:50px;
vertical-align: top;
}
.logo {
margin: 0px;
display: inline-block;
}
.logotitle {
display: inline-block;
color: #f6f9fc;
font-weight: bold;
width: 150px;
height: 100%;
padding: 17px 15px 0 0;
line-height:1,1em;
vertical-align: top;
text-align: right;
border-right: 1px solid rgb(180,180,180);
margin: 0px;
margin-left: -25px;
box-sizing: border-box;
}
.pagetitle {
color: #ffffff;
font-size: 1.1rem;
font-weight: bold;
}
@@ -0,0 +1,39 @@
package com.sap.sse.gwt.theme.client.component.sapheader2;
import com.google.gwt.core.client.GWT;
import com.google.gwt.dom.client.DivElement;
import com.google.gwt.uibinder.client.UiBinder;
import com.google.gwt.uibinder.client.UiField;
import com.google.gwt.user.client.ui.Composite;
import com.google.gwt.user.client.ui.SimplePanel;
import com.google.gwt.user.client.ui.Widget;
public class SAPHeader2 extends Composite {
private static SAPHeaderUiBinder uiBinder = GWT.create(SAPHeaderUiBinder.class);
interface SAPHeaderUiBinder extends UiBinder<Widget, SAPHeader2> {
}
@UiField
DivElement applicationNameUi;
@UiField
SimplePanel pageTitleUi;
@UiField
SimplePanel rightSideUi;
public SAPHeader2(String applicationName, Widget pageTitle, boolean startInAutoScreenMode) {
SAPHeaderResources.INSTANCE.css().ensureInjected();
initWidget(uiBinder.createAndBindUi(this));
applicationNameUi.setInnerText(applicationName != null ? applicationName : "&nbsp;");
pageTitleUi.setWidget(pageTitle);
}
public void addWidgetToRightSide(Widget widget) {
rightSideUi.add(widget);
}
}
@@ -0,0 +1,18 @@
<!DOCTYPE ui:UiBinder SYSTEM "http://dl.google.com/gwt/DTD/xhtml.ent">
<ui:UiBinder xmlns:ui="urn:ui:com.google.gwt.uibinder"
xmlns:g="urn:import:com.google.gwt.user.client.ui">
<ui:with field="res" type="com.sap.sse.gwt.theme.client.resources.ThemeResources" />
<ui:with field="local_res" type="com.sap.sse.gwt.theme.client.component.sapheader2.SAPHeaderResources" />
<g:HTMLPanel>
<header class="{local_res.css.siteheader}">
<div class="{local_res.css.siteheaderLeft}">
<g:Image resource="{local_res.logo}" pixelSize="80, 40" altText="SAP Sailing Analytics" styleName="{local_res.css.logo}"/>
<div ui:field="applicationNameUi" class="{local_res.css.logotitle}"></div>
</div>
<g:SimplePanel ui:field="pageTitleUi" styleName="{local_res.css.siteheaderCentered}">
</g:SimplePanel>
<g:SimplePanel ui:field="rightSideUi" styleName="{local_res.css.siteheaderRight}">
</g:SimplePanel>
</header>
</g:HTMLPanel>
</ui:UiBinder>
@@ -0,0 +1,26 @@
package com.sap.sse.gwt.theme.client.component.sapheader2;
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.ImageResource;
public interface SAPHeaderResources extends ClientBundle {
public static final SAPHeaderResources INSTANCE = GWT.create(SAPHeaderResources.class);
@Source("SAPHeader2.gss")
LocalCss css();
public interface LocalCss extends CssResource {
String siteheader();
String siteheaderLeft();
String siteheaderCentered();
String siteheaderRight();
String logo();
String logotitle();
String pagetitle();
}
@Source("logo-small@2x.png")
ImageResource logo();
}
Binary file not shown.

After

Width:  |  Height:  |  Size: 6.2 KiB

@@ -4,10 +4,13 @@
.grid,
.stackenblochen {
display: block;
width: 100%;
max-width: 80rem;
/* width: 100%; */
/* max-width: 80rem; */
min-width: 720px;
list-style: none;
margin: 0 auto;
margin-left: 5rem;
margin-right: 5rem;
zoom: 1;
}
.grid:before,