Regatta list - Extracted fleet progresses to its own UiBinder

This commit is contained in:
Benjamin Barth committed 2015-07-13 14:06:49 +02:00
1 parent abc0575178
commit dfd2f69535
3 files changed
+50 -27

No files matched your search

@@ -6,18 +6,15 @@ import java.util.Map.Entry;
import com.google.gwt.core.client.GWT;
import com.google.gwt.dom.client.DivElement;
import com.google.gwt.dom.client.Element;
import com.google.gwt.dom.client.Style.Unit;
import com.google.gwt.uibinder.client.UiBinder;
import com.google.gwt.uibinder.client.UiField;
import com.google.gwt.user.client.DOM;
import com.google.gwt.user.client.ui.UIObject;
import com.sap.sailing.gwt.home.client.place.event.partials.multiRegattaList.MultiRegattaListResources.LocalCss;
import com.sap.sailing.gwt.ui.client.StringMessages;
import com.sap.sailing.gwt.ui.shared.dispatch.regatta.RegattaProgressSeriesDTO;
import com.sap.sailing.gwt.ui.shared.race.FleetMetadataDTO;
public class MultiRegattaListStepsBody extends UIObject {
private static final LocalCss CSS = MultiRegattaListResources.INSTANCE.css();
private static MultiRegattaListStepsBodyUiBinder uiBinder = GWT.create(MultiRegattaListStepsBodyUiBinder.class);
interface MultiRegattaListStepsBodyUiBinder extends UiBinder<Element, MultiRegattaListStepsBody> {
@@ -29,37 +26,26 @@ public class MultiRegattaListStepsBody extends UIObject {
@UiField DivElement fleetsContainerUi;
public MultiRegattaListStepsBody(RegattaProgressSeriesDTO seriesProgress) {
Element main = uiBinder.createAndBindUi(this);
setElement(uiBinder.createAndBindUi(this));
nameUi.setInnerText(seriesProgress.getName());
if (seriesProgress.isCompleted()) {
progressUi.setInnerText(String.valueOf(seriesProgress.getTotalRaceCount()));
} else {
checkUi.removeFromParent();
progressUi.setInnerText(seriesProgress.getProgressRaceCount() + " of " + seriesProgress.getTotalRaceCount());
progressUi.setInnerText(StringMessages.INSTANCE.currentOfTotal(
seriesProgress.getProgressRaceCount(), seriesProgress.getTotalRaceCount()));
}
Map<FleetMetadataDTO, Integer> fleetStates = seriesProgress.getFleetState();
double fleetHeight = fleetStates.isEmpty() ? 100.0 : 100.0 / fleetStates.size();
for (Entry<FleetMetadataDTO, Integer> fleetState : seriesProgress.getFleetState().entrySet()) {
double fleetWidth = (fleetState.getValue() * 100.0) / seriesProgress.getTotalRaceCount();
fleetsContainerUi.appendChild(getFleetElement(fleetWidth, fleetHeight, fleetState.getKey().getFleetColor()));
}
setElement(main);
addFleetProgresses(seriesProgress.getFleetState(), seriesProgress.getTotalRaceCount());
}
private DivElement getFleetElement(double width, double height, String color) {
DivElement fleetProgressUi = createDiv(CSS.regattalistitem_steps_step_fleets_fleet());
fleetProgressUi.getStyle().setHeight(height, Unit.PCT);
DivElement fleetProgressBarUi = createDiv(CSS.regattalistitem_steps_step_fleets_fleet_progress());
fleetProgressBarUi.getStyle().setBackgroundColor(color);
fleetProgressBarUi.getStyle().setWidth(width, Unit.PCT);
fleetProgressUi.appendChild(fleetProgressBarUi);
return fleetProgressUi;
}
private DivElement createDiv(String cssClassName) {
DivElement div = DOM.createDiv().cast();
div.addClassName(cssClassName);
return div;
private void addFleetProgresses(Map<FleetMetadataDTO, Integer> fleetStates, int totalRaceCount) {
double height = fleetStates.isEmpty() ? 100.0 : 100.0 / fleetStates.size();
for (Entry<FleetMetadataDTO, Integer> fleetState : fleetStates.entrySet()) {
double fleetWidth = (fleetState.getValue() * 100.0) / totalRaceCount;
String fleetColor = fleetState.getKey().getFleetColor();
MultiRegattaListStepsBodyFleet fleet = new MultiRegattaListStepsBodyFleet(fleetWidth, height, fleetColor);
fleetsContainerUi.appendChild(fleet.getElement());
}
}
}
@@ -0,0 +1,27 @@
package com.sap.sailing.gwt.home.client.place.event.partials.multiRegattaList;
import com.google.gwt.core.client.GWT;
import com.google.gwt.dom.client.DivElement;
import com.google.gwt.dom.client.Element;
import com.google.gwt.dom.client.Style.Unit;
import com.google.gwt.uibinder.client.UiBinder;
import com.google.gwt.uibinder.client.UiField;
import com.google.gwt.user.client.ui.UIObject;
public class MultiRegattaListStepsBodyFleet extends UIObject {
private static MultiRegattaListStepsBodyFleetUiBinder uiBinder = GWT.create(MultiRegattaListStepsBodyFleetUiBinder.class);
interface MultiRegattaListStepsBodyFleetUiBinder extends UiBinder<Element, MultiRegattaListStepsBodyFleet> {
}
@UiField DivElement fleetProgressBarUi;
public MultiRegattaListStepsBodyFleet(double width, double height, String color) {
setElement(uiBinder.createAndBindUi(this));
getElement().getStyle().setHeight(height, Unit.PCT);
fleetProgressBarUi.getStyle().setWidth(width, Unit.PCT);
fleetProgressBarUi.getStyle().setBackgroundColor(color);
}
}
@@ -0,0 +1,10 @@
<!DOCTYPE ui:UiBinder SYSTEM "http://dl.google.com/gwt/DTD/xhtml.ent">
<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.shared" xmlns:p="urn:import:com.sap.sailing.gwt.home.client.place.event.partials">
<ui:with field="i18n" type="com.sap.sailing.gwt.ui.client.StringMessages" />
<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.partials.multiRegattaList.MultiRegattaListResources" />
<div class="{local_res.css.regattalistitem_steps_step_fleets_fleet}">
<div class="{local_res.css.regattalistitem_steps_step_fleets_fleet_progress}" ui:field="fleetProgressBarUi"></div>
</div>
</ui:UiBinder>