From 6a7ef7c8925fe57358fbe9183dd0a627aff734e2 Mon Sep 17 00:00:00 2001 From: Oleg_Zheleznov Date: Wed, 7 Sep 2016 11:47:17 +0300 Subject: [PATCH 1/4] Bug 3749 - Activate 'autorefresh' button in leaderboard view by default Change-Id: I767644658bc99b9d3551ba954d0f3ecdc31e5a1d --- .../old/leaderboard/OldLeaderboard.java | 33 ++++++++++++++++++- 1 file changed, 32 insertions(+), 1 deletion(-) diff --git a/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/home/desktop/partials/old/leaderboard/OldLeaderboard.java b/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/home/desktop/partials/old/leaderboard/OldLeaderboard.java index de88ebf1a0b..4890164e214 100644 --- a/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/home/desktop/partials/old/leaderboard/OldLeaderboard.java +++ b/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/home/desktop/partials/old/leaderboard/OldLeaderboard.java @@ -10,6 +10,8 @@ import com.google.gwt.dom.client.Style.Unit; import com.google.gwt.dom.client.Style.Visibility; import com.google.gwt.event.dom.client.ClickEvent; import com.google.gwt.event.dom.client.ClickHandler; +import com.google.gwt.event.logical.shared.AttachEvent; +import com.google.gwt.event.logical.shared.AttachEvent.Handler; import com.google.gwt.event.logical.shared.CloseEvent; import com.google.gwt.event.logical.shared.CloseHandler; import com.google.gwt.uibinder.client.UiBinder; @@ -21,11 +23,14 @@ import com.google.gwt.user.client.ui.Composite; import com.google.gwt.user.client.ui.HTMLPanel; import com.google.gwt.user.client.ui.PopupPanel; import com.google.gwt.user.client.ui.Widget; +import com.sap.sailing.domain.common.RaceIdentifier; import com.sap.sailing.domain.common.dto.LeaderboardDTO; +import com.sap.sailing.domain.common.dto.RaceColumnDTO; import com.sap.sailing.gwt.common.client.i18n.TextMessages; import com.sap.sailing.gwt.home.desktop.partials.old.EventRegattaLeaderboardResources; import com.sap.sailing.gwt.home.desktop.partials.old.LeaderboardDelegate; import com.sap.sailing.gwt.ui.client.DebugIdHelper; +import com.sap.sailing.gwt.ui.client.LeaderboardUpdateListener; import com.sap.sailing.gwt.ui.client.StringMessages; import com.sap.sailing.gwt.ui.common.client.DateAndTimeFormatterUtil; import com.sap.sailing.gwt.ui.leaderboard.LeaderboardPanel; @@ -65,7 +70,7 @@ public class OldLeaderboard extends Composite implements BusyStateChangeListener this(null); } - public OldLeaderboard(OldLeaderboardDelegate delegate) { + public OldLeaderboard(final OldLeaderboardDelegate delegate) { this.leaderboardPanel = null; EventRegattaLeaderboardResources.INSTANCE.css().ensureInjected(); initWidget(uiBinder.createAndBindUi(this)); @@ -74,6 +79,32 @@ public class OldLeaderboard extends Composite implements BusyStateChangeListener fullscreenAnchor.setTitle(StringMessages.INSTANCE.openFullscreenView()); this.delegate = delegate; this.setupFullscreenDelegate(); + + //adding handler on page loading + this.addAttachHandler(new Handler() { + @Override + public void onAttachOrDetach(AttachEvent event) { + if (event.isAttached() && leaderboardPanel != null) { + //waiting while leaderboard is loaded + leaderboardPanel.addLeaderboardUpdateListener(new LeaderboardUpdateListener() { + //remove event as we need to select button only at startup + //if race or regatta is live then check button by default + @Override + public void updatedLeaderboard(LeaderboardDTO leaderboard) { + leaderboardPanel.removeLeaderboardUpdateListener(this); + if (leaderboard.hasLiveRace(autoRefreshTimer.getLiveTimePointInMillis())) { + delegate.getAutoRefreshControl().fireEvent(new ClickEvent() {}); + } + + } + + @Override + public void currentRaceSelected(RaceIdentifier raceIdentifier, RaceColumnDTO raceColumn) { } + }); + } + + } + }); } private void setupFullscreenDelegate() { From 63a33ae19cfc8234f4879c03a12abc2c5ff0abdc Mon Sep 17 00:00:00 2001 From: Oleg_Zheleznov Date: Mon, 26 Sep 2016 16:38:51 +0300 Subject: [PATCH 2/4] Bug 3749 - Activate 'autorefresh' button in leaderboard view by default Change-Id: I66f52e98c1cd287a3df192b30f6928ca2616c3e2 --- .../old/leaderboard/OldLeaderboard.java | 23 +++++++++++-------- .../multileaderboard/OldMultiLeaderboard.java | 17 ++++++++++---- .../EventSeriesLeaderboardsTabView.java | 5 ++-- .../ui/leaderboard/MultiLeaderboardPanel.java | 4 ++++ 4 files changed, 33 insertions(+), 16 deletions(-) diff --git a/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/home/desktop/partials/old/leaderboard/OldLeaderboard.java b/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/home/desktop/partials/old/leaderboard/OldLeaderboard.java index 4890164e214..6c33efc74a6 100644 --- a/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/home/desktop/partials/old/leaderboard/OldLeaderboard.java +++ b/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/home/desktop/partials/old/leaderboard/OldLeaderboard.java @@ -80,29 +80,28 @@ public class OldLeaderboard extends Composite implements BusyStateChangeListener this.delegate = delegate; this.setupFullscreenDelegate(); - //adding handler on page loading + // adding handler on page loading this.addAttachHandler(new Handler() { @Override public void onAttachOrDetach(AttachEvent event) { if (event.isAttached() && leaderboardPanel != null) { - //waiting while leaderboard is loaded + // waiting while leaderboard is loaded leaderboardPanel.addLeaderboardUpdateListener(new LeaderboardUpdateListener() { - //remove event as we need to select button only at startup - //if race or regatta is live then check button by default + // We have to remove listener to prevent endless loop of button clicking + // as when leaderboard is live it is updated through some interval @Override public void updatedLeaderboard(LeaderboardDTO leaderboard) { leaderboardPanel.removeLeaderboardUpdateListener(this); + // If race or regatta is live then check button by default if (leaderboard.hasLiveRace(autoRefreshTimer.getLiveTimePointInMillis())) { - delegate.getAutoRefreshControl().fireEvent(new ClickEvent() {}); + handleAutoRefreshClick(); } - } - + @Override public void currentRaceSelected(RaceIdentifier raceIdentifier, RaceColumnDTO raceColumn) { } }); } - } }); } @@ -137,8 +136,7 @@ public class OldLeaderboard extends Composite implements BusyStateChangeListener }, ClickEvent.getType()); } - @UiHandler("autoRefreshAnchor") - void toogleAutoRefreshClicked(ClickEvent event) { + private void handleAutoRefreshClick() { autoRefreshAnchor.removeStyleName(local_res.css().regattaleaderboard_meta_reload_live()); autoRefreshAnchor.removeStyleName(local_res.css().regattaleaderboard_meta_reload_playing()); if (delegate != null) { @@ -167,6 +165,11 @@ public class OldLeaderboard extends Composite implements BusyStateChangeListener } } + @UiHandler("autoRefreshAnchor") + void toogleAutoRefreshClicked(ClickEvent event) { + handleAutoRefreshClick(); + } + @UiHandler("settingsAnchor") void settingsClicked(ClickEvent event) { if(leaderboardPanel != null) { diff --git a/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/home/desktop/partials/old/multileaderboard/OldMultiLeaderboard.java b/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/home/desktop/partials/old/multileaderboard/OldMultiLeaderboard.java index 0cb578288a0..bab933fbfe1 100644 --- a/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/home/desktop/partials/old/multileaderboard/OldMultiLeaderboard.java +++ b/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/home/desktop/partials/old/multileaderboard/OldMultiLeaderboard.java @@ -108,14 +108,17 @@ public class OldMultiLeaderboard extends Composite implements SelectedLeaderboar }, ClickEvent.getType()); } - @UiHandler("autoRefreshAnchor") - void toogleAutoRefreshClicked(ClickEvent event) { + /** + * Refactoring to make leaderboard click handler available from {@link EventSeriesLeaderboardsTabView} + */ + public void handleAutoRefreshClick() { if (autoRefreshTimer != null) { autoRefreshAnchor.removeStyleName(local_res.css().regattaleaderboard_meta_reload_live()); autoRefreshAnchor.removeStyleName(local_res.css().regattaleaderboard_meta_reload_playing()); if (delegate != null) { delegate.getAutoRefreshControl().removeStyleName(local_res.css().regattaleaderboard_meta_reload_live()); - delegate.getAutoRefreshControl().removeStyleName(local_res.css().regattaleaderboard_meta_reload_playing()); + delegate.getAutoRefreshControl() + .removeStyleName(local_res.css().regattaleaderboard_meta_reload_playing()); } if (autoRefreshTimer.getPlayState() == PlayStates.Playing) { autoRefreshTimer.pause(); @@ -132,11 +135,17 @@ public class OldMultiLeaderboard extends Composite implements SelectedLeaderboar autoRefreshAnchor.addStyleName(local_res.css().regattaleaderboard_meta_reload_live()); if (delegate != null) { // delegate.getAutoRefreshControl().getElement().getStyle().setBackgroundColor("red"); - delegate.getAutoRefreshControl().addStyleName(local_res.css().regattaleaderboard_meta_reload_live()); + delegate.getAutoRefreshControl() + .addStyleName(local_res.css().regattaleaderboard_meta_reload_live()); } } } } + + @UiHandler("autoRefreshAnchor") + void toogleAutoRefreshClicked(ClickEvent event) { + handleAutoRefreshClick(); + } @UiHandler("settingsAnchor") void settingsClicked(ClickEvent event) { diff --git a/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/home/desktop/places/fakeseries/leaderboardstab/EventSeriesLeaderboardsTabView.java b/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/home/desktop/places/fakeseries/leaderboardstab/EventSeriesLeaderboardsTabView.java index 9b7ba4e76f4..9fed2f1b119 100644 --- a/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/home/desktop/places/fakeseries/leaderboardstab/EventSeriesLeaderboardsTabView.java +++ b/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/home/desktop/places/fakeseries/leaderboardstab/EventSeriesLeaderboardsTabView.java @@ -69,7 +69,7 @@ public class EventSeriesLeaderboardsTabView extends Composite implements SeriesT final LeaderboardSettings leaderboardSettings = EventParamUtils.createLeaderboardSettingsFromURLParameters(Window.Location.getParameterMap()); final RaceIdentifier preselectedRace = EventParamUtils.getPreselectedRace(Window.Location.getParameterMap()); - MultiLeaderboardPanel leaderboardPanel = regattaAnalyticsManager.createMultiLeaderboardPanel(leaderboardSettings, + final MultiLeaderboardPanel leaderboardPanel = regattaAnalyticsManager.createMultiLeaderboardPanel(leaderboardSettings, null, // TODO: preselectedLeaderboardName preselectedRace, "leaderboardGroupName", @@ -84,7 +84,8 @@ public class EventSeriesLeaderboardsTabView extends Composite implements SeriesT if (currentPresenter.getSeriesDTO().getState() != EventSeriesState.RUNNING) { // TODO: this.leaderboard.hideRefresh(); } else { - // TODO: start autorefresh? + // Calls auto refresh button click handler on parent leaderboard + leaderboard.handleAutoRefreshClick(); } regattaAnalyticsManager.hideCompetitorChart(); leaderboardPanel.setVisible(true); diff --git a/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/ui/leaderboard/MultiLeaderboardPanel.java b/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/ui/leaderboard/MultiLeaderboardPanel.java index 9af7d681f54..7fd3729ff1e 100644 --- a/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/ui/leaderboard/MultiLeaderboardPanel.java +++ b/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/ui/leaderboard/MultiLeaderboardPanel.java @@ -281,4 +281,8 @@ public class MultiLeaderboardPanel extends AbstractLazyComponent Date: Tue, 8 Nov 2016 16:09:34 +0300 Subject: [PATCH 3/4] Bug 3749 - Activate 'autorefresh' button in leaderboard view by default Change-Id: I4aba092cf98ab7ba3e75fe311621c6b80599e93c --- .../old/leaderboard/OldLeaderboard.java | 20 +++++++++++++---- .../multileaderboard/OldMultiLeaderboard.java | 22 +++++++++++++------ .../EventSeriesLeaderboardsTabView.java | 6 ++--- 3 files changed, 34 insertions(+), 14 deletions(-) diff --git a/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/home/desktop/partials/old/leaderboard/OldLeaderboard.java b/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/home/desktop/partials/old/leaderboard/OldLeaderboard.java index 6c33efc74a6..e72d6ebaefe 100644 --- a/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/home/desktop/partials/old/leaderboard/OldLeaderboard.java +++ b/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/home/desktop/partials/old/leaderboard/OldLeaderboard.java @@ -87,14 +87,11 @@ public class OldLeaderboard extends Composite implements BusyStateChangeListener if (event.isAttached() && leaderboardPanel != null) { // waiting while leaderboard is loaded leaderboardPanel.addLeaderboardUpdateListener(new LeaderboardUpdateListener() { - // We have to remove listener to prevent endless loop of button clicking - // as when leaderboard is live it is updated through some interval @Override public void updatedLeaderboard(LeaderboardDTO leaderboard) { - leaderboardPanel.removeLeaderboardUpdateListener(this); // If race or regatta is live then check button by default if (leaderboard.hasLiveRace(autoRefreshTimer.getLiveTimePointInMillis())) { - handleAutoRefreshClick(); + turnOnAutoPlay(); } } @@ -165,6 +162,21 @@ public class OldLeaderboard extends Composite implements BusyStateChangeListener } } + /** + * This method turns on auto playing mode on leaderboard + */ + private void turnOnAutoPlay() { + if (autoRefreshTimer.getPlayState() != PlayStates.Playing) { + autoRefreshTimer.setPlayMode(PlayModes.Live); + } + + // Styles applied each time because of tabs switching. In this case play mode stays as Playing but styling is lost + autoRefreshAnchor.addStyleName(local_res.css().regattaleaderboard_meta_reload_live()); + if (delegate != null) { + delegate.getAutoRefreshControl().addStyleName(local_res.css().regattaleaderboard_meta_reload_live()); + } + } + @UiHandler("autoRefreshAnchor") void toogleAutoRefreshClicked(ClickEvent event) { handleAutoRefreshClick(); diff --git a/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/home/desktop/partials/old/multileaderboard/OldMultiLeaderboard.java b/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/home/desktop/partials/old/multileaderboard/OldMultiLeaderboard.java index bab933fbfe1..104a6c26a12 100644 --- a/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/home/desktop/partials/old/multileaderboard/OldMultiLeaderboard.java +++ b/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/home/desktop/partials/old/multileaderboard/OldMultiLeaderboard.java @@ -109,9 +109,22 @@ public class OldMultiLeaderboard extends Composite implements SelectedLeaderboar } /** - * Refactoring to make leaderboard click handler available from {@link EventSeriesLeaderboardsTabView} + * This method turns on auto playing mode on leaderboard */ - public void handleAutoRefreshClick() { + public void turnOnAutoPlay() { + if (autoRefreshTimer.getPlayState() != PlayStates.Playing) { + autoRefreshTimer.setPlayMode(PlayModes.Live); + } + + // Styles applied each time because of tabs switching. In this case play mode stays as Playing but styling is lost + autoRefreshAnchor.addStyleName(local_res.css().regattaleaderboard_meta_reload_live()); + if (delegate != null) { + delegate.getAutoRefreshControl().addStyleName(local_res.css().regattaleaderboard_meta_reload_live()); + } + } + + @UiHandler("autoRefreshAnchor") + void toogleAutoRefreshClicked(ClickEvent event) { if (autoRefreshTimer != null) { autoRefreshAnchor.removeStyleName(local_res.css().regattaleaderboard_meta_reload_live()); autoRefreshAnchor.removeStyleName(local_res.css().regattaleaderboard_meta_reload_playing()); @@ -141,11 +154,6 @@ public class OldMultiLeaderboard extends Composite implements SelectedLeaderboar } } } - - @UiHandler("autoRefreshAnchor") - void toogleAutoRefreshClicked(ClickEvent event) { - handleAutoRefreshClick(); - } @UiHandler("settingsAnchor") void settingsClicked(ClickEvent event) { diff --git a/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/home/desktop/places/fakeseries/leaderboardstab/EventSeriesLeaderboardsTabView.java b/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/home/desktop/places/fakeseries/leaderboardstab/EventSeriesLeaderboardsTabView.java index 9fed2f1b119..5f2dcaba752 100644 --- a/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/home/desktop/places/fakeseries/leaderboardstab/EventSeriesLeaderboardsTabView.java +++ b/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/home/desktop/places/fakeseries/leaderboardstab/EventSeriesLeaderboardsTabView.java @@ -69,7 +69,7 @@ public class EventSeriesLeaderboardsTabView extends Composite implements SeriesT final LeaderboardSettings leaderboardSettings = EventParamUtils.createLeaderboardSettingsFromURLParameters(Window.Location.getParameterMap()); final RaceIdentifier preselectedRace = EventParamUtils.getPreselectedRace(Window.Location.getParameterMap()); - final MultiLeaderboardPanel leaderboardPanel = regattaAnalyticsManager.createMultiLeaderboardPanel(leaderboardSettings, + MultiLeaderboardPanel leaderboardPanel = regattaAnalyticsManager.createMultiLeaderboardPanel(leaderboardSettings, null, // TODO: preselectedLeaderboardName preselectedRace, "leaderboardGroupName", @@ -84,8 +84,8 @@ public class EventSeriesLeaderboardsTabView extends Composite implements SeriesT if (currentPresenter.getSeriesDTO().getState() != EventSeriesState.RUNNING) { // TODO: this.leaderboard.hideRefresh(); } else { - // Calls auto refresh button click handler on parent leaderboard - leaderboard.handleAutoRefreshClick(); + // Turn on auto refresh button at parent leaderboard + leaderboard.turnOnAutoPlay(); } regattaAnalyticsManager.hideCompetitorChart(); leaderboardPanel.setVisible(true); From 01688c384c9e26008cc952b248621227af5c6471 Mon Sep 17 00:00:00 2001 From: Oleg Zheleznov Date: Wed, 9 Nov 2016 11:13:29 +0300 Subject: [PATCH 4/4] Refactoring method hierarchy Change-Id: I7626ddc57baa198316a25be4c689ab65bd0675f9 --- .../old/leaderboard/OldLeaderboard.java | 38 +++++++++---------- 1 file changed, 17 insertions(+), 21 deletions(-) diff --git a/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/home/desktop/partials/old/leaderboard/OldLeaderboard.java b/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/home/desktop/partials/old/leaderboard/OldLeaderboard.java index e72d6ebaefe..d946a9b2bc7 100644 --- a/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/home/desktop/partials/old/leaderboard/OldLeaderboard.java +++ b/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/home/desktop/partials/old/leaderboard/OldLeaderboard.java @@ -133,7 +133,23 @@ public class OldLeaderboard extends Composite implements BusyStateChangeListener }, ClickEvent.getType()); } - private void handleAutoRefreshClick() { + /** + * This method turns on auto playing mode on leaderboard + */ + private void turnOnAutoPlay() { + if (autoRefreshTimer.getPlayState() != PlayStates.Playing) { + autoRefreshTimer.setPlayMode(PlayModes.Live); + } + + // Styles applied each time because of tabs switching. In this case play mode stays as Playing but styling is lost + autoRefreshAnchor.addStyleName(local_res.css().regattaleaderboard_meta_reload_live()); + if (delegate != null) { + delegate.getAutoRefreshControl().addStyleName(local_res.css().regattaleaderboard_meta_reload_live()); + } + } + + @UiHandler("autoRefreshAnchor") + void toogleAutoRefreshClicked(ClickEvent event) { autoRefreshAnchor.removeStyleName(local_res.css().regattaleaderboard_meta_reload_live()); autoRefreshAnchor.removeStyleName(local_res.css().regattaleaderboard_meta_reload_playing()); if (delegate != null) { @@ -162,26 +178,6 @@ public class OldLeaderboard extends Composite implements BusyStateChangeListener } } - /** - * This method turns on auto playing mode on leaderboard - */ - private void turnOnAutoPlay() { - if (autoRefreshTimer.getPlayState() != PlayStates.Playing) { - autoRefreshTimer.setPlayMode(PlayModes.Live); - } - - // Styles applied each time because of tabs switching. In this case play mode stays as Playing but styling is lost - autoRefreshAnchor.addStyleName(local_res.css().regattaleaderboard_meta_reload_live()); - if (delegate != null) { - delegate.getAutoRefreshControl().addStyleName(local_res.css().regattaleaderboard_meta_reload_live()); - } - } - - @UiHandler("autoRefreshAnchor") - void toogleAutoRefreshClicked(ClickEvent event) { - handleAutoRefreshClick(); - } - @UiHandler("settingsAnchor") void settingsClicked(ClickEvent event) { if(leaderboardPanel != null) {