From 32b3654bc49ed2b9abf73a9c3c08dfb67203879d Mon Sep 17 00:00:00 2001 From: Benjamin Barth Date: Fri, 15 Jul 2016 14:59:02 +0200 Subject: [PATCH] Forced RaceviewerLaunchPad to be closed after selection a menu item --- .../raceviewerlaunchpad/RaceviewerLaunchPad.java | 15 ++++++++++++++- .../RaceviewerLaunchPadCell.java | 2 +- .../AbstractRegattaCompetitionFleetRace.java | 2 +- 3 files changed, 16 insertions(+), 3 deletions(-) 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 0fcaaae04e2..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()) { @@ -33,6 +37,15 @@ public abstract class RaceviewerLaunchPad extends Composite { 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);