mirror of
https://github.com/eclipse-sailing-analytics/sailing-analytics.git
synced 2026-10-07 21:01:03 +00:00
implemented fullscreen button for autoplay mode
This commit is contained in:
1 parent
c2549da3af
commit
bdba5c9924
8 files changed
+61
-52
No files matched your search
+18
-6
@@ -22,6 +22,7 @@ import com.sap.sailing.domain.common.dto.RaceColumnDTO;
|
||||
import com.sap.sailing.gwt.autoplay.client.shared.header.SAPHeader;
|
||||
import com.sap.sailing.gwt.autoplay.client.shared.oldleaderboard.OldLeaderboard;
|
||||
import com.sap.sailing.gwt.common.client.CSS3Util;
|
||||
import com.sap.sailing.gwt.common.client.FullscreenUtil;
|
||||
import com.sap.sailing.gwt.common.client.i18n.TextMessages;
|
||||
import com.sap.sailing.gwt.ui.client.CompetitorSelectionModel;
|
||||
import com.sap.sailing.gwt.ui.client.ErrorReporter;
|
||||
@@ -59,13 +60,15 @@ public class AutoPlayController implements RaceTimesInfoProviderListener {
|
||||
private final Timer raceboardTimer;
|
||||
private final RaceTimesInfoProvider raceTimesInfoProvider;
|
||||
private AutoPlayModes activeTvView;
|
||||
private final boolean isfullscreenMode;
|
||||
private boolean isInitialScreen = true;
|
||||
|
||||
// leaderboard related attributes
|
||||
private LeaderboardDTO leaderboard;
|
||||
private final String leaderboardName;
|
||||
private final String leaderboardGroupName;
|
||||
private final String leaderboardZoom;
|
||||
private LeaderboardSettings leaderboardSettings;
|
||||
private LeaderboardSettings leaderboardSettings;
|
||||
|
||||
// raceboard related attributes
|
||||
private RegattaAndRaceIdentifier currentLiveRace;
|
||||
@@ -77,12 +80,13 @@ public class AutoPlayController implements RaceTimesInfoProviderListener {
|
||||
|
||||
private static int SAP_HEADER_HEIGHT = 70;
|
||||
|
||||
public AutoPlayController(SailingServiceAsync sailingService, MediaServiceAsync mediaService,
|
||||
ErrorReporter errorReporter, String leaderboardGroupName, String leaderboardName, final String leaderboardZoom,
|
||||
public AutoPlayController(SailingServiceAsync sailingService, MediaServiceAsync mediaService, ErrorReporter errorReporter,
|
||||
boolean isfullscreenMode, String leaderboardGroupName, String leaderboardName, final String leaderboardZoom,
|
||||
UserAgentDetails userAgent, long delayToLiveInMillis, boolean showRaceDetails, RaceBoardViewConfiguration raceboardViewConfig, PlayerView playerView) {
|
||||
this.raceboardViewConfig = raceboardViewConfig;
|
||||
this.sailingService = sailingService;
|
||||
this.mediaService = mediaService;
|
||||
this.isfullscreenMode = isfullscreenMode;
|
||||
this.errorReporter = errorReporter;
|
||||
this.leaderboardName = leaderboardName;
|
||||
this.leaderboardZoom = leaderboardZoom;
|
||||
@@ -165,9 +169,11 @@ public class AutoPlayController implements RaceTimesInfoProviderListener {
|
||||
|
||||
private void showLeaderboard() {
|
||||
if (activeTvView != AutoPlayModes.Leaderboard) {
|
||||
playerView.clearDockPanel();
|
||||
playerView.clear();
|
||||
|
||||
SAPHeader sapHeader = new SAPHeader(TextMessages.INSTANCE.leaderboard() + ": " + leaderboardName);
|
||||
boolean withFullscreenButton = isfullscreenMode && isInitialScreen;
|
||||
|
||||
SAPHeader sapHeader = new SAPHeader(TextMessages.INSTANCE.leaderboard() + ": " + leaderboardName, withFullscreenButton);
|
||||
playerView.getDockPanel().addNorth(sapHeader, SAP_HEADER_HEIGHT);
|
||||
|
||||
LeaderboardPanel leaderboardPanel = createLeaderboardPanel(leaderboardGroupName, leaderboardName, showRaceDetails);
|
||||
@@ -194,6 +200,8 @@ public class AutoPlayController implements RaceTimesInfoProviderListener {
|
||||
activeTvView = AutoPlayModes.Leaderboard;
|
||||
raceboardTimer.pause();
|
||||
leaderboardTimer.setPlayMode(PlayModes.Live);
|
||||
|
||||
isInitialScreen = false;
|
||||
}
|
||||
}
|
||||
|
||||
@@ -204,6 +212,8 @@ public class AutoPlayController implements RaceTimesInfoProviderListener {
|
||||
boolean invokeAgain = true;
|
||||
if(currentContentWidget.getOffsetHeight() > 50) {
|
||||
scaleContentWidget(headerHeight, contentWidget, scaleFactor);
|
||||
FullscreenUtil.requestFullscreen();
|
||||
|
||||
invokeAgain = false;
|
||||
}
|
||||
return invokeAgain;
|
||||
@@ -264,7 +274,7 @@ public class AutoPlayController implements RaceTimesInfoProviderListener {
|
||||
|
||||
private void showRaceBoard() {
|
||||
if (activeTvView != AutoPlayModes.Raceboard) {
|
||||
playerView.clearDockPanel();
|
||||
playerView.clear();
|
||||
RaceBoardPanel raceBoardPanel = createRaceBoardPanel(leaderboardName, currentLiveRace);
|
||||
raceBoardPanel.setSize("100%", "100%");
|
||||
if (showWindChart) {
|
||||
@@ -279,6 +289,8 @@ public class AutoPlayController implements RaceTimesInfoProviderListener {
|
||||
activeTvView = AutoPlayModes.Raceboard;
|
||||
leaderboardTimer.pause();
|
||||
raceboardTimer.setPlayMode(PlayModes.Live);
|
||||
|
||||
isInitialScreen = false;
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
+2
-9
@@ -5,7 +5,6 @@ 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.DockLayoutPanel;
|
||||
import com.google.gwt.user.client.ui.RootLayoutPanel;
|
||||
import com.google.gwt.user.client.ui.Widget;
|
||||
import com.sap.sailing.gwt.autoplay.client.app.PlaceNavigator;
|
||||
|
||||
@@ -19,21 +18,15 @@ public class DesktopPlayerView extends Composite implements PlayerView {
|
||||
|
||||
public DesktopPlayerView(PlaceNavigator navigator) {
|
||||
initWidget(uiBinder.createAndBindUi(this));
|
||||
RootLayoutPanel.get().add(this);
|
||||
}
|
||||
|
||||
@Override
|
||||
public void clearDockPanel() {
|
||||
int childWidgetCount = dockPanel.getWidgetCount();
|
||||
for(int i = childWidgetCount-1; i >=0; i--) {
|
||||
Widget widget = dockPanel.getWidget(i);
|
||||
dockPanel.remove(widget);
|
||||
}
|
||||
public void clear() {
|
||||
dockPanel.clear();
|
||||
}
|
||||
|
||||
@Override
|
||||
public DockLayoutPanel getDockPanel() {
|
||||
return dockPanel;
|
||||
}
|
||||
|
||||
}
|
||||
+3
-6
@@ -7,7 +7,7 @@ import com.google.gwt.event.shared.EventBus;
|
||||
import com.google.gwt.user.client.Window;
|
||||
import com.google.gwt.user.client.rpc.AsyncCallback;
|
||||
import com.google.gwt.user.client.ui.AcceptsOneWidget;
|
||||
import com.sap.sailing.gwt.common.client.FullscreenUtil;
|
||||
import com.google.gwt.user.client.ui.RootLayoutPanel;
|
||||
import com.sap.sailing.gwt.ui.client.ErrorReporter;
|
||||
import com.sap.sailing.gwt.ui.raceboard.RaceBoardViewConfiguration;
|
||||
import com.sap.sailing.gwt.ui.shared.EventDTO;
|
||||
@@ -44,13 +44,10 @@ public class PlayerActivity extends AbstractActivity implements ErrorReporter {
|
||||
|
||||
PlayerView view = clientFactory.createPlayerView();
|
||||
panel.setWidget(view.asWidget());
|
||||
|
||||
if(playerPlace.isFullscreen()) {
|
||||
FullscreenUtil.requestFullscreen();
|
||||
}
|
||||
RootLayoutPanel.get().add(view.asWidget());
|
||||
|
||||
autoPlayController = new AutoPlayController(clientFactory.getSailingService(), clientFactory.getMediaService(),
|
||||
PlayerActivity.this, /*leaderboardGroupName*/ "" , playerPlace.getLeaderboardIdAsNameString(),
|
||||
PlayerActivity.this, playerPlace.isFullscreen(), /*leaderboardGroupName*/ "" , playerPlace.getLeaderboardIdAsNameString(),
|
||||
playerPlace.getLeaderboardZoom(), userAgent, delayToLiveMillis, showRaceDetails, readRaceboardConfiguration, view);
|
||||
autoPlayController.updatePlayMode(AutoPlayModes.Leaderboard);
|
||||
}
|
||||
|
||||
+1
-1
@@ -6,6 +6,6 @@ import com.google.gwt.user.client.ui.Widget;
|
||||
public interface PlayerView {
|
||||
Widget asWidget();
|
||||
|
||||
public void clearDockPanel();
|
||||
public void clear();
|
||||
public DockLayoutPanel getDockPanel();
|
||||
}
|
||||
+1
-1
@@ -65,7 +65,7 @@ public class DesktopStartView extends Composite implements StartView {
|
||||
this.raceboardParameters = new HashMap<String, String>();
|
||||
this.leaderboardParameters = new HashMap<String, String>();
|
||||
|
||||
sapHeader = new SAPHeader("Auto player configuration");
|
||||
sapHeader = new SAPHeader("Auto player configuration", false);
|
||||
eventSelectionBox = new ListBox(false);
|
||||
leaderboardSelectionBox = new ListBox(false);
|
||||
localeSelectionBox = new ListBox(false);
|
||||
|
||||
+24
-1
@@ -1,11 +1,17 @@
|
||||
package com.sap.sailing.gwt.autoplay.client.shared.header;
|
||||
|
||||
import com.google.gwt.core.client.GWT;
|
||||
import com.google.gwt.core.client.Scheduler;
|
||||
import com.google.gwt.core.client.Scheduler.RepeatingCommand;
|
||||
import com.google.gwt.dom.client.DivElement;
|
||||
import com.google.gwt.event.dom.client.ClickEvent;
|
||||
import com.google.gwt.uibinder.client.UiBinder;
|
||||
import com.google.gwt.uibinder.client.UiField;
|
||||
import com.google.gwt.uibinder.client.UiHandler;
|
||||
import com.google.gwt.user.client.ui.Button;
|
||||
import com.google.gwt.user.client.ui.Composite;
|
||||
import com.google.gwt.user.client.ui.Widget;
|
||||
import com.sap.sailing.gwt.common.client.FullscreenUtil;
|
||||
|
||||
public class SAPHeader extends Composite {
|
||||
private static SAPHeaderUiBinder uiBinder = GWT.create(SAPHeaderUiBinder.class);
|
||||
@@ -14,12 +20,29 @@ public class SAPHeader extends Composite {
|
||||
}
|
||||
|
||||
@UiField DivElement pageTitleDiv;
|
||||
@UiField Button startFullScreenButton;
|
||||
|
||||
public SAPHeader(String pageTitle) {
|
||||
public SAPHeader(String pageTitle, boolean startInAutoScreenMode) {
|
||||
SAPHeaderResources.INSTANCE.css().ensureInjected();
|
||||
|
||||
initWidget(uiBinder.createAndBindUi(this));
|
||||
|
||||
pageTitleDiv.setInnerText(pageTitle);
|
||||
startFullScreenButton.setVisible(startInAutoScreenMode);
|
||||
|
||||
// the 'fullscreen' button should disappear after some seconds (10)
|
||||
if(startInAutoScreenMode) {
|
||||
Scheduler.get().scheduleFixedPeriod(new RepeatingCommand() {
|
||||
public boolean execute () {
|
||||
startFullScreenButton.setVisible(false);
|
||||
return false;
|
||||
}
|
||||
}, 10000);
|
||||
}
|
||||
}
|
||||
|
||||
@UiHandler("startFullScreenButton")
|
||||
void startFullScreenClicked(ClickEvent e) {
|
||||
FullscreenUtil.requestFullscreen();
|
||||
}
|
||||
}
|
||||
+3
-16
@@ -14,22 +14,9 @@
|
||||
<div ui:field="pageTitleDiv" class="{local_res.css.pagetitle}"></div>
|
||||
</div>
|
||||
<div class="{local_res.css.siteheaderRight}">
|
||||
|
||||
<g:Button ui:field="startFullScreenButton" styleName="{res.mainCss.button}" text="Fullscreen" />
|
||||
<span> </span>
|
||||
</div>
|
||||
</header>
|
||||
<!--
|
||||
<div class="{res.mainCss.grid}">
|
||||
<div class="{res.mediaCss.small6} {res.mediaCss.column} {local_res.css.regattaleaderboard_meta_scoring}">
|
||||
<p ui:field="lastScoringCommentDiv" class="{local_res.css.regattaleaderboard_meta_scoring_comment}"></p>
|
||||
<p ui:field="scoringSchemeDiv" class="{local_res.css.regattaleaderboard_meta_scoring_type}"></p>
|
||||
</div>
|
||||
<div class="{res.mediaCss.small6} {res.mediaCss.column} {local_res.css.regattaleaderboard_meta_settings}">
|
||||
<div class="{local_res.css.regattaleaderboard_meta_update}">
|
||||
<p ui:field="lastScoringUpdateTextDiv" class="{local_res.css.regattaleaderboard_meta_update_text}"></p>
|
||||
<p ui:field="lastScoringUpdateTimeDiv" class="{local_res.css.regattaleaderboard_meta_update_timestamp}"></p>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
-->
|
||||
</g:HTMLPanel>
|
||||
</g:HTMLPanel>
|
||||
</ui:UiBinder>
|
||||
+9
-12
@@ -12,18 +12,15 @@ public class FullscreenUtil {
|
||||
};
|
||||
|
||||
private static native void nativeRequestFullScreen() /*-{
|
||||
$doc.fullscreenEnabled = $doc.fullscreenEnabled || $doc.mozFullScreenEnabled || $doc.documentElement.webkitRequestFullScreen;
|
||||
if($doc.fullscreenEnabled) {
|
||||
var element = $doc.documentElement;
|
||||
if(element.requestFullscreen) {
|
||||
element.requestFullscreen();
|
||||
} else if(element.mozRequestFullScreen) {
|
||||
element.mozRequestFullScreen();
|
||||
} else if(element.webkitRequestFullscreen) {
|
||||
element.webkitRequestFullscreen(Element.ALLOW_KEYBOARD_INPUT);
|
||||
} else if(element.msRequestFullscreen) {
|
||||
element.msRequestFullscreen();
|
||||
}
|
||||
var element = $doc.documentElement;
|
||||
if(element.requestFullscreen) {
|
||||
element.requestFullscreen();
|
||||
} else if(element.mozRequestFullScreen) {
|
||||
element.mozRequestFullScreen();
|
||||
} else if(element.webkitRequestFullscreen) {
|
||||
element.webkitRequestFullscreen(Element.ALLOW_KEYBOARD_INPUT);
|
||||
} else if(element.msRequestFullscreen) {
|
||||
element.msRequestFullscreen();
|
||||
}
|
||||
}-*/;
|
||||
|
||||
|
||||
Reference in new issue
Block a user