From 68d48f5dcdb0038268a4dbd0f693ca206e13416b Mon Sep 17 00:00:00 2001 From: fmittag Date: Wed, 7 Mar 2012 15:46:25 +0100 Subject: [PATCH 1/3] further adjustment of the sideBySideComponentViewer bahavior fixed missing implementation of setVisible() in the Windchart component --- .../gwt/ui/adminconsole/WindChart.java | 3 +- .../gwt/ui/raceboard/RaceBoardPanel.java | 28 ++++++++++--------- .../raceboard/SideBySideComponentViewer.java | 7 +++-- 3 files changed, 22 insertions(+), 16 deletions(-) diff --git a/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/ui/adminconsole/WindChart.java b/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/ui/adminconsole/WindChart.java index 4c53dd9fdfd..5682e5dccbd 100755 --- a/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/ui/adminconsole/WindChart.java +++ b/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/ui/adminconsole/WindChart.java @@ -155,11 +155,12 @@ public class WindChart implements Component, RaceSelectionCha @Override public boolean isVisible() { - return true; + return mainPanel.isVisible(); } @Override public void setVisible(boolean visibility) { + mainPanel.setVisible(visibility); } private void showVisibleSeries() { diff --git a/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/ui/raceboard/RaceBoardPanel.java b/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/ui/raceboard/RaceBoardPanel.java index 87cb1a44cfa..6594b3c5f99 100644 --- a/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/ui/raceboard/RaceBoardPanel.java +++ b/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/ui/raceboard/RaceBoardPanel.java @@ -132,22 +132,18 @@ public class RaceBoardPanel extends FormPanel implements EventDisplayer, RaceSel List> components = new ArrayList>(); + 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 windChartViewer = new SimpleComponentViewer( -// 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 chartViewer = new SimpleComponentViewer( -// competitorCharts, "auto", "200px"); - - competitorCharts.onRaceSelectionChange(raceSelectionProvider.getSelectedRaces()); - components.add(competitorCharts); - SideBySideComponentViewer leaderboardAndMapViewer = new SideBySideComponentViewer(leaderboardPanel, raceMap, components, "auto", "500px"); componentViewers.add(leaderboardAndMapViewer); @@ -237,13 +233,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(); } } diff --git a/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/ui/raceboard/SideBySideComponentViewer.java b/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/ui/raceboard/SideBySideComponentViewer.java index be972321a6c..359a8b5af81 100644 --- a/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/ui/raceboard/SideBySideComponentViewer.java +++ b/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/ui/raceboard/SideBySideComponentViewer.java @@ -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()); From d770284685de2f1d2cd44391e4177cfc426ad689 Mon Sep 17 00:00:00 2001 From: Lennart Hensler Date: Wed, 7 Mar 2012 16:36:29 +0100 Subject: [PATCH 2/3] Extended the no competitor selected message --- .../com/sap/sailing/gwt/ui/client/StringMessages.properties | 2 +- .../com/sap/sailing/gwt/ui/client/StringMessages_de.properties | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/ui/client/StringMessages.properties b/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/ui/client/StringMessages.properties index 3f51054703b..8b8854d441c 100644 --- a/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/ui/client/StringMessages.properties +++ b/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/ui/client/StringMessages.properties @@ -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 diff --git a/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/ui/client/StringMessages_de.properties b/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/ui/client/StringMessages_de.properties index 5527fc0e457..96d64765222 100644 --- a/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/ui/client/StringMessages_de.properties +++ b/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/ui/client/StringMessages_de.properties @@ -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 From 97567a2996f89e5be6e8b5321cdd3cf810dfc648 Mon Sep 17 00:00:00 2001 From: fmittag Date: Thu, 8 Mar 2012 12:20:20 +0100 Subject: [PATCH 3/3] changed overall Layout mechanism of the Raceboard for the ONESCREEN mode from RootPanel to RootLayoutPanel --- .../gwt/ui/raceboard/RaceBoardEntryPoint.java | 101 +++++++++++++----- .../gwt/ui/raceboard/RaceBoardPanel.java | 9 +- .../gwt/ui/raceboard/RaceBoardViewMode.java | 2 +- 3 files changed, 78 insertions(+), 34 deletions(-) diff --git a/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/ui/raceboard/RaceBoardEntryPoint.java b/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/ui/raceboard/RaceBoardEntryPoint.java index 986be0cb84b..2b53fcf23ab 100644 --- a/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/ui/raceboard/RaceBoardEntryPoint.java +++ b/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/ui/raceboard/RaceBoardEntryPoint.java @@ -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 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 events) { @@ -138,27 +155,40 @@ public class RaceBoardEntryPoint extends AbstractEntryPoint { return null; } - private void createRaceBoardPanel(RaceDTO selectedRace, List events, UserDTO userDTO) { - LogoAndTitlePanel logoAndTitlePanel = new LogoAndTitlePanel(stringMessages); - logoAndTitlePanel.addStyleName("LogoAndTitlePanel"); - RaceSelectionModel raceSelectionModel = new RaceSelectionModel(); - List 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); + } } diff --git a/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/ui/raceboard/RaceBoardPanel.java b/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/ui/raceboard/RaceBoardPanel.java index 6594b3c5f99..9821ac95541 100644 --- a/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/ui/raceboard/RaceBoardPanel.java +++ b/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/ui/raceboard/RaceBoardPanel.java @@ -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; } @@ -145,7 +145,8 @@ public class RaceBoardPanel extends FormPanel implements EventDisplayer, RaceSel windChart.setVisible(false); components.add(windChart); - 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) { @@ -153,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); } diff --git a/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/ui/raceboard/RaceBoardViewMode.java b/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/ui/raceboard/RaceBoardViewMode.java index de005aee392..db1d092a2f7 100644 --- a/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/ui/raceboard/RaceBoardViewMode.java +++ b/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/ui/raceboard/RaceBoardViewMode.java @@ -2,6 +2,6 @@ package com.sap.sailing.gwt.ui.raceboard; public enum RaceBoardViewMode { - CASCADING, ONE_SCREEN + CASCADE, ONESCREEN }