From ec882d37f1cf997272060e49282b72242038e1f9 Mon Sep 17 00:00:00 2001 From: Fredrik Teschke Date: Thu, 24 Apr 2014 00:08:03 +0200 Subject: [PATCH] allow for any RGB color in MarkEditDialog --- .../gwt/ui/adminconsole/ColorColumn.java | 34 +++++++++++++++++++ .../adminconsole/CompetitorTableWrapper.java | 18 ++++------ .../gwt/ui/adminconsole/MarkEditDialog.java | 14 +++++--- .../gwt/ui/adminconsole/MarkTableWrapper.java | 11 +++--- .../gwt/ui/shared/HtmlPredefinedColor.java | 5 --- 5 files changed, 57 insertions(+), 25 deletions(-) create mode 100644 java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/ui/adminconsole/ColorColumn.java delete mode 100644 java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/ui/shared/HtmlPredefinedColor.java diff --git a/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/ui/adminconsole/ColorColumn.java b/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/ui/adminconsole/ColorColumn.java new file mode 100644 index 00000000000..495f9183565 --- /dev/null +++ b/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/ui/adminconsole/ColorColumn.java @@ -0,0 +1,34 @@ +package com.sap.sailing.gwt.ui.adminconsole; + +import com.google.gwt.cell.client.SafeHtmlCell; +import com.google.gwt.safehtml.shared.SafeHtml; +import com.google.gwt.safehtml.shared.SafeHtmlBuilder; +import com.google.gwt.user.cellview.client.Column; +import com.sap.sailing.domain.common.Color; + +public class ColorColumn extends Column { + public interface ColorRetriever { + Color getColor(T t); + } + + private final ColorRetriever colorRetriever; + + public ColorColumn(ColorRetriever colorRetriever) { + super(new SafeHtmlCell()); + this.colorRetriever = colorRetriever; + } + + @Override + public SafeHtml getValue(T t) { + SafeHtmlBuilder sb = new SafeHtmlBuilder(); + if (colorRetriever.getColor(t) != null) { + String colorString = colorRetriever.getColor(t).getAsHtml(); + sb.appendHtmlConstant(""); + sb.appendHtmlConstant(colorString); + sb.appendHtmlConstant(""); + } else { + sb.appendHtmlConstant(" "); + } + return sb.toSafeHtml(); + } +}; \ No newline at end of file diff --git a/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/ui/adminconsole/CompetitorTableWrapper.java b/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/ui/adminconsole/CompetitorTableWrapper.java index 712679381e1..9981c757674 100644 --- a/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/ui/adminconsole/CompetitorTableWrapper.java +++ b/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/ui/adminconsole/CompetitorTableWrapper.java @@ -16,8 +16,10 @@ import com.google.gwt.user.client.rpc.AsyncCallback; import com.google.gwt.user.client.ui.ImageResourceRenderer; import com.google.gwt.user.client.ui.Label; import com.google.gwt.view.client.MultiSelectionModel; +import com.sap.sailing.domain.common.Color; import com.sap.sailing.domain.common.dto.CompetitorDTO; import com.sap.sailing.domain.common.impl.NaturalComparator; +import com.sap.sailing.gwt.ui.adminconsole.ColorColumn.ColorRetriever; import com.sap.sailing.gwt.ui.client.ErrorReporter; import com.sap.sailing.gwt.ui.client.FlagImageResolver; import com.sap.sailing.gwt.ui.client.SailingServiceAsync; @@ -90,20 +92,12 @@ public class CompetitorTableWrapper extends TableWrapper displayColorColumn = new Column(new SafeHtmlCell()) { + Column displayColorColumn = new ColorColumn<>(new ColorRetriever() { @Override - public SafeHtml getValue(CompetitorDTO competitor) { - SafeHtmlBuilder sb = new SafeHtmlBuilder(); - if (competitor.getColor() != null) { - sb.appendHtmlConstant(""); - sb.appendHtmlConstant(competitor.getColor().getAsHtml()); - sb.appendHtmlConstant(""); - } else { - sb.appendHtmlConstant(" "); - } - return sb.toSafeHtml(); + public Color getColor(CompetitorDTO t) { + return t.getColor(); } - }; + }); TextColumn competitorIdColumn = new TextColumn() { @Override diff --git a/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/ui/adminconsole/MarkEditDialog.java b/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/ui/adminconsole/MarkEditDialog.java index c58e2a3b731..ca7d454bbb1 100644 --- a/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/ui/adminconsole/MarkEditDialog.java +++ b/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/ui/adminconsole/MarkEditDialog.java @@ -10,8 +10,8 @@ import com.google.gwt.user.client.ui.ListBox; import com.google.gwt.user.client.ui.TextBox; import com.google.gwt.user.client.ui.Widget; import com.sap.sailing.domain.common.MarkType; +import com.sap.sailing.domain.common.impl.RGBColor; import com.sap.sailing.gwt.ui.client.StringMessages; -import com.sap.sailing.gwt.ui.shared.HtmlPredefinedColor; import com.sap.sailing.gwt.ui.shared.MarkDTO; import com.sap.sailing.gwt.ui.shared.racemap.Pattern; import com.sap.sailing.gwt.ui.shared.racemap.Shape; @@ -23,7 +23,7 @@ public class MarkEditDialog extends DataEntryDialog { private final ListBox shape; private final ListBox pattern; private final ListBox type; - private final ListBox color; + private final TextBox color; private final StringMessages stringMessages; public MarkEditDialog(final StringMessages stringMessages, MarkDTO markToEdit, boolean isNewMark, @@ -36,6 +36,12 @@ public class MarkEditDialog extends DataEntryDialog { String result = null; if (valueToValidate.getName() == null || valueToValidate.getName().isEmpty()) { result = stringMessages.pleaseEnterAName(); + } else if (valueToValidate.color != null && ! valueToValidate.color.isEmpty()) { + try { + new RGBColor(valueToValidate.color); + } catch (IllegalArgumentException iae) { + result = valueToValidate.color; + } } return result; } @@ -46,7 +52,7 @@ public class MarkEditDialog extends DataEntryDialog { this.name = createTextBox(markToEdit.getName()); this.shape = createAndSelectListBox(Shape.values(), markToEdit.shape, true); this.type = createAndSelectListBox(MarkType.values(), markToEdit.type == null ? null : markToEdit.type.name(), false); - this.color = createAndSelectListBox(HtmlPredefinedColor.values(), markToEdit.color, true); + this.color = createTextBox(markToEdit.color); this.pattern = createAndSelectListBox(Pattern.values(), markToEdit.pattern, true); } @@ -83,7 +89,7 @@ public class MarkEditDialog extends DataEntryDialog { MarkDTO result = new MarkDTO(markToEdit.getIdAsString(), name.getText()); result.shape = shape.getItemText(shape.getSelectedIndex()); result.type = MarkType.valueOf(type.getItemText(type.getSelectedIndex())); - result.color = color.getItemText(color.getSelectedIndex()); + result.color = color.getText(); result.pattern = pattern.getItemText(pattern.getSelectedIndex()); return result; } diff --git a/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/ui/adminconsole/MarkTableWrapper.java b/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/ui/adminconsole/MarkTableWrapper.java index c396dc643c0..badf06600c3 100644 --- a/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/ui/adminconsole/MarkTableWrapper.java +++ b/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/ui/adminconsole/MarkTableWrapper.java @@ -12,6 +12,9 @@ import com.google.gwt.user.cellview.client.Column; import com.google.gwt.user.cellview.client.TextColumn; import com.google.gwt.user.client.rpc.AsyncCallback; import com.google.gwt.view.client.SelectionModel; +import com.sap.sailing.domain.common.Color; +import com.sap.sailing.domain.common.impl.RGBColor; +import com.sap.sailing.gwt.ui.adminconsole.ColorColumn.ColorRetriever; import com.sap.sailing.gwt.ui.client.ErrorReporter; import com.sap.sailing.gwt.ui.client.SailingServiceAsync; import com.sap.sailing.gwt.ui.client.StringMessages; @@ -46,12 +49,12 @@ public class MarkTableWrapper> extends TableWr }; table.addColumn(markPositionColumn, stringMessages.position()); - TextColumn markColorColumn = new TextColumn() { + Column markColorColumn = new ColorColumn<>(new ColorRetriever() { @Override - public String getValue(MarkDTO markDTO) { - return markDTO.color != null ? markDTO.color : ""; + public Color getColor(MarkDTO t) { + return t.color != null && ! t.color.isEmpty() ? new RGBColor(t.color) : null; } - }; + }); table.addColumn(markColorColumn, stringMessages.color()); TextColumn markShapeColumn = new TextColumn() { diff --git a/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/ui/shared/HtmlPredefinedColor.java b/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/ui/shared/HtmlPredefinedColor.java deleted file mode 100644 index 4c80e82bf70..00000000000 --- a/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/ui/shared/HtmlPredefinedColor.java +++ /dev/null @@ -1,5 +0,0 @@ -package com.sap.sailing.gwt.ui.shared; - -public enum HtmlPredefinedColor { - aqua, black, blue, fuchsia, gray, green, lime, maroon, navy, olive, orange, purple, red, silver, teal, white, yellow -}