Added abstraction for mobile event views

This commit is contained in:
Benjamin Barth committed 2015-08-19 10:40:37 +02:00
1 parent 26cc859e36
commit e2fe292b62
3 files changed
+117

No files matched your search

@@ -0,0 +1,67 @@
package com.sap.sailing.gwt.home.mobile.places.event;
import java.util.Collection;
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.SimplePanel;
import com.google.gwt.user.client.ui.Widget;
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.quickfinder.Quickfinder;
import com.sap.sailing.gwt.home.mobile.partials.simpleinfoblock.SimpleInfoBlock;
import com.sap.sailing.gwt.home.mobile.places.QuickfinderPresenter;
import com.sap.sailing.gwt.ui.shared.eventview.EventViewDTO;
import com.sap.sailing.gwt.ui.shared.eventview.RegattaMetadataDTO;
import com.sap.sailing.gwt.ui.shared.general.EventReferenceDTO;
public abstract class AbstractEventView extends Composite implements EventViewBase {
private static AbstractEventViewUiBinder uiBinder = GWT.create(AbstractEventViewUiBinder.class);
interface AbstractEventViewUiBinder extends UiBinder<Widget, AbstractEventViewLayout> {
}
static class AbstractEventViewLayout {
@UiField(provided = true) EventHeader eventHeaderUi;
@UiField Quickfinder quickFinderUi;
@UiField SimpleInfoBlock simpleInfoUi;
@UiField SimplePanel viewContentUi;
private AbstractEventViewLayout(EventViewDTO event) {
this.eventHeaderUi = new EventHeader(event);
}
}
private final Presenter currentPresenter;
private final AbstractEventViewLayout layout;
protected final RefreshManager refreshManager;
public AbstractEventView(Presenter presenter) {
this.currentPresenter = presenter;
this.layout = new AbstractEventViewLayout(currentPresenter.getCtx().getEventDTO());
this.refreshManager = new RefreshManager(this, currentPresenter.getDispatch());
initWidget(uiBinder.createAndBindUi(this.layout));
layout.viewContentUi.setWidget(getViewContent());
}
protected abstract Widget getViewContent();
@Override
public void setQuickFinderValues(Collection<RegattaMetadataDTO> regattaMetadatas) {
QuickfinderPresenter.getForRegattaLeaderboards(layout.quickFinderUi, currentPresenter, regattaMetadatas);
}
@Override
public void setQuickFinderValues(String seriesName, Collection<EventReferenceDTO> eventsOfSeries) {
QuickfinderPresenter.getForSeriesLeaderboards(layout.quickFinderUi, seriesName, currentPresenter, eventsOfSeries);
}
@Override
public void hideQuickfinder() {
layout.quickFinderUi.removeFromParent();
}
}
@@ -0,0 +1,20 @@
<!DOCTYPE ui:UiBinder SYSTEM "http://dl.google.com/gwt/DTD/xhtml.ent">
<ui:UiBinder xmlns:ui="urn:ui:com.google.gwt.uibinder" xmlns:g="urn:import:com.google.gwt.user.client.ui"
xmlns:s="urn:import:com.sap.sailing.gwt.home.client.shared" xmlns:e="urn:import:com.sap.sailing.gwt.home.mobile.places.event"
xmlns:mp="urn:import:com.sap.sailing.gwt.home.mobile.partials">
<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" />
<mp:simpleinfoblock.SimpleInfoBlock ui:field="simpleInfoUi" />
</div>
<g:SimplePanel ui:field="viewContentUi"></g:SimplePanel>
</g:HTMLPanel>
</ui:UiBinder>
@@ -0,0 +1,30 @@
package com.sap.sailing.gwt.home.mobile.places.event;
import java.util.Collection;
import com.google.gwt.user.client.ui.IsWidget;
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 EventViewBase extends IsWidget {
void setQuickFinderValues(Collection<RegattaMetadataDTO> regattaMetadatas);
void setQuickFinderValues(String seriesName, Collection<EventReferenceDTO> eventsOfSeries);
void hideQuickfinder();
public interface Presenter extends RegattaLeaderboardNavigationProvider, SeriesLeaderboardNavigationProvider {
PlaceNavigation<?> getEventNavigation();
DispatchSystem getDispatch();
EventContext getCtx();
}
}