diff --git a/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/home/communication/race/SimpleRaceMetadataDTO.java b/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/home/communication/race/SimpleRaceMetadataDTO.java index 9dd533a9db5..e7326bc7f1d 100644 --- a/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/home/communication/race/SimpleRaceMetadataDTO.java +++ b/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/home/communication/race/SimpleRaceMetadataDTO.java @@ -155,4 +155,16 @@ public class SimpleRaceMetadataDTO implements DTO, Comparabletrue if the {@link #getViewState() view state} is {@link RaceViewState#RUNNING}, + * false otherwise + */ + public boolean isRunning() { + return getViewState() == RaceViewState.FINISHED; + } + + } diff --git a/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/home/desktop/partials/raceviewerlaunchpad/RaceviewerLaunchPad.java b/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/home/desktop/partials/raceviewerlaunchpad/RaceviewerLaunchPad.java index b2faf087018..d8812aec4d4 100644 --- a/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/home/desktop/partials/raceviewerlaunchpad/RaceviewerLaunchPad.java +++ b/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/home/desktop/partials/raceviewerlaunchpad/RaceviewerLaunchPad.java @@ -4,7 +4,9 @@ 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.Event; import com.google.gwt.user.client.ui.Composite; +import com.google.gwt.user.client.ui.PopupPanel; import com.google.gwt.user.client.ui.Widget; import com.sap.sailing.gwt.home.communication.race.SimpleRaceMetadataDTO; import com.sap.sailing.gwt.ui.client.StringMessages; @@ -18,8 +20,10 @@ public abstract class RaceviewerLaunchPad extends Composite { @UiField RaceviewerLaunchPadResources local_res; @UiField DivElement itemContainerUi; + private final PopupPanel parent; - public RaceviewerLaunchPad(SimpleRaceMetadataDTO data) { + public RaceviewerLaunchPad(SimpleRaceMetadataDTO data, final PopupPanel parent) { + this.parent = parent; initWidget(uiBinder.createAndBindUi(this)); local_res.css().ensureInjected(); if (!data.isFinished()) { @@ -27,10 +31,21 @@ public abstract class RaceviewerLaunchPad extends Composite { addItem(data, RaceviewerLaunchPadMenuItem.WATCH_LIVE); } else { addItem(data, RaceviewerLaunchPadMenuItem.REPLAY); + addItem(data, RaceviewerLaunchPadMenuItem.RACE_ANALYSIS); + } + if (data.isRunning() || data.isFinished()) { + addItem(data, RaceviewerLaunchPadMenuItem.START_ANALYSIS); } - addItem(data, RaceviewerLaunchPadMenuItem.RACE_ANALYSIS); - addItem(data, RaceviewerLaunchPadMenuItem.START_ANALYSIS); addItem(data, RaceviewerLaunchPadMenuItem.WINNING_LANES); + sinkEvents(Event.ONCLICK); + } + + @Override + public void onBrowserEvent(final Event event) { + if (event.getTypeInt() == Event.ONCLICK) { + parent.hide(); + } + super.onBrowserEvent(event); } private void addItem(SimpleRaceMetadataDTO data, RaceviewerLaunchPadMenuItem item) { diff --git a/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/home/desktop/partials/raceviewerlaunchpad/RaceviewerLaunchPadCell.java b/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/home/desktop/partials/raceviewerlaunchpad/RaceviewerLaunchPadCell.java index 2c275f2e4d2..cce6e4aae8a 100644 --- a/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/home/desktop/partials/raceviewerlaunchpad/RaceviewerLaunchPadCell.java +++ b/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/home/desktop/partials/raceviewerlaunchpad/RaceviewerLaunchPadCell.java @@ -54,7 +54,7 @@ public class RaceviewerLaunchPadCell> extends Abstr ValueUpdater valueUpdater) { if (data.hasValidTrackingData() && BrowserEvents.CLICK.equals(event.getType()) && parent.getFirstChildElement().isOrHasChild(Element.as(event.getEventTarget()))) { - panel.setWidget(new RaceviewerLaunchPad(data) { + panel.setWidget(new RaceviewerLaunchPad(data, panel) { @Override protected String getRaceViewerURL(SimpleRaceMetadataDTO data, String mode) { return presenter.getRaceViewerURL(data, mode); diff --git a/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/home/shared/partials/regattacompetition/AbstractRegattaCompetitionFleetRace.java b/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/home/shared/partials/regattacompetition/AbstractRegattaCompetitionFleetRace.java index cb150b0305f..c5f1c0239a0 100644 --- a/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/home/shared/partials/regattacompetition/AbstractRegattaCompetitionFleetRace.java +++ b/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/home/shared/partials/regattacompetition/AbstractRegattaCompetitionFleetRace.java @@ -48,7 +48,7 @@ public abstract class AbstractRegattaCompetitionFleetRace extends Widget impleme public void onBrowserEvent(Event event) { if (race.hasValidTrackingData() && event.getTypeInt() == Event.ONCLICK) { this.getElement().scrollIntoView(); - panel.setWidget(new RaceviewerLaunchPad(race) { + panel.setWidget(new RaceviewerLaunchPad(race, panel) { @Override protected String getRaceViewerURL(SimpleRaceMetadataDTO data, String mode) { return presenter.getRaceViewerURL(data, mode);