From 046c42fa1fbf8912af7125c1d53e8b1c08d4bbf0 Mon Sep 17 00:00:00 2001 From: Lennart Hensler Date: Mon, 6 Feb 2012 17:51:51 +0100 Subject: [PATCH 01/12] Created the busy indicator component --- .../gwt/ui/leaderboard/LeaderboardPanel.java | 13 +++++++ .../shared/components/CollapsablePanel.java | 32 +---------------- .../components/IsEmbeddableComponent.java | 5 +++ .../gwt/ui/shared/panels/BusyIndicator.java | 27 ++++++++++++++ .../shared/panels/SharedPanelsResources.java | 11 ++++++ .../ui/shared/panels/SimpleBusyIndicator.java | 34 ++++++++++++++++++ .../client/images/busy_indicator_circle.gif} | Bin 7 files changed, 91 insertions(+), 31 deletions(-) create mode 100644 java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/ui/shared/panels/BusyIndicator.java create mode 100644 java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/ui/shared/panels/SharedPanelsResources.java create mode 100644 java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/ui/shared/panels/SimpleBusyIndicator.java rename java/com.sap.sailing.gwt.ui/{images/busy_indicator.gif => src/main/resources/com/sap/sailing/gwt/ui/client/images/busy_indicator_circle.gif} (100%) 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..0b1928f81e8 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 @@ -66,6 +66,7 @@ import com.sap.sailing.gwt.ui.shared.components.Component; import com.sap.sailing.gwt.ui.shared.components.IsEmbeddableComponent; import com.sap.sailing.gwt.ui.shared.components.SettingsDialog; import com.sap.sailing.gwt.ui.shared.components.SettingsDialogComponent; +import com.sap.sailing.gwt.ui.shared.panels.BusyIndicator; /** * A leaderboard essentially consists of a table widget that in its columns displays the entries. @@ -1524,4 +1525,16 @@ public class LeaderboardPanel extends FormPanel implements TimeListener, PlaySta leaderboardSelectionModel.setSelected(row, false); } } + + @Override + public BusyIndicator getBusyIndicator() { + // TODO Auto-generated method stub + return null; + } + + @Override + public boolean hasBusyIndicator() { + // TODO Auto-generated method stub + return false; + } } diff --git a/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/ui/shared/components/CollapsablePanel.java b/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/ui/shared/components/CollapsablePanel.java index 84b9e41cc7a..9a0d1582285 100644 --- a/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/ui/shared/components/CollapsablePanel.java +++ b/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/ui/shared/components/CollapsablePanel.java @@ -45,37 +45,7 @@ public final class CollapsablePanel extends Composite implements HasWidgets.ForI HasOpenHandlers, HasCloseHandlers { private static ComponentResources resources = GWT.create(ComponentResources.class); - - /** - * Used to wrap widgets in the header to provide click support. Effectively wraps the widget in an - * anchor to get automatic keyboard access. - */ - /* - private final class ClickableHeader extends SimplePanel { - - private ClickableHeader() { - // Anchor is used to allow keyboard access. - super(DOM.createAnchor()); - Element elem = getElement(); - DOM.setElementProperty(elem, "href", "javascript:void(0);"); - // Avoids layout problems from having blocks in inlines. - DOM.setStyleAttribute(elem, "display", "block"); - sinkEvents(Event.ONCLICK); - setStyleName(STYLENAME_HEADER); - } - - @Override - public void onBrowserEvent(Event event) { - // no need to call super. - switch (DOM.eventGetType(event)) { - case Event.ONCLICK: - // Prevent link default action. - DOM.eventPreventDefault(event); - setOpen(!isOpen); - } - } - } -*/ + /** * An {@link Animation} used to open the content. */ diff --git a/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/ui/shared/components/IsEmbeddableComponent.java b/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/ui/shared/components/IsEmbeddableComponent.java index 39a0d170255..68cf63f533f 100644 --- a/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/ui/shared/components/IsEmbeddableComponent.java +++ b/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/ui/shared/components/IsEmbeddableComponent.java @@ -1,6 +1,7 @@ package com.sap.sailing.gwt.ui.shared.components; import com.google.gwt.user.client.ui.Widget; +import com.sap.sailing.gwt.ui.shared.panels.BusyIndicator; public interface IsEmbeddableComponent { @@ -10,7 +11,11 @@ public interface IsEmbeddableComponent { Widget getToolbarWidget(); + BusyIndicator getBusyIndicator(); + boolean isEmbedded(); boolean hasToolbar(); + + boolean hasBusyIndicator(); } diff --git a/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/ui/shared/panels/BusyIndicator.java b/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/ui/shared/panels/BusyIndicator.java new file mode 100644 index 00000000000..9f03990f025 --- /dev/null +++ b/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/ui/shared/panels/BusyIndicator.java @@ -0,0 +1,27 @@ +package com.sap.sailing.gwt.ui.shared.panels; + +import com.google.gwt.core.client.GWT; +import com.google.gwt.user.client.ui.FlowPanel; + +/** + * A widget to show if something is currently busy. + * @author Lennart Hensler (D054527) + */ +public abstract class BusyIndicator extends FlowPanel { + + protected final static String STYLE_NAME_PREFIX = "busyIndicator-"; + protected final static SharedPanelsResources RESOURCES = GWT.create(SharedPanelsResources.class); + + protected boolean busy; + + /** + * Sets the busy state of the BusyIndicator, which displays or hides the busy indicator. + * @param busy The new busy state + */ + abstract void setBusy(boolean busy); + + public boolean isBusy() { + return busy; + } + +} diff --git a/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/ui/shared/panels/SharedPanelsResources.java b/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/ui/shared/panels/SharedPanelsResources.java new file mode 100644 index 00000000000..407a88bac5e --- /dev/null +++ b/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/ui/shared/panels/SharedPanelsResources.java @@ -0,0 +1,11 @@ +package com.sap.sailing.gwt.ui.shared.panels; + +import com.google.gwt.resources.client.ClientBundle; +import com.google.gwt.resources.client.ImageResource; + +public interface SharedPanelsResources extends ClientBundle { + + @Source("com/sap/sailing/gwt/ui/client/images/busy_indicator_circle.gif") + ImageResource busyIndicatorCircle(); + +} 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 new file mode 100644 index 00000000000..b38dda54771 --- /dev/null +++ b/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/ui/shared/panels/SimpleBusyIndicator.java @@ -0,0 +1,34 @@ +package com.sap.sailing.gwt.ui.shared.panels; + +import com.google.gwt.user.client.ui.Image; + +public class SimpleBusyIndicator extends BusyIndicator { + + private Image busyIndicator; + + /** + * Creates a new SimpleBusyIndicator with the busy state false.
+ * The busy indicator component is a circling GIF. + */ + public SimpleBusyIndicator() { + this(false); + } + + /** + * Creates a new SimpleBusyIndicator with a custom busy state.
+ * The busy indicator component is a circling GIF. + */ + public SimpleBusyIndicator(boolean busy) { + busyIndicator = new Image(RESOURCES.busyIndicatorCircle()); + busyIndicator.setStyleName(STYLE_NAME_PREFIX + "busyIndicatorCircle"); + add(busyIndicator); + setBusy(busy); + } + + @Override + void setBusy(boolean busy) { + this.busy = busy; + busyIndicator.setVisible(busy); + } + +} diff --git a/java/com.sap.sailing.gwt.ui/images/busy_indicator.gif b/java/com.sap.sailing.gwt.ui/src/main/resources/com/sap/sailing/gwt/ui/client/images/busy_indicator_circle.gif similarity index 100% rename from java/com.sap.sailing.gwt.ui/images/busy_indicator.gif rename to java/com.sap.sailing.gwt.ui/src/main/resources/com/sap/sailing/gwt/ui/client/images/busy_indicator_circle.gif From c95f92e4af2ce946a4edeb2e9a35663c0719e6fb Mon Sep 17 00:00:00 2001 From: Lennart Hensler Date: Mon, 6 Feb 2012 18:06:34 +0100 Subject: [PATCH 02/12] Added BusyIndicator to LeaderboardPanel --- .../gwt/ui/leaderboard/LeaderboardPanel.java | 24 ++++++++++++------- 1 file changed, 16 insertions(+), 8 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 0b1928f81e8..77ee1a54d9e 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 @@ -67,6 +67,7 @@ import com.sap.sailing.gwt.ui.shared.components.IsEmbeddableComponent; import com.sap.sailing.gwt.ui.shared.components.SettingsDialog; import com.sap.sailing.gwt.ui.shared.components.SettingsDialogComponent; import com.sap.sailing.gwt.ui.shared.panels.BusyIndicator; +import com.sap.sailing.gwt.ui.shared.panels.SimpleBusyIndicator; /** * A leaderboard essentially consists of a table widget that in its columns displays the entries. @@ -175,6 +176,8 @@ public class LeaderboardPanel extends FormPanel implements TimeListener, PlaySta private final ImageResource pauseIcon; private final ImageResource playIcon; + + private final BusyIndicator busyIndicator; private class SettingsClickHandler implements ClickHandler { private final StringMessages stringConstants; @@ -848,10 +851,19 @@ public class LeaderboardPanel extends FormPanel implements TimeListener, PlaySta listHandler = new ListHandler(getData().getList()); getLeaderboardTable().addColumnSortHandler(listHandler); loadCompleteLeaderboard(getLeaderboardDisplayDate()); - + + if(preSelectedRace == null) { + isEmbedded = false; + } else { + isEmbedded = true; + } contentPanel = new VerticalPanel(); headerPanel = new DockPanel(); DockPanel toolbarPanel = new DockPanel(); + busyIndicator = new SimpleBusyIndicator(true); + if (!isEmbedded) { + toolbarPanel.add(busyIndicator); + } headerPanel.setWidth("100%"); headerPanel.setVerticalAlignment(HasVerticalAlignment.ALIGN_MIDDLE); toolbarPanel.setWidth("100%"); @@ -902,11 +914,9 @@ public class LeaderboardPanel extends FormPanel implements TimeListener, PlaySta refreshAndSettingsPanel.add(refreshPanel); refreshAndSettingsPanel.add(settingsAnchor); toolbarPanel.add(refreshAndSettingsPanel, DockPanel.EAST); - if(preSelectedRace == null) { + if(!isEmbedded) { contentPanel.add(headerPanel); contentPanel.add(toolbarPanel); - } else { - isEmbedded = true; } contentPanel.add(getLeaderboardTable()); setWidget(contentPanel); @@ -1528,13 +1538,11 @@ public class LeaderboardPanel extends FormPanel implements TimeListener, PlaySta @Override public BusyIndicator getBusyIndicator() { - // TODO Auto-generated method stub - return null; + return busyIndicator; } @Override public boolean hasBusyIndicator() { - // TODO Auto-generated method stub - return false; + return true; } } From 6c2c71dbe855069ac1d4b9eb69700bda4f72e4cf Mon Sep 17 00:00:00 2001 From: Lennart Hensler Date: Mon, 6 Feb 2012 18:09:00 +0100 Subject: [PATCH 03/12] Fixed exception in LeaderboardPanel --- .../com/sap/sailing/gwt/ui/leaderboard/LeaderboardPanel.java | 4 ++-- 1 file changed, 2 insertions(+), 2 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 77ee1a54d9e..d41bb2f19e3 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,9 +860,9 @@ public class LeaderboardPanel extends FormPanel implements TimeListener, PlaySta contentPanel = new VerticalPanel(); headerPanel = new DockPanel(); DockPanel toolbarPanel = new DockPanel(); - busyIndicator = new SimpleBusyIndicator(true); + busyIndicator = new SimpleBusyIndicator(); if (!isEmbedded) { - toolbarPanel.add(busyIndicator); + toolbarPanel.add(busyIndicator, DockPanel.WEST); } headerPanel.setWidth("100%"); headerPanel.setVerticalAlignment(HasVerticalAlignment.ALIGN_MIDDLE); From 24535e17af3887b7bd6ea20dd2b63d3fb14f9b4e Mon Sep 17 00:00:00 2001 From: Lennart Hensler Date: Tue, 7 Feb 2012 10:41:33 +0100 Subject: [PATCH 04/12] Implemented busy indicator functionality in the leaderboard --- .../sailing/gwt/ui/leaderboard/ExpandableSortableColumn.java | 3 +++ .../com/sap/sailing/gwt/ui/shared/panels/BusyIndicator.java | 2 +- .../sap/sailing/gwt/ui/shared/panels/SimpleBusyIndicator.java | 4 +++- 3 files changed, 7 insertions(+), 2 deletions(-) diff --git a/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/ui/leaderboard/ExpandableSortableColumn.java b/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/ui/leaderboard/ExpandableSortableColumn.java index a629fa902a8..a890b6b9cee 100755 --- a/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/ui/leaderboard/ExpandableSortableColumn.java +++ b/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/ui/leaderboard/ExpandableSortableColumn.java @@ -145,11 +145,13 @@ public abstract class ExpandableSortableColumn extends SortableColumn table = getLeaderboardPanel().getLeaderboardTable(); if (isExpanded()) { for (SortableColumn column : getAllVisibleChildren()) { getLeaderboardPanel().removeColumn(column); // removes only the children currently displayed } + getLeaderboardPanel().getBusyIndicator().setBusy(false); // important: toggle expanded state after asking for all visible children setExpanded(!isExpanded()); } else { @@ -168,6 +170,7 @@ public abstract class ExpandableSortableColumn extends SortableColumnbusy state of the BusyIndicator, which displays or hides the busy indicator. * @param busy The new busy state */ - abstract void setBusy(boolean busy); + public abstract void setBusy(boolean busy); public boolean isBusy() { return busy; 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 b38dda54771..e1d2b3880ec 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 @@ -26,9 +26,11 @@ public class SimpleBusyIndicator extends BusyIndicator { } @Override - void setBusy(boolean busy) { + public void setBusy(boolean busy) { this.busy = busy; busyIndicator.setVisible(busy); +// Element elem = busyIndicator.getElement(); +// DOM.setStyleAttribute(elem, "visibility", busy ? "visible" : "hidden"); } } From 4d287b5d5235643117dd3df14582b9041d2bdb0b Mon Sep 17 00:00:00 2001 From: Lennart Hensler Date: Tue, 7 Feb 2012 10:46:58 +0100 Subject: [PATCH 05/12] 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 06/12] 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 07/12] 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 08/12] 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 09/12] 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 10/12] 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 65b684658a3545a7a9055aeab86bee712848c25d Mon Sep 17 00:00:00 2001 From: Axel Uhl Date: Tue, 7 Feb 2012 13:18:14 +0100 Subject: [PATCH 11/12] 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 b78febb23993edbef0385fdf59cc84b1433fa919 Mon Sep 17 00:00:00 2001 From: Axel Uhl Date: Tue, 7 Feb 2012 13:19:46 +0100 Subject: [PATCH 12/12] 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;