Merge remote-tracking branch 'server/master'

This commit is contained in:
Axel Uhl committed 2012-03-08 12:37:11 +01:00
commit b4b32a3f7c
7 files changed
+102 -52

No files matched your search

@@ -155,11 +155,12 @@ public class WindChart implements Component<WindChartSettings>, RaceSelectionCha
@Override
public boolean isVisible() {
return true;
return mainPanel.isVisible();
}
@Override
public void setVisible(boolean visibility) {
mainPanel.setVisible(visibility);
}
private void showVisibleSeries() {
@@ -251,7 +251,7 @@ stepSizeInSeconds=Step size in seconds
refreshInterval=Refresh interval (s)
refreshIntervalMustBeGreaterThanXSeconds=Refresh interval must be greater than {0} seconds
competitorCharts=Competitor charts
selectAtLeastOneCompetitor=Select at least one competitor
selectAtLeastOneCompetitor=To show the competitor charts, select at least one competitor
directionChange=Direction change
speedChange=Speed change
degreesShort=deg
@@ -252,7 +252,7 @@ stepSizeInSeconds=Schrittweite in Sekunden
refreshInterval=Aktualisierungs-Interval (s)
refreshIntervalMustBeGreaterThanXSeconds=Aktualisierungs-Interval muss größer als {0} Sekunden sein
competitorCharts=Competitor charts
selectAtLeastOneCompetitor=Mindestens einen Segler auswählen
selectAtLeastOneCompetitor=Um die Segler-Diagramme anzeigen zu lassen, wähle mindestens einen Segler aus
directionChange=Richtungsänderung
speedChange=Geschwindigkeitsänderung
degreesShort=deg
@@ -3,8 +3,11 @@ package com.sap.sailing.gwt.ui.raceboard;
import java.util.Collections;
import java.util.List;
import com.google.gwt.dom.client.Style.Unit;
import com.google.gwt.user.client.Window;
import com.google.gwt.user.client.ui.DockLayoutPanel;
import com.google.gwt.user.client.ui.FlowPanel;
import com.google.gwt.user.client.ui.RootLayoutPanel;
import com.google.gwt.user.client.ui.RootPanel;
import com.sap.sailing.domain.common.DefaultLeaderboardName;
import com.sap.sailing.domain.common.RaceIdentifier;
@@ -22,7 +25,6 @@ import com.sap.sailing.gwt.ui.shared.UserDTO;
public class RaceBoardEntryPoint extends AbstractEntryPoint {
private RaceDTO selectedRace;
private RaceBoardPanel raceBoardPanel;
private String eventName;
private String raceName;
@@ -44,10 +46,10 @@ public class RaceBoardEntryPoint extends AbstractEntryPoint {
viewMode = RaceBoardViewMode.valueOf(viewModeParamValue);
} catch (IllegalArgumentException e) {
viewMode = RaceBoardViewMode.CASCADING;
viewMode = RaceBoardViewMode.CASCADE;
}
} else {
viewMode = RaceBoardViewMode.CASCADING;
viewMode = RaceBoardViewMode.CASCADE;
}
if(leaderboardNameParamValue == null || leaderboardNameParamValue.isEmpty()) {
leaderboardName = DefaultLeaderboardName.DEFAULT_LEADERBOARD_NAME;
@@ -120,7 +122,22 @@ public class RaceBoardEntryPoint extends AbstractEntryPoint {
createErrorPage("Could not obtain a race with name " + raceName + " for an event with name " + eventName);
return;
}
createRaceBoardPanel(selectedRace, events, user);
RaceSelectionModel raceSelectionModel = new RaceSelectionModel();
List<RaceIdentifier> singletonList = Collections.singletonList(selectedRace.getRaceIdentifier());
raceSelectionModel.setSelection(singletonList);
RaceBoardPanel raceBoardPanel = new RaceBoardPanel(sailingService, user, raceSelectionModel, leaderboardName, leaderboardGroupName,
RaceBoardEntryPoint.this, stringMessages, userAgentType, viewMode);
raceBoardPanel.fillEvents(events);
switch (viewMode) {
case CASCADE:
createRaceBoardInCascadeMode(raceBoardPanel);
break;
case ONESCREEN:
createRaceBoardInOneScreenMode(raceBoardPanel);
break;
}
}
private RaceDTO findRace(String eventName, String raceName, List<EventDTO> events) {
@@ -138,27 +155,40 @@ public class RaceBoardEntryPoint extends AbstractEntryPoint {
return null;
}
private void createRaceBoardPanel(RaceDTO selectedRace, List<EventDTO> events, UserDTO userDTO) {
LogoAndTitlePanel logoAndTitlePanel = new LogoAndTitlePanel(stringMessages);
logoAndTitlePanel.addStyleName("LogoAndTitlePanel");
RaceSelectionModel raceSelectionModel = new RaceSelectionModel();
List<RaceIdentifier> singletonList = Collections.singletonList(selectedRace.getRaceIdentifier());
raceSelectionModel.setSelection(singletonList);
raceBoardPanel = new RaceBoardPanel(sailingService, userDTO, raceSelectionModel, leaderboardName, leaderboardGroupName,
RaceBoardEntryPoint.this, stringMessages, userAgentType, viewMode);
raceBoardPanel.fillEvents(events);
private void createRaceBoardInCascadeMode(RaceBoardPanel raceBoardPanel) {
logoAndTitlePanel.add(raceBoardPanel.getNavigationWidget());
FlowPanel raceBoardHeaderPanel = createBoardHeaderPanel(raceBoardPanel);
FlowPanel logoAndTitlePanel = createLogoAndTitlePanel(raceBoardPanel);
FlowPanel timePanel = createTimePanel(raceBoardPanel);
FlowPanel contentOuterPanel = new FlowPanel(); // outer div which centered page content
contentOuterPanel.addStyleName("contentOuterPanel");
contentOuterPanel.setSize("100%", "100%");
contentOuterPanel.add(raceBoardPanel);
//FlowPanel footerShadowPanel = new FlowPanel();
// footerShadowPanel.addStyleName("footerShadowPanel");
RootPanel.get().add(raceBoardHeaderPanel);
RootPanel.get().add(contentOuterPanel);
// Don't change this order because of the inner logic in html of "position fixed"-elements
RootPanel.get().add(logoAndTitlePanel); // position:fixed
RootPanel.get().add(timePanel); // position:fixed
//RootPanel.get().add(footerShadowPanel); // position:fixed
raceBoardPanel.setScrollOffset(logoAndTitlePanel.getOffsetHeight());
}
private FlowPanel createBoardHeaderPanel(RaceBoardPanel raceBoardPanel)
{
FlowPanel raceBoardHeaderPanel = new FlowPanel();
raceBoardHeaderPanel.addStyleName("RaceBoardHeaderPanel");
if(raceBoardPanel.getBreadcrumbWidget() != null)
raceBoardHeaderPanel.add(raceBoardPanel.getBreadcrumbWidget());
FlowPanel contentOuterPanel = new FlowPanel(); // outer div which centered page content
contentOuterPanel.addStyleName("contentOuterPanel");
contentOuterPanel.add(raceBoardPanel);
return raceBoardHeaderPanel;
}
private FlowPanel createTimePanel(RaceBoardPanel raceBoardPanel) {
FlowPanel timeLineInnerBgPanel = new FlowPanel();
timeLineInnerBgPanel.addStyleName("timeLineInnerBgPanel");
timeLineInnerBgPanel.add(raceBoardPanel.getTimeWidget());
@@ -171,16 +201,29 @@ public class RaceBoardEntryPoint extends AbstractEntryPoint {
timelinePanel.add(timeLineInnerPanel);
timelinePanel.addStyleName("timeLinePanel");
//FlowPanel footerShadowPanel = new FlowPanel();
// footerShadowPanel.addStyleName("footerShadowPanel");
RootPanel.get().add(raceBoardHeaderPanel);
RootPanel.get().add(contentOuterPanel);
// Don't change this order because of the inner logic in html of "position fixed"-elements
RootPanel.get().add(logoAndTitlePanel); // position:fixed
RootPanel.get().add(timelinePanel); // position:fixed
//RootPanel.get().add(footerShadowPanel); // position:fixed
raceBoardPanel.setScrollOffset(logoAndTitlePanel.getOffsetHeight());
return timelinePanel;
}
private FlowPanel createLogoAndTitlePanel(RaceBoardPanel raceBoardPanel) {
LogoAndTitlePanel logoAndTitlePanel = new LogoAndTitlePanel(stringMessages);
logoAndTitlePanel.addStyleName("LogoAndTitlePanel");
logoAndTitlePanel.add(raceBoardPanel.getNavigationWidget());
return logoAndTitlePanel;
}
private void createRaceBoardInOneScreenMode(RaceBoardPanel raceBoardPanel) {
DockLayoutPanel p = new DockLayoutPanel(Unit.PX);
RootLayoutPanel.get().add(p);
FlowPanel raceBoardHeaderPanel = createBoardHeaderPanel(raceBoardPanel);
FlowPanel logoAndTitlePanel = createLogoAndTitlePanel(raceBoardPanel);
FlowPanel timePanel = createTimePanel(raceBoardPanel);
p.addNorth(logoAndTitlePanel, 68);
p.addNorth(raceBoardHeaderPanel,30);
p.addSouth(timePanel, 140);
p.add(raceBoardPanel);
}
}
@@ -106,10 +106,10 @@ public class RaceBoardPanel extends FormPanel implements EventDisplayer, RaceSel
componentsNavigationPanel.addStyleName("raceBoardNavigation");
switch (viewMode) {
case CASCADING:
case CASCADE:
createCascadingView(leaderboardName, leaderboardGroupName, mainPanel);
break;
case ONE_SCREEN:
case ONESCREEN:
createOneScreenView(leaderboardName, leaderboardGroupName, mainPanel);
break;
}
@@ -132,24 +132,21 @@ public class RaceBoardPanel extends FormPanel implements EventDisplayer, RaceSel
List<Component<?>> components = new ArrayList<Component<?>>();
MultiChartPanel competitorCharts = new MultiChartPanel(sailingService, competitorSelectionModel, raceSelectionProvider,
timer, stringMessages, errorReporter, 200, true);
competitorCharts.onRaceSelectionChange(raceSelectionProvider.getSelectedRaces());
components.add(competitorCharts);
competitorCharts.setVisible(false);
WindChartSettings windChartSettings = new WindChartSettings(WindSourceType.values());
WindChart windChart = new WindChart(sailingService, raceSelectionProvider, timer, windChartSettings,
stringMessages, errorReporter, 200, true);
// SimpleComponentViewer<WindChartSettings> windChartViewer = new SimpleComponentViewer<WindChartSettings>(
// windChart, "auto", "200px");
windChart.onRaceSelectionChange(raceSelectionProvider.getSelectedRaces());
windChart.setVisible(false);
components.add(windChart);
MultiChartPanel competitorCharts = new MultiChartPanel(sailingService, competitorSelectionModel, raceSelectionProvider,
timer, stringMessages, errorReporter, 200, true);
// SimpleComponentViewer<MultiChartSettings> chartViewer = new SimpleComponentViewer<MultiChartSettings>(
// competitorCharts, "auto", "200px");
competitorCharts.onRaceSelectionChange(raceSelectionProvider.getSelectedRaces());
components.add(competitorCharts);
SideBySideComponentViewer leaderboardAndMapViewer = new SideBySideComponentViewer(leaderboardPanel, raceMap, components, "auto", "500px");
SideBySideComponentViewer leaderboardAndMapViewer = new SideBySideComponentViewer(leaderboardPanel, raceMap,
components, "100%", "100%");
componentViewers.add(leaderboardAndMapViewer);
for (ComponentViewer componentViewer : componentViewers) {
@@ -157,7 +154,7 @@ public class RaceBoardPanel extends FormPanel implements EventDisplayer, RaceSel
}
addComponentAsToogleButtonToNavigationMenu(leaderboardAndMapViewer, leaderboardPanel);
addComponentAsToogleButtonToNavigationMenu(leaderboardAndMapViewer, raceMap);
//addComponentAsToogleButtonToNavigationMenu(leaderboardAndMapViewer, raceMap);
addComponentAsToogleButtonToNavigationMenu(leaderboardAndMapViewer, windChart);
addComponentAsToogleButtonToNavigationMenu(leaderboardAndMapViewer, competitorCharts);
}
@@ -237,13 +234,19 @@ public class RaceBoardPanel extends FormPanel implements EventDisplayer, RaceSel
toggleButton.getElement().getStyle().setFloat(Style.Float.LEFT);
toggleButton.getElement().getStyle().setPadding(3, Style.Unit.PX);
toggleButton.getElement().getStyle().setMargin(3, Style.Unit.PX);
toggleButton.setDown(component.isVisible());
toggleButton.addClickHandler(new ClickHandler() {
public void onClick(ClickEvent event) {
// make the map invisible is this is not supported yet due to problems with disabling the center element of a DockPanel
if(component instanceof RaceMap)
return;
if (toggleButton.isDown()) {
component.setVisible(false);
component.setVisible(true);
componentViewer.forceLayout();
} else {
component.setVisible(true);
component.setVisible(false);
componentViewer.forceLayout();
}
}
@@ -2,6 +2,6 @@ package com.sap.sailing.gwt.ui.raceboard;
public enum RaceBoardViewMode {
CASCADING, ONE_SCREEN
CASCADE, ONESCREEN
}
@@ -52,8 +52,9 @@ public class SideBySideComponentViewer implements ComponentViewer {
public void forceLayout() {
if(leftComponent.isVisible() && !rightComponent.isVisible()) {
// the leaderboard is visible, but not the map
if(isWidgetInSplitPanel(rightComponent.getEntryWidget()))
if(isWidgetInSplitPanel(rightComponent.getEntryWidget())) {
splitLayoutPanel.remove(rightComponent.getEntryWidget());
}
}
else if(!leftComponent.isVisible() && rightComponent.isVisible()) {
// the leaderboard is not visible, but the map is
@@ -61,6 +62,7 @@ public class SideBySideComponentViewer implements ComponentViewer {
splitLayoutPanel.remove(leftScrollPanel);
}
else if(leftComponent.isVisible() && rightComponent.isVisible()) {
// the leaderboard and the map are visible
if(!isWidgetInSplitPanel(leftScrollPanel) || !isWidgetInSplitPanel(rightComponent.getEntryWidget())) {
if(!isWidgetInSplitPanel(leftScrollPanel))
splitLayoutPanel.insertWest(leftScrollPanel, savedSplitPosition, rightComponent.getEntryWidget());
@@ -74,7 +76,8 @@ public class SideBySideComponentViewer implements ComponentViewer {
for(Component<?> component: components) {
boolean isComponentInSplitPanel = isWidgetInSplitPanel(component.getEntryWidget());
if(component.isVisible()) {
// splitLayoutPanel.addSouth(component.getEntryWidget(), 200);
if(!isComponentInSplitPanel)
splitLayoutPanel.insertSouth(component.getEntryWidget(), 200, splitLayoutPanel.getWidget(0));
} else {
if(isComponentInSplitPanel)
splitLayoutPanel.remove(component.getEntryWidget());