RegattaOverview: unified upper flag, lower flag and direction arrow to one column

This commit is contained in:
Armin Zamani committed 2013-06-22 22:13:20 +02:00
1 parent 30b851b4aa
commit 8fbfde3eb5
6 files changed
+86 -62

No files matched your search

@@ -689,4 +689,5 @@ public interface StringMessages extends Messages {
String competitorFilterExplanation();
String protestTimeFinishesAt();
String protestTimeFinishedAt();
String flags();
}
@@ -681,4 +681,5 @@ dropReplicaConnection=Drop connection
timePanelName=Time Control
competitorFilterExplanation=The filter will show all competitors matching the criterias:dropReplicaConnection=Drop connection
protestTimeFinishesAt=Protest time finishes at
protestTimeFinishedAt=Protest time finished at
protestTimeFinishedAt=Protest time finished at
flags=Flags
@@ -668,4 +668,5 @@ timePanelName=Zeitregler
competitorFilterExplanation=Der Filter zeigt alle Teilnehmer, welche folgende Bedingungen erfüllen:
The filter will show all competitors matching the criterias:dropReplicaConnection=Verbindung abbrechen
protestTimeFinishesAt=Protestzeit endet um
protestTimeFinishedAt=Protestzeit beendet um
protestTimeFinishedAt=Protestzeit beendet um
flags=Flaggen
@@ -1,31 +0,0 @@
package com.sap.sailing.gwt.ui.regattaoverview;
import java.util.Arrays;
import com.google.gwt.core.client.GWT;
import com.google.gwt.text.shared.SafeHtmlRenderer;
import com.sap.sailing.gwt.ui.client.StringMessages;
import com.sap.sailing.gwt.ui.client.shared.components.ImagesBarCell;
public class FlagImageCell extends ImagesBarCell {
static final String ACTION_EDIT = "ACTION_EDIT";
private final StringMessages stringMessages;
private static RegattaRaceStatesFlagsResources resources = GWT.create(RegattaRaceStatesFlagsResources.class);
public FlagImageCell(StringMessages stringConstants) {
super();
this.stringMessages = stringConstants;
}
public FlagImageCell(SafeHtmlRenderer<String> renderer, StringMessages stringMessages) {
super();
this.stringMessages = stringMessages;
}
@Override
protected Iterable<ImageSpec> getImageSpecs() {
return Arrays.asList(
new ImageSpec(ACTION_EDIT, stringMessages.actionEdit(), makeImagePrototype(resources.flagAP())),
new ImageSpec(ACTION_EDIT, stringMessages.actionEdit(), makeImagePrototype(resources.arrowUp())));
}
}
@@ -10,7 +10,6 @@ import java.util.Map;
import com.google.gwt.cell.client.ClickableTextCell;
import com.google.gwt.cell.client.FieldUpdater;
import com.google.gwt.cell.client.ImageResourceCell;
import com.google.gwt.cell.client.SafeHtmlCell;
import com.google.gwt.core.client.GWT;
import com.google.gwt.event.dom.client.ClickEvent;
@@ -19,7 +18,6 @@ import com.google.gwt.i18n.client.DateTimeFormat;
import com.google.gwt.json.client.JSONObject;
import com.google.gwt.json.client.JSONParser;
import com.google.gwt.json.client.JSONValue;
import com.google.gwt.resources.client.ImageResource;
import com.google.gwt.safehtml.shared.SafeHtml;
import com.google.gwt.safehtml.shared.SafeHtmlBuilder;
import com.google.gwt.safehtml.shared.SafeHtmlUtils;
@@ -34,6 +32,7 @@ import com.google.gwt.user.client.ui.Button;
import com.google.gwt.user.client.ui.DialogBox;
import com.google.gwt.user.client.ui.Grid;
import com.google.gwt.user.client.ui.HasHorizontalAlignment;
import com.google.gwt.user.client.ui.HasVerticalAlignment;
import com.google.gwt.user.client.ui.Label;
import com.google.gwt.user.client.ui.SimplePanel;
import com.google.gwt.user.client.ui.VerticalPanel;
@@ -78,7 +77,6 @@ public class RegattaRaceStatesComponent extends SimplePanel implements Component
private final SailingServiceAsync sailingService;
private final StringMessages stringMessages;
private final String eventIdAsString;
private final FlagImageResolver flagImageResolver;
private EventDTO eventDTO;
private List<RaceGroupDTO> raceGroupDTOs;
@@ -113,7 +111,6 @@ public class RegattaRaceStatesComponent extends SimplePanel implements Component
this.sailingService = sailingService;
this.stringMessages = stringMessages;
this.eventIdAsString = eventIdAsString;
this.flagImageResolver = new FlagImageResolver();
this.allEntries = new ArrayList<RegattaOverviewEntryDTO>();
this.timerToSynchronize = timerToSynchronize;
@@ -378,32 +375,28 @@ public class RegattaRaceStatesComponent extends SimplePanel implements Component
});
raceCourseColumn.setHorizontalAlignment(HasHorizontalAlignment.ALIGN_CENTER);
Column<RegattaOverviewEntryDTO, ImageResource> lastUpperFlagColumn = new Column<RegattaOverviewEntryDTO, ImageResource>(
new ImageResourceCell()) {
@Override
public ImageResource getValue(RegattaOverviewEntryDTO entryDTO) {
return flagImageResolver.resolveFlagToImage(entryDTO.raceInfo.lastUpperFlag);
}
};
SafeHtmlCell flagsCell = new SafeHtmlCell();
Column<RegattaOverviewEntryDTO, SafeHtml> flagColumn = new Column<RegattaOverviewEntryDTO, SafeHtml>(flagsCell) {
Column<RegattaOverviewEntryDTO, ImageResource> lastLowerFlagColumn = new Column<RegattaOverviewEntryDTO, ImageResource>(
new ImageResourceCell()) {
@Override
public ImageResource getValue(RegattaOverviewEntryDTO entryDTO) {
return flagImageResolver.resolveFlagToImage(entryDTO.raceInfo.lastLowerFlag);
}
};
Column<RegattaOverviewEntryDTO, ImageResource> lastFlagDirectionColumn = new Column<RegattaOverviewEntryDTO, ImageResource>(
new ImageResourceCell()) {
@Override
public ImageResource getValue(RegattaOverviewEntryDTO entryDTO) {
if (entryDTO.raceInfo.lastUpperFlag != null)
return flagImageResolver.resolveFlagDirectionToImage(entryDTO.raceInfo.isLastFlagDisplayed);
else
return null;
public SafeHtml getValue(RegattaOverviewEntryDTO entryDTO) {
String tooltip = "";
if (entryDTO.raceInfo.lastUpperFlag != null) {
tooltip = entryDTO.raceInfo.lastUpperFlag.name();
if (entryDTO.raceInfo.lastLowerFlag != null) {
tooltip += " over " + entryDTO.raceInfo.lastLowerFlag.name();
}
}
return SailingFlagsBuilder.render(
entryDTO.raceInfo.lastUpperFlag,
entryDTO.raceInfo.lastLowerFlag,
entryDTO.raceInfo.isLastFlagDisplayed,
tooltip);
}
};
flagColumn.setHorizontalAlignment(HasHorizontalAlignment.ALIGN_CENTER);
flagColumn.setVerticalAlignment(HasVerticalAlignment.ALIGN_MIDDLE);
TextColumn<RegattaOverviewEntryDTO> raceAdditionalInformationColumn = new TextColumn<RegattaOverviewEntryDTO>() {
@Override
@@ -456,9 +449,7 @@ public class RegattaRaceStatesComponent extends SimplePanel implements Component
table.addColumn(raceStartTimeColumn, stringMessages.startTime());
table.addColumn(raceStatusColumn, stringMessages.status());
table.addColumn(raceCourseColumn, stringMessages.course());
table.addColumn(lastUpperFlagColumn, stringMessages.lastUpperFlag());
table.addColumn(lastLowerFlagColumn, stringMessages.lastLowerFlag());
table.addColumn(lastFlagDirectionColumn, stringMessages.flagStatus());
table.addColumn(flagColumn, stringMessages.flags());
table.addColumn(raceAdditionalInformationColumn, stringMessages.additionalInformation());
table.addColumnSortHandler(regattaOverviewListHandler);
@@ -0,0 +1,61 @@
package com.sap.sailing.gwt.ui.regattaoverview;
import com.google.gwt.core.client.GWT;
import com.google.gwt.resources.client.ImageResource;
import com.google.gwt.safecss.shared.SafeStyles;
import com.google.gwt.safecss.shared.SafeStylesUtils;
import com.google.gwt.safehtml.client.SafeHtmlTemplates;
import com.google.gwt.safehtml.shared.SafeHtml;
import com.google.gwt.safehtml.shared.SafeHtmlBuilder;
import com.google.gwt.safehtml.shared.SafeHtmlUtils;
import com.google.gwt.user.client.ui.AbstractImagePrototype;
import com.sap.sailing.domain.common.racelog.Flags;
import com.sap.sailing.gwt.ui.client.shared.components.ImagesBarCell;
public class SailingFlagsBuilder {
private final static SailingFlagsTemplates imageTemplate = GWT.create(SailingFlagsTemplates.class);
interface SailingFlagsTemplates extends SafeHtmlTemplates {
/**
* @param title
* the tool-tip to display for the image on mouse-over
* @param upperFlag
* how to render the image; this needs to be an &lt;img&gt; tag, not enclosed by any other element,
* as returned by {@link ImagesBarCell#makeImagePrototype(ImageResource)}
*/
@SafeHtmlTemplates.Template("<div title=\"{0}\"><div style=\"{1}\"><div>{2}</div><div>{3}</div></div><div>{4}</div></div>")
SafeHtml cell(String title, SafeStyles styles, SafeHtml upperFlag, SafeHtml lowerFlag, SafeHtml directionArrow);
}
protected static SailingFlagsTemplates getImageTemplate() {
return imageTemplate;
}
protected static AbstractImagePrototype makeImagePrototype(ImageResource resource) {
return AbstractImagePrototype.create(resource);
}
protected static SafeStyles getImageStyle() {
return SafeStylesUtils.fromTrustedString("float:left;padding-right:10px;");
}
public static SafeHtml render(Flags upperFlag, Flags lowerFlag, boolean isDisplayed, String tooltip) {
FlagImageResolver flagImageResolver = new FlagImageResolver();
ImageResource upperFlagImage = flagImageResolver.resolveFlagToImage(upperFlag);
ImageResource lowerFlagImage = flagImageResolver.resolveFlagToImage(lowerFlag);
ImageResource directionImage = flagImageResolver.resolveFlagDirectionToImage(isDisplayed);
SafeHtml upperFlagHtml = (upperFlagImage != null) ? makeImagePrototype(upperFlagImage).getSafeHtml() : SafeHtmlUtils.EMPTY_SAFE_HTML;
SafeHtml lowerFlagHtml = (lowerFlagImage != null) ? makeImagePrototype(lowerFlagImage).getSafeHtml() : SafeHtmlUtils.EMPTY_SAFE_HTML;
SafeHtml directionHtml = (upperFlagImage != null) ? makeImagePrototype(directionImage).getSafeHtml() : SafeHtmlUtils.EMPTY_SAFE_HTML;
SafeHtmlBuilder builder = new SafeHtmlBuilder();
SafeStyles imgStyle = getImageStyle();
SafeHtml rendered = getImageTemplate().cell(tooltip, imgStyle,
upperFlagHtml, lowerFlagHtml, directionHtml);
builder.append(rendered);
return builder.toSafeHtml();
}
}