mirror of
https://github.com/eclipse-sailing-analytics/sailing-analytics.git
synced 2026-11-03 17:49:40 +00:00
Merge branch 'browser-detection'
This commit is contained in:
commit
dd87237331
17 files changed
+254
-55
No files matched your search
@@ -6,3 +6,4 @@
|
||||
manifest.txt
|
||||
java/com.sap.sailing.gwt.ui/gwt-unitCache/*
|
||||
java/com.sap.sailing.gwt.ui/war/WEB-INF/deploy/*
|
||||
sailing_debug0*
|
||||
@@ -0,0 +1,28 @@
|
||||
<!doctype html>
|
||||
|
||||
<html>
|
||||
<head>
|
||||
<meta http-equiv="content-type" content="text/html; charset=UTF-8">
|
||||
|
||||
<!-- -->
|
||||
<!-- Consider inlining CSS to reduce the number of requested files -->
|
||||
<!-- -->
|
||||
<link rel="shortcut icon" type="image/x-icon" href="images/sap.ico" />
|
||||
<link href="CommonControls.css" rel="stylesheet" type="text/css">
|
||||
|
||||
<!-- -->
|
||||
<!-- Any title is fine -->
|
||||
<!-- -->
|
||||
<title>Your browser is unsupported</title>
|
||||
|
||||
</head>
|
||||
|
||||
<!-- -->
|
||||
<!-- The body can have arbitrary html, or -->
|
||||
<!-- you can leave the body empty if you want -->
|
||||
<!-- to create a completely dynamic UI. -->
|
||||
<!-- -->
|
||||
<body>
|
||||
<b>Your browser is unsupported.</b>
|
||||
</body>
|
||||
</html>
|
||||
@@ -26,6 +26,9 @@
|
||||
<!-- -->
|
||||
<title>SAP Sailing Analytics Spectator Vision</title>
|
||||
|
||||
<!-- Browser detection -->
|
||||
<script type="text/javascript" src="detection.js"></script>
|
||||
|
||||
<!-- -->
|
||||
<!-- This script loads your compiled module. -->
|
||||
<!-- If you add any GWT meta tags, they must -->
|
||||
|
||||
+9
-5
@@ -18,7 +18,6 @@ import com.google.gwt.user.client.ui.HTML;
|
||||
import com.google.gwt.user.client.ui.Label;
|
||||
import com.google.gwt.user.client.ui.RootPanel;
|
||||
import com.google.gwt.user.client.ui.VerticalPanel;
|
||||
import com.sap.sailing.gwt.ui.client.UserAgentChecker.UserAgentTypes;
|
||||
|
||||
public abstract class AbstractEntryPoint implements EntryPoint, ErrorReporter {
|
||||
|
||||
@@ -26,7 +25,7 @@ public abstract class AbstractEntryPoint implements EntryPoint, ErrorReporter {
|
||||
private HTML serverResponseLabel;
|
||||
private Button dialogCloseButton;
|
||||
protected StringMessages stringMessages;
|
||||
protected UserAgentTypes userAgentType;
|
||||
protected UserAgentDetails userAgent;
|
||||
|
||||
/**
|
||||
* Create a remote service proxy to talk to the server-side sailing service.
|
||||
@@ -48,8 +47,14 @@ public abstract class AbstractEntryPoint implements EntryPoint, ErrorReporter {
|
||||
@Override
|
||||
public void onModuleLoad() {
|
||||
stringMessages = GWT.create(StringMessages.class);
|
||||
errorDialogBox = createErrorDialog();
|
||||
userAgentType = UserAgentChecker.INSTANCE.checkUserAgent(Window.Navigator.getUserAgent());
|
||||
errorDialogBox = createErrorDialog(); /* TODO: Make this more generic (e.g. make it support all kinds of messages) */
|
||||
userAgent = new UserAgentDetails(Window.Navigator.getUserAgent());
|
||||
|
||||
/* throw warning using alert if browser is unsupported */
|
||||
if (!UserAgentChecker.INSTANCE.isUserAgentSupported(userAgent)) {
|
||||
Window.alert(stringMessages.warningBrowserUnsupported());
|
||||
}
|
||||
|
||||
ServiceDefTarget sailingServiceDef = (ServiceDefTarget) sailingService;
|
||||
ServiceDefTarget userManagementServiceDef = (ServiceDefTarget) userManagementService;
|
||||
String moduleBaseURL = GWT.getModuleBaseURL();
|
||||
@@ -79,7 +84,6 @@ public abstract class AbstractEntryPoint implements EntryPoint, ErrorReporter {
|
||||
public void createErrorPage(String message) {
|
||||
LogoAndTitlePanel logoAndTitlePanel = new LogoAndTitlePanel(stringMessages);
|
||||
logoAndTitlePanel.addStyleName("LogoAndTitlePanel");
|
||||
|
||||
RootPanel.get().add(logoAndTitlePanel);
|
||||
RootPanel.get().add(new Label(message));
|
||||
}
|
||||
|
||||
+2
-1
@@ -362,4 +362,5 @@ public interface StringMessages extends Messages {
|
||||
String errorAddingFragUrl(String message);
|
||||
String errorTryingToObtainLeaderboardContents(String message);
|
||||
String lastScoreUpdate();
|
||||
}
|
||||
String warningBrowserUnsupported();
|
||||
}
|
||||
+6
-1
@@ -359,5 +359,10 @@ errorRemovingFregUrls=Error removing FREG URLs: {0}
|
||||
pleaseEnterNonEmptyUrl=Please enter a non-empty URL
|
||||
addFragUrl=Add FRAG Result URL
|
||||
errorAddingFragUrl=Error adding FRAG URL: {0}
|
||||
<<<<<<< HEAD
|
||||
errorTryingToObtainLeaderboardContents=Error trying to obtain leaderboard contents: {0}
|
||||
lastScoreUpdate=Last score update
|
||||
lastScoreUpdate=Last score update
|
||||
warningBrowserUnsupported=Your browser is currently not supported. Please switch to a newer one.
|
||||
=======
|
||||
warningBrowserUnsupported=Your browser is currently not supported. Please switch to a newer one.
|
||||
>>>>>>> 90ad44fb95bfbb183e3fd7f3ecac4713904fcb0b
|
||||
+6
-1
@@ -360,5 +360,10 @@ errorRemovingFregUrls=Fehler beim Löschen von FREG URLs: {0}
|
||||
pleaseEnterNonEmptyUrl=Bitte eine nicht-leere URL eingeben
|
||||
addFragUrl=FRAG Ergebnis-URL hinzufügen
|
||||
errorAddingFragUrl=Fehler beim Hinzufügen einer FREG URL: {0}
|
||||
<<<<<<< HEAD
|
||||
errorTryingToObtainLeaderboardContents=Fehler beim Berechnen der Ergebnisliste: {0}
|
||||
lastScoreUpdate=Letzte Ergebnisänderung
|
||||
lastScoreUpdate=Letzte Ergebnisänderung
|
||||
warningBrowserUnsupported=Ihr Browser wird nicht unterstützt. Wir empfehlen den Firefox in der neuesten Version.
|
||||
=======
|
||||
warningBrowserUnsupported=Ihr Browser wird nicht unterstützt. Wir empfehlen den Firefox in der neuesten Version.
|
||||
>>>>>>> 90ad44fb95bfbb183e3fd7f3ecac4713904fcb0b
|
||||
+8
-4
@@ -2,10 +2,14 @@ package com.sap.sailing.gwt.ui.client;
|
||||
|
||||
public interface UserAgentChecker {
|
||||
|
||||
public enum UserAgentTypes{ DESKTOP, MOBILE, UNKNOWN }
|
||||
|
||||
public final UserAgentCheckerImpl INSTANCE = new UserAgentCheckerImpl();
|
||||
|
||||
public UserAgentTypes checkUserAgent(String userAgent);
|
||||
|
||||
/**
|
||||
* Returns false if the given userAgent is not supported.
|
||||
*
|
||||
* @param userAgent the user agent string as provided by Window.Navigator.getUserAgent()
|
||||
* @return true if the agent is supported
|
||||
*/
|
||||
public boolean isUserAgentSupported(UserAgentDetails details);
|
||||
|
||||
}
|
||||
+24
-18
@@ -1,25 +1,31 @@
|
||||
package com.sap.sailing.gwt.ui.client;
|
||||
|
||||
import java.util.HashMap;
|
||||
|
||||
import com.sap.sailing.gwt.ui.client.UserAgentDetails.AgentTypes;
|
||||
|
||||
public class UserAgentCheckerImpl implements UserAgentChecker {
|
||||
|
||||
private static final String[] MOBILE_SPECIFIC_SUBSTRING = { "iPhone", "Android", "MIDP", "Opera Mobi", "iPad",
|
||||
"Opera Mini", "BlackBerry", "HP iPAQ", "IEMobile", "MSIEMobile", "Windows Phone", "HTC", "LG", "MOT",
|
||||
"Nokia", "Symbian", "Fennec", "Maemo", "Tear", "Midori", "armv", "Windows CE", "WindowsCE", "Smartphone",
|
||||
"240x320", "176x220", "320x320", "160x160", "webOS", "Palm", "Sagem", "Samsung", "SGH", "SIE",
|
||||
"SonyEricsson", "MMP", "UCWEB" };
|
||||
|
||||
@Override
|
||||
public UserAgentTypes checkUserAgent(String userAgent) {
|
||||
UserAgentTypes agentType = UserAgentTypes.DESKTOP;
|
||||
for (String mobile : MOBILE_SPECIFIC_SUBSTRING) {
|
||||
if (userAgent.contains(mobile) || userAgent.contains(mobile.toUpperCase())
|
||||
|| userAgent.contains(mobile.toLowerCase())) {
|
||||
agentType = UserAgentTypes.MOBILE;
|
||||
break;
|
||||
}
|
||||
}
|
||||
return agentType;
|
||||
}
|
||||
@SuppressWarnings("serial")
|
||||
private static final HashMap<AgentTypes, Integer> UNSUPPORTED_AGENTS = new HashMap<AgentTypes, Integer>() {{
|
||||
put(AgentTypes.MSIE, 9);
|
||||
put(AgentTypes.SAFARI, 5);
|
||||
put(AgentTypes.OPERA, 10);
|
||||
put(AgentTypes.FIREFOX, 10);
|
||||
put(AgentTypes.CHROME, 20);
|
||||
|
||||
}};
|
||||
|
||||
@Override
|
||||
public boolean isUserAgentSupported(UserAgentDetails details) {
|
||||
if (UNSUPPORTED_AGENTS.containsKey(details.getType())) {
|
||||
if (details.getVersion()[0] < UNSUPPORTED_AGENTS.get(details.getType())) {
|
||||
return false;
|
||||
}
|
||||
}
|
||||
|
||||
/* returning true for entries not listed */
|
||||
return true;
|
||||
}
|
||||
|
||||
}
|
||||
+142
@@ -0,0 +1,142 @@
|
||||
package com.sap.sailing.gwt.ui.client;
|
||||
|
||||
/**
|
||||
* This class holds user agent specific details like type and version.
|
||||
*
|
||||
* @author Simon Pamies (info@pamies.de)
|
||||
* @since Jul 21, 2012
|
||||
*/
|
||||
public class UserAgentDetails {
|
||||
|
||||
public enum AgentTypes {
|
||||
MSIE, FIREFOX, SAFARI, OPERA, CHROME, UNKNOWN
|
||||
}
|
||||
|
||||
public static enum PlatformTypes {
|
||||
DESKTOP, MOBILE, UNKNOWN
|
||||
}
|
||||
|
||||
static final String[] MOBILE_SPECIFIC_SUBSTRING = { "iPhone", "Android", "MIDP", "Opera Mobi", "iPad",
|
||||
"Opera Mini", "BlackBerry", "HP iPAQ", "IEMobile", "MSIEMobile", "Windows Phone", "HTC", "LG", "MOT",
|
||||
"Nokia", "Symbian", "Fennec", "Maemo", "Tear", "Midori", "armv", "Windows CE", "WindowsCE", "Smartphone",
|
||||
"240x320", "176x220", "320x320", "160x160", "webOS", "Palm", "Sagem", "Samsung", "SGH", "SIE",
|
||||
"SonyEricsson", "MMP", "UCWEB" };
|
||||
|
||||
private AgentTypes type;
|
||||
private Integer[] version;
|
||||
private PlatformTypes platform;
|
||||
private String userAgentRaw;
|
||||
|
||||
public UserAgentDetails(String userAgent) {
|
||||
|
||||
userAgent = userAgent.toLowerCase();
|
||||
try {
|
||||
if (userAgent.indexOf("msie") != -1 && !(userAgent.indexOf("opera") != -1)
|
||||
&& (userAgent.indexOf("webtv") == -1)) {
|
||||
String ieVersionString = userAgent.substring(userAgent.indexOf("msie ") + 5);
|
||||
ieVersionString = safeSubstring(ieVersionString, 0, ieVersionString.indexOf(";"));
|
||||
setType(AgentTypes.MSIE);
|
||||
setVersion(parseVersionString(ieVersionString));
|
||||
} else if (userAgent.indexOf(" firefox/") != -1) {
|
||||
int i = userAgent.indexOf(" firefox/") + 9;
|
||||
setType(AgentTypes.FIREFOX);
|
||||
setVersion(parseVersionString(safeSubstring(userAgent, i, i + 5)));
|
||||
} else if (userAgent.indexOf(" chrome/") != -1) {
|
||||
int i = userAgent.indexOf(" chrome/") + 8;
|
||||
setType(AgentTypes.CHROME);
|
||||
setVersion(parseVersionString(safeSubstring(userAgent, i, i + 5)));
|
||||
} else if (!(userAgent.indexOf(" chrome/") != -1) && userAgent.indexOf("safari") != -1) {
|
||||
int i = userAgent.indexOf(" version/") + 9;
|
||||
setType(AgentTypes.SAFARI);
|
||||
setVersion(parseVersionString(safeSubstring(userAgent, i, i + 5)));
|
||||
} else if (userAgent.indexOf("opera") != -1) {
|
||||
int i = userAgent.indexOf(" version/");
|
||||
if (i != -1) {
|
||||
i += 9; /* " version/".length */
|
||||
} else {
|
||||
i = userAgent.indexOf("opera/") + 6;
|
||||
}
|
||||
setType(AgentTypes.OPERA);
|
||||
setVersion(parseVersionString(safeSubstring(userAgent, i, i + 5)));
|
||||
}
|
||||
} catch (Exception e) {
|
||||
/* Silently ignore but provide default values */
|
||||
setType(AgentTypes.UNKNOWN);
|
||||
setVersion(new Integer[] { -1, -1 });
|
||||
}
|
||||
userAgentRaw = userAgent;
|
||||
}
|
||||
|
||||
/**
|
||||
* Returns indicator if agent is mobile or desktop. Do NOT invoke this method repeatedly (e.g. at every request)
|
||||
* because it has runtime of O(~20)!
|
||||
*
|
||||
* @return {@link PlatformTypes} describing if user agent is mobile or not
|
||||
*/
|
||||
public PlatformTypes isMobile() {
|
||||
setPlatform(UserAgentDetails.PlatformTypes.DESKTOP);
|
||||
for (String mobile : UserAgentDetails.MOBILE_SPECIFIC_SUBSTRING) {
|
||||
if (userAgentRaw.contains(mobile) || userAgentRaw.contains(mobile.toUpperCase())
|
||||
|| userAgentRaw.contains(mobile.toLowerCase())) {
|
||||
setPlatform(UserAgentDetails.PlatformTypes.MOBILE);
|
||||
break;
|
||||
}
|
||||
}
|
||||
return getPlatform();
|
||||
}
|
||||
|
||||
private Integer[] parseVersionString(String versionString) {
|
||||
Integer[] version = new Integer[] { -1, -1 };
|
||||
|
||||
int idx = versionString.indexOf('.');
|
||||
if (idx < 0) {
|
||||
idx = versionString.length();
|
||||
}
|
||||
version[0] = Integer.parseInt(safeSubstring(versionString, 0, idx));
|
||||
|
||||
int idx2 = versionString.indexOf('.', idx + 1);
|
||||
if (idx2 < 0) {
|
||||
idx2 = versionString.length();
|
||||
}
|
||||
try {
|
||||
version[1] = Integer.parseInt(safeSubstring(versionString, idx + 1, idx2).replaceAll("[^0-9].*", ""));
|
||||
} catch (NumberFormatException e) {
|
||||
// leave the minor version unmodified (-1 = unknown)
|
||||
}
|
||||
return version;
|
||||
}
|
||||
|
||||
private String safeSubstring(String string, int beginIndex, int endIndex) {
|
||||
if (beginIndex < 0) {
|
||||
beginIndex = 0;
|
||||
}
|
||||
if (endIndex < 0 || endIndex > string.length()) {
|
||||
endIndex = string.length();
|
||||
}
|
||||
return string.substring(beginIndex, endIndex);
|
||||
}
|
||||
|
||||
public AgentTypes getType() {
|
||||
return type;
|
||||
}
|
||||
|
||||
public void setType(AgentTypes name) {
|
||||
this.type = name;
|
||||
}
|
||||
|
||||
public Integer[] getVersion() {
|
||||
return version;
|
||||
}
|
||||
|
||||
public void setVersion(Integer[] version) {
|
||||
this.version = version;
|
||||
}
|
||||
|
||||
public PlatformTypes getPlatform() {
|
||||
return platform;
|
||||
}
|
||||
|
||||
public void setPlatform(PlatformTypes platform) {
|
||||
this.platform = platform;
|
||||
}
|
||||
}
|
||||
+2
-2
@@ -85,7 +85,7 @@ public class LeaderboardEntryPoint extends AbstractEntryPoint {
|
||||
Timer timer = new Timer(PlayModes.Live, 1000l);
|
||||
timer.setLivePlayDelayInMillis(delayToLiveMillis);
|
||||
TVViewPanel tvViewPanel = new TVViewPanel(sailingService, stringMessages, this, leaderboardName,
|
||||
userAgentType, null, timer, logoAndTitlePanel, mainPanel, showRaceDetails);
|
||||
userAgent, null, timer, logoAndTitlePanel, mainPanel, showRaceDetails);
|
||||
contentScrollPanel.setWidget(tvViewPanel);
|
||||
} else {
|
||||
Timer timer = new Timer(PlayModes.Replay, /* delayBetweenAutoAdvancesInMilliseconds */3000l);
|
||||
@@ -98,7 +98,7 @@ public class LeaderboardEntryPoint extends AbstractEntryPoint {
|
||||
leaderboardSettings,
|
||||
getPreselectedRace(Window.Location.getParameterMap()), new CompetitorSelectionModel(
|
||||
/* hasMultiSelection */true), timer, leaderboardName, leaderboardGroupName,
|
||||
LeaderboardEntryPoint.this, stringMessages, userAgentType, showRaceDetails);
|
||||
LeaderboardEntryPoint.this, stringMessages, userAgent, showRaceDetails);
|
||||
contentScrollPanel.setWidget(leaderboardPanel);
|
||||
}
|
||||
|
||||
|
||||
+7
-7
@@ -68,7 +68,7 @@ import com.sap.sailing.gwt.ui.client.TimeListener;
|
||||
import com.sap.sailing.gwt.ui.client.Timer;
|
||||
import com.sap.sailing.gwt.ui.client.Timer.PlayModes;
|
||||
import com.sap.sailing.gwt.ui.client.Timer.PlayStates;
|
||||
import com.sap.sailing.gwt.ui.client.UserAgentChecker.UserAgentTypes;
|
||||
import com.sap.sailing.gwt.ui.client.UserAgentDetails;
|
||||
import com.sap.sailing.gwt.ui.leaderboard.LegDetailColumn.LegDetailField;
|
||||
import com.sap.sailing.gwt.ui.shared.AbstractLeaderboardDTO;
|
||||
import com.sap.sailing.gwt.ui.shared.CompetitorDTO;
|
||||
@@ -962,21 +962,21 @@ public class LeaderboardPanel extends FormPanel implements TimeListener, PlaySta
|
||||
public LeaderboardPanel(SailingServiceAsync sailingService, AsyncActionsExecutor asyncActionsExecutor, LeaderboardSettings settings,
|
||||
CompetitorSelectionProvider competitorSelectionProvider, String leaderboardName,
|
||||
String leaderboardGroupName, ErrorReporter errorReporter, final StringMessages stringMessages,
|
||||
final UserAgentTypes userAgentType, boolean showRaceDetails) {
|
||||
final UserAgentDetails userAgent, boolean showRaceDetails) {
|
||||
this(sailingService, asyncActionsExecutor, settings, /* preSelectedRace */null, competitorSelectionProvider, leaderboardName,
|
||||
leaderboardGroupName, errorReporter, stringMessages, userAgentType, showRaceDetails);
|
||||
leaderboardGroupName, errorReporter, stringMessages, userAgent, showRaceDetails);
|
||||
}
|
||||
|
||||
public LeaderboardPanel(SailingServiceAsync sailingService, AsyncActionsExecutor asyncActionsExecutor, LeaderboardSettings settings, RaceIdentifier preSelectedRace,
|
||||
CompetitorSelectionProvider competitorSelectionProvider, String leaderboardName, String leaderboardGroupName,
|
||||
ErrorReporter errorReporter, final StringMessages stringMessages, final UserAgentTypes userAgentType, boolean showRaceDetails) {
|
||||
ErrorReporter errorReporter, final StringMessages stringMessages, final UserAgentDetails userAgent, boolean showRaceDetails) {
|
||||
this(sailingService, asyncActionsExecutor, settings, preSelectedRace, competitorSelectionProvider, new Timer(PlayModes.Replay, /* delayBetweenAutoAdvancesInMilliseconds */3000l),
|
||||
leaderboardName, leaderboardGroupName, errorReporter, stringMessages, userAgentType, showRaceDetails);
|
||||
leaderboardName, leaderboardGroupName, errorReporter, stringMessages, userAgent, showRaceDetails);
|
||||
}
|
||||
|
||||
public LeaderboardPanel(SailingServiceAsync sailingService, AsyncActionsExecutor asyncActionsExecutor, LeaderboardSettings settings, RaceIdentifier preSelectedRace,
|
||||
CompetitorSelectionProvider competitorSelectionProvider, Timer timer, String leaderboardName, String leaderboardGroupName,
|
||||
ErrorReporter errorReporter, final StringMessages stringMessages, final UserAgentTypes userAgentType, boolean showRaceDetails) {
|
||||
ErrorReporter errorReporter, final StringMessages stringMessages, final UserAgentDetails userAgent, boolean showRaceDetails) {
|
||||
this.showRaceDetails = showRaceDetails;
|
||||
this.sailingService = sailingService;
|
||||
this.asyncActionsExecutor = asyncActionsExecutor;
|
||||
@@ -1014,7 +1014,7 @@ public class LeaderboardPanel extends FormPanel implements TimeListener, PlaySta
|
||||
leaderboardTable = new CellTableWithStylableHeaders<LeaderboardRowDTO>(
|
||||
/* pageSize */10000, tableResources);
|
||||
getLeaderboardTable().setWidth("100%");
|
||||
if (userAgentType == UserAgentTypes.MOBILE) {
|
||||
if (userAgent.isMobile() == UserAgentDetails.PlatformTypes.MOBILE) {
|
||||
leaderboardSelectionModel = new ToggleSelectionModel<LeaderboardRowDTO>();
|
||||
} else {
|
||||
leaderboardSelectionModel = new MultiSelectionModel<LeaderboardRowDTO>();
|
||||
|
||||
+6
-6
@@ -24,7 +24,7 @@ import com.sap.sailing.gwt.ui.client.SailingServiceAsync;
|
||||
import com.sap.sailing.gwt.ui.client.StringMessages;
|
||||
import com.sap.sailing.gwt.ui.client.Timer;
|
||||
import com.sap.sailing.gwt.ui.client.Timer.PlayModes;
|
||||
import com.sap.sailing.gwt.ui.client.UserAgentChecker.UserAgentTypes;
|
||||
import com.sap.sailing.gwt.ui.client.UserAgentDetails;
|
||||
import com.sap.sailing.gwt.ui.raceboard.RaceBoardPanel;
|
||||
import com.sap.sailing.gwt.ui.raceboard.RaceBoardViewModes;
|
||||
import com.sap.sailing.gwt.ui.shared.FleetDTO;
|
||||
@@ -38,7 +38,7 @@ public class TVViewPanel extends SimplePanel implements RaceTimesInfoProviderLis
|
||||
private final SailingServiceAsync sailingService;
|
||||
private final StringMessages stringMessages;
|
||||
private final ErrorReporter errorReporter;
|
||||
private final UserAgentTypes userAgentType;
|
||||
private final UserAgentDetails userAgent;
|
||||
private final UserDTO userDTO;
|
||||
private final LogoAndTitlePanel logoAndTitlePanel;
|
||||
private final DockLayoutPanel dockPanel;
|
||||
@@ -60,13 +60,13 @@ public class TVViewPanel extends SimplePanel implements RaceTimesInfoProviderLis
|
||||
* @param logoAndTitlePanel allowed to be <code>null</code>
|
||||
*/
|
||||
public TVViewPanel(SailingServiceAsync sailingService, StringMessages stringMessages, ErrorReporter errorReporter,
|
||||
String leaderboardName, UserAgentTypes userAgentType, UserDTO userDTO, Timer timer,
|
||||
String leaderboardName, UserAgentDetails userAgent, UserDTO userDTO, Timer timer,
|
||||
LogoAndTitlePanel logoAndTitlePanel, DockLayoutPanel dockPanel, boolean showRaceDetails) {
|
||||
setSize("100%", "100%");
|
||||
this.sailingService = sailingService;
|
||||
this.stringMessages = stringMessages;
|
||||
this.errorReporter = errorReporter;
|
||||
this.userAgentType = userAgentType;
|
||||
this.userAgent = userAgent;
|
||||
this.userDTO = userDTO;
|
||||
this.logoAndTitlePanel = logoAndTitlePanel;
|
||||
this.dockPanel = dockPanel;
|
||||
@@ -90,7 +90,7 @@ public class TVViewPanel extends SimplePanel implements RaceTimesInfoProviderLis
|
||||
Timer timer = new Timer(PlayModes.Live, /* delayBetweenAutoAdvancesInMilliseconds */3000l);
|
||||
LeaderboardPanel leaderboardPanel = new LeaderboardPanel(sailingService, new AsyncActionsExecutor(), settings,
|
||||
/* preSelectedRace */null, selectionModel, timer, leaderboardName, null, errorReporter, stringMessages,
|
||||
userAgentType, showRaceDetails) {
|
||||
userAgent, showRaceDetails) {
|
||||
@Override
|
||||
protected void setLeaderboard(LeaderboardDTO leaderboard) {
|
||||
super.setLeaderboard(leaderboard);
|
||||
@@ -122,7 +122,7 @@ public class TVViewPanel extends SimplePanel implements RaceTimesInfoProviderLis
|
||||
List<RegattaAndRaceIdentifier> singletonList = Collections.singletonList(raceToShow);
|
||||
raceSelectionModel.setSelection(singletonList);
|
||||
RaceBoardPanel raceBoardPanel = new RaceBoardPanel(sailingService, userDTO, timer, raceSelectionModel, leaderboardName, null,
|
||||
errorReporter, stringMessages, userAgentType, RaceBoardViewModes.ONESCREEN, raceTimesInfoProvider);
|
||||
errorReporter, stringMessages, userAgent, RaceBoardViewModes.ONESCREEN, raceTimesInfoProvider);
|
||||
return raceBoardPanel;
|
||||
}
|
||||
|
||||
|
||||
+3
-3
@@ -40,7 +40,7 @@ import com.sap.sailing.gwt.ui.client.CompetitorSelectionModel;
|
||||
import com.sap.sailing.gwt.ui.client.ErrorReporter;
|
||||
import com.sap.sailing.gwt.ui.client.SailingServiceAsync;
|
||||
import com.sap.sailing.gwt.ui.client.StringMessages;
|
||||
import com.sap.sailing.gwt.ui.client.UserAgentChecker.UserAgentTypes;
|
||||
import com.sap.sailing.gwt.ui.client.UserAgentDetails;
|
||||
import com.sap.sailing.gwt.ui.leaderboard.LeaderboardPanel;
|
||||
import com.sap.sailing.gwt.ui.leaderboard.LeaderboardSettingsFactory;
|
||||
import com.sap.sailing.gwt.ui.shared.BoatClassDTO;
|
||||
@@ -370,11 +370,11 @@ public class EditableLeaderboardPanel extends LeaderboardPanel {
|
||||
|
||||
public EditableLeaderboardPanel(final SailingServiceAsync sailingService, AsyncActionsExecutor asyncActionsExecutor,
|
||||
String leaderboardName, String leaderboardGroupName, final ErrorReporter errorReporter,
|
||||
final StringMessages stringMessages, UserAgentTypes userAgentType) {
|
||||
final StringMessages stringMessages, UserAgentDetails userAgent) {
|
||||
super(sailingService, asyncActionsExecutor, LeaderboardSettingsFactory.getInstance().createNewDefaultSettings(
|
||||
/* racesToShow */ null, /* namesOfRacesToShow */ null, null, /* autoExpandFirstRace */false),
|
||||
new CompetitorSelectionModel(/* hasMultiSelection */true),
|
||||
leaderboardName, leaderboardGroupName, errorReporter, stringMessages, userAgentType, /* showRaceDetails */ true);
|
||||
leaderboardName, leaderboardGroupName, errorReporter, stringMessages, userAgent, /* showRaceDetails */ true);
|
||||
ImageResource importIcon = resources.importIcon();
|
||||
Anchor importAnchor = new Anchor(AbstractImagePrototype.create(importIcon).getSafeHtml());
|
||||
getRefreshAndSettingsPanel().insert(importAnchor, 0);
|
||||
|
||||
+1
-1
@@ -22,7 +22,7 @@ public class LeaderboardEditPage extends AbstractEntryPoint {
|
||||
LogoAndTitlePanel logoAndTitlePanel = new LogoAndTitlePanel(stringMessages.editScores(), stringMessages);
|
||||
logoAndTitlePanel.addStyleName("LogoAndTitlePanel");
|
||||
EditableLeaderboardPanel leaderboardPanel = new EditableLeaderboardPanel(sailingService, new AsyncActionsExecutor(), leaderboardName, null,
|
||||
LeaderboardEditPage.this, stringMessages, userAgentType);
|
||||
LeaderboardEditPage.this, stringMessages, userAgent);
|
||||
RootPanel.get().add(logoAndTitlePanel);
|
||||
RootPanel.get().add(leaderboardPanel);
|
||||
} else {
|
||||
|
||||
+1
-1
@@ -130,7 +130,7 @@ public class RaceBoardEntryPoint extends AbstractEntryPoint {
|
||||
Timer timer = new Timer(PlayModes.Replay, 1000l);
|
||||
RaceTimesInfoProvider raceTimesInfoProvider = new RaceTimesInfoProvider(sailingService, this, singletonList, 5000l /* requestInterval*/);
|
||||
RaceBoardPanel raceBoardPanel = new RaceBoardPanel(sailingService, user, timer, raceSelectionModel, leaderboardName, leaderboardGroupName,
|
||||
RaceBoardEntryPoint.this, stringMessages, userAgentType, viewMode, raceTimesInfoProvider);
|
||||
RaceBoardEntryPoint.this, stringMessages, userAgent, viewMode, raceTimesInfoProvider);
|
||||
raceBoardPanel.fillRegattas(regattas);
|
||||
|
||||
switch (viewMode) {
|
||||
|
||||
+5
-5
@@ -35,7 +35,7 @@ import com.sap.sailing.gwt.ui.client.StringMessages;
|
||||
import com.sap.sailing.gwt.ui.client.TimeListener;
|
||||
import com.sap.sailing.gwt.ui.client.TimeZoomModel;
|
||||
import com.sap.sailing.gwt.ui.client.Timer;
|
||||
import com.sap.sailing.gwt.ui.client.UserAgentChecker.UserAgentTypes;
|
||||
import com.sap.sailing.gwt.ui.client.UserAgentDetails;
|
||||
import com.sap.sailing.gwt.ui.leaderboard.LeaderboardPanel;
|
||||
import com.sap.sailing.gwt.ui.leaderboard.LeaderboardSettings;
|
||||
import com.sap.sailing.gwt.ui.leaderboard.LeaderboardSettingsFactory;
|
||||
@@ -82,7 +82,7 @@ public class RaceBoardPanel extends FormPanel implements RegattaDisplayer, RaceS
|
||||
private RaceTimePanel timePanel;
|
||||
private final Timer timer;
|
||||
private final RaceSelectionProvider raceSelectionProvider;
|
||||
private final UserAgentTypes userAgentType;
|
||||
private final UserAgentDetails userAgent;
|
||||
private final CompetitorSelectionModel competitorSelectionModel;
|
||||
private final TimeZoomModel timeZoomModel;
|
||||
private final RegattaAndRaceIdentifier selectedRaceIdentifier;
|
||||
@@ -102,7 +102,7 @@ public class RaceBoardPanel extends FormPanel implements RegattaDisplayer, RaceS
|
||||
|
||||
public RaceBoardPanel(SailingServiceAsync sailingService, UserDTO theUser, Timer timer,
|
||||
RaceSelectionProvider theRaceSelectionProvider, String leaderboardName, String leaderboardGroupName,
|
||||
ErrorReporter errorReporter, final StringMessages stringMessages, UserAgentTypes userAgentType,
|
||||
ErrorReporter errorReporter, final StringMessages stringMessages, UserAgentDetails userAgent,
|
||||
RaceBoardViewModes viewMode, RaceTimesInfoProvider raceTimesInfoProvider) {
|
||||
this.sailingService = sailingService;
|
||||
this.stringMessages = stringMessages;
|
||||
@@ -114,7 +114,7 @@ public class RaceBoardPanel extends FormPanel implements RegattaDisplayer, RaceS
|
||||
selectedRaceIdentifier = raceSelectionProvider.getSelectedRaces().iterator().next();
|
||||
this.setRaceBoardName(selectedRaceIdentifier.getRaceName());
|
||||
this.errorReporter = errorReporter;
|
||||
this.userAgentType = userAgentType;
|
||||
this.userAgent = userAgent;
|
||||
this.viewMode = viewMode;
|
||||
asyncActionsExecutor = new AsyncActionsExecutor();
|
||||
FlowPanel mainPanel = new FlowPanel();
|
||||
@@ -199,7 +199,7 @@ public class RaceBoardPanel extends FormPanel implements RegattaDisplayer, RaceS
|
||||
/* nameOfRaceColumnToShow */null, /* nameOfRaceToShow */selectedRaceIdentifier.getRaceName());
|
||||
return new LeaderboardPanel(sailingService, asyncActionsExecutor, leaderBoardSettings, selectedRaceIdentifier,
|
||||
competitorSelectionModel, timer, leaderboardName, leaderboardGroupName, errorReporter, stringMessages,
|
||||
userAgentType, /* showRaceDetails */ true);
|
||||
userAgent, /* showRaceDetails */ true);
|
||||
}
|
||||
|
||||
private <SettingsType> void addComponentToNavigationMenu(final ComponentViewer componentViewer,
|
||||
|
||||
Reference in new issue
Block a user