From 4d287b5d5235643117dd3df14582b9041d2bdb0b Mon Sep 17 00:00:00 2001 From: Lennart Hensler Date: Tue, 7 Feb 2012 10:46:58 +0100 Subject: [PATCH 01/14] Cleaned SimpleBusyIndicator --- .../sap/sailing/gwt/ui/shared/panels/SimpleBusyIndicator.java | 2 -- 1 file changed, 2 deletions(-) diff --git a/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/ui/shared/panels/SimpleBusyIndicator.java b/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/ui/shared/panels/SimpleBusyIndicator.java index e1d2b3880ec..62486662e57 100644 --- a/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/ui/shared/panels/SimpleBusyIndicator.java +++ b/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/ui/shared/panels/SimpleBusyIndicator.java @@ -29,8 +29,6 @@ public class SimpleBusyIndicator extends BusyIndicator { public void setBusy(boolean busy) { this.busy = busy; busyIndicator.setVisible(busy); -// Element elem = busyIndicator.getElement(); -// DOM.setStyleAttribute(elem, "visibility", busy ? "visible" : "hidden"); } } From d5fb6ad9a0a4fee6688765efa41f954ba1597a54 Mon Sep 17 00:00:00 2001 From: Axel Uhl Date: Tue, 7 Feb 2012 10:55:38 +0100 Subject: [PATCH 02/14] added timers to chart panels --- .../gwt/ui/adminconsole/WindChart.java | 12 +++++++++++- .../gwt/ui/adminconsole/WindPanel.java | 4 +++- .../ui/leaderboard/AbstractChartPanel.java | 19 ++++++++++++++++--- .../gwt/ui/leaderboard/ChartPanel.java | 9 +++++---- .../CompareCompetitorsChartDialog.java | 9 +++++---- .../gwt/ui/leaderboard/LeaderboardPanel.java | 2 +- .../gwt/ui/leaderboard/MultiChartPanel.java | 9 +++++---- .../gwt/ui/raceboard/RaceBoardPanel.java | 2 +- 8 files changed, 47 insertions(+), 19 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 af42c4ecd62..50269d95018 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 @@ -29,6 +29,8 @@ import com.sap.sailing.gwt.ui.client.RaceSelectionProvider; import com.sap.sailing.gwt.ui.client.SailingServiceAsync; import com.sap.sailing.gwt.ui.client.StringMessages; import com.sap.sailing.gwt.ui.client.TimeListener; +import com.sap.sailing.gwt.ui.client.Timer; +import com.sap.sailing.gwt.ui.client.Timer.PlayModes; import com.sap.sailing.gwt.ui.shared.WindDTO; import com.sap.sailing.gwt.ui.shared.WindInfoForRaceDTO; import com.sap.sailing.gwt.ui.shared.WindTrackInfoDTO; @@ -47,6 +49,7 @@ public class WindChart implements Component, RaceSelectionCha private final ErrorReporter errorReporter; private final SailingServiceAsync sailingService; private final Chart chart; + private final Timer timer; /** * @param raceSelectionProvider @@ -55,13 +58,14 @@ public class WindChart implements Component, RaceSelectionCha * server and displayed in this chart. If no race is selected, the chart is cleared. */ public WindChart(SailingServiceAsync sailingService, RaceSelectionProvider raceSelectionProvider, - WindChartSettings settings, StringMessages stringMessages, ErrorReporter errorReporter) { + Timer timer, WindChartSettings settings, StringMessages stringMessages, ErrorReporter errorReporter) { super(); this.sailingService = sailingService; this.stringMessages = stringMessages; this.errorReporter = errorReporter; this.windSourceSeries = new HashMap(); this.windSourcesToDisplay = new HashSet(); + this.timer = timer; chart = new Chart() .setZoomType(Chart.ZoomType.X) .setSpacingRight(20) @@ -206,6 +210,12 @@ public class WindChart implements Component, RaceSelectionCha @Override public void timeChanged(Date date) { + if (timer.getPlayMode() == PlayModes.Live) { + // TODO fetch missing pieces from cache + } else { + // assuming play mode is replay / non-live + // TODO fetch all if not yet fetched + } // TODO implement timeChanged by loading missing wind data and adding to series } } diff --git a/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/ui/adminconsole/WindPanel.java b/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/ui/adminconsole/WindPanel.java index fa7607fbd9b..6ef45a1d1f6 100755 --- a/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/ui/adminconsole/WindPanel.java +++ b/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/ui/adminconsole/WindPanel.java @@ -47,6 +47,8 @@ import com.sap.sailing.gwt.ui.client.RaceSelectionModel; import com.sap.sailing.gwt.ui.client.RaceSelectionProvider; import com.sap.sailing.gwt.ui.client.SailingServiceAsync; import com.sap.sailing.gwt.ui.client.StringMessages; +import com.sap.sailing.gwt.ui.client.Timer; +import com.sap.sailing.gwt.ui.client.Timer.PlayModes; import com.sap.sailing.gwt.ui.shared.EventDTO; import com.sap.sailing.gwt.ui.shared.WindDTO; import com.sap.sailing.gwt.ui.shared.WindInfoForRaceDTO; @@ -173,7 +175,7 @@ public class WindPanel extends FormPanel implements EventDisplayer, WindShower, windSourceSelectionPanel.add(showConfigAnchor); grid.setWidget(1, 0, windSourceSelectionPanel); windChart = new WindChart(sailingService, /* race selection provider */ raceSelectionProvider, - new WindChartSettings(WindSource.values()), stringMessages, errorReporter); + new Timer(PlayModes.Replay), new WindChartSettings(WindSource.values()), stringMessages, errorReporter); grid.setWidget(2, 0, windChart.getEntryWidget()); grid.getCellFormatter().setVerticalAlignment(1, 1, HasVerticalAlignment.ALIGN_TOP); this.setWidget(grid); diff --git a/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/ui/leaderboard/AbstractChartPanel.java b/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/ui/leaderboard/AbstractChartPanel.java index d6cc66bd16c..cd2d4cfe17d 100644 --- a/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/ui/leaderboard/AbstractChartPanel.java +++ b/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/ui/leaderboard/AbstractChartPanel.java @@ -61,6 +61,9 @@ import com.sap.sailing.gwt.ui.client.RaceSelectionChangeListener; import com.sap.sailing.gwt.ui.client.RaceSelectionProvider; import com.sap.sailing.gwt.ui.client.SailingServiceAsync; import com.sap.sailing.gwt.ui.client.StringMessages; +import com.sap.sailing.gwt.ui.client.TimeListener; +import com.sap.sailing.gwt.ui.client.Timer; +import com.sap.sailing.gwt.ui.client.Timer.PlayModes; import com.sap.sailing.gwt.ui.shared.CompetitorDTO; import com.sap.sailing.gwt.ui.shared.CompetitorInRaceDTO; import com.sap.sailing.gwt.ui.shared.CompetitorsAndTimePointsDTO; @@ -80,7 +83,7 @@ import com.sap.sailing.gwt.ui.shared.components.SettingsDialog; * */ public abstract class AbstractChartPanel extends SimplePanel -implements CompetitorSelectionChangeListener, RaceSelectionChangeListener { +implements CompetitorSelectionChangeListener, RaceSelectionChangeListener, TimeListener { private CompetitorInRaceDTO chartData; private CompetitorsAndTimePointsDTO competitorsAndTimePointsDTO = null; private final SailingServiceAsync sailingService; @@ -102,6 +105,7 @@ implements CompetitorSelectionChangeListener, RaceSelectionChangeListener { private final HashMap competitorLabels; private final HashMap markPassingBuoyName; private int width, height; + private final Timer timer; private DetailType dataToShow; private AbsolutePanel loadingPanel; @@ -109,11 +113,12 @@ implements CompetitorSelectionChangeListener, RaceSelectionChangeListener { public AbstractChartPanel(SailingServiceAsync sailingService, CompetitorSelectionProvider competitorSelectionProvider, RaceSelectionProvider raceSelectionProvider, - final StringMessages stringMessages, int chartWidth, int chartHeight, ErrorReporter errorReporter, - DetailType dataToShow, boolean showRaceSelector) { + Timer timer, final StringMessages stringMessages, int chartWidth, int chartHeight, + ErrorReporter errorReporter, DetailType dataToShow, boolean showRaceSelector) { width = chartWidth; height = chartHeight; this.dataToShow = dataToShow; + this.timer = timer; this.competitorSelectionProvider = competitorSelectionProvider; competitorSelectionProvider.addCompetitorSelectionChangeListener(this); this.errorReporter = errorReporter; @@ -754,4 +759,12 @@ implements CompetitorSelectionChangeListener, RaceSelectionChangeListener { return new Pair(everyPassingInRange, twoPassingsInRangeBeforeError); } + @Override + public void timeChanged(Date date) { + if (timer.getPlayMode() == PlayModes.Live) { + // TODO fetch parts missing so far from cache + } else { + // TODO check if fetched already; if not, fetch all + } + } } diff --git a/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/ui/leaderboard/ChartPanel.java b/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/ui/leaderboard/ChartPanel.java index 5875a04f9a2..de51e2366b9 100755 --- a/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/ui/leaderboard/ChartPanel.java +++ b/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/ui/leaderboard/ChartPanel.java @@ -6,6 +6,7 @@ import com.sap.sailing.gwt.ui.client.ErrorReporter; import com.sap.sailing.gwt.ui.client.RaceSelectionProvider; import com.sap.sailing.gwt.ui.client.SailingServiceAsync; import com.sap.sailing.gwt.ui.client.StringMessages; +import com.sap.sailing.gwt.ui.client.Timer; import com.sap.sailing.gwt.ui.shared.components.Component; import com.sap.sailing.gwt.ui.shared.components.SettingsDialogComponent; @@ -24,10 +25,10 @@ import com.sap.sailing.gwt.ui.shared.components.SettingsDialogComponent; public class ChartPanel extends AbstractChartPanel implements Component { public ChartPanel(SailingServiceAsync sailingService, CompetitorSelectionProvider competitorSelectionProvider, - RaceSelectionProvider raceSelectionProvider, DetailType dataToShow, StringMessages stringMessages, int chartWidth, - int chartHeight, ErrorReporter errorReporter, boolean showRaceSelector) { - super(sailingService, competitorSelectionProvider, raceSelectionProvider, stringMessages, chartWidth, chartHeight, - errorReporter, dataToShow, showRaceSelector); + RaceSelectionProvider raceSelectionProvider, Timer timer, DetailType dataToShow, StringMessages stringMessages, + int chartWidth, int chartHeight, ErrorReporter errorReporter, boolean showRaceSelector) { + super(sailingService, competitorSelectionProvider, raceSelectionProvider, timer, stringMessages, chartWidth, + chartHeight, errorReporter, dataToShow, showRaceSelector); } @Override diff --git a/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/ui/leaderboard/CompareCompetitorsChartDialog.java b/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/ui/leaderboard/CompareCompetitorsChartDialog.java index bf71fd58634..83b786cf496 100644 --- a/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/ui/leaderboard/CompareCompetitorsChartDialog.java +++ b/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/ui/leaderboard/CompareCompetitorsChartDialog.java @@ -21,6 +21,7 @@ import com.sap.sailing.gwt.ui.client.RaceSelectionModel; import com.sap.sailing.gwt.ui.client.RaceSelectionProvider; import com.sap.sailing.gwt.ui.client.SailingServiceAsync; import com.sap.sailing.gwt.ui.client.StringMessages; +import com.sap.sailing.gwt.ui.client.Timer; import com.sap.sailing.gwt.ui.leaderboard.AbstractChartPanel.DataLoadedEvent; import com.sap.sailing.gwt.ui.leaderboard.AbstractChartPanel.DataLoadedHandler; @@ -34,14 +35,14 @@ public class CompareCompetitorsChartDialog extends DialogBox { private Anchor closeAnchor; public CompareCompetitorsChartDialog(SailingServiceAsync sailingService, - List races, final CompetitorSelectionProvider competitorSelectionProvider, StringMessages stringConstants, - ErrorReporter errorReporter) { + List races, final CompetitorSelectionProvider competitorSelectionProvider, Timer timer, + StringMessages stringConstants, ErrorReporter errorReporter) { super(false); RaceSelectionProvider raceSelectionProvider = new RaceSelectionModel(); raceSelectionProvider.setAllRaces(races); final MultiChartPanel ccp = new MultiChartPanel(sailingService, competitorSelectionProvider, raceSelectionProvider, - stringConstants, (int) (Window.getClientWidth() - 350), (int) (Window.getClientHeight() - 170), - errorReporter, /* showRaceSelector */ true); + timer, stringConstants, (int) (Window.getClientWidth() - 350), + (int) (Window.getClientHeight() - 170), errorReporter, /* showRaceSelector */ true); ccp.addDataLoadedHandler(new DataLoadedHandler() { @Override public void onDataLoaded(DataLoadedEvent event) { diff --git a/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/ui/leaderboard/LeaderboardPanel.java b/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/ui/leaderboard/LeaderboardPanel.java index 0dbb992a7b4..1e65160c33b 100644 --- a/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/ui/leaderboard/LeaderboardPanel.java +++ b/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/ui/leaderboard/LeaderboardPanel.java @@ -1462,7 +1462,7 @@ public class LeaderboardPanel extends FormPanel implements TimeListener, PlaySta private void compareCompetitors() { List races = getTrackedRacesIdentifiers(); CompareCompetitorsChartDialog chartDialog = new CompareCompetitorsChartDialog(sailingService, races, - competitorSelectionProvider, stringConstants, errorReporter); + competitorSelectionProvider, timer, stringConstants, errorReporter); chartDialog.show(); } diff --git a/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/ui/leaderboard/MultiChartPanel.java b/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/ui/leaderboard/MultiChartPanel.java index ebb3d17dfe1..0b7eef48df9 100755 --- a/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/ui/leaderboard/MultiChartPanel.java +++ b/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/ui/leaderboard/MultiChartPanel.java @@ -6,6 +6,7 @@ import com.sap.sailing.gwt.ui.client.ErrorReporter; import com.sap.sailing.gwt.ui.client.RaceSelectionProvider; import com.sap.sailing.gwt.ui.client.SailingServiceAsync; import com.sap.sailing.gwt.ui.client.StringMessages; +import com.sap.sailing.gwt.ui.client.Timer; import com.sap.sailing.gwt.ui.shared.components.Component; import com.sap.sailing.gwt.ui.shared.components.SettingsDialogComponent; @@ -23,10 +24,10 @@ import com.sap.sailing.gwt.ui.shared.components.SettingsDialogComponent; */ public class MultiChartPanel extends AbstractChartPanel implements Component { public MultiChartPanel(SailingServiceAsync sailingService, CompetitorSelectionProvider competitorSelectionProvider, - RaceSelectionProvider raceSelectionProvider, final StringMessages stringMessages, int chartWidth, int chartHeight, - ErrorReporter errorReporter, boolean showRaceSelector) { - super(sailingService, competitorSelectionProvider, raceSelectionProvider, stringMessages, chartWidth, chartHeight, - errorReporter, /* show initially: */ DetailType.WINDWARD_DISTANCE_TO_OVERALL_LEADER, showRaceSelector); + RaceSelectionProvider raceSelectionProvider, Timer timer, final StringMessages stringMessages, int chartWidth, + int chartHeight, ErrorReporter errorReporter, boolean showRaceSelector) { + super(sailingService, competitorSelectionProvider, raceSelectionProvider, timer, stringMessages, chartWidth, + chartHeight, errorReporter, /* show initially: */ DetailType.WINDWARD_DISTANCE_TO_OVERALL_LEADER, showRaceSelector); } @Override 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 b9229a8b014..9ca26e8f816 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 @@ -120,7 +120,7 @@ public class RaceBoardPanel extends FormPanel implements EventDisplayer, RaceSel boolean showWindChart = true; if(showWindChart) { WindChartSettings windChartSettings = new WindChartSettings(); - WindChart windChart = new WindChart(sailingService, raceSelectionProvider, windChartSettings, stringMessages, errorReporter); + WindChart windChart = new WindChart(sailingService, raceSelectionProvider, timer, windChartSettings, stringMessages, errorReporter); CollapsableComponentViewer windChartViewer = new CollapsableComponentViewer( windChart, "600px", "500px", stringMessages); windChart.onRaceSelectionChange(raceSelectionProvider.getSelectedRaces()); From 6623fd262fccf6d263c484fdf779a97289d47c1f Mon Sep 17 00:00:00 2001 From: Lennart Hensler Date: Tue, 7 Feb 2012 10:59:02 +0100 Subject: [PATCH 03/14] Refactored resources for the ExpandCollapseButtonCell --- .../ui/leaderboard/ExpandCollapseButtonCell.java | 6 +++++- .../gwt/ui/leaderboard/LeaderboardResources.java | 6 ++++++ .../sap/sailing/gwt/ui/client}/images/magnifier.png | Bin .../gwt/ui/client}/images/magnifier_slashed.png | Bin 4 files changed, 11 insertions(+), 1 deletion(-) rename java/com.sap.sailing.gwt.ui/{ => src/main/resources/com/sap/sailing/gwt/ui/client}/images/magnifier.png (100%) rename java/com.sap.sailing.gwt.ui/{ => src/main/resources/com/sap/sailing/gwt/ui/client}/images/magnifier_slashed.png (100%) diff --git a/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/ui/leaderboard/ExpandCollapseButtonCell.java b/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/ui/leaderboard/ExpandCollapseButtonCell.java index 060bd26d5c9..d775e56c67a 100755 --- a/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/ui/leaderboard/ExpandCollapseButtonCell.java +++ b/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/ui/leaderboard/ExpandCollapseButtonCell.java @@ -4,6 +4,7 @@ import com.google.gwt.cell.client.AbstractCell; import com.google.gwt.cell.client.ActionCell; import com.google.gwt.cell.client.ActionCell.Delegate; import com.google.gwt.cell.client.ValueUpdater; +import com.google.gwt.core.client.GWT; import com.google.gwt.dom.client.Element; import com.google.gwt.dom.client.EventTarget; import com.google.gwt.dom.client.NativeEvent; @@ -12,6 +13,7 @@ import com.google.gwt.safehtml.shared.SafeHtmlBuilder; public class ExpandCollapseButtonCell extends AbstractCell { + private static final LeaderboardResources RESOURCES = GWT.create(LeaderboardResources.class); private final SafeHtml html; private final Delegate delegate; @@ -27,8 +29,10 @@ public class ExpandCollapseButtonCell extends AbstractCell { super("click", "keydown"); this.column = column; this.delegate = delegate; + + String src = column.isExpanded() ? RESOURCES.magnifierSlashedIcon().getSafeUri().asString() : RESOURCES.magnifierIcon().getSafeUri().asString(); this.html = new SafeHtmlBuilder().appendHtmlConstant( - "").toSafeHtml(); + "").toSafeHtml(); } @Override diff --git a/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/ui/leaderboard/LeaderboardResources.java b/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/ui/leaderboard/LeaderboardResources.java index 0ad74d77f02..ab0f58e8a33 100644 --- a/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/ui/leaderboard/LeaderboardResources.java +++ b/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/ui/leaderboard/LeaderboardResources.java @@ -16,4 +16,10 @@ interface LeaderboardResources extends ClientBundle { @Source("com/sap/sailing/gwt/ui/client/images/chart.png") ImageResource chartIcon(); + + @Source("com/sap/sailing/gwt/ui/client/images/magnifier.png") + ImageResource magnifierIcon(); + + @Source("com/sap/sailing/gwt/ui/client/images/magnifier_slashed.png") + ImageResource magnifierSlashedIcon(); } \ No newline at end of file diff --git a/java/com.sap.sailing.gwt.ui/images/magnifier.png b/java/com.sap.sailing.gwt.ui/src/main/resources/com/sap/sailing/gwt/ui/client/images/magnifier.png similarity index 100% rename from java/com.sap.sailing.gwt.ui/images/magnifier.png rename to java/com.sap.sailing.gwt.ui/src/main/resources/com/sap/sailing/gwt/ui/client/images/magnifier.png diff --git a/java/com.sap.sailing.gwt.ui/images/magnifier_slashed.png b/java/com.sap.sailing.gwt.ui/src/main/resources/com/sap/sailing/gwt/ui/client/images/magnifier_slashed.png similarity index 100% rename from java/com.sap.sailing.gwt.ui/images/magnifier_slashed.png rename to java/com.sap.sailing.gwt.ui/src/main/resources/com/sap/sailing/gwt/ui/client/images/magnifier_slashed.png From 51975cba9c64b90c066f6d25c37ee517ef3af818 Mon Sep 17 00:00:00 2001 From: Lennart Hensler Date: Tue, 7 Feb 2012 11:20:17 +0100 Subject: [PATCH 04/14] Created components to check if a user agent is mobile or not --- .../gwt/ui/client/UserAgentChecker.java | 11 ++++++++ .../gwt/ui/client/UserAgentCheckerImpl.java | 25 +++++++++++++++++++ 2 files changed, 36 insertions(+) create mode 100644 java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/ui/client/UserAgentChecker.java create mode 100644 java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/ui/client/UserAgentCheckerImpl.java diff --git a/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/ui/client/UserAgentChecker.java b/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/ui/client/UserAgentChecker.java new file mode 100644 index 00000000000..0289c2120d4 --- /dev/null +++ b/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/ui/client/UserAgentChecker.java @@ -0,0 +1,11 @@ +package com.sap.sailing.gwt.ui.client; + +public interface UserAgentChecker { + + public enum UserAgentTypes{ DESKTOP, MOBILE } + + public final UserAgentCheckerImpl INSTANCE = new UserAgentCheckerImpl(); + + public UserAgentTypes checkUserAgent(String userAgent); + +} diff --git a/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/ui/client/UserAgentCheckerImpl.java b/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/ui/client/UserAgentCheckerImpl.java new file mode 100644 index 00000000000..677091f6774 --- /dev/null +++ b/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/ui/client/UserAgentCheckerImpl.java @@ -0,0 +1,25 @@ +package com.sap.sailing.gwt.ui.client; + + +public class UserAgentCheckerImpl implements UserAgentChecker { + + private static final String[] MOBILE_SPECIFIC_SUBSTRING = { "iPhone", "Android", "MIDP", "Opera Mobi", "iPad", + "Opera Mini", "BlackBerry", "HP iPAQ", "IEMobile", "MSIEMobile", "Windows Phone", "HTC", "LG", "MOT", + "Nokia", "Symbian", "Fennec", "Maemo", "Tear", "Midori", "armv", "Windows CE", "WindowsCE", "Smartphone", + "240x320", "176x220", "320x320", "160x160", "webOS", "Palm", "Sagem", "Samsung", "SGH", "SIE", + "SonyEricsson", "MMP", "UCWEB" }; + + @Override + public UserAgentTypes checkUserAgent(String userAgent) { + UserAgentTypes agentType = UserAgentTypes.DESKTOP; + for (String mobile : MOBILE_SPECIFIC_SUBSTRING) { + if (userAgent.contains(mobile) || userAgent.contains(mobile.toUpperCase()) + || userAgent.contains(mobile.toLowerCase())) { + agentType = UserAgentTypes.MOBILE; + break; + } + } + return agentType; + } + +} From 0f4c4b9b75b756c5d1f370610024df31015fe6ad Mon Sep 17 00:00:00 2001 From: Lennart Hensler Date: Tue, 7 Feb 2012 12:36:13 +0100 Subject: [PATCH 05/14] Changed the SimpleBusyIndicator, so that it is scalable now --- .../sailing/gwt/ui/leaderboard/LeaderboardPanel.java | 2 +- .../gwt/ui/shared/panels/SimpleBusyIndicator.java | 12 +++++++++--- 2 files changed, 10 insertions(+), 4 deletions(-) diff --git a/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/ui/leaderboard/LeaderboardPanel.java b/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/ui/leaderboard/LeaderboardPanel.java index c1d77f4e7ee..ab49b54e138 100644 --- a/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/ui/leaderboard/LeaderboardPanel.java +++ b/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/ui/leaderboard/LeaderboardPanel.java @@ -860,7 +860,7 @@ public class LeaderboardPanel extends FormPanel implements TimeListener, PlaySta contentPanel = new VerticalPanel(); headerPanel = new DockPanel(); DockPanel toolbarPanel = new DockPanel(); - busyIndicator = new SimpleBusyIndicator(); + busyIndicator = new SimpleBusyIndicator(false, 0.8f); if (!isEmbedded) { toolbarPanel.add(busyIndicator, DockPanel.WEST); } diff --git a/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/ui/shared/panels/SimpleBusyIndicator.java b/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/ui/shared/panels/SimpleBusyIndicator.java index 62486662e57..1f6f48b1633 100644 --- a/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/ui/shared/panels/SimpleBusyIndicator.java +++ b/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/ui/shared/panels/SimpleBusyIndicator.java @@ -1,5 +1,6 @@ package com.sap.sailing.gwt.ui.shared.panels; +import com.google.gwt.resources.client.ImageResource; import com.google.gwt.user.client.ui.Image; public class SimpleBusyIndicator extends BusyIndicator { @@ -11,16 +12,21 @@ public class SimpleBusyIndicator extends BusyIndicator { * The busy indicator component is a circling GIF. */ public SimpleBusyIndicator() { - this(false); + this(false, 1.0f); } /** * Creates a new SimpleBusyIndicator with a custom busy state.
* The busy indicator component is a circling GIF. + * + * @param busy Sets the busy state of the BusyIndicator + * @param scale Scales the displayed image. 1.0 is 100%, 0.50 is 50%, ... */ - public SimpleBusyIndicator(boolean busy) { - busyIndicator = new Image(RESOURCES.busyIndicatorCircle()); + public SimpleBusyIndicator(boolean busy, float scale) { + ImageResource resource = RESOURCES.busyIndicatorCircle(); + busyIndicator = new Image(resource.getSafeUri()); busyIndicator.setStyleName(STYLE_NAME_PREFIX + "busyIndicatorCircle"); + busyIndicator.setPixelSize((int) (resource.getWidth() * scale), (int) (resource.getHeight() * scale)); add(busyIndicator); setBusy(busy); } From 37aab5ced5531dbe892b0ad5a04502a1f29e2cad Mon Sep 17 00:00:00 2001 From: Lennart Hensler Date: Tue, 7 Feb 2012 12:40:32 +0100 Subject: [PATCH 06/14] ChartPanel uses the busy indicator now, instead of an image --- .../sap/sailing/gwt/ui/leaderboard/AbstractChartPanel.java | 7 ++++--- 1 file changed, 4 insertions(+), 3 deletions(-) diff --git a/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/ui/leaderboard/AbstractChartPanel.java b/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/ui/leaderboard/AbstractChartPanel.java index cd2d4cfe17d..faf7522d30e 100644 --- a/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/ui/leaderboard/AbstractChartPanel.java +++ b/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/ui/leaderboard/AbstractChartPanel.java @@ -69,6 +69,8 @@ import com.sap.sailing.gwt.ui.shared.CompetitorInRaceDTO; import com.sap.sailing.gwt.ui.shared.CompetitorsAndTimePointsDTO; import com.sap.sailing.gwt.ui.shared.components.Component; import com.sap.sailing.gwt.ui.shared.components.SettingsDialog; +import com.sap.sailing.gwt.ui.shared.panels.BusyIndicator; +import com.sap.sailing.gwt.ui.shared.panels.SimpleBusyIndicator; /** * ChartPanel is a GWT panel that can show one sort of competitor data (e.g. current speed over ground, windward distance to @@ -145,9 +147,8 @@ implements CompetitorSelectionChangeListener, RaceSelectionChangeListener, TimeL } loadingPanel = new AbsolutePanel(); loadingPanel.setSize(width + "px", height + "px"); - Anchor a = new Anchor(new SafeHtmlBuilder().appendHtmlConstant("") - .toSafeHtml()); - loadingPanel.add(a, width / 2 - 32 / 2, height / 2 - 32 - 2); + BusyIndicator busyIndicator = new SimpleBusyIndicator(true, 1); + loadingPanel.add(busyIndicator, width / 2 - 32 / 2, height / 2 - 32 - 2); chartPanel.setHorizontalAlignment(HasHorizontalAlignment.ALIGN_LEFT); chartPanel.setSpacing(5); legendPanel = new FlowPanel(); From eb2a6befaa473e9763ee29535f92a904105b4e36 Mon Sep 17 00:00:00 2001 From: Lennart Hensler Date: Tue, 7 Feb 2012 12:44:57 +0100 Subject: [PATCH 07/14] Added style name for the surrounding Panel of the SimpleBusyIndicator --- .../sap/sailing/gwt/ui/shared/panels/SimpleBusyIndicator.java | 1 + 1 file changed, 1 insertion(+) diff --git a/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/ui/shared/panels/SimpleBusyIndicator.java b/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/ui/shared/panels/SimpleBusyIndicator.java index 1f6f48b1633..c98c8ea323b 100644 --- a/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/ui/shared/panels/SimpleBusyIndicator.java +++ b/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/ui/shared/panels/SimpleBusyIndicator.java @@ -23,6 +23,7 @@ public class SimpleBusyIndicator extends BusyIndicator { * @param scale Scales the displayed image. 1.0 is 100%, 0.50 is 50%, ... */ public SimpleBusyIndicator(boolean busy, float scale) { + this.setStyleName(STYLE_NAME_PREFIX + "simpleBusyIndicator"); ImageResource resource = RESOURCES.busyIndicatorCircle(); busyIndicator = new Image(resource.getSafeUri()); busyIndicator.setStyleName(STYLE_NAME_PREFIX + "busyIndicatorCircle"); From edbe9d691ad2f4f5923fe7a5ab5b1f2c042cb774 Mon Sep 17 00:00:00 2001 From: Marcus Kammer Date: Tue, 7 Feb 2012 13:17:16 +0100 Subject: [PATCH 08/14] change styles for raceboard --- java/com.sap.sailing.gwt.ui/RaceBoard.css | 8 +++++--- 1 file changed, 5 insertions(+), 3 deletions(-) diff --git a/java/com.sap.sailing.gwt.ui/RaceBoard.css b/java/com.sap.sailing.gwt.ui/RaceBoard.css index f2ed39f4b08..e043d8b18c3 100644 --- a/java/com.sap.sailing.gwt.ui/RaceBoard.css +++ b/java/com.sap.sailing.gwt.ui/RaceBoard.css @@ -32,6 +32,7 @@ body { font-weight: 400; padding: 80px 0 120px 0; margin: 0; + color: #3b3b3b; } table td,select,button { @@ -144,10 +145,11 @@ input.magnifier { } .timeLineInnerPanel { - height: 100%; + /*height: 100%;*/ margin: 0 12px; + margin-top: 20px; background: #dddcdc; - padding: 38px 24px 0 24px; + /*padding: 38px 24px 0 24px;*/ } .timeLineInnerBgPanel { @@ -315,4 +317,4 @@ input.magnifier { text-transform: uppercase; color: #a1a1a1; font-weight: 500; -} \ No newline at end of file +} From e03eaafb3aa38f6d39c75963738f7a566e174570 Mon Sep 17 00:00:00 2001 From: Marcus Kammer Date: Tue, 7 Feb 2012 13:17:58 +0100 Subject: [PATCH 09/14] rename old settings button --- .../images/settings_old.png | Bin 0 -> 1258 bytes 1 file changed, 0 insertions(+), 0 deletions(-) create mode 100755 java/com.sap.sailing.gwt.ui/images/settings_old.png diff --git a/java/com.sap.sailing.gwt.ui/images/settings_old.png b/java/com.sap.sailing.gwt.ui/images/settings_old.png new file mode 100755 index 0000000000000000000000000000000000000000..af1bc1b8e4b25d1636d6cae76629ccc4b820567f GIT binary patch literal 1258 zcmaJ>TWs4@7_-qQ5YibvlNg~nS;SZqgOx}2(hvX$I7E=t~|*Fcy!v4|DDn5<6VWFQbQH7LqsAUxWPq_ZWDq`8_3VW@Gcpy+}u z0aKC9$H{n$%3rQT0vF-Gv)&)1&No7+AcbgpyQIJvl0j6 z;UH@8F+t#Ia>yHEC_feP`XVG5Ap%DTBIG?{1m3;?6Q!Emu*^-1P|}-R{vOxcl4}}4 zRE*4Fs0ybbA5~=$>|U4_TGv9f)Z63ot!p7$a&e;=+#Kt_#@swIykl6U2R&Z?fkig%=l*=%hlNF zL*TY;!#9$w_6(k0sFo0Qwd}M`A!|KPS8g2bb>PTvzTSg&mUg>d^1NN)J5A| zC-b_)_EPo2`uvt>u(!V4e&*|OfN|lsplkkj=Gu2X&TE$hTlLN$PJhf}C}$o9_8z_*pB*4!OWx;NRj;lIAAY}sFVzHM#-J>*W_ELt}T zh3%Elmq$BB+UwQxSFGuCPoxi8U9bH(-rnfGgvIZB26?w``F@H=oLOWcI(hcsiJwoH Of1h|{G<; Date: Tue, 7 Feb 2012 13:18:14 +0100 Subject: [PATCH 10/14] use ClientResources which is now public for settings icon --- .../com/sap/sailing/gwt/ui/client/ClientResources.java | 2 +- .../sailing/gwt/ui/leaderboard/AbstractChartPanel.java | 8 ++++++-- 2 files changed, 7 insertions(+), 3 deletions(-) diff --git a/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/ui/client/ClientResources.java b/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/ui/client/ClientResources.java index 758b60d87e1..4043a0e953d 100644 --- a/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/ui/client/ClientResources.java +++ b/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/ui/client/ClientResources.java @@ -3,7 +3,7 @@ package com.sap.sailing.gwt.ui.client; import com.google.gwt.resources.client.ClientBundle; import com.google.gwt.resources.client.ImageResource; -interface ClientResources extends ClientBundle { +public interface ClientResources extends ClientBundle { @Source("com/sap/sailing/gwt/ui/client/images/settings.png") ImageResource settingsIcon(); diff --git a/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/ui/leaderboard/AbstractChartPanel.java b/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/ui/leaderboard/AbstractChartPanel.java index cd2d4cfe17d..18ba1e7c99f 100644 --- a/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/ui/leaderboard/AbstractChartPanel.java +++ b/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/ui/leaderboard/AbstractChartPanel.java @@ -36,9 +36,11 @@ import com.google.gwt.event.dom.client.ClickHandler; import com.google.gwt.event.shared.GwtEvent; import com.google.gwt.i18n.client.DateTimeFormat; import com.google.gwt.i18n.client.NumberFormat; +import com.google.gwt.resources.client.ImageResource; import com.google.gwt.safehtml.shared.SafeHtmlBuilder; import com.google.gwt.user.client.rpc.AsyncCallback; import com.google.gwt.user.client.ui.AbsolutePanel; +import com.google.gwt.user.client.ui.AbstractImagePrototype; import com.google.gwt.user.client.ui.Anchor; import com.google.gwt.user.client.ui.DeckPanel; import com.google.gwt.user.client.ui.FlowPanel; @@ -53,6 +55,7 @@ import com.google.gwt.user.client.ui.Widget; import com.sap.sailing.domain.common.DetailType; import com.sap.sailing.domain.common.RaceIdentifier; import com.sap.sailing.domain.common.impl.Util.Pair; +import com.sap.sailing.gwt.ui.client.ClientResources; import com.sap.sailing.gwt.ui.client.CompetitorSelectionChangeListener; import com.sap.sailing.gwt.ui.client.CompetitorSelectionProvider; import com.sap.sailing.gwt.ui.client.DetailTypeFormatter; @@ -110,6 +113,7 @@ implements CompetitorSelectionChangeListener, RaceSelectionChangeListener, TimeL private DetailType dataToShow; private AbsolutePanel loadingPanel; private final CompetitorSelectionProvider competitorSelectionProvider; + private static final ClientResources resources = GWT.create(ClientResources.class); public AbstractChartPanel(SailingServiceAsync sailingService, CompetitorSelectionProvider competitorSelectionProvider, RaceSelectionProvider raceSelectionProvider, @@ -159,8 +163,8 @@ implements CompetitorSelectionChangeListener, RaceSelectionChangeListener, TimeL chart.showWidget(0); chartPanel.add(chart); mainPanel.add(chartPanel); - Anchor showConfigAnchor = new Anchor(new SafeHtmlBuilder().appendHtmlConstant( - "").toSafeHtml()); + ImageResource settingsIcon = resources.settingsIcon(); + Anchor showConfigAnchor = new Anchor(AbstractImagePrototype.create(settingsIcon).getSafeHtml()); showConfigAnchor.setTitle(stringMessages.configuration()); showConfigAnchor.addClickHandler(new ClickHandler() { @Override From a427114df781257b313cc27d34fb585105220024 Mon Sep 17 00:00:00 2001 From: Marcus Kammer Date: Tue, 7 Feb 2012 13:18:27 +0100 Subject: [PATCH 11/14] rename to settings_old button --- java/com.sap.sailing.gwt.ui/images/settings.png | Bin 1258 -> 0 bytes 1 file changed, 0 insertions(+), 0 deletions(-) delete mode 100755 java/com.sap.sailing.gwt.ui/images/settings.png diff --git a/java/com.sap.sailing.gwt.ui/images/settings.png b/java/com.sap.sailing.gwt.ui/images/settings.png deleted file mode 100755 index af1bc1b8e4b25d1636d6cae76629ccc4b820567f..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 1258 zcmaJ>TWs4@7_-qQ5YibvlNg~nS;SZqgOx}2(hvX$I7E=t~|*Fcy!v4|DDn5<6VWFQbQH7LqsAUxWPq_ZWDq`8_3VW@Gcpy+}u z0aKC9$H{n$%3rQT0vF-Gv)&)1&No7+AcbgpyQIJvl0j6 z;UH@8F+t#Ia>yHEC_feP`XVG5Ap%DTBIG?{1m3;?6Q!Emu*^-1P|}-R{vOxcl4}}4 zRE*4Fs0ybbA5~=$>|U4_TGv9f)Z63ot!p7$a&e;=+#Kt_#@swIykl6U2R&Z?fkig%=l*=%hlNF zL*TY;!#9$w_6(k0sFo0Qwd}M`A!|KPS8g2bb>PTvzTSg&mUg>d^1NN)J5A| zC-b_)_EPo2`uvt>u(!V4e&*|OfN|lsplkkj=Gu2X&TE$hTlLN$PJhf}C}$o9_8z_*pB*4!OWx;NRj;lIAAY}sFVzHM#-J>*W_ELt}T zh3%Elmq$BB+UwQxSFGuCPoxi8U9bH(-rnfGgvIZB26?w``F@H=oLOWcI(hcsiJwoH Of1h|{G<; Date: Tue, 7 Feb 2012 13:19:34 +0100 Subject: [PATCH 12/14] new settings button --- java/com.sap.sailing.gwt.ui/images/settings.png | Bin 0 -> 492 bytes 1 file changed, 0 insertions(+), 0 deletions(-) create mode 100644 java/com.sap.sailing.gwt.ui/images/settings.png diff --git a/java/com.sap.sailing.gwt.ui/images/settings.png b/java/com.sap.sailing.gwt.ui/images/settings.png new file mode 100644 index 0000000000000000000000000000000000000000..6944926cdd934a58e4bbe014038a3d018a37d861 GIT binary patch literal 492 zcmVP000>X1^@s6#OZ}&0000PbVXQnQ*UN; zcVTj606}DLVr3vnZDD6+Qe|Oed2z{QJOBUzj!8s8RCwB~R_$$rFc2kC24Dm>2-%>W zpk#u=1f>5#C1L=`1fdhu8?+nL-GC7op?A@_I$3AqHa_WuZR~s8*E5@@X_7#B0R3R| z7tpcq`_+TnBwR9Uo`xQjKyu3fjyur7+E?RR+qS>pFg}46w!w`Rt`hVLswo`Lw6-Rn zpbMx0s344!1cDphlX!9fAZ>>$iwJ(&PSSSACMXBKu_dF?Kw~h1~sjJInLDJ4L+Bh&}34Gw8ul`2s3{8 zYiQ!X?|dHwvcL2FEhiN2veXz-1o?;4{t^#CEjda$g7e4m6Svgsn7?bxjP_42$Y!{(RIfsE3C@<0x7?X i{Yy0aD##~40t^6pux+XrBo|2l0000 Date: Tue, 7 Feb 2012 13:19:46 +0100 Subject: [PATCH 13/14] avoid warning --- .../com/sap/sailing/gwt/ui/leaderboard/AbstractChartPanel.java | 1 - 1 file changed, 1 deletion(-) diff --git a/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/ui/leaderboard/AbstractChartPanel.java b/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/ui/leaderboard/AbstractChartPanel.java index 5a8e3909fdf..ff824194765 100644 --- a/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/ui/leaderboard/AbstractChartPanel.java +++ b/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/ui/leaderboard/AbstractChartPanel.java @@ -37,7 +37,6 @@ import com.google.gwt.event.shared.GwtEvent; import com.google.gwt.i18n.client.DateTimeFormat; import com.google.gwt.i18n.client.NumberFormat; import com.google.gwt.resources.client.ImageResource; -import com.google.gwt.safehtml.shared.SafeHtmlBuilder; import com.google.gwt.user.client.rpc.AsyncCallback; import com.google.gwt.user.client.ui.AbsolutePanel; import com.google.gwt.user.client.ui.AbstractImagePrototype; From 7736ac3542e4b8cc008abc1b0b6b2a977d0cf3fa Mon Sep 17 00:00:00 2001 From: Lennart Hensler Date: Tue, 7 Feb 2012 13:51:33 +0100 Subject: [PATCH 14/14] Added setting to auto expand the first column and implemented it in LeaderboardPanel --- .../gwt/ui/leaderboard/LeaderboardPanel.java | 23 ++++++++++++++++++- .../ui/leaderboard/LeaderboardSettings.java | 8 ++++++- .../LeaderboardSettingsDialogComponent.java | 6 +++-- 3 files changed, 33 insertions(+), 4 deletions(-) diff --git a/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/ui/leaderboard/LeaderboardPanel.java b/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/ui/leaderboard/LeaderboardPanel.java index ab49b54e138..4bfc75db654 100644 --- a/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/ui/leaderboard/LeaderboardPanel.java +++ b/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/ui/leaderboard/LeaderboardPanel.java @@ -148,6 +148,8 @@ public class LeaderboardPanel extends FormPanel implements TimeListener, PlaySta * The delay with which the timer shall work. Before the timer is resumed, the delay is set to this value. */ private long delayInMilliseconds; + + private boolean autoExpandFirstRace; /** * This anchor's HTML holds the image tag for the play/pause button that needs to be updated when the {@link #timer} @@ -240,6 +242,7 @@ public class LeaderboardPanel extends FormPanel implements TimeListener, PlaySta selectedRaceDetails.addAll(newSettings.getRaceDetailsToShow()); selectedRaceColumns.clear(); selectedRaceColumns.addAll(newSettings.getRaceColumnsToShow()); + setAutoExpandFirstRace(newSettings.isAutoExpandFirstRace()); // update leaderboard after settings panel column selection change updateLeaderboard(leaderboard); @@ -819,6 +822,7 @@ public class LeaderboardPanel extends FormPanel implements TimeListener, PlaySta selectedManeuverDetails.add(DetailType.JIBE); selectedManeuverDetails.add(DetailType.PENALTY_CIRCLE); delayInMilliseconds = 0l; + autoExpandFirstRace = false; this.timer = timer; timer.addPlayStateListener(this); timer.addTimeListener(this); @@ -936,6 +940,14 @@ public class LeaderboardPanel extends FormPanel implements TimeListener, PlaySta private void setDelayInMilliseconds(long delayInMilliseconds) { this.delayInMilliseconds = delayInMilliseconds; } + + public boolean isAutoExpandFirstRace() { + return autoExpandFirstRace; + } + + private void setAutoExpandFirstRace(boolean autoExpandFirstRace) { + this.autoExpandFirstRace = autoExpandFirstRace; + } /** * The time point for which the leaderboard currently shows results @@ -1057,10 +1069,19 @@ public class LeaderboardPanel extends FormPanel implements TimeListener, PlaySta adjustColumnLayout(leaderboard); getData().getList().clear(); if (leaderboard != null) { + boolean firstRace = true; getData().getList().addAll(leaderboard.rows.values()); for (int i = 0; i < getLeaderboardTable().getColumnCount(); i++) { SortableColumn c = (SortableColumn) getLeaderboardTable().getColumn(i); c.updateMinMax(leaderboard); + //Toggle the first race, if the setting is set and it isn't open yet + if (firstRace && isAutoExpandFirstRace() && c instanceof ExpandableSortableColumn) { + ExpandableSortableColumn expandableSortableColumn = (ExpandableSortableColumn) c; + if (!expandableSortableColumn.isExpanded()) { + expandableSortableColumn.toggleExpansion(); + } + firstRace = false; + } } Comparator comparator = getComparatorForSelectedSorting(); if (comparator != null) { @@ -1503,7 +1524,7 @@ public class LeaderboardPanel extends FormPanel implements TimeListener, PlaySta Collections.unmodifiableList(selectedLegDetails), Collections.unmodifiableList(selectedRaceDetails), /* All races to select */ leaderboard.getRaceList(), selectedRaceColumns, - timer.getDelayBetweenAutoAdvancesInMilliseconds(), delayInMilliseconds, stringConstants); + autoExpandFirstRace, timer.getDelayBetweenAutoAdvancesInMilliseconds(), delayInMilliseconds, stringConstants); } @Override diff --git a/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/ui/leaderboard/LeaderboardSettings.java b/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/ui/leaderboard/LeaderboardSettings.java index f715f3509cc..4a7b20c5a7c 100755 --- a/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/ui/leaderboard/LeaderboardSettings.java +++ b/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/ui/leaderboard/LeaderboardSettings.java @@ -10,15 +10,17 @@ public class LeaderboardSettings { private final List maneuverDetailsToShow; private final List legDetailsToShow; private final List raceDetailsToShow; + private final boolean autoExpandFirstRace; private final long delayBetweenAutoAdvancesInMilliseconds; private final long delayInMilliseconds; public LeaderboardSettings(List meneuverDetailsToShow, List legDetailsToShow, - List raceDetailsToShow, List raceColumnsToShow, + List raceDetailsToShow, List raceColumnsToShow, boolean autoExpandFirstRace, long delayBetweenAutoAdvancesInMilliseconds, long delayInMilliseconds) { this.legDetailsToShow = legDetailsToShow; this.raceDetailsToShow = raceDetailsToShow; this.raceColumnsToShow = raceColumnsToShow; + this.autoExpandFirstRace = autoExpandFirstRace; this.delayBetweenAutoAdvancesInMilliseconds = delayBetweenAutoAdvancesInMilliseconds; this.delayInMilliseconds = delayInMilliseconds; this.maneuverDetailsToShow = meneuverDetailsToShow; @@ -40,6 +42,10 @@ public class LeaderboardSettings { return raceColumnsToShow; } + public boolean isAutoExpandFirstRace() { + return autoExpandFirstRace; + } + public long getDelayBetweenAutoAdvancesInMilliseconds() { return delayBetweenAutoAdvancesInMilliseconds; } diff --git a/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/ui/leaderboard/LeaderboardSettingsDialogComponent.java b/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/ui/leaderboard/LeaderboardSettingsDialogComponent.java index e81ac54c89e..16e7cff59a0 100755 --- a/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/ui/leaderboard/LeaderboardSettingsDialogComponent.java +++ b/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/ui/leaderboard/LeaderboardSettingsDialogComponent.java @@ -33,12 +33,13 @@ public class LeaderboardSettingsDialogComponent implements SettingsDialogCompone private final StringMessages stringConstants; private LongBox delayBetweenAutoAdvancesInSecondsBox; private LongBox delayInSecondsBox; + private final boolean autoExpandFirstRace; private final long delayBetweenAutoAdvancesInMilliseconds; private final long delayInMilliseconds; public LeaderboardSettingsDialogComponent(List maneuverDetailSelection, List legDetailSelection, List raceDetailSelection, List raceAllRaceColumns, - List raceColumnSelection, long delayBetweenAutoAdvancesInMilliseconds, long delayInMilliseconds, + List raceColumnSelection, boolean autoExpandFirstRace, long delayBetweenAutoAdvancesInMilliseconds, long delayInMilliseconds, StringMessages stringConstants) { this.maneuverDetailSelection = maneuverDetailSelection; this.raceColumnSelection = raceColumnSelection; @@ -50,6 +51,7 @@ public class LeaderboardSettingsDialogComponent implements SettingsDialogCompone maneuverDetailCheckboxes = new LinkedHashMap(); legDetailCheckboxes = new LinkedHashMap(); raceDetailCheckboxes = new LinkedHashMap(); + this.autoExpandFirstRace = autoExpandFirstRace; this.delayBetweenAutoAdvancesInMilliseconds = delayBetweenAutoAdvancesInMilliseconds; this.delayInMilliseconds = delayInMilliseconds; } @@ -139,7 +141,7 @@ public class LeaderboardSettingsDialogComponent implements SettingsDialogCompone } Long delayBetweenAutoAdvancesValue = delayBetweenAutoAdvancesInSecondsBox.getValue(); Long delayInSecondsValue = delayInSecondsBox.getValue(); - return new LeaderboardSettings(maneuverDetailsToShow, legDetailsToShow, raceDetailsToShow, raceColumnsToShow, + return new LeaderboardSettings(maneuverDetailsToShow, legDetailsToShow, raceDetailsToShow, raceColumnsToShow, autoExpandFirstRace, 1000l * (delayBetweenAutoAdvancesValue == null ? 0l : delayBetweenAutoAdvancesValue.longValue()), 1000 * (delayInSecondsValue==null?0:delayInSecondsValue.longValue())); }