Use initials when there is no space for the whole name

This commit is contained in:
Papick Garcia Taboada committed 2015-07-14 14:51:58 +02:00
1 parent 2df661e3a4
commit 6d081df701
2 files changed
+67 -3

No files matched your search

@@ -1,5 +1,8 @@
package com.sap.sailing.gwt.home.client.place.event.partials.multiRegattaList;
import java.util.ArrayList;
import java.util.List;
import com.google.gwt.core.client.GWT;
import com.google.gwt.core.client.Scheduler;
import com.google.gwt.core.client.Scheduler.ScheduledCommand;
@@ -7,8 +10,12 @@ import com.google.gwt.dom.client.AnchorElement;
import com.google.gwt.dom.client.DivElement;
import com.google.gwt.dom.client.Style.Display;
import com.google.gwt.dom.client.Style.Unit;
import com.google.gwt.event.logical.shared.ResizeEvent;
import com.google.gwt.event.logical.shared.ResizeHandler;
import com.google.gwt.event.shared.HandlerRegistration;
import com.google.gwt.uibinder.client.UiBinder;
import com.google.gwt.uibinder.client.UiField;
import com.google.gwt.user.client.Window;
import com.google.gwt.user.client.ui.Composite;
import com.google.gwt.user.client.ui.Widget;
import com.sap.sailing.gwt.common.client.SharedResources;
@@ -29,6 +36,9 @@ public class MultiRegattaListSteps extends Composite {
@UiField DivElement leaderboardButtonContainerUi;
@UiField AnchorElement leaderboardButtonUi;
private HandlerRegistration windowResizeHandlerRegistration;
private final List<MultiRegattaListStepsBody> allMultiregattaSteps = new ArrayList<MultiRegattaListStepsBody>();
public MultiRegattaListSteps(RegattaProgressDTO regattaProgress) {
MultiRegattaListResources.INSTANCE.css().ensureInjected();
initWidget(uiBinder.createAndBindUi(this));
@@ -41,9 +51,28 @@ public class MultiRegattaListSteps extends Composite {
double parts = Math.pow(seriesProgress.getTotalRaceCount(), 0.4);
double percentage = 100.0 * parts / sumParts;
MultiRegattaListStepsBody stepsBody = new MultiRegattaListStepsBody(seriesProgress);
allMultiregattaSteps.add(stepsBody);
stepsBody.getElement().getStyle().setWidth(percentage, Unit.PCT);
stepsContainerUi.appendChild(stepsBody.getElement());
}
}
@Override
protected void onLoad() {
windowResizeHandlerRegistration = Window.addResizeHandler(new ResizeHandler() {
@Override
public void onResize(ResizeEvent event) {
for (MultiRegattaListStepsBody widget : allMultiregattaSteps) {
widget.onResize();
}
}
});
}
@Override
protected void onUnload() {
windowResizeHandlerRegistration.removeHandler();
}
void setLeaderboardNavigation(RegattaState regattaState, PlaceNavigation<?> placeNavigation) {
@@ -6,17 +6,22 @@ import java.util.Map;
import java.util.Map.Entry;
import com.google.gwt.core.client.GWT;
import com.google.gwt.core.client.Scheduler;
import com.google.gwt.core.client.Scheduler.ScheduledCommand;
import com.google.gwt.dom.client.DivElement;
import com.google.gwt.dom.client.Element;
import com.google.gwt.dom.client.Style.Display;
import com.google.gwt.dom.client.Style.Visibility;
import com.google.gwt.uibinder.client.UiBinder;
import com.google.gwt.uibinder.client.UiField;
import com.google.gwt.user.client.ui.RequiresResize;
import com.google.gwt.user.client.ui.UIObject;
import com.sap.sailing.gwt.ui.client.StringMessages;
import com.sap.sailing.gwt.ui.shared.dispatch.regatta.RegattaProgressFleetDTO;
import com.sap.sailing.gwt.ui.shared.dispatch.regatta.RegattaProgressSeriesDTO;
import com.sap.sailing.gwt.ui.shared.race.FleetMetadataDTO;
public class MultiRegattaListStepsBody extends UIObject {
public class MultiRegattaListStepsBody extends UIObject implements RequiresResize {
private static final StringMessages I18N = StringMessages.INSTANCE;
private static MultiRegattaListStepsBodyUiBinder uiBinder = GWT.create(MultiRegattaListStepsBodyUiBinder.class);
@@ -29,18 +34,29 @@ public class MultiRegattaListStepsBody extends UIObject {
@UiField DivElement progressUi;
@UiField DivElement fleetsContainerUi;
private final String seriesName;
public MultiRegattaListStepsBody(RegattaProgressSeriesDTO seriesProgress) {
setElement(uiBinder.createAndBindUi(this));
nameUi.setInnerText(DEFAULT_SERIES_NAME.equals(seriesProgress.getName()) ? I18N.races() : seriesProgress.getName());
nameUi.getStyle().setVisibility(Visibility.HIDDEN);
seriesName = DEFAULT_SERIES_NAME.equals(seriesProgress.getName()) ? I18N.races() : seriesProgress.getName();
nameUi.setInnerText(seriesName);
Scheduler.get().scheduleDeferred(new ScheduledCommand() {
@Override
public void execute() {
renderNames();
}
});
if (seriesProgress.isCompleted()) {
progressUi.setInnerText(String.valueOf(seriesProgress.getTotalRaceCount()));
} else {
checkUi.removeFromParent();
checkUi.getStyle().setDisplay(Display.NONE);
progressUi.setInnerText(I18N.currentOfTotal(
seriesProgress.getProgressRaceCount(), seriesProgress.getTotalRaceCount()));
}
addFleetProgresses(seriesProgress.getFleetState(), seriesProgress.getTotalRaceCount());
}
private void addFleetProgresses(Map<FleetMetadataDTO, RegattaProgressFleetDTO> fleetStates, int totalRaceCount) {
double height = fleetStates.isEmpty() ? 100.0 : 100.0 / fleetStates.size();
@@ -52,4 +68,23 @@ public class MultiRegattaListStepsBody extends UIObject {
}
}
private void renderNames() {
if (getElement().getOffsetWidth() < nameUi.getOffsetWidth() + checkUi.getOffsetWidth()
+ progressUi.getOffsetWidth()) {
String[] tokens = seriesName.split(" ");
StringBuilder initials = new StringBuilder();
for (int i = 0; i < tokens.length; i++) {
initials.append(tokens[i].charAt(0));
}
nameUi.setInnerText(initials.toString());
}
nameUi.setTitle(seriesName + " " + nameUi.getOffsetWidth() + " / " + getElement().getOffsetWidth());
nameUi.getStyle().setVisibility(Visibility.VISIBLE);
}
@Override
public void onResize() {
renderNames();
}
}