Merge remote-tracking branch 'origin/master' into 505worlds2014

This commit is contained in:
fmittag committed 2014-08-12 20:52:25 +02:00
commit b41e21dd87
38 files changed
+425 -82

No files matched your search

Binary file not shown.

After

Width:  |  Height:  |  Size: 10 KiB

@@ -5,6 +5,7 @@ import java.util.List;
import com.google.gwt.event.shared.SimpleEventBus;
import com.google.gwt.place.shared.PlaceController;
import com.google.web.bindery.event.shared.EventBus;
import com.sap.sailing.gwt.home.client.place.error.TabletAndDesktopErrorView;
import com.sap.sailing.gwt.home.client.place.event.EventView;
import com.sap.sailing.gwt.home.client.place.event.EventWithoutRegattasView;
import com.sap.sailing.gwt.home.client.place.event.TabletAndDesktopEventView;
@@ -55,6 +56,11 @@ public class SmartphoneApplicationClientFactory extends AbstractApplicationClien
return new TabletAndDesktopEventsView(getPlaceNavigator());
}
@Override
public TabletAndDesktopErrorView createErrorView(String errorMessage, Throwable errorReason) {
return new TabletAndDesktopErrorView(errorMessage, errorReason);
}
@Override
public StartView createStartView() {
return new TabletAndDesktopStartView(getPlaceNavigator());
@@ -5,6 +5,7 @@ import java.util.List;
import com.google.gwt.event.shared.SimpleEventBus;
import com.google.gwt.place.shared.PlaceController;
import com.google.web.bindery.event.shared.EventBus;
import com.sap.sailing.gwt.home.client.place.error.TabletAndDesktopErrorView;
import com.sap.sailing.gwt.home.client.place.event.EventView;
import com.sap.sailing.gwt.home.client.place.event.EventWithoutRegattasView;
import com.sap.sailing.gwt.home.client.place.event.TabletAndDesktopEventView;
@@ -45,6 +46,11 @@ public class TabletAndDesktopApplicationClientFactory extends AbstractApplicatio
return new TabletAndDesktopEventView(getSailingService(), event, raceGroups, leaderboardName, timerForClientServerOffset);
}
@Override
public TabletAndDesktopErrorView createErrorView(String errorMessage, Throwable errorReason) {
return new TabletAndDesktopErrorView(errorMessage, errorReason);
}
@Override
public EventWithoutRegattasView createEventWithoutRegattasView(EventDTO event) {
return new TabletAndDesktopEventWithoutRegattasView(getSailingService(), event);
@@ -1,8 +1,6 @@
package com.sap.sailing.gwt.home.client.app;
import com.google.gwt.core.client.GWT;
import com.google.gwt.dom.client.Element;
import com.google.gwt.dom.client.Style.Visibility;
import com.google.gwt.uibinder.client.UiBinder;
import com.google.gwt.uibinder.client.UiField;
import com.google.gwt.user.client.ui.AcceptsOneWidget;
@@ -11,6 +9,7 @@ import com.google.gwt.user.client.ui.SimplePanel;
import com.google.gwt.user.client.ui.Widget;
import com.sap.sailing.gwt.home.client.shared.footer.Footer;
import com.sap.sailing.gwt.home.client.shared.header.Header;
import com.sap.sailing.gwt.home.client.shared.placeholder.Placeholder;
/**
* This is the top-level view of the application. Every time another presenter wants to reveal itself,
@@ -31,12 +30,12 @@ public class TabletAndDesktopApplicationView extends Composite implements Applic
@UiField
SimplePanel mainContentPanel;
@UiField
Element loadingMessage;
public TabletAndDesktopApplicationView(PlaceNavigator navigator) {
headerPanel = new Header(navigator);
initWidget(uiBinder.createAndBindUi(this));
Placeholder placeHolder = new Placeholder();
mainContentPanel.setWidget(placeHolder);
}
@Override
@@ -45,7 +44,6 @@ public class TabletAndDesktopApplicationView extends Composite implements Applic
}
@Override
public void showLoading(boolean visibile) {
loadingMessage.getStyle().setVisibility(visibile ? Visibility.VISIBLE : Visibility.HIDDEN);
public void showLoading(boolean visible) {
}
}
@@ -2,14 +2,9 @@
<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">
<g:HTMLPanel>
<div ui:field="loadingMessage" style="display: none; position:absolute; top:0; left:0; background-color:yellow;">Loading...</div>
<s:header.Header ui:field="headerPanel" />
<g:SimplePanel ui:field="mainContentPanel" />
<s:footer.Footer ui:field="footerPanel" />
</g:HTMLPanel>
</ui:UiBinder>
@@ -13,7 +13,6 @@ public interface TextMessages extends Messages {
String contact();
String sponsoring();
String solutions();
String search();
String german();
String english();
String fullEventSchedule();
@@ -23,6 +22,10 @@ public interface TextMessages extends Messages {
String moreInfo();
String viewAnalysis();
String overallLeaderboard();
String pleaseEnterASearchTerm();
String pleaseTryAgain();
String reloadPage();
String errorMessageLoadingData();
String countdownDays();
String countdownHours();
@@ -5,7 +5,6 @@ aboutUs=About us
contact=Contact
sponsoring=Sponsoring
solutions=Solutions
search=Search
german=Deutsch
english=English
fullEventSchedule=Full event schedule
@@ -15,6 +14,10 @@ races=Races
moreInfo=More info
viewAnalysis=View analysis
overallLeaderboard=Overall leaderboard
pleaseEnterASearchTerm=Please enter a search term.
pleaseTryAgain=Please try again...
reloadPage=Reload page
errorMessageLoadingData=An error occured while loading the data for this page.
countdownDays=Days
countdownHours=Hrs
@@ -101,7 +104,7 @@ headerEvents=Events
headerHome=Home
headerLogo=SAP Sailing Analytics
headerSearch=Search
headerSearchPlaceholder=Search
headerSearchPlaceholder=Search SAPSailing.com
headerSolutions=Solutions
headerSponsoring=Sponsoring
latestRaceResultsHeadline=Latest Official Race Results
@@ -5,7 +5,6 @@ aboutUs=Über uns
contact=Kontakt
sponsoring=Sponsoring
solutions=Lösungen
search=Suche
german=Deutsch
english=English
fullEventSchedule=Gesamter Veranstaltungsplan
@@ -15,6 +14,10 @@ races=Rennen
moreInfo=Weitere Informationen
viewAnalysis=Analyzen ansehen
overallLeaderboard=Gesamtergebnis
pleaseEnterASearchTerm=Bitte gebe einen Suchbegriff ein.
pleaseTryAgain=Bitte versuchen sie es erneut...
reloadPage=Seite neu laden
errorMessageLoadingData=Beim Laden der Daten für diese Seite ist ein Fehler aufgetreten.
countdownDays=Tage
countdownHours=Std.
@@ -100,7 +103,7 @@ footerFeedback=Feedback
headerEvents=Veranstaltungen
headerHome=Startseite
headerLogo=SAP Sailing Analytics
headerSearch=Suche
headerSearch=Suche in SAPSailing.com
headerSearchPlaceholder=Suche
headerSolutions=Lösungen
headerSponsoring=Sponsoren
@@ -0,0 +1,18 @@
package com.sap.sailing.gwt.home.client.place.error;
import com.google.gwt.activity.shared.AbstractActivity;
import com.google.gwt.event.shared.EventBus;
import com.google.gwt.user.client.ui.AcceptsOneWidget;
public class ErrorActivity extends AbstractActivity {
public ErrorActivity(ErrorPlace place, ErrorClientFactory clientFactory) {
}
@Override
public void start(AcceptsOneWidget panel, EventBus eventBus) {
// TODO: the error place should get the error message from the place
panel.setWidget(new TabletAndDesktopErrorView(null, null));
}
}
@@ -0,0 +1,25 @@
package com.sap.sailing.gwt.home.client.place.error;
import com.google.gwt.core.client.GWT;
import com.sap.sse.gwt.client.mvp.AbstractActivityProxy;
public class ErrorActivityProxy extends AbstractActivityProxy {
private final ErrorClientFactory clientFactory;
private final ErrorPlace place;
public ErrorActivityProxy(ErrorPlace place, ErrorClientFactory clientFactory) {
this.place = place;
this.clientFactory = clientFactory;
}
@Override
protected void startAsync() {
GWT.runAsync(new AbstractRunAsyncCallback() {
@Override
public void onSuccess() {
super.onSuccess(new ErrorActivity(place, clientFactory));
}
});
}
}
@@ -0,0 +1,7 @@
package com.sap.sailing.gwt.home.client.place.error;
import com.sap.sailing.gwt.ui.client.SailingClientFactory;
public interface ErrorClientFactory extends SailingClientFactory {
}
@@ -0,0 +1,19 @@
package com.sap.sailing.gwt.home.client.place.error;
import com.google.gwt.place.shared.PlaceTokenizer;
import com.sap.sailing.gwt.home.client.AbstractBasePlace;
public class ErrorPlace extends AbstractBasePlace {
public static class Tokenizer implements PlaceTokenizer<ErrorPlace> {
@Override
public String getToken(ErrorPlace place) {
return null;
}
@Override
public ErrorPlace getPlace(String token) {
return new ErrorPlace();
}
}
}
@@ -0,0 +1,7 @@
package com.sap.sailing.gwt.home.client.place.error;
import com.google.gwt.user.client.ui.Widget;
public interface ErrorView {
Widget asWidget();
}
@@ -0,0 +1,23 @@
package com.sap.sailing.gwt.home.client.place.error;
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.shared.error.ErrorMessage;
public class TabletAndDesktopErrorView extends Composite implements ErrorView {
private static ErrorViewUiBinder uiBinder = GWT.create(ErrorViewUiBinder.class);
interface ErrorViewUiBinder extends UiBinder<Widget, TabletAndDesktopErrorView> {
}
@UiField(provided=true) ErrorMessage errorMessage;
public TabletAndDesktopErrorView(String errorMessageText, Throwable errorReason) {
errorMessage = new ErrorMessage(errorMessageText, errorReason);
initWidget(uiBinder.createAndBindUi(this));
}
}
@@ -0,0 +1,9 @@
<!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:g="urn:import:com.google.gwt.user.client.ui">
<ui:with field="res" type="com.sap.sailing.gwt.home.client.HomeResources" />
<g:HTMLPanel>
<s:error.ErrorMessage ui:field='errorMessage'/>
</g:HTMLPanel>
</ui:UiBinder>
@@ -0,0 +1,27 @@
package com.sap.sailing.gwt.home.client.place.event;
import com.google.gwt.user.client.ui.Composite;
import com.sap.sailing.gwt.ui.shared.EventDTO;
/**
* A base class for a content composite related to an sailing event
* @author Frank
*
*/
public class AbstractEventComposite extends Composite {
private final EventDTO event;
private final EventPageNavigator pageNavigator;
public AbstractEventComposite(EventDTO event, EventPageNavigator pageNavigator) {
this.event = event;
this.pageNavigator = pageNavigator;
}
public EventDTO getEvent() {
return event;
}
public EventPageNavigator getPageNavigator() {
return pageNavigator;
}
}
@@ -9,6 +9,8 @@ import com.google.gwt.event.shared.EventBus;
import com.google.gwt.user.client.Window;
import com.google.gwt.user.client.rpc.AsyncCallback;
import com.google.gwt.user.client.ui.AcceptsOneWidget;
import com.sap.sailing.gwt.home.client.place.error.ErrorView;
import com.sap.sailing.gwt.home.client.shared.placeholder.Placeholder;
import com.sap.sailing.gwt.ui.regattaoverview.RegattaRaceStatesSettings;
import com.sap.sailing.gwt.ui.shared.EventDTO;
import com.sap.sailing.gwt.ui.shared.LeaderboardGroupDTO;
@@ -50,6 +52,8 @@ public class EventActivity extends AbstractActivity {
@Override
public void start(final AcceptsOneWidget panel, final EventBus eventBus) {
panel.setWidget(new Placeholder());
final long clientTimeWhenRequestWasSent = System.currentTimeMillis();
UUID eventUUID = UUID.fromString(eventPlace.getEventUuidAsString());
clientFactory.getSailingService().getEventById(eventUUID, true, new AsyncCallback<EventDTO>() {
@@ -75,7 +79,7 @@ public class EventActivity extends AbstractActivity {
@Override
public void onFailure(Throwable caught) {
Window.alert("Shit happens at getRegattaStructureForEvent()");
createErrorView("Error while loading the regatta structure with service getRegattaStructureOfEvent()", caught, panel);
}
});
} else {
@@ -85,11 +89,16 @@ public class EventActivity extends AbstractActivity {
@Override
public void onFailure(Throwable caught) {
Window.alert("Shit happens at getRegattaStructureForEvent()");
createErrorView("Error while loading the event with service getEventById()", caught, panel);
}
});
}
private void createErrorView(String errorMessage, Throwable errorReason, AcceptsOneWidget panel) {
ErrorView view = clientFactory.createErrorView(errorMessage, errorReason);
panel.setWidget(view.asWidget());
}
private void createEventView(EventDTO event, List<RaceGroupDTO> raceGroups, AcceptsOneWidget panel) {
view = clientFactory.createEventView(event, raceGroups, eventPlace.getLeaderboardIdAsNameString(), timerForClientServerOffset);
panel.setWidget(view.asWidget());
@@ -111,7 +120,7 @@ public class EventActivity extends AbstractActivity {
new AsyncCallback<List<RegattaOverviewEntryDTO>>() {
@Override
public void onFailure(Throwable cause) {
Window.alert("Shit happens at getRaceStateEntriesForRaceGroup()");
Window.setStatus("Error while loading the race states with service getRaceStateEntriesForRaceGroup()");
}
@Override
@@ -58,9 +58,9 @@ public class TabletAndDesktopEventView extends Composite implements EventView, E
eventHeader = new EventHeader(event, this);
eventRegattaList = new EventRegattaList(event, regattaStructure, timerForClientServerOffset, this);
eventRegattaRaces = new EventRegattaRaces(event, timerForClientServerOffset, this);
eventOverview = new EventOverview(event);
eventSchedule = new EventSchedule(event);
eventMedia = new EventMedia(event);
eventOverview = new EventOverview(event, this);
eventSchedule = new EventSchedule(event, this);
eventMedia = new EventMedia(event, this);
initWidget(uiBinder.createAndBindUi(this));
@@ -11,9 +11,9 @@ import com.google.gwt.uibinder.client.UiBinder;
import com.google.gwt.uibinder.client.UiField;
import com.google.gwt.uibinder.client.UiHandler;
import com.google.gwt.user.client.ui.Anchor;
import com.google.gwt.user.client.ui.Composite;
import com.google.gwt.user.client.ui.Widget;
import com.sap.sailing.gwt.home.client.i18n.TextMessages;
import com.sap.sailing.gwt.home.client.place.event.AbstractEventComposite;
import com.sap.sailing.gwt.home.client.place.event.EventPageNavigator;
import com.sap.sailing.gwt.home.client.shared.EventDatesFormatterUtil;
import com.sap.sailing.gwt.ui.shared.CourseAreaDTO;
@@ -21,14 +21,12 @@ import com.sap.sailing.gwt.ui.shared.EventDTO;
import com.sap.sailing.gwt.ui.shared.LeaderboardGroupDTO;
import com.sap.sailing.gwt.ui.shared.StrippedLeaderboardDTO;
public class EventHeader extends Composite {
public class EventHeader extends AbstractEventComposite {
private static EventHeaderUiBinder uiBinder = GWT.create(EventHeaderUiBinder.class);
interface EventHeaderUiBinder extends UiBinder<Widget, EventHeader> {
}
private final EventDTO event;
// @UiField Anchor overviewLink;
@UiField Anchor regattasLink;
// @UiField Anchor scheduleLink;
@@ -69,12 +67,9 @@ public class EventHeader extends Composite {
// private final List<Anchor> links1;
// private final List<Anchor> links2;
// private final List<Anchor> links3;
private final EventPageNavigator pageNavigator;
public EventHeader(EventDTO event, EventPageNavigator pageNavigator) {
this.event = event;
this.pageNavigator = pageNavigator;
super(event, pageNavigator);
EventHeaderResources.INSTANCE.css().ensureInjected();
StyleInjector.injectAtEnd("@media (min-width: 50em) { "+EventHeaderResources.INSTANCE.largeCss().getText()+"}");
@@ -102,8 +97,7 @@ public class EventHeader extends Composite {
}
public EventHeader(EventDTO event) {
this.event = event;
this.pageNavigator = null;
super(event, null);
EventHeaderResources.INSTANCE.css().ensureInjected();
StyleInjector.injectAtEnd("@media (min-width: 50em) { "+EventHeaderResources.INSTANCE.largeCss().getText()+"}");
@@ -135,6 +129,7 @@ public class EventHeader extends Composite {
}
private void updateUI() {
EventDTO event = getEvent();
boolean isSeries = event.isFakeSeries();
String eventName = event.getName();
@@ -226,8 +221,8 @@ public class EventHeader extends Composite {
@UiHandler("seriesLeaderboardAnchor")
void seriesLeaderboardClicked(ClickEvent clickevent) {
if(event.isFakeSeries()) {
pageNavigator.openOverallLeaderboardViewer(event.getLeaderboardGroups().get(0));
if(getEvent().isFakeSeries()) {
getPageNavigator().openOverallLeaderboardViewer(getEvent().getLeaderboardGroups().get(0));
}
}
@@ -237,7 +232,7 @@ public class EventHeader extends Composite {
// }
//
private void showRegattas() {
pageNavigator.goToRegattas();
getPageNavigator().goToRegattas();
// setActiveLink(links1, regattasLink);
// setActiveLink(links2, regattasLink2);
// setActiveLink(links3, regattasLink3);
@@ -2,21 +2,19 @@ package com.sap.sailing.gwt.home.client.place.event.media;
import com.google.gwt.core.client.GWT;
import com.google.gwt.uibinder.client.UiBinder;
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.AbstractEventComposite;
import com.sap.sailing.gwt.home.client.place.event.EventPageNavigator;
import com.sap.sailing.gwt.ui.shared.EventDTO;
public class EventMedia extends Composite {
public class EventMedia extends AbstractEventComposite {
private static EventMediaUiBinder uiBinder = GWT.create(EventMediaUiBinder.class);
interface EventMediaUiBinder extends UiBinder<Widget, EventMedia> {
}
@SuppressWarnings("unused")
private final EventDTO event;
public EventMedia(EventDTO event) {
this.event = event;
public EventMedia(EventDTO event, EventPageNavigator placeNavigator) {
super(event, placeNavigator);
EventMediaResources.INSTANCE.css().ensureInjected();
initWidget(uiBinder.createAndBindUi(this));
@@ -2,21 +2,19 @@ package com.sap.sailing.gwt.home.client.place.event.overview;
import com.google.gwt.core.client.GWT;
import com.google.gwt.uibinder.client.UiBinder;
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.AbstractEventComposite;
import com.sap.sailing.gwt.home.client.place.event.EventPageNavigator;
import com.sap.sailing.gwt.ui.shared.EventDTO;
public class EventOverview extends Composite {
public class EventOverview extends AbstractEventComposite {
private static EventOverviewUiBinder uiBinder = GWT.create(EventOverviewUiBinder.class);
interface EventOverviewUiBinder extends UiBinder<Widget, EventOverview> {
}
@SuppressWarnings("unused")
private final EventDTO event;
public EventOverview(EventDTO event) {
this.event = event;
public EventOverview(EventDTO event, EventPageNavigator pageNavigator) {
super(event, pageNavigator);
EventOverviewResources.INSTANCE.css().ensureInjected();
initWidget(uiBinder.createAndBindUi(this));
@@ -16,9 +16,9 @@ import com.google.gwt.uibinder.client.UiField;
import com.google.gwt.user.client.DOM;
import com.google.gwt.user.client.Event;
import com.google.gwt.user.client.EventListener;
import com.google.gwt.user.client.ui.Composite;
import com.google.gwt.user.client.ui.Widget;
import com.sap.sailing.gwt.home.client.HomeResources;
import com.sap.sailing.gwt.home.client.place.event.AbstractEventComposite;
import com.sap.sailing.gwt.home.client.place.event.EventPageNavigator;
import com.sap.sailing.gwt.home.client.place.event.regatta.Regatta;
import com.sap.sailing.gwt.home.client.shared.LongNamesUtil;
@@ -29,7 +29,7 @@ import com.sap.sailing.gwt.ui.shared.StrippedLeaderboardDTO;
import com.sap.sse.common.Util.Triple;
import com.sap.sse.gwt.client.player.Timer;
public class EventRegattaList extends Composite {
public class EventRegattaList extends AbstractEventComposite {
private static EventRegattaHeaderUiBinder uiBinder = GWT.create(EventRegattaHeaderUiBinder.class);
interface EventRegattaHeaderUiBinder extends UiBinder<Widget, EventRegattaList> {
@@ -44,12 +44,11 @@ public class EventRegattaList extends Composite {
@UiField AnchorElement filterNoLeaderboardGroupsAnchor;
@UiField SpanElement allBoatClassesSelected;
private final EventDTO event;
private final Map<String, List<Regatta>> regattaElementsByLeaderboardGroup;
public EventRegattaList(EventDTO event, Map<String, Triple<RaceGroupDTO, StrippedLeaderboardDTO, LeaderboardGroupDTO>> regattaStructure,
Timer timerForClientServerOffset, EventPageNavigator pageNavigator) {
this.event = event;
super(event, pageNavigator);
EventRegattaListResources.INSTANCE.css().ensureInjected();
initWidget(uiBinder.createAndBindUi(this));
@@ -117,7 +116,7 @@ public class EventRegattaList extends Composite {
if (leaderboardGroup != null) {
allBoatClassesSelected.getStyle().setDisplay(Display.NONE);
// hide all regattas of the not selected leaderboardgroup
for (LeaderboardGroupDTO lg : event.getLeaderboardGroups()) {
for (LeaderboardGroupDTO lg : getEvent().getLeaderboardGroups()) {
boolean isVisible = leaderboardGroup.getName().equals(lg.getName());
List<Regatta> regattaElements = regattaElementsByLeaderboardGroup.get(lg.getName());
for (Regatta regatta : regattaElements) {
@@ -127,7 +126,7 @@ public class EventRegattaList extends Composite {
} else {
// make all regattas visible
allBoatClassesSelected.getStyle().setDisplay(Display.INLINE_BLOCK);
for (LeaderboardGroupDTO lg : event.getLeaderboardGroups()) {
for (LeaderboardGroupDTO lg : getEvent().getLeaderboardGroups()) {
List<Regatta> regattaElements = regattaElementsByLeaderboardGroup.get(lg.getName());
for (Regatta regatta : regattaElements) {
regatta.setVisible(true);
@@ -7,9 +7,9 @@ import com.google.gwt.core.client.GWT;
import com.google.gwt.dom.client.StyleInjector;
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.HTMLPanel;
import com.google.gwt.user.client.ui.Widget;
import com.sap.sailing.gwt.home.client.place.event.AbstractEventComposite;
import com.sap.sailing.gwt.home.client.place.event.EventPageNavigator;
import com.sap.sailing.gwt.home.client.place.event.regatta.Regatta;
import com.sap.sailing.gwt.ui.shared.EventDTO;
@@ -19,7 +19,7 @@ import com.sap.sailing.gwt.ui.shared.RaceGroupSeriesDTO;
import com.sap.sailing.gwt.ui.shared.StrippedLeaderboardDTO;
import com.sap.sse.gwt.client.player.Timer;
public class EventRegattaRaces extends Composite {
public class EventRegattaRaces extends AbstractEventComposite {
private static EventRegattaRacesUiBinder uiBinder = GWT.create(EventRegattaRacesUiBinder.class);
interface EventRegattaRacesUiBinder extends UiBinder<Widget, EventRegattaRaces> {
@@ -31,12 +31,11 @@ public class EventRegattaRaces extends Composite {
@UiField HTMLPanel rootPanel;
private final Timer timerForClientServerOffset;
private final EventPageNavigator pageNavigator;
private final List<EventRegattaRacesPhase> phaseElements;
public EventRegattaRaces(EventDTO event, Timer timerForClientServerOffset, EventPageNavigator pageNavigator) {
super(event, pageNavigator);
this.timerForClientServerOffset = timerForClientServerOffset;
this.pageNavigator = pageNavigator;
phaseElements = new ArrayList<EventRegattaRacesPhase>();
@@ -57,13 +56,13 @@ public class EventRegattaRaces extends Composite {
int regattaPhases = raceGroup.getSeries().size();
if(regattaPhases > 1) {
for(RaceGroupSeriesDTO series: raceGroup.getSeries()) {
EventRegattaRacesPhase regattaPhase = new EventRegattaRacesPhase(leaderboard, series, timerForClientServerOffset, pageNavigator);
EventRegattaRacesPhase regattaPhase = new EventRegattaRacesPhase(leaderboard, series, timerForClientServerOffset, getPageNavigator());
regattaPhasesPanel.getElement().appendChild(regattaPhase.getElement());
phaseElements.add(regattaPhase);
}
} else {
RaceGroupSeriesDTO raceGroupSeriesDTO = raceGroup.getSeries().get(0);
EventRegattaRacesPhase regattaPhase = new EventRegattaRacesPhase(leaderboard, raceGroupSeriesDTO, timerForClientServerOffset, pageNavigator);
EventRegattaRacesPhase regattaPhase = new EventRegattaRacesPhase(leaderboard, raceGroupSeriesDTO, timerForClientServerOffset, getPageNavigator());
regattaPhasesPanel.getElement().appendChild(regattaPhase.getElement());
phaseElements.add(regattaPhase);
}
@@ -2,21 +2,19 @@ package com.sap.sailing.gwt.home.client.place.event.schedule;
import com.google.gwt.core.client.GWT;
import com.google.gwt.uibinder.client.UiBinder;
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.AbstractEventComposite;
import com.sap.sailing.gwt.home.client.place.event.EventPageNavigator;
import com.sap.sailing.gwt.ui.shared.EventDTO;
public class EventSchedule extends Composite {
public class EventSchedule extends AbstractEventComposite {
private static EventScheduleUiBinder uiBinder = GWT.create(EventScheduleUiBinder.class);
interface EventScheduleUiBinder extends UiBinder<Widget, EventSchedule> {
}
@SuppressWarnings("unused")
private final EventDTO event;
public EventSchedule(EventDTO event) {
this.event = event;
public EventSchedule(EventDTO event, EventPageNavigator placeNavigator) {
super(event, placeNavigator);
EventScheduleResources.INSTANCE.css().ensureInjected();
initWidget(uiBinder.createAndBindUi(this));
@@ -4,9 +4,10 @@ import java.util.List;
import com.google.gwt.activity.shared.AbstractActivity;
import com.google.gwt.event.shared.EventBus;
import com.google.gwt.user.client.Window;
import com.google.gwt.user.client.rpc.AsyncCallback;
import com.google.gwt.user.client.ui.AcceptsOneWidget;
import com.sap.sailing.gwt.home.client.place.error.ErrorView;
import com.sap.sailing.gwt.home.client.shared.placeholder.Placeholder;
import com.sap.sailing.gwt.ui.shared.EventBaseDTO;
public class EventsActivity extends AbstractActivity {
@@ -19,17 +20,21 @@ public class EventsActivity extends AbstractActivity {
@Override
public void start(final AcceptsOneWidget panel, EventBus eventBus) {
final EventsView eventsView = clientFactory.createEventsView(EventsActivity.this);
panel.setWidget(eventsView.asWidget());
panel.setWidget(new Placeholder());
clientFactory.getSailingService().getPublicEventsOfAllSailingServers(new AsyncCallback<List<EventBaseDTO>>() {
@Override
public void onSuccess(List<EventBaseDTO> events) {
final EventsView eventsView = clientFactory.createEventsView(EventsActivity.this);
panel.setWidget(eventsView.asWidget());
eventsView.setEvents(events);
}
@Override
public void onFailure(Throwable caught) {
Window.alert("Shit happens");
final ErrorView view = clientFactory.createErrorView("Error while loading the sailing server instances with service getPublicEventsOfAllSailingServers()", caught);
panel.setWidget(view.asWidget());
}
});
}
@@ -5,6 +5,8 @@ import com.google.gwt.event.shared.EventBus;
import com.google.gwt.user.client.Window;
import com.google.gwt.user.client.rpc.AsyncCallback;
import com.google.gwt.user.client.ui.AcceptsOneWidget;
import com.sap.sailing.gwt.home.client.place.error.ErrorView;
import com.sap.sailing.gwt.home.client.shared.placeholder.Placeholder;
import com.sap.sailing.gwt.ui.shared.LeaderboardSearchResultDTO;
import com.sap.sse.common.search.KeywordQuery;
@@ -14,6 +16,7 @@ public class SearchResultActivity extends AbstractActivity {
private final SearchResultPlace searchResultPlace;
private SearchResultView view;
private AcceptsOneWidget panel;
public SearchResultActivity(SearchResultPlace place, SearchResultClientFactory clientFactory) {
this.clientFactory = clientFactory;
@@ -25,13 +28,18 @@ public class SearchResultActivity extends AbstractActivity {
private void bindEvents() {
clientFactory.getEventBus().addHandler(SearchEvent.TYPE, new SearchEventHandler() {
public void onDoSearch(SearchEvent event) {
doSearch(event.getSearchText());
if(view != null) {
doSearch(event.getSearchText());
}
}
});
}
@Override
public void start(final AcceptsOneWidget panel, final EventBus eventBus) {
this.panel = panel;
panel.setWidget(new Placeholder());
view = clientFactory.createSearchResultView();
panel.setWidget(view.asWidget());
doSearch(searchResultPlace.getSearchText());
@@ -47,7 +55,8 @@ public class SearchResultActivity extends AbstractActivity {
@Override
public void onFailure(Throwable caught) {
Window.alert("Shit happens");
final ErrorView view = clientFactory.createErrorView("Error while seaching with service search()", caught);
panel.setWidget(view.asWidget());
}
});
}
@@ -10,6 +10,7 @@ import com.google.gwt.activity.shared.AbstractActivity;
import com.google.gwt.event.shared.EventBus;
import com.google.gwt.user.client.rpc.AsyncCallback;
import com.google.gwt.user.client.ui.AcceptsOneWidget;
import com.sap.sailing.gwt.home.client.shared.placeholder.Placeholder;
import com.sap.sailing.gwt.home.client.shared.stage.StageEventType;
import com.sap.sailing.gwt.ui.shared.EventBaseDTO;
import com.sap.sse.common.Util.Pair;
@@ -22,13 +23,15 @@ public class StartActivity extends AbstractActivity {
}
@Override
public void start(AcceptsOneWidget panel, EventBus eventBus) {
final StartView view = clientFactory.createStartView();
panel.setWidget(view.asWidget());
public void start(final AcceptsOneWidget panel, EventBus eventBus) {
panel.setWidget(new Placeholder());
clientFactory.getSailingService().getPublicEventsOfAllSailingServers(new AsyncCallback<List<EventBaseDTO>>() {
@Override
public void onSuccess(List<EventBaseDTO> result) {
final StartView view = clientFactory.createStartView();
panel.setWidget(view.asWidget());
fillStartPageEvents(view, result);
}
@@ -0,0 +1,15 @@
.error_content {
margin-top: 3em;
margin-bottom: 3em;
}
.error_message {
font-weight: bold;
font-size: 20px;
}
.error_message_detail {
font-size: 15px;
}
.reload_page_message {
font-size: 20px;
margin-right: 20px;
}
@@ -0,0 +1,40 @@
package com.sap.sailing.gwt.home.client.shared.error;
import com.google.gwt.core.client.GWT;
import com.google.gwt.dom.client.DivElement;
import com.google.gwt.event.dom.client.ClickEvent;
import com.google.gwt.uibinder.client.UiBinder;
import com.google.gwt.uibinder.client.UiField;
import com.google.gwt.uibinder.client.UiHandler;
import com.google.gwt.user.client.Window;
import com.google.gwt.user.client.ui.Anchor;
import com.google.gwt.user.client.ui.Composite;
import com.google.gwt.user.client.ui.Widget;
import com.sap.sailing.gwt.home.client.i18n.TextMessages;
public class ErrorMessage extends Composite {
interface ErrorUiBinder extends UiBinder<Widget, ErrorMessage> {
}
private static ErrorUiBinder uiBinder = GWT.create(ErrorUiBinder.class);
@UiField DivElement errorMessage;
@UiField DivElement errorMessageDetail;
@UiField Anchor reloadPageAnchor;
public ErrorMessage(String detailMessage, Throwable errorReason) {
ErrorMessageResources.INSTANCE.css().ensureInjected();
initWidget(uiBinder.createAndBindUi(this));
this.setHeight(Window.getClientHeight() + "px");
errorMessage.setInnerText(TextMessages.INSTANCE.errorMessageLoadingData());
Window.setStatus(detailMessage);
}
@UiHandler("reloadPageAnchor")
void reloadPage(ClickEvent e) {
Window.Location.reload();
}
}
@@ -0,0 +1,22 @@
<!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">
<ui:with field="i18n" type="com.sap.sailing.gwt.home.client.i18n.TextMessages"/>
<ui:with field="res" type="com.sap.sailing.gwt.home.client.HomeResources" />
<ui:with field="local_res" type="com.sap.sailing.gwt.home.client.shared.error.ErrorMessageResources" />
<g:HTMLPanel>
<div class="{res.mainCss.grid}">
<div class="{res.mediaCss.columns}">
<div class="{local_res.css.error_content}">
<div ui:field="errorMessage" class="{local_res.css.error_message}"></div>
<div ui:field="errorMessageDetail" class="{local_res.css.error_message_detail}"></div>
</div>
<div>
<span class="{local_res.css.reload_page_message}"><ui:text from='{i18n.pleaseTryAgain}'/></span>
<g:Anchor ui:field="reloadPageAnchor" href="javascript:;" styleName="{res.mainCss.button}"><ui:text from='{i18n.reloadPage}'/></g:Anchor>
</div>
</div>
</div>
</g:HTMLPanel>
</ui:UiBinder>
@@ -0,0 +1,19 @@
package com.sap.sailing.gwt.home.client.shared.error;
import com.google.gwt.core.client.GWT;
import com.google.gwt.resources.client.ClientBundle;
import com.google.gwt.resources.client.CssResource;
public interface ErrorMessageResources extends ClientBundle {
public static final ErrorMessageResources INSTANCE = GWT.create(ErrorMessageResources.class);
@Source("com/sap/sailing/gwt/home/client/shared/error/ErrorMessage.css")
LocalCss css();
public interface LocalCss extends CssResource {
String error_content();
String error_message();
String error_message_detail();
String reload_page_message();
}
}
@@ -4,6 +4,7 @@ import java.util.Arrays;
import java.util.List;
import com.google.gwt.core.client.GWT;
import com.google.gwt.dom.client.AnchorElement;
import com.google.gwt.dom.client.StyleInjector;
import com.google.gwt.event.dom.client.ClickEvent;
import com.google.gwt.event.dom.client.KeyCodes;
@@ -12,6 +13,9 @@ import com.google.gwt.event.dom.client.KeyPressHandler;
import com.google.gwt.uibinder.client.UiBinder;
import com.google.gwt.uibinder.client.UiField;
import com.google.gwt.uibinder.client.UiHandler;
import com.google.gwt.user.client.DOM;
import com.google.gwt.user.client.Event;
import com.google.gwt.user.client.EventListener;
import com.google.gwt.user.client.Window;
import com.google.gwt.user.client.ui.Anchor;
import com.google.gwt.user.client.ui.Button;
@@ -19,11 +23,13 @@ import com.google.gwt.user.client.ui.Composite;
import com.google.gwt.user.client.ui.TextBox;
import com.google.gwt.user.client.ui.Widget;
import com.sap.sailing.gwt.home.client.app.PlaceNavigator;
import com.sap.sailing.gwt.home.client.i18n.TextMessages;
public class Header extends Composite {
@UiField Anchor startPageLink;
@UiField Anchor eventsPageLink;
@UiField Anchor solutionsPageLink;
@UiField AnchorElement homeLink;
// @UiField Anchor sponsoringPageLink;
@UiField TextBox searchText;
@@ -37,7 +43,7 @@ public class Header extends Composite {
private static HeaderUiBinder uiBinder = GWT.create(HeaderUiBinder.class);
public Header(PlaceNavigator navigator) {
public Header(final PlaceNavigator navigator) {
this.navigator = navigator;
HeaderResources.INSTANCE.css().ensureInjected();
@@ -46,7 +52,7 @@ public class Header extends Composite {
initWidget(uiBinder.createAndBindUi(this));
links = Arrays.asList(new Anchor[] { startPageLink, eventsPageLink, solutionsPageLink });
searchText.getElement().setAttribute("placeholder", "Search SAPSailing.com");
searchText.getElement().setAttribute("placeholder", TextMessages.INSTANCE.headerSearchPlaceholder());
searchText.addKeyPressHandler(new KeyPressHandler() {
@Override
public void onKeyPress(KeyPressEvent event) {
@@ -55,6 +61,18 @@ public class Header extends Composite {
}
}
});
Event.sinkEvents(homeLink, Event.ONCLICK);
Event.setEventListener(homeLink, new EventListener() {
@Override
public void onBrowserEvent(Event event) {
switch (DOM.eventGetType(event)) {
case Event.ONCLICK:
navigator.goToHome();
break;
}
}
});
}
@UiHandler("startPageLink")
@@ -83,7 +101,7 @@ public class Header extends Composite {
@UiHandler("searchButton")
void searchButtonClick(ClickEvent event) {
if(searchText.getText().isEmpty()) {
Window.alert("Please enter a search term.");
Window.alert(TextMessages.INSTANCE.pleaseEnterASearchTerm());
} else {
navigator.goToSearchResult(searchText.getText());
}
@@ -9,7 +9,9 @@
<header class="{local_res.css.siteheader}">
<div class="{res.mainCss.grid}">
<div class="{res.mediaCss.small2} {res.mediaCss.large3} {res.mediaCss.columns}">
<g:Image resource="{local_res.logo}" pixelSize="80, 40" altText="SAP Sailing Analytics" styleName="{local_res.css.logo}"/>
<a ui:field="homeLink" href="javascript:;">
<g:Image resource="{local_res.logo}" pixelSize="80, 40" altText="SAP Sailing Analytics" styleName="{local_res.css.logo}"/>
</a>
<p class="{local_res.css.logotitle}">Sailing Analytics</p>
</div>
<div class="{res.mediaCss.small9} {res.mediaCss.medium7} {res.mediaCss.large6} {res.mediaCss.columns}">
@@ -0,0 +1,5 @@
.content {
margin-top: 3em;
font-weight: bold;
vertical-align: center;
}
@@ -0,0 +1,23 @@
package com.sap.sailing.gwt.home.client.shared.placeholder;
import com.google.gwt.core.client.GWT;
import com.google.gwt.uibinder.client.UiBinder;
import com.google.gwt.user.client.Window;
import com.google.gwt.user.client.ui.Composite;
import com.google.gwt.user.client.ui.Widget;
public class Placeholder extends Composite {
interface PlaceholderUiBinder extends UiBinder<Widget, Placeholder> {
}
private static PlaceholderUiBinder uiBinder = GWT.create(PlaceholderUiBinder.class);
public Placeholder() {
PlaceholderResources.INSTANCE.css().ensureInjected();
initWidget(uiBinder.createAndBindUi(this));
this.setHeight(Window.getClientHeight() + "px");
}
}
@@ -0,0 +1,18 @@
<!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">
<ui:with field="i18n" type="com.sap.sailing.gwt.home.client.i18n.TextMessages"/>
<ui:with field="res" type="com.sap.sailing.gwt.home.client.HomeResources" />
<ui:with field="local_res" type="com.sap.sailing.gwt.home.client.shared.placeholder.PlaceholderResources" />
<g:HTMLPanel>
<div class="{res.mainCss.grid}">
<div class="{res.mediaCss.columns}">
<div class="{local_res.css.content}">
<span style="margin-right: 10px">Loading...</span>
<img src="images/home/busy_indicator.gif" />
</div>
</div>
</div>
</g:HTMLPanel>
</ui:UiBinder>
@@ -0,0 +1,16 @@
package com.sap.sailing.gwt.home.client.shared.placeholder;
import com.google.gwt.core.client.GWT;
import com.google.gwt.resources.client.ClientBundle;
import com.google.gwt.resources.client.CssResource;
public interface PlaceholderResources extends ClientBundle {
public static final PlaceholderResources INSTANCE = GWT.create(PlaceholderResources.class);
@Source("com/sap/sailing/gwt/home/client/shared/placeholder/Placeholder.css")
LocalCss css();
public interface LocalCss extends CssResource {
String content();
}
}
@@ -1,5 +1,6 @@
package com.sap.sailing.gwt.ui.client;
import com.sap.sailing.gwt.home.client.place.error.ErrorView;
import com.sap.sse.gwt.client.mvp.ClientFactory;
/**
@@ -10,4 +11,6 @@ import com.sap.sse.gwt.client.mvp.ClientFactory;
*/
public interface SailingClientFactory extends ClientFactory {
SailingServiceAsync getSailingService();
ErrorView createErrorView(String errorMessage, Throwable errorReason);
}