diff --git a/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/settings/client/leaderboard/LeaderboardSettingsDialogComponent.java b/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/settings/client/leaderboard/LeaderboardSettingsDialogComponent.java index cecfa375774..285bfba3f93 100644 --- a/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/settings/client/leaderboard/LeaderboardSettingsDialogComponent.java +++ b/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/settings/client/leaderboard/LeaderboardSettingsDialogComponent.java @@ -165,7 +165,8 @@ public abstract class LeaderboardSettingsDialogComponent { + private final LeaderboardFetcher leaderboardFetcher; - protected final StringMessages stringMessages; + private final StringMessages stringMessages; private final CompetitorFetcher competitorFetcher; - public CompetitorColumnBase(LeaderboardFetcher leaderboardFetcher, StringMessages stringMessages, CompetitorFetcher competitorFetcher) { - super(); + public CompetitorColumnBase(LeaderboardFetcher leaderboardFetcher, StringMessages stringMessages, + CompetitorFetcher competitorFetcher) { this.leaderboardFetcher = leaderboardFetcher; this.stringMessages = stringMessages; this.competitorFetcher = competitorFetcher; @@ -36,11 +38,11 @@ public class CompetitorColumnBase { return new AbstractSafeHtmlCell(new AbstractSafeHtmlRenderer() { @Override public SafeHtml render(T row) { - return new SafeHtmlBuilder().appendEscaped(leaderboard.getDisplayName(competitorFetcher.getCompetitor(row))).toSafeHtml(); + return SafeHtmlUtils.fromString(leaderboard.getDisplayName(competitorFetcher.getCompetitor(row))); } }) { @Override - protected void render(com.google.gwt.cell.client.Cell.Context context, SafeHtml data, SafeHtmlBuilder sb) { + protected void render(Context context, SafeHtml data, SafeHtmlBuilder sb) { sb.append(data); } }; @@ -50,8 +52,10 @@ public class CompetitorColumnBase { return new InvertibleComparatorAdapter() { @Override public int compare(T o1, T o2) { - return Comparator.nullsLast((c1, c2)->new NaturalComparator(/* caseSensitive */ false).compare(c1.getShortName(), c2.getShortName())).compare( - competitorFetcher.getCompetitor(o1), competitorFetcher.getCompetitor(o2)); + return Comparator + . nullsLast((c1, c2) -> new NaturalComparator(/* caseSensitive */ false) + .compare(c1.getShortName(), c2.getShortName())) + .compare(competitorFetcher.getCompetitor(o1), competitorFetcher.getCompetitor(o2)); } }; } @@ -61,10 +65,8 @@ public class CompetitorColumnBase { stringMessages.competitorColumnTooltip()); } - public void render(T t, String competitorColorBarStyle, SafeHtmlBuilder sb) { - sb.appendHtmlConstant("
"); - sb.appendEscaped(getLeaderboard().getDisplayName(competitorFetcher.getCompetitor(t))); - sb.appendHtmlConstant("
"); + public void render(Context context, T row, SafeHtmlBuilder sb) { + sb.appendEscaped(getLeaderboard().getDisplayName(competitorFetcher.getCompetitor(row))); } } 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 bf8166a6b7c..35e73aba518 100755 --- 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 @@ -11,6 +11,7 @@ import java.util.List; import java.util.Map; import java.util.Map.Entry; import java.util.Set; +import java.util.function.Consumer; import java.util.function.Function; import com.google.gwt.cell.client.AbstractSafeHtmlCell; @@ -338,7 +339,7 @@ public abstract class LeaderboardPanel extends A private Label scoreCorrectionCommentLabel; private Label liveRaceLabel; - protected boolean isEmbedded; + private final boolean isEmbedded; private ImageResource pauseIcon; private ImageResource playIcon; @@ -897,30 +898,9 @@ public abstract class LeaderboardPanel extends A @Override public void render(Context context, T object, SafeHtmlBuilder sb) { - CompetitorDTO competitor = competitorFetcher.getCompetitor(object); - final String twoLetterIsoCountryCode = competitor.getTwoLetterIsoCountryCode(); - final String flagImageURL = competitor.getFlagImageURL(); - boolean boatColorShown = renderBoatColorIfNecessary(competitorFetcher.getCompetitor(object), sb); - if (isShowCompetitorNationality || flagImageURL == null || flagImageURL.isEmpty()) { - final ImageResource nationalityFlagImageResource; - if (twoLetterIsoCountryCode == null || twoLetterIsoCountryCode.isEmpty()) { - nationalityFlagImageResource = flagImageResolver.getEmptyFlagImageResource(); - } else { - nationalityFlagImageResource = flagImageResolver.getFlagImageResource(twoLetterIsoCountryCode); - } - if (nationalityFlagImageResource != null) { - style.renderNationalityFlag(nationalityFlagImageResource, sb); - sb.appendHtmlConstant(" "); - } - } - if (flagImageURL != null && !flagImageURL.isEmpty()) { - style.renderFlagImage(flagImageURL, sb, competitor); - sb.appendHtmlConstant(" "); - } - sb.appendEscaped(competitor.getShortInfo()); - if (boatColorShown) { - sb.appendHtmlConstant(""); - } + final CompetitorDTO competitor = competitorFetcher.getCompetitor(object); + LeaderboardPanel.this.renderCompetitorText(competitor, isShowCompetitorShortName(), + !isShowCompetitorFullName(), sb, builder -> builder.appendEscaped(competitor.getShortInfo())); } @Override @@ -1171,8 +1151,6 @@ public abstract class LeaderboardPanel extends A } } - public abstract boolean renderBoatColorIfNecessary(CompetitorDTO competitor, SafeHtmlBuilder sb); - private class TextRaceColumn extends RaceColumn implements RaceNameProvider { /** * Remembers the leg columns; null-padded, if {@link #getLegColumn(int)} asks for a column index @@ -3577,17 +3555,43 @@ public abstract class LeaderboardPanel extends A @Override public void render(Context context, LeaderboardRowDTO object, SafeHtmlBuilder sb) { - String competitorColor = getCompetitorColor(object.competitor); - String competitorColorBarStyle; - if (LeaderboardPanel.this.isEmbedded && competitorColor != null) { - competitorColorBarStyle = "style=\"border-bottom: 2px solid " + competitorColor + ";\""; - } else { - competitorColorBarStyle = "style=\"border: none;\""; - } - base.render(object, competitorColorBarStyle, sb); + LeaderboardPanel.this.renderCompetitorText(object.competitor, !isShowCompetitorShortName(), + isShowCompetitorFullName(), sb, builder -> base.render(context, object, builder)); } } - public abstract String getCompetitorColor(CompetitorDTO competitor); + protected abstract String getCompetitorColor(CompetitorDTO competitor); + + private void renderCompetitorText(final CompetitorDTO competitor, final boolean withFlags, final boolean withColor, + final SafeHtmlBuilder sb, final Consumer textRenderer) { + final String competitorColor = getCompetitorColor(competitor); + final boolean showColor = withColor && competitorColor != null; + final String divStyle = showColor ? style.determineBoatColorDivStyle(competitorColor) : "border: none;"; + sb.appendHtmlConstant("
"); + + if (withFlags) { + final String flagImageURL = competitor.getFlagImageURL(); + if (isShowCompetitorNationality || flagImageURL == null || flagImageURL.isEmpty()) { + final String twoLetterIsoCountryCode = competitor.getTwoLetterIsoCountryCode(); + final ImageResource nationalityFlagImageResource; + if (twoLetterIsoCountryCode == null || twoLetterIsoCountryCode.isEmpty()) { + nationalityFlagImageResource = flagImageResolver.getEmptyFlagImageResource(); + } else { + nationalityFlagImageResource = flagImageResolver.getFlagImageResource(twoLetterIsoCountryCode); + } + if (nationalityFlagImageResource != null) { + style.renderNationalityFlag(nationalityFlagImageResource, sb); + sb.appendHtmlConstant(" "); + } + } + if (flagImageURL != null && !flagImageURL.isEmpty()) { + style.renderFlagImage(flagImageURL, sb, competitor); + sb.appendHtmlConstant(" "); + } + } + + textRenderer.accept(sb); + sb.appendHtmlConstant("
"); + } } diff --git a/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/ui/leaderboard/MultiRaceLeaderboardPanel.java b/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/ui/leaderboard/MultiRaceLeaderboardPanel.java index 285f7601238..8c5dadc347a 100644 --- a/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/ui/leaderboard/MultiRaceLeaderboardPanel.java +++ b/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/ui/leaderboard/MultiRaceLeaderboardPanel.java @@ -5,7 +5,6 @@ import java.util.HashMap; import java.util.List; import java.util.Map; -import com.google.gwt.safehtml.shared.SafeHtmlBuilder; import com.sap.sailing.domain.common.DetailType; import com.sap.sailing.domain.common.LeaderboardType; import com.sap.sailing.domain.common.dto.AbstractLeaderboardDTO; @@ -41,17 +40,6 @@ import com.sap.sse.gwt.client.shared.settings.ComponentContext; */ public class MultiRaceLeaderboardPanel extends LeaderboardPanel { - public MultiRaceLeaderboardPanel(Component parent, ComponentContext context, - SailingServiceAsync sailingService, AsyncActionsExecutor asyncActionsExecutor, - MultiRaceLeaderboardSettings settings, boolean isEmbedded, - CompetitorSelectionProvider competitorSelectionProvider, String leaderboardGroupName, - String leaderboardName, ErrorReporter errorReporter, StringMessages stringMessages, boolean showRaceDetails, - LeaderBoardStyle style, FlagImageResolver flagImageResolver, Iterable availableDetailTypes) { - super(parent, context, sailingService, asyncActionsExecutor, settings, isEmbedded, competitorSelectionProvider, - leaderboardGroupName, leaderboardName, errorReporter, stringMessages, showRaceDetails, style, flagImageResolver, availableDetailTypes); - initialize(settings); - } - public MultiRaceLeaderboardPanel(Component parent, ComponentContext context, SailingServiceAsync sailingService, AsyncActionsExecutor asyncActionsExecutor, MultiRaceLeaderboardSettings settings, boolean isEmbedded, @@ -114,13 +102,7 @@ public class MultiRaceLeaderboardPanel extends LeaderboardPanel"); - } - return showBoatColor; + return isEmbedded() ? getRaceCompetitorSelection().getColor(competitor, preSelectedRace).getAsHtml() : null; } @Override diff --git a/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/ui/leaderboardedit/EditableLeaderboardPanel.java b/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/ui/leaderboardedit/EditableLeaderboardPanel.java index 9dda3f72fde..d085f7e05c6 100755 --- a/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/ui/leaderboardedit/EditableLeaderboardPanel.java +++ b/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/ui/leaderboardedit/EditableLeaderboardPanel.java @@ -196,8 +196,7 @@ public class EditableLeaderboardPanel extends MultiRaceLeaderboardPanel { @Override public void render(Context context, CompetitorDTO competitor, SafeHtmlBuilder sb) { - String competitorColorBarStyle = "style=\"border: none;\""; - base.render(competitor, competitorColorBarStyle, sb); + base.render(context, competitor, sb); } } diff --git a/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/ui/raceboard/SingleRaceLeaderboardPanelLifecycle.java b/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/ui/raceboard/SingleRaceLeaderboardPanelLifecycle.java index 990e5148cf9..d75f0c8245f 100644 --- a/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/ui/raceboard/SingleRaceLeaderboardPanelLifecycle.java +++ b/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/ui/raceboard/SingleRaceLeaderboardPanelLifecycle.java @@ -63,8 +63,8 @@ public class SingleRaceLeaderboardPanelLifecycle extends LeaderboardPanelLifecyc currentLeaderboardSettings.isShowCompetitorShortNameColumn(), currentLeaderboardSettings.isShowCompetitorFullNameColumn(), currentLeaderboardSettings.isShowCompetitorBoatInfoColumn(), - currentLeaderboardSettings.isShowRaceRankColumn(), - currentLeaderboardSettings.isShowCompetitorNationality()); + currentLeaderboardSettings.isShowCompetitorNationality(), + currentLeaderboardSettings.isShowRaceRankColumn()); return SettingsUtil.copyValues(contextSpecificLeaderboardSettings, defaultLeaderboardSettings); } @@ -79,7 +79,8 @@ public class SingleRaceLeaderboardPanelLifecycle extends LeaderboardPanelLifecyc currentLeaderboardSettings.isShowCompetitorShortNameColumn(), currentLeaderboardSettings.isShowCompetitorFullNameColumn(), currentLeaderboardSettings.isShowCompetitorBoatInfoColumn(), - currentLeaderboardSettings.isShowCompetitorNationality(),currentLeaderboardSettings.isShowRaceRankColumn()); + currentLeaderboardSettings.isShowCompetitorNationality(), + currentLeaderboardSettings.isShowRaceRankColumn()); return SettingsUtil.copyValues(globalLeaderboardSettings, defaultLeaderboardSettings); }