Merge branch 'design2015-charts' into design2015

This commit is contained in:
Benjamin Barth committed 2015-08-24 15:25:39 +02:00
commit d0dc0baa72
6 files changed
+191 -36

No files matched your search

@@ -0,0 +1,16 @@
package com.sap.sailing.gwt.home.client.place.event.oldcompetitorcharts;
import com.google.gwt.event.logical.shared.CloseHandler;
import com.google.gwt.event.shared.HandlerRegistration;
import com.google.gwt.user.client.ui.ListBox;
import com.google.gwt.user.client.ui.PopupPanel;
import com.sap.sailing.gwt.ui.client.shared.charts.MultiCompetitorLeaderboardChart;
public interface CompetitorChartsDelegate {
void setCompetitorChart(MultiCompetitorLeaderboardChart competitorChart);
ListBox getChartTypeSelectionControl();
HandlerRegistration addCloseHandler(CloseHandler<PopupPanel> handler);
}
@@ -7,17 +7,24 @@ import com.google.gwt.core.client.GWT;
import com.google.gwt.dom.client.DivElement;
import com.google.gwt.dom.client.Style.Visibility;
import com.google.gwt.event.dom.client.ChangeEvent;
import com.google.gwt.event.dom.client.ChangeHandler;
import com.google.gwt.event.dom.client.ClickEvent;
import com.google.gwt.event.logical.shared.CloseEvent;
import com.google.gwt.event.logical.shared.CloseHandler;
import com.google.gwt.uibinder.client.UiBinder;
import com.google.gwt.uibinder.client.UiField;
import com.google.gwt.uibinder.client.UiHandler;
import com.google.gwt.user.client.ui.Anchor;
import com.google.gwt.user.client.ui.Composite;
import com.google.gwt.user.client.ui.HTMLPanel;
import com.google.gwt.user.client.ui.ListBox;
import com.google.gwt.user.client.ui.PopupPanel;
import com.google.gwt.user.client.ui.Widget;
import com.sap.sailing.domain.common.DetailType;
import com.sap.sailing.gwt.home.client.place.event.regattaleaderboard.EventRegattaLeaderboardResources;
import com.sap.sailing.gwt.ui.client.CompetitorSelectionProvider;
import com.sap.sailing.gwt.ui.client.DetailTypeFormatter;
import com.sap.sailing.gwt.ui.client.StringMessages;
import com.sap.sailing.gwt.ui.client.shared.charts.MultiCompetitorLeaderboardChart;
import com.sap.sailing.gwt.ui.client.shared.charts.MultiCompetitorLeaderboardChartSettings;
import com.sap.sse.common.Util;
@@ -30,20 +37,57 @@ public class OldCompetitorCharts extends Composite {
@UiField HTMLPanel oldCompetitorChartsPanel;
@UiField ListBox chartTypeSelectionListBox;
@UiField Anchor fullscreenAnchor;
@UiField DivElement competitorSelectionStateUi;
private final List<DetailType> availableDetailsTypes;
private MultiCompetitorLeaderboardChart multiCompetitorChart;
private final CompetitorChartsDelegate delegate;
public OldCompetitorCharts() {
this(null);
}
public OldCompetitorCharts(CompetitorChartsDelegate delegate) {
this.availableDetailsTypes = new ArrayList<DetailType>();
this.multiCompetitorChart = null;
EventRegattaLeaderboardResources.INSTANCE.css().ensureInjected();
initWidget(uiBinder.createAndBindUi(this));
fullscreenAnchor.setTitle(StringMessages.INSTANCE.openFullscreenView());
this.delegate = delegate;
this.setupFullscreenDelegate();
}
private void setupFullscreenDelegate() {
if (delegate == null) {
fullscreenAnchor.removeFromParent();
return;
}
delegate.addCloseHandler(new CloseHandler<PopupPanel>() {
@Override
public void onClose(CloseEvent<PopupPanel> event) {
if (multiCompetitorChart != null) {
multiCompetitorChart.removeFromParent();
oldCompetitorChartsPanel.add(multiCompetitorChart);
multiCompetitorChart.forceChartToClientHeight();
}
}
});
delegate.getChartTypeSelectionControl().addChangeHandler(new ChangeHandler() {
@Override
public void onChange(ChangeEvent event) {
synchronizeChartTypeSelection(delegate.getChartTypeSelectionControl(), chartTypeSelectionListBox);
OldCompetitorCharts.this.updateChartType();
multiCompetitorChart.forceMaximumChartSize();
}
});
}
private void synchronizeChartTypeSelection(ListBox from, ListBox to) {
int selectedIndex = from.getSelectedIndex();
to.setSelectedIndex(selectedIndex);
}
public void setChart(MultiCompetitorLeaderboardChart multiCompetitorChart, List<DetailType> availableDetailsTypes, DetailType initialDetailType) {
this.multiCompetitorChart = multiCompetitorChart;
this.availableDetailsTypes.clear();
@@ -56,11 +100,15 @@ public class OldCompetitorCharts extends Composite {
private void fillChartTypeSelectionBox(DetailType initialDetailType) {
chartTypeSelectionListBox.clear();
if (delegate != null) delegate.getChartTypeSelectionControl().clear();
int i = 0;
for (DetailType detailType : availableDetailsTypes) {
chartTypeSelectionListBox.addItem(DetailTypeFormatter.format(detailType), detailType.name());
String formattedDetailType = DetailTypeFormatter.format(detailType);
chartTypeSelectionListBox.addItem(formattedDetailType, detailType.name());
if (delegate != null) delegate.getChartTypeSelectionControl().addItem(formattedDetailType, detailType.name());
if (detailType == initialDetailType) {
chartTypeSelectionListBox.setSelectedIndex(i);
if (delegate != null) delegate.getChartTypeSelectionControl().setSelectedIndex(i);
}
i++;
}
@@ -68,10 +116,23 @@ public class OldCompetitorCharts extends Composite {
@UiHandler("chartTypeSelectionListBox")
void chartTypeSelectionChanged(ChangeEvent event) {
if (delegate != null) synchronizeChartTypeSelection(chartTypeSelectionListBox, delegate.getChartTypeSelectionControl());
updateChartType();
}
private void updateChartType() {
DetailType selectedChartDetailType = getSelectedChartDetailType();
multiCompetitorChart.updateSettings(new MultiCompetitorLeaderboardChartSettings(selectedChartDetailType));
}
@UiHandler("fullscreenAnchor")
void fullscreenClicked(ClickEvent event) {
if(multiCompetitorChart != null && delegate != null) {
multiCompetitorChart.removeFromParent();
delegate.setCompetitorChart(multiCompetitorChart);
}
}
public DetailType getSelectedChartDetailType() {
DetailType result = null;
int selectedIndex = chartTypeSelectionListBox.getSelectedIndex();
@@ -1,36 +1,38 @@
<!DOCTYPE ui:UiBinder SYSTEM "http://dl.google.com/gwt/DTD/xhtml.ent">
<ui:UiBinder xmlns:ui="urn:ui:com.google.gwt.uibinder"
xmlns:s="urn:import:com.sap.sailing.gwt.home.client.place.event"
xmlns:g="urn:import:com.google.gwt.user.client.ui">
<ui:with field="i18n" type="com.sap.sailing.gwt.common.client.i18n.TextMessages"/>
<ui:UiBinder xmlns:ui="urn:ui:com.google.gwt.uibinder" xmlns:g="urn:import:com.google.gwt.user.client.ui"
xmlns:s="urn:import:com.sap.sailing.gwt.home.client.place.event">
<ui:with field="i18n" type="com.sap.sailing.gwt.common.client.i18n.TextMessages" />
<ui:with field="res" type="com.sap.sailing.gwt.common.client.SharedResources" />
<ui:with field="local_res" type="com.sap.sailing.gwt.home.client.place.event.regattaleaderboard.EventRegattaLeaderboardResources" />
<ui:with field="local_res" type="com.sap.sailing.gwt.home.client.place.event.regattaleaderboard.EventRegattaLeaderboardResources" />
<ui:style>
.marginFix {
margin-top: 2rem;
}
</ui:style>
<g:HTMLPanel>
<div class="{res.mediaCss.grid} {style.marginFix}" >
<div class="{res.mediaCss.small6} {res.mediaCss.column} {local_res.css.regattaleaderboard_meta_scoring}">
<h3><ui:text from="{i18n.competitorsAnalytics}" /></h3>
</div>
<div class="{res.mediaCss.small6} {res.mediaCss.column} {local_res.css.regattaleaderboard_meta_settings}">
<ui:text from="{i18n.chooseChart}" />
<g:ListBox ui:field="chartTypeSelectionListBox" />
</div>
<div class="{res.mediaCss.column}" style="margin-bottom: 1em;">
<b><ui:text from="{i18n.chartSelectionHint}" /></b>
</div>
<div ui:field="competitorSelectionStateUi" class="{res.mediaCss.column}" style="margin-bottom: 1em;">
</div>
<div class="{res.mediaCss.small12} {res.mediaCss.columns}">
<g:HTMLPanel ui:field="oldCompetitorChartsPanel">
</g:HTMLPanel>
</div>
</div>
</g:HTMLPanel>
</ui:UiBinder>
.toolbar {
white-space: nowrap;
}
.toolbarButton {
display: inline;
}
</ui:style>
<g:HTMLPanel>
<div class="{res.mediaCss.grid} {style.marginFix}">
<div class="{res.mediaCss.column} {res.mediaCss.small12} {res.mediaCss.medium4} {res.mediaCss.large6} {local_res.css.regattaleaderboard_meta_scoring}">
<h3><ui:text from="{i18n.competitorsAnalytics}" /></h3>
</div>
<div class="{res.mediaCss.column} {res.mediaCss.small12} {res.mediaCss.medium8} {res.mediaCss.large6} {local_res.css.regattaleaderboard_meta_settings} {style.toolbar}">
<ui:text from="{i18n.chooseChart}" />
<g:ListBox ui:field="chartTypeSelectionListBox" />
<g:Anchor styleName="{res.mainCss.button} {local_res.css.regattaleaderboard_meta_fullscreen_button} {style.toolbarButton}"
href="javascript:;" ui:field="fullscreenAnchor"></g:Anchor>
</div>
<div class="{res.mediaCss.column}" style="margin-bottom: 1em;">
<b><ui:text from="{i18n.chartSelectionHint}" /></b>
</div>
<div ui:field="competitorSelectionStateUi" class="{res.mediaCss.column}" style="margin-bottom: 1em;"></div>
<div class="{res.mediaCss.small12} {res.mediaCss.columns}">
<g:HTMLPanel ui:field="oldCompetitorChartsPanel"/>
</div>
</div>
</g:HTMLPanel>
</ui:UiBinder>
@@ -0,0 +1,63 @@
package com.sap.sailing.gwt.home.client.place.event.oldcompetitorcharts;
import com.google.gwt.dom.client.Style.Display;
import com.google.gwt.dom.client.Style.Unit;
import com.google.gwt.user.client.ui.FlowPanel;
import com.google.gwt.user.client.ui.Label;
import com.google.gwt.user.client.ui.ListBox;
import com.google.gwt.user.client.ui.Widget;
import com.sap.sailing.gwt.common.client.i18n.TextMessages;
import com.sap.sailing.gwt.home.shared.partials.fullscreen.FullscreenContainer;
import com.sap.sailing.gwt.ui.client.shared.charts.MultiCompetitorLeaderboardChart;
import com.sap.sse.common.Color;
public class OldCompetitorChartsDelegateFullscreenViewer extends FullscreenContainer<MultiCompetitorLeaderboardChart>
implements CompetitorChartsDelegate {
private final ListBox chartTypeSelection = new ListBox();
public OldCompetitorChartsDelegateFullscreenViewer() {
showLogo();
showBorder();
addToolbarInfo(createLabeledChartTypeSelectionControl());
}
@Override
protected void onShow() {
getContentWidget().forceMaximumChartSize();
getContentWidget().onResize();
}
@Override
public void setCompetitorChart(MultiCompetitorLeaderboardChart competitorChart) {
showContent(competitorChart);
}
@Override
public ListBox getChartTypeSelectionControl() {
return chartTypeSelection;
}
private Widget createLabeledChartTypeSelectionControl() {
FlowPanel panel = getWidgetWithMarginTop(new FlowPanel(), -30, Unit.PX);
panel.add(getWidgetWitDisplay(new Label(TextMessages.INSTANCE.chooseChart() + " "), Display.INLINE));
panel.add(getWidgetWithColor(chartTypeSelection, Color.BLACK));
return panel;
}
private <T extends Widget> T getWidgetWithMarginTop(T widget, double value, Unit unit) {
widget.getElement().getStyle().setMarginTop(value, unit);
return widget;
}
private <T extends Widget> T getWidgetWithColor(T widget, Color color) {
widget.getElement().getStyle().setColor(color.getAsHtml());
return widget;
}
private <T extends Widget> T getWidgetWitDisplay(T widget, Display display) {
widget.getElement().getStyle().setDisplay(display);
return widget;
}
}
@@ -17,6 +17,7 @@ import com.sap.sailing.domain.common.dto.LeaderboardDTO;
import com.sap.sailing.domain.common.dto.RaceColumnDTO;
import com.sap.sailing.gwt.common.client.controls.tabbar.TabView;
import com.sap.sailing.gwt.home.client.place.event.oldcompetitorcharts.OldCompetitorCharts;
import com.sap.sailing.gwt.home.client.place.event.oldcompetitorcharts.OldCompetitorChartsDelegateFullscreenViewer;
import com.sap.sailing.gwt.home.client.place.event.regatta.EventRegattaView;
import com.sap.sailing.gwt.home.client.place.event.regatta.EventRegattaView.Presenter;
import com.sap.sailing.gwt.home.client.place.event.regatta.RegattaAnalyticsDataManager;
@@ -42,8 +43,8 @@ public class RegattaCompetitorAnalyticsTabView extends SharedLeaderboardRegattaT
super();
}
@UiField
protected OldCompetitorCharts competitorCharts;
@UiField(provided = true)
protected OldCompetitorCharts competitorCharts = new OldCompetitorCharts(new OldCompetitorChartsDelegateFullscreenViewer());
@Override
public Class<RegattaCompetitorAnalyticsPlace> getPlaceClassForActivation() {
@@ -1,5 +1,6 @@
package com.sap.sailing.gwt.ui.client.shared.charts;
import com.google.gwt.user.client.Window;
import com.sap.sailing.domain.common.DetailType;
import com.sap.sailing.gwt.ui.client.CompetitorSelectionProvider;
import com.sap.sailing.gwt.ui.client.SailingServiceAsync;
@@ -50,4 +51,15 @@ public class MultiCompetitorLeaderboardChart extends AbstractCompetitorLeaderboa
public String getLocalizedShortName() {
return stringMessages.showCharts();
}
public void forceMaximumChartSize() {
chart.setWidth100();
chart.setHeight100();
chart.redraw();
}
public void forceChartToClientHeight() {
chart.setSize(chart.getOffsetWidth(), Window.getClientHeight());
chart.redraw();
}
}