Forced RaceviewerLaunchPad to be closed after selection a menu item

This commit is contained in:
Benjamin Barth committed 2016-07-15 14:59:02 +02:00
1 parent b16c0422eb
commit 32b3654bc4
3 files changed
+16 -3

No files matched your search

@@ -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) {
@@ -54,7 +54,7 @@ public class RaceviewerLaunchPadCell<T extends RaceMetadataDTO<?>> extends Abstr
ValueUpdater<T> 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);
@@ -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);