allow for any RGB color in MarkEditDialog

This commit is contained in:
Fredrik Teschke committed 2014-04-24 00:08:03 +02:00
1 parent 8a0d1a9203
commit ec882d37f1
5 files changed
+57 -25

No files matched your search

@@ -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<T> extends Column<T, SafeHtml> {
public interface ColorRetriever<T> {
Color getColor(T t);
}
private final ColorRetriever<T> colorRetriever;
public ColorColumn(ColorRetriever<T> 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("<span style=\"color: " + colorString + ";\">");
sb.appendHtmlConstant(colorString);
sb.appendHtmlConstant("</span>");
} else {
sb.appendHtmlConstant("&nbsp;");
}
return sb.toSafeHtml();
}
};
@@ -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<CompetitorDTO, MultiSel
}
});
Column<CompetitorDTO, SafeHtml> displayColorColumn = new Column<CompetitorDTO, SafeHtml>(new SafeHtmlCell()) {
Column<CompetitorDTO, SafeHtml> displayColorColumn = new ColorColumn<>(new ColorRetriever<CompetitorDTO>() {
@Override
public SafeHtml getValue(CompetitorDTO competitor) {
SafeHtmlBuilder sb = new SafeHtmlBuilder();
if (competitor.getColor() != null) {
sb.appendHtmlConstant("<span style=\"color: " + competitor.getColor() + ";\">");
sb.appendHtmlConstant(competitor.getColor().getAsHtml());
sb.appendHtmlConstant("</span>");
} else {
sb.appendHtmlConstant("&nbsp;");
}
return sb.toSafeHtml();
public Color getColor(CompetitorDTO t) {
return t.getColor();
}
};
});
TextColumn<CompetitorDTO> competitorIdColumn = new TextColumn<CompetitorDTO>() {
@Override
@@ -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<MarkDTO> {
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<MarkDTO> {
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<MarkDTO> {
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> {
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;
}
@@ -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<S extends SelectionModel<MarkDTO>> extends TableWr
};
table.addColumn(markPositionColumn, stringMessages.position());
TextColumn<MarkDTO> markColorColumn = new TextColumn<MarkDTO>() {
Column<MarkDTO, SafeHtml> markColorColumn = new ColorColumn<>(new ColorRetriever<MarkDTO>() {
@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<MarkDTO> markShapeColumn = new TextColumn<MarkDTO>() {
@@ -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
}