Refactored MiniLeaderboardViewImpl to use mobile event view abstraction

This commit is contained in:
Benjamin Barth committed 2015-08-19 12:32:46 +02:00
1 parent 07f91f41f6
commit b8453e4dd7
3 files changed
+14 -112

No files matched your search

@@ -1,32 +1,11 @@
package com.sap.sailing.gwt.home.mobile.places.minileaderboard;
import java.util.Collection;
import com.sap.sailing.gwt.home.mobile.places.event.EventViewBase;
import com.google.gwt.user.client.ui.Widget;
import com.sap.sailing.gwt.home.client.place.event.EventContext;
import com.sap.sailing.gwt.home.mobile.places.RegattaLeaderboardNavigationProvider;
import com.sap.sailing.gwt.home.mobile.places.SeriesLeaderboardNavigationProvider;
import com.sap.sailing.gwt.home.shared.app.PlaceNavigation;
import com.sap.sailing.gwt.home.shared.dispatch.DispatchSystem;
import com.sap.sailing.gwt.ui.shared.eventview.RegattaMetadataDTO;
import com.sap.sailing.gwt.ui.shared.general.EventReferenceDTO;
public interface MiniLeaderboardView extends EventViewBase {
public interface MiniLeaderboardView {
public interface Presenter extends RegattaLeaderboardNavigationProvider, SeriesLeaderboardNavigationProvider {
public interface Presenter extends EventViewBase.Presenter {
PlaceNavigation<?> getEventNavigation();
DispatchSystem getDispatch();
EventContext getCtx();
}
Widget asWidget();
void setQuickFinderValues(Collection<RegattaMetadataDTO> regattas);
void setQuickFinderValues(String seriesName, Collection<EventReferenceDTO> eventsOfSeries);
void hideQuickfinder();
}
@@ -1,68 +1,22 @@
package com.sap.sailing.gwt.home.mobile.places.minileaderboard;
import java.util.Collection;
import java.util.UUID;
import com.google.gwt.core.client.GWT;
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.Widget;
import com.sap.sailing.gwt.home.client.place.event.EventContext;
import com.sap.sailing.gwt.home.client.place.event.regatta.tabs.reload.RefreshManager;
import com.sap.sailing.gwt.home.mobile.partials.eventheader.EventHeader;
import com.sap.sailing.gwt.home.mobile.partials.minileaderboard.MinileaderboardBox;
import com.sap.sailing.gwt.home.mobile.partials.quickfinder.Quickfinder;
import com.sap.sailing.gwt.home.mobile.places.QuickfinderPresenter;
import com.sap.sailing.gwt.home.mobile.places.event.AbstractEventView;
import com.sap.sailing.gwt.ui.client.StringMessages;
import com.sap.sailing.gwt.ui.shared.dispatch.event.GetMiniLeaderbordAction;
import com.sap.sailing.gwt.ui.shared.eventview.EventViewDTO.EventType;
import com.sap.sailing.gwt.ui.shared.eventview.RegattaMetadataDTO;
import com.sap.sailing.gwt.ui.shared.general.EventReferenceDTO;
public class MiniLeaderboardViewImpl extends Composite implements MiniLeaderboardView {
public class MiniLeaderboardViewImpl extends AbstractEventView<MiniLeaderboardView.Presenter> implements MiniLeaderboardView {
private static final StringMessages MSG = StringMessages.INSTANCE;
private static MyBinder uiBinder = GWT.create(MyBinder.class);
interface MyBinder extends UiBinder<Widget, MiniLeaderboardViewImpl> {
}
private Presenter currentPresenter;
@UiField(provided = true)
EventHeader eventHeaderUi;
@UiField(provided = true)
MinileaderboardBox minileaderboardUi;
@UiField
Quickfinder quickFinderUi;
public MiniLeaderboardViewImpl(Presenter presenter) {
this.currentPresenter = presenter;
String regattaDisplayName = null;
if(presenter.getCtx().getEventDTO().getType() == EventType.MULTI_REGATTA) {
regattaDisplayName = presenter.getCtx().getRegatta().getDisplayName();
}
minileaderboardUi = new MinileaderboardBox(false);
eventHeaderUi = new EventHeader(presenter.getCtx().getEventDTO(), regattaDisplayName, presenter.getEventNavigation());
initWidget(uiBinder.createAndBindUi(this));
RefreshManager refreshManager = new RefreshManager(this, currentPresenter.getDispatch());
EventContext ctx = presenter.getCtx();
UUID uuid = UUID.fromString(ctx.getEventId());
refreshManager.add(minileaderboardUi, new GetMiniLeaderbordAction(uuid, presenter.getCtx().getRegattaId()));
minileaderboardUi.setAction(MSG.details(), presenter.getRegattaLeaderboardNavigation(presenter.getCtx().getRegattaId()));
}
@Override
public void setQuickFinderValues(Collection<RegattaMetadataDTO> regattaMetadatas) {
QuickfinderPresenter.getForRegattaLeaderboards(quickFinderUi, currentPresenter, regattaMetadatas);
}
@Override
public void setQuickFinderValues(String seriesName, Collection<EventReferenceDTO> eventsOfSeries) {
QuickfinderPresenter.getForSeriesLeaderboards(quickFinderUi, seriesName, currentPresenter, eventsOfSeries);
}
@Override
public void hideQuickfinder() {
quickFinderUi.removeFromParent();
private final MinileaderboardBox minileaderboard;
public MiniLeaderboardViewImpl(MiniLeaderboardView.Presenter presenter) {
super(presenter, presenter.getCtx().getEventDTO().getType() == EventType.MULTI_REGATTA, true);
setViewContent(minileaderboard = new MinileaderboardBox(false));
refreshManager.add(minileaderboard, new GetMiniLeaderbordAction(getEventId(), getRegattaId()));
minileaderboard.setAction(MSG.details(), presenter.getRegattaLeaderboardNavigation(getRegattaId()));
}
}
@@ -1,31 +0,0 @@
<!DOCTYPE ui:UiBinder SYSTEM "http://dl.google.com/gwt/DTD/xhtml.ent">
<ui:UiBinder
xmlns:ui="urn:ui:com.google.gwt.uibinder"
xmlns:s="urn:import:com.sap.sailing.gwt.home.client.shared"
xmlns:mp="urn:import:com.sap.sailing.gwt.home.mobile.partials"
xmlns:g="urn:import:com.google.gwt.user.client.ui"
>
<ui:with field="i18n" type="com.sap.sailing.gwt.ui.client.StringMessages" />
<ui:with
field="res"
type="com.sap.sailing.gwt.home.mobile.resources.SharedResources" />
<ui:style>
.headerWrapper {
background-color: #f2f2f2;
padding-bottom: 10px;
}
</ui:style>
<g:HTMLPanel>
<div class="{style.headerWrapper}">
<mp:eventheader.EventHeader ui:field="eventHeaderUi" />
<mp:quickfinder.Quickfinder ui:field="quickFinderUi" />
<!-- TODO do we need this here? -->
<!--
<mp:simpleinfoblock.SimpleInfoBlock ui:field="sailorInfoUi" />
-->
</div>
<mp:minileaderboard.MinileaderboardBox ui:field="minileaderboardUi"/>
</g:HTMLPanel>
</ui:UiBinder>