diff --git a/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/ui/client/DataEntryDialog.java b/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/ui/client/DataEntryDialog.java index 9a9e1f02719..56f2b48b340 100755 --- a/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/ui/client/DataEntryDialog.java +++ b/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/ui/client/DataEntryDialog.java @@ -17,8 +17,8 @@ import com.google.gwt.user.client.ui.VerticalPanel; import com.google.gwt.user.client.ui.Widget; /** - * An abstract data entry dialog class, capturing data of type T, with generic OK/Cancel buttons, title - * and message. + * An abstract data entry dialog class, capturing data of type T, with generic OK/Cancel buttons, title and + * message. Subclasses may override the {@link #show()} method to set the focus on their favorable initial entry field. * * @author Axel Uhl (d043530) */ diff --git a/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/ui/client/ExpandCollapseButtonCell.java b/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/ui/client/ExpandCollapseButtonCell.java new file mode 100755 index 00000000000..33405f827da --- /dev/null +++ b/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/ui/client/ExpandCollapseButtonCell.java @@ -0,0 +1,61 @@ +package com.sap.sailing.gwt.ui.client; + +import com.google.gwt.cell.client.AbstractCell; +import com.google.gwt.cell.client.ActionCell; +import com.google.gwt.cell.client.ActionCell.Delegate; +import com.google.gwt.cell.client.ValueUpdater; +import com.google.gwt.dom.client.Element; +import com.google.gwt.dom.client.EventTarget; +import com.google.gwt.dom.client.NativeEvent; +import com.google.gwt.safehtml.shared.SafeHtml; +import com.google.gwt.safehtml.shared.SafeHtmlBuilder; + +public class ExpandCollapseButtonCell extends AbstractCell { + + + private final SafeHtml html; + private final Delegate delegate; + private final ExpandableSortableColumn column; + + /** + * Construct a new {@link ActionCell}. + * + * @param message the message to display on the button + * @param delegate the delegate that will handle events + */ + public ExpandCollapseButtonCell(ExpandableSortableColumn column, Delegate delegate) { + super("click", "keydown"); + this.column = column; + this.delegate = delegate; + this.html = new SafeHtmlBuilder().appendHtmlConstant( + "").toSafeHtml(); + } + + @Override + public void onBrowserEvent(Context context, Element parent, SafeHtml value, + NativeEvent event, ValueUpdater valueUpdater) { + column.suppressSortingOnce(); + super.onBrowserEvent(context, parent, value, event, valueUpdater); + if ("click".equals(event.getType())) { + EventTarget eventTarget = event.getEventTarget(); + if (!Element.is(eventTarget)) { + return; + } + if (parent.getFirstChildElement().isOrHasChild(Element.as(eventTarget))) { + // Ignore clicks that occur outside of the main element. + onEnterKeyDown(context, parent, value, event, valueUpdater); + } + } + } + + @Override + public void render(Context context, SafeHtml value, SafeHtmlBuilder sb) { + sb.append(html); + } + + @Override + protected void onEnterKeyDown(Context context, Element parent, SafeHtml value, + NativeEvent event, ValueUpdater valueUpdater) { + delegate.execute(value); + } +} \ No newline at end of file diff --git a/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/ui/client/ExpandableSortableColumn.java b/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/ui/client/ExpandableSortableColumn.java index 585911107ec..100e122cc53 100755 --- a/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/ui/client/ExpandableSortableColumn.java +++ b/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/ui/client/ExpandableSortableColumn.java @@ -153,7 +153,7 @@ public abstract class ExpandableSortableColumn extends SortableColumn selectedLegDetails; + + public interface LeaderboardTableResources extends CellTable.Resources { + interface TableStyle extends CellTable.Style{} + @Override + @Source ({CellTable.Style.DEFAULT_CSS, "LeaderboardTable.css"}) + TableStyle cellTableStyle(); + } private class CompetitorColumn extends SortableColumn { @@ -168,7 +180,7 @@ public class LeaderboardPanel extends FormPanel { @Override public Header getHeader() { return new SortableExpandableColumnHeader(/* title */ raceName, - /* iconURL */ medalRace ? "/images/medal.png" : null, + /* iconURL */ medalRace ? "/images/medal_small.png" : null, LeaderboardPanel.this, this, stringConstants); } } @@ -210,7 +222,7 @@ public class LeaderboardPanel extends FormPanel { int legCount = getLeaderboard().getLegCount(getRaceName()); List> result = new ArrayList>(); for (int i=0; i(); + this.selectedLegDetails.add(LegDetailColumnType.DISTANCE_TRAVELED); + this.selectedLegDetails.add(LegDetailColumnType.AVERAGE_SPEED_OVER_GROUND_IN_KNOTS); + this.selectedLegDetails.add(LegDetailColumnType.RANK_GAIN); rankColumn = new RankColumn(); - leaderboardTable = new CellTable(/* pageSize */ 100); + CellTable.Resources resources = GWT.create(LeaderboardTableResources.class); + leaderboardTable = new CellTable(/* pageSize */ 100, resources); getLeaderboardTable().setWidth("100%"); getLeaderboardTable().setSelectionModel(new MultiSelectionModel() {}); setData(new ListDataProvider()); @@ -322,21 +339,33 @@ public class LeaderboardPanel extends FormPanel { getLeaderboardTable().addColumnSortHandler(listHandler); loadCompleteLeaderboard(getLeaderboardDisplayDate()); VerticalPanel vp = new VerticalPanel(); - HorizontalPanel hp = new HorizontalPanel(); - hp.setSpacing(10); + vp.setSpacing(15); Anchor sapLogo = new Anchor(new SafeHtmlBuilder().appendHtmlConstant("").toSafeHtml()); sapLogo.setHref("http://www.sap.com"); - hp.add(sapLogo); - hp.add(new Label(leaderboardName)); - Button refreshButton = new Button(stringConstants.refresh()); - hp.add(refreshButton); - refreshButton.addClickHandler(new ClickHandler() { + vp.add(sapLogo); + DockPanel dockPanel = new DockPanel(); + dockPanel.setWidth("100%"); + dockPanel.setVerticalAlignment(HasVerticalAlignment.ALIGN_MIDDLE); + Label leaderboardLabel = new Label(stringConstants.leaderboard()+" "+leaderboardName.toUpperCase()); + leaderboardLabel.addStyleName("boldLabel"); + dockPanel.add(leaderboardLabel, DockPanel.WEST); + ClickHandler refreshHandler = new ClickHandler() { @Override public void onClick(ClickEvent event) { loadCompleteLeaderboard(getLeaderboardDisplayDate()); } - }); - vp.add(hp); + }; + HorizontalPanel refreshPanel = new HorizontalPanel(); + Anchor refresh = new Anchor(new SafeHtmlBuilder().appendHtmlConstant(stringConstants.refresh()).toSafeHtml()); + refresh.addStyleName("boldAnchor"); + dockPanel.setHorizontalAlignment(HasHorizontalAlignment.ALIGN_RIGHT); + Anchor refreshLogo = new Anchor(new SafeHtmlBuilder().appendHtmlConstant("").toSafeHtml()); + refreshLogo.addClickHandler(refreshHandler); + refreshPanel.add(refreshLogo); + refreshPanel.add(refresh); + dockPanel.add(refreshPanel, DockPanel.EAST); + refresh.addClickHandler(refreshHandler); + vp.add(dockPanel); vp.add(getLeaderboardTable()); setWidget(vp); } @@ -582,4 +611,26 @@ public class LeaderboardPanel extends FormPanel { private void setData(ListDataProvider data) { this.data = data; } + + @Override + public List getLegDetailsToShow() { + return Collections.unmodifiableList(selectedLegDetails); + } + + /** + * After the leg detail selection has changed, updates the headers accordingly. This implementation + * chooses to collapse all expanded race columns and then expand them again (see {@link #toggleExpansion()}). + * This will re-establish their expansion structure while updating the leg detail columns accordingly. + */ + private void refreshHeaders() { + for (int i=0; i c = getLeaderboardTable().getColumn(i); + if (c instanceof ExpandableSortableColumn && + ((ExpandableSortableColumn) c).isExpanded()) { + ((ExpandableSortableColumn) c).toggleExpansion(); + ((ExpandableSortableColumn) c).toggleExpansion(); + } + } + } + } diff --git a/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/ui/client/LeaderboardTable.css b/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/ui/client/LeaderboardTable.css new file mode 100755 index 00000000000..66ead8640f5 --- /dev/null +++ b/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/ui/client/LeaderboardTable.css @@ -0,0 +1,91 @@ +.cellTableWidget { + border: 1px solid #e5e5e5; +} + +/** v-align images in the table header + * grey background for table header + */ +.cellTableHeader { + position: relative; + vertical-align: middle; + background-color: #e5e5e5; + border-left: 1px solid #ffffff !important; + border-right: 1px solid #ffffff !important; + border-top: none !important; + border-bottom: none !important; +} + +.cellTableFirstColumnHeader { + position: relative; + vertical-align: middle; + background-color: #e5e5e5; + border-left: none !important; + border-right: 1px solid #ffffff !important; + border-top: none !important; + border-bottom: none !important; +} + +.cellTableLastColumnHeader { + position: relative; + vertical-align: middle; + background-color: #e5e5e5; + border-left: 1px solid #ffffff !important; + border-right: none !important; + border-top: none !important; + border-bottom: none !important; +} + +.cellTableHeader > span > img:first-child { + position: relative; + vertical-align: middle; +} + +.cellTableOddRow { + border-bottom: 1px solid #e5e5e5; + background-color: #FFFFFF; +} + +.cellTableOddRowCell { + border-right: none; + border-left: none; + padding: 5px 5px 5px !important; +} + +.cellTableEvenRow { + border-bottom: 1px solid #e5e5e5; + background-color: #FFFFFF; +} + +.cellTableEvenRowCell { + border-left: none !important; + border-right: none !important; + padding: 5px 5px 5px !important; +} + +.cellTableHoveredRow { + background-color: #e5f2f9; + border-bottom: 1px solid #e5e5e5; +} + +.cellTableSelectedRow { + color: #000000; + background-color: #e5f2f9; + border-right: 2px solid #21a0e4 !important; + border-left: 2px solid #21a0e4 !important; + border: 2px solid #21a0e4; +} + +.cellTableSelectedRow > td:FIRST-CHILD { + border-left: 2px solid #21a0e4 !important; +} + +.cellTableSelectedRow > td:LAST-CHILD { + border-right: 2px solid #21a0e4 !important; +} + +.cellTableSelectedRowCell { + boder-left: none; + boder-right: none; + border-top: 2px solid #21a0e4; + border-bottom: 2px solid #21a0e4; +} \ No newline at end of file diff --git a/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/ui/client/LegColumn.java b/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/ui/client/LegColumn.java index 4247e811648..9c3b8f46d55 100755 --- a/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/ui/client/LegColumn.java +++ b/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/ui/client/LegColumn.java @@ -8,6 +8,7 @@ import com.google.gwt.cell.client.TextCell; import com.google.gwt.safehtml.shared.SafeHtml; import com.google.gwt.user.cellview.client.Header; import com.sap.sailing.gwt.ui.client.LegDetailColumn.LegDetailField; +import com.sap.sailing.gwt.ui.client.LegDetailSelectionProvider.LegDetailColumnType; import com.sap.sailing.gwt.ui.shared.LeaderboardEntryDAO; import com.sap.sailing.gwt.ui.shared.LeaderboardRowDAO; import com.sap.sailing.gwt.ui.shared.LegEntryDAO; @@ -23,6 +24,7 @@ public class LegColumn extends ExpandableSortableColumn { private final String raceName; private final int legIndex; private final StringConstants stringConstants; + private final LegDetailSelectionProvider legDetailSelectionProvider; private abstract class AbstractLegDetailField implements LegDetailField { public T get(LeaderboardRowDAO row) { @@ -65,12 +67,14 @@ public class LegColumn extends ExpandableSortableColumn { } } - public LegColumn(LeaderboardPanel leaderboardPanel, String raceName, int legIndex, StringConstants stringConstants) { + public LegColumn(LeaderboardPanel leaderboardPanel, String raceName, int legIndex, StringConstants stringConstants, + LegDetailSelectionProvider legDetailSelectionProvider) { super(leaderboardPanel, /* expandable */ true /* all legs have details */, new TextCell()); setHorizontalAlignment(ALIGN_RIGHT); this.raceName = raceName; this.legIndex = legIndex; this.stringConstants = stringConstants; + this.legDetailSelectionProvider = legDetailSelectionProvider; } private int getLegIndex() { @@ -129,9 +133,19 @@ public class LegColumn extends ExpandableSortableColumn { protected List> createExpansionColumns() { List> result = new ArrayList>(); try { - result.add(new FormattedDoubleLegDetailColumn(stringConstants.distanceInMeters(), new DistanceTraveledInMeters(), 1, getLeaderboardPanel().getLeaderboardTable())); - result.add(new FormattedDoubleLegDetailColumn(stringConstants.averageSpeedInKnots(), new AverageSpeedOverGroundInKnots(), 2, getLeaderboardPanel().getLeaderboardTable())); - result.add(new RankGainColumn(stringConstants.rankGain(), new RankGain(), getLeaderboardPanel().getLeaderboardTable())); + for (LegDetailColumnType type : legDetailSelectionProvider.getLegDetailsToShow()) { + switch (type) { + case DISTANCE_TRAVELED: + result.add(new FormattedDoubleLegDetailColumn(stringConstants.distanceInMeters(), new DistanceTraveledInMeters(), 1, getLeaderboardPanel().getLeaderboardTable())); + break; + case AVERAGE_SPEED_OVER_GROUND_IN_KNOTS: + result.add(new FormattedDoubleLegDetailColumn(stringConstants.averageSpeedInKnots(), new AverageSpeedOverGroundInKnots(), 2, getLeaderboardPanel().getLeaderboardTable())); + break; + case RANK_GAIN: + result.add(new RankGainColumn(stringConstants.rankGain(), new RankGain(), getLeaderboardPanel().getLeaderboardTable())); + break; + } + } return result; } catch (Exception e) { throw new RuntimeException(e); diff --git a/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/ui/client/LegDetailSelectionPanel.java b/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/ui/client/LegDetailSelectionPanel.java new file mode 100755 index 00000000000..39b7b75c66c --- /dev/null +++ b/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/ui/client/LegDetailSelectionPanel.java @@ -0,0 +1,49 @@ +package com.sap.sailing.gwt.ui.client; + +import java.util.ArrayList; +import java.util.HashMap; +import java.util.List; +import java.util.Map; + +import com.google.gwt.user.client.rpc.AsyncCallback; +import com.google.gwt.user.client.ui.CheckBox; +import com.google.gwt.user.client.ui.VerticalPanel; +import com.google.gwt.user.client.ui.Widget; +import com.sap.sailing.gwt.ui.client.LegDetailSelectionProvider.LegDetailColumnType; + +public class LegDetailSelectionPanel extends DataEntryDialog> { + private final LegDetailSelectionProvider selectionProvider; + private final Map checkboxes; + + public LegDetailSelectionPanel(LegDetailSelectionProvider selectionProvider, String title, + String message, String okButtonName, String cancelButtonName, + com.sap.sailing.gwt.ui.client.DataEntryDialog.Validator> validator, + AsyncCallback> callback) { + super(title, message, okButtonName, cancelButtonName, validator, callback); + this.selectionProvider = selectionProvider; + checkboxes = new HashMap(); + } + + @Override + protected Widget getAdditionalWidget() { + List currentSelection = selectionProvider.getLegDetailsToShow(); + VerticalPanel vp = new VerticalPanel(); + for (LegDetailColumnType type : LegDetailColumnType.values()) { + CheckBox checkbox = new CheckBox(type.toString(), currentSelection.contains(type)); + checkboxes.put(type, checkbox); + vp.add(checkbox); + } + return vp; + } + + @Override + protected List getResult() { + List result = new ArrayList(); + for (Map.Entry entry : checkboxes.entrySet()) { + if (entry.getValue().getValue()) { + result.add(entry.getKey()); + } + } + return result; + } +} diff --git a/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/ui/client/LegDetailSelectionProvider.java b/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/ui/client/LegDetailSelectionProvider.java new file mode 100755 index 00000000000..e7e65f44bd5 --- /dev/null +++ b/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/ui/client/LegDetailSelectionProvider.java @@ -0,0 +1,19 @@ +package com.sap.sailing.gwt.ui.client; + +import java.util.List; + +/** + * A user may select a set of detail columns to be displayed when a leg column is expanded. + * An instance of a class implementing this interface can tell which column types are requested + * to be displayed. + * + * @author Axel Uhl (D043530) + * + */ +public interface LegDetailSelectionProvider { + static enum LegDetailColumnType { + DISTANCE_TRAVELED, AVERAGE_SPEED_OVER_GROUND_IN_KNOTS, RANK_GAIN; + } + + List getLegDetailsToShow(); +} diff --git a/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/ui/client/ModifiableLegDetailSelectionProvider.java b/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/ui/client/ModifiableLegDetailSelectionProvider.java new file mode 100755 index 00000000000..1f86e018c5b --- /dev/null +++ b/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/ui/client/ModifiableLegDetailSelectionProvider.java @@ -0,0 +1,6 @@ +package com.sap.sailing.gwt.ui.client; + +public interface ModifiableLegDetailSelectionProvider extends LegDetailSelectionProvider { + void select(LegDetailColumnType type); + void deselect(LegDetailColumnType type); +} diff --git a/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/ui/client/SortableExpandableColumnHeader.java b/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/ui/client/SortableExpandableColumnHeader.java index e59af091916..f9ee11a8e28 100755 --- a/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/ui/client/SortableExpandableColumnHeader.java +++ b/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/ui/client/SortableExpandableColumnHeader.java @@ -48,6 +48,25 @@ public class SortableExpandableColumnHeader extends Header { private static Cell constructCell(final String title, final String iconURL, boolean isExpansionEnabled, final LeaderboardPanel leaderboardPanel, final ExpandableSortableColumn column, final StringConstants stringConstants) { final List> cells = new ArrayList>(3); + // add the cell rendering the expand/collapse button: + if (isExpansionEnabled) { + cells.add(new HasCell() { + @Override + public Cell getCell() { + return new ExpandCollapseButtonCell(column, new ExpandCollapseButtonAction(column)); + } + + @Override + public FieldUpdater getFieldUpdater() { + return null; // no updates possible in a header cell + } + + @Override + public SafeHtml getValue(SafeHtml object) { + return null; + } + }); + } // if it's a medal race, add the cell rendering the medal image if (iconURL != null) { cells.add(new HasCell() { @@ -79,40 +98,9 @@ public class SortableExpandableColumnHeader extends Header { } @Override public SafeHtml getValue(SafeHtml object) { - return new SafeHtmlBuilder().appendEscaped(title).toSafeHtml(); + return new SafeHtmlBuilder().appendHtmlConstant(" ").appendEscaped(title).toSafeHtml(); } }); - // add the cell rendering the expand/collapse button: - if (isExpansionEnabled) { - cells.add(new HasCell() { - @Override - public Cell getCell() { - return new ActionCell(column.isExpanded() ? stringConstants.collapse() : stringConstants.expand(), - new ExpandCollapseButtonAction(column)) { - /** - * carry out event logic, hence call the delegate's execute(...) operation, then stop - * propagation to avoid the column being sorted when the expand button is pressed - */ - @Override - public void onBrowserEvent(Context context, Element parent, SafeHtml value, NativeEvent event, - ValueUpdater valueUpdater) { - column.suppressSortingOnce(); - super.onBrowserEvent(context, parent, value, event, valueUpdater); - } - }; - } - - @Override - public FieldUpdater getFieldUpdater() { - return null; // no updates possible in a header cell - } - - @Override - public SafeHtml getValue(SafeHtml object) { - return null; - } - }); - } return new CompositeCell(cells) { /** * Redefining this method because when a table column is sorted, GWT wraps a div element diff --git a/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/ui/client/StringConstants.java b/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/ui/client/StringConstants.java index 58d51df63d5..3e1be460cee 100755 --- a/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/ui/client/StringConstants.java +++ b/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/ui/client/StringConstants.java @@ -66,4 +66,5 @@ public interface StringConstants extends Constants { String averageSpeedInKnots(); String rankGain(); String sapSailingAnalytics(); + String leaderboard(); } diff --git a/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/ui/client/StringConstants.properties b/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/ui/client/StringConstants.properties index 3a63210e09d..b98c1d30f74 100755 --- a/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/ui/client/StringConstants.properties +++ b/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/ui/client/StringConstants.properties @@ -22,7 +22,7 @@ delayHelp=Leave empty to replay at arbitrary times; enter seconds (e.g., "60" fo speedInKnots=Speed (kn) fromDeg=From (deg) noRacesYet=No Races Yet -total=Total +total=\u03A3 carry=Accumulated competitor=Competitor defaultLeaderboard=Default Leaderboard @@ -60,4 +60,5 @@ leg=Leg distanceInMeters=Distance/m averageSpeedInKnots=Average Speed/kts rankGain=Rank Gain -sapSailingAnalytics=SAP Sailing Analytics \ No newline at end of file +sapSailingAnalytics=SAP Sailing Analytics +leaderboard=LEADERBOARD \ No newline at end of file diff --git a/java/com.sap.sailing.gwt.ui/war/Leaderboard.css b/java/com.sap.sailing.gwt.ui/war/Leaderboard.css index 1092892f854..5f6d50314d5 100755 --- a/java/com.sap.sailing.gwt.ui/war/Leaderboard.css +++ b/java/com.sap.sailing.gwt.ui/war/Leaderboard.css @@ -1,5 +1,10 @@ /** Add css rules here for your application. */ +* { + font-family: Arial; + font-size: 12px; +} + /** Example rules used by the template application (remove for your app) */ h1 { @@ -44,3 +49,23 @@ h1 { .linkNoBorder { border: none; } + +.refreshLink { + border: none; + position: relative; + vertical-align: middle; +} + +.valignMiddle { + position: relative; + vertical-align: middle; +} + +.boldLabel { + font-size: 14px; + font-weight: bold; +} + +.boldAnchor { + font-weight: bold; +} \ No newline at end of file diff --git a/java/com.sap.sailing.gwt.ui/war/Leaderboard.html b/java/com.sap.sailing.gwt.ui/war/Leaderboard.html index 197b92c2fb9..1eafc754606 100755 --- a/java/com.sap.sailing.gwt.ui/war/Leaderboard.html +++ b/java/com.sap.sailing.gwt.ui/war/Leaderboard.html @@ -9,11 +9,6 @@ - - - - - @@ -25,6 +20,12 @@ + + + + + + diff --git a/java/com.sap.sailing.gwt.ui/war/images/medal_small.png b/java/com.sap.sailing.gwt.ui/war/images/medal_small.png new file mode 100755 index 00000000000..f1a77dc2ca8 Binary files /dev/null and b/java/com.sap.sailing.gwt.ui/war/images/medal_small.png differ diff --git a/java/com.sap.sailing.gwt.ui/war/images/minus.png b/java/com.sap.sailing.gwt.ui/war/images/minus.png new file mode 100755 index 00000000000..dec651a9e59 Binary files /dev/null and b/java/com.sap.sailing.gwt.ui/war/images/minus.png differ diff --git a/java/com.sap.sailing.gwt.ui/war/images/plus.png b/java/com.sap.sailing.gwt.ui/war/images/plus.png new file mode 100755 index 00000000000..7fe5ac6e813 Binary files /dev/null and b/java/com.sap.sailing.gwt.ui/war/images/plus.png differ diff --git a/java/com.sap.sailing.gwt.ui/war/images/refresh.png b/java/com.sap.sailing.gwt.ui/war/images/refresh.png new file mode 100755 index 00000000000..abee5f548ec Binary files /dev/null and b/java/com.sap.sailing.gwt.ui/war/images/refresh.png differ diff --git a/java/com.sap.sailing.gwt.ui/war/images/sap_66_transparent.png b/java/com.sap.sailing.gwt.ui/war/images/sap_66_transparent.png index c5579c2af18..0c14701936c 100755 Binary files a/java/com.sap.sailing.gwt.ui/war/images/sap_66_transparent.png and b/java/com.sap.sailing.gwt.ui/war/images/sap_66_transparent.png differ diff --git a/java/com.sap.sailing.server/SailingServer (Proxy).launch b/java/com.sap.sailing.server/SailingServer (Proxy).launch index ee678b5b8df..c83c7b34a47 100755 --- a/java/com.sap.sailing.server/SailingServer (Proxy).launch +++ b/java/com.sap.sailing.server/SailingServer (Proxy).launch @@ -24,5 +24,5 @@ - +