implemented fullscreen button for autoplay mode

This commit is contained in:
fmittag committed 2014-10-15 17:49:38 +02:00
1 parent c2549da3af
commit bdba5c9924
8 files changed
+61 -52

No files matched your search

@@ -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;
}
}
@@ -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;
}
}
@@ -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);
}
@@ -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();
}
@@ -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);
@@ -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();
}
}
@@ -14,22 +14,9 @@
<div ui:field="pageTitleDiv" class="{local_res.css.pagetitle}"></div>
</div>
<div class="{local_res.css.siteheaderRight}">
&nbsp;
<g:Button ui:field="startFullScreenButton" styleName="{res.mainCss.button}" text="Fullscreen" />
<span>&nbsp;</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>
@@ -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();
}
}-*/;