From 5b183eebcdb304d87dd1e12e3e32ba299382d15d Mon Sep 17 00:00:00 2001 From: Axel Uhl Date: Fri, 16 Sep 2011 17:43:28 +0200 Subject: [PATCH 1/9] changed font to Arial, managed valign of images in table header --- java/com.sap.sailing.gwt.ui/war/Leaderboard.css | 10 ++++++++++ .../SailingServer (Proxy).launch | 2 +- 2 files changed, 11 insertions(+), 1 deletion(-) diff --git a/java/com.sap.sailing.gwt.ui/war/Leaderboard.css b/java/com.sap.sailing.gwt.ui/war/Leaderboard.css index 1092892f854..c0f235046a6 100755 --- a/java/com.sap.sailing.gwt.ui/war/Leaderboard.css +++ b/java/com.sap.sailing.gwt.ui/war/Leaderboard.css @@ -1,5 +1,9 @@ /** Add css rules here for your application. */ +* { + font-family: Arial; +} + /** Example rules used by the template application (remove for your app) */ h1 { @@ -44,3 +48,9 @@ h1 { .linkNoBorder { border: none; } + +/** v-align images in the table header */ +.GALD-WOMD > span > img:first-child { + position: relative; + vertical-align: middle; +} 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 @@ - + From 0aaab446e7d5bf325f40e2e63d0e6b65207e39db Mon Sep 17 00:00:00 2001 From: Axel Uhl Date: Fri, 16 Sep 2011 18:01:41 +0200 Subject: [PATCH 2/9] added smaller medal icon; use Sigma for totals; made Arial font smaller --- .../gwt/ui/client/LeaderboardPanel.java | 2 +- .../SortableExpandableColumnHeader.java | 62 +++++++++--------- .../gwt/ui/client/StringConstants.properties | 2 +- .../war/Leaderboard.css | 6 ++ .../war/images/medal_small.png | Bin 0 -> 906 bytes 5 files changed, 39 insertions(+), 33 deletions(-) create mode 100755 java/com.sap.sailing.gwt.ui/war/images/medal_small.png diff --git a/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/ui/client/LeaderboardPanel.java b/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/ui/client/LeaderboardPanel.java index a5aef54b2ce..eece7b67a02 100755 --- a/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/ui/client/LeaderboardPanel.java +++ b/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/ui/client/LeaderboardPanel.java @@ -168,7 +168,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); } } 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..44b584dcad6 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,37 @@ 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 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; + } + }); + } // if it's a medal race, add the cell rendering the medal image if (iconURL != null) { cells.add(new HasCell() { @@ -82,37 +113,6 @@ public class SortableExpandableColumnHeader extends Header { return new SafeHtmlBuilder().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.properties b/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/ui/client/StringConstants.properties index 3a63210e09d..86d83ee91cf 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 diff --git a/java/com.sap.sailing.gwt.ui/war/Leaderboard.css b/java/com.sap.sailing.gwt.ui/war/Leaderboard.css index c0f235046a6..acf62af4368 100755 --- a/java/com.sap.sailing.gwt.ui/war/Leaderboard.css +++ b/java/com.sap.sailing.gwt.ui/war/Leaderboard.css @@ -2,6 +2,7 @@ * { font-family: Arial; + font-size-adjust: 0.5; } @@ -54,3 +55,8 @@ h1 { position: relative; vertical-align: middle; } + +/** grey background for table header */ +.GALD-WOPD > thead { + background-color: #e5e5e5; +} 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 0000000000000000000000000000000000000000..f1a77dc2ca8a6b5da0f48d44e92534122115564a GIT binary patch literal 906 zcmV;519kj~P)Px#24YJ`L;(K){{a7>y{D4^000SaNLh0L01FcU01FcV0GgZ_00007bV*G`2ipk{ z4>>T(C5edu00Rn1L_t(I%Y~C~Xq9Cc#;^N%pXYtfdCxh$J3Dg>=0=KEQ-=7L!ICgU zqaczH^+WWf^+^!K2!wqM`ce?|MHC?lvKqvoz$rzbk|1h@Z0Shd=GJL{I%nta`|o+~ zKDl1O==yqJzx#sg<|d>RGYdsz+vP8J8Ez~hoL@)k)!(VKJMc1O!iI&;3jhG6!S?;r zZ^!oTK}S4zQ&``^EGbK!x2)=c?)mBsH%kkTy=!3O;n@>x#@~~|@8!Z#*xY6Y6R0&w zRKEaD>SM?p8qf8OeDMTWo8HSA>V@(5f^Fm92{RyaaH>BcCVwKo>HI4IK$UwR78I^t z66WtAse9qr2wu5IS!1?L#Hl1Jz|9sYZURDpIvCcwv9Esr<6hx(yf%Ya zE*Rw#J02+GgK|ZXR|K>V@_ewH2a^C93!6N5t+4Uryo}q$grc};U5}NMA$Ap*G(dpR z0k|yzwxE_l;<$iW>|+AmdBZ~ka9#5Wn`j728_#bF60 z1qzDb{?*JbUYy&W_CArwKc4OJi6IrC>3XPF0%#6FiGdmWtRKLwrzS=lW?!f^9js`V zTJU{qteJ Date: Fri, 16 Sep 2011 18:11:57 +0200 Subject: [PATCH 3/9] inserted LEADERBOARD label --- .../java/com/sap/sailing/gwt/ui/client/LeaderboardPanel.java | 4 +++- .../java/com/sap/sailing/gwt/ui/client/StringConstants.java | 1 + .../com/sap/sailing/gwt/ui/client/StringConstants.properties | 3 ++- java/com.sap.sailing.gwt.ui/war/Leaderboard.css | 5 +++++ 4 files changed, 11 insertions(+), 2 deletions(-) diff --git a/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/ui/client/LeaderboardPanel.java b/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/ui/client/LeaderboardPanel.java index eece7b67a02..db03d7a16e2 100755 --- a/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/ui/client/LeaderboardPanel.java +++ b/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/ui/client/LeaderboardPanel.java @@ -323,7 +323,6 @@ public class LeaderboardPanel extends FormPanel { loadCompleteLeaderboard(getLeaderboardDisplayDate()); VerticalPanel vp = new VerticalPanel(); HorizontalPanel hp = new HorizontalPanel(); - hp.setSpacing(10); Anchor sapLogo = new Anchor(new SafeHtmlBuilder().appendHtmlConstant("").toSafeHtml()); sapLogo.setHref("http://www.sap.com"); hp.add(sapLogo); @@ -337,6 +336,9 @@ public class LeaderboardPanel extends FormPanel { } }); vp.add(hp); + Label leaderboardLabel = new Label(stringConstants.leaderboard()); + leaderboardLabel.addStyleName("boldLabel"); + vp.add(leaderboardLabel); vp.add(getLeaderboardTable()); setWidget(vp); } 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 86d83ee91cf..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 @@ -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 acf62af4368..a7a7331d29a 100755 --- a/java/com.sap.sailing.gwt.ui/war/Leaderboard.css +++ b/java/com.sap.sailing.gwt.ui/war/Leaderboard.css @@ -60,3 +60,8 @@ h1 { .GALD-WOPD > thead { background-color: #e5e5e5; } + +.boldLabel { + font-size-adjust: 0.7; + font-weight: bold; +} From 873c5ed28cfe727d4d535faf664c1e9a1ceeb8db Mon Sep 17 00:00:00 2001 From: Axel Uhl Date: Sat, 17 Sep 2011 22:01:34 +0200 Subject: [PATCH 4/9] styled "Refresh" button --- .../gwt/ui/client/LeaderboardPanel.java | 28 +++++++++++-------- .../war/Leaderboard.css | 6 ++++ 2 files changed, 22 insertions(+), 12 deletions(-) diff --git a/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/ui/client/LeaderboardPanel.java b/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/ui/client/LeaderboardPanel.java index db03d7a16e2..bd2791b1abc 100755 --- a/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/ui/client/LeaderboardPanel.java +++ b/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/ui/client/LeaderboardPanel.java @@ -24,9 +24,10 @@ import com.google.gwt.user.cellview.client.Header; import com.google.gwt.user.cellview.client.TextHeader; import com.google.gwt.user.client.rpc.AsyncCallback; import com.google.gwt.user.client.ui.Anchor; -import com.google.gwt.user.client.ui.Button; +import com.google.gwt.user.client.ui.DockPanel; import com.google.gwt.user.client.ui.FormPanel; -import com.google.gwt.user.client.ui.HorizontalPanel; +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.VerticalPanel; import com.google.gwt.view.client.ListDataProvider; @@ -322,23 +323,26 @@ public class LeaderboardPanel extends FormPanel { getLeaderboardTable().addColumnSortHandler(listHandler); loadCompleteLeaderboard(getLeaderboardDisplayDate()); VerticalPanel vp = new VerticalPanel(); - HorizontalPanel hp = new HorizontalPanel(); 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); + Anchor refresh = new Anchor(new SafeHtmlBuilder().appendHtmlConstant( + " "+stringConstants.refresh()).toSafeHtml()); + dockPanel.setHorizontalAlignment(HasHorizontalAlignment.ALIGN_RIGHT); + dockPanel.add(refresh, DockPanel.EAST); + refresh.addClickHandler(new ClickHandler() { @Override public void onClick(ClickEvent event) { loadCompleteLeaderboard(getLeaderboardDisplayDate()); } }); - vp.add(hp); - Label leaderboardLabel = new Label(stringConstants.leaderboard()); - leaderboardLabel.addStyleName("boldLabel"); - vp.add(leaderboardLabel); + vp.add(dockPanel); vp.add(getLeaderboardTable()); setWidget(vp); } diff --git a/java/com.sap.sailing.gwt.ui/war/Leaderboard.css b/java/com.sap.sailing.gwt.ui/war/Leaderboard.css index a7a7331d29a..f216faf9976 100755 --- a/java/com.sap.sailing.gwt.ui/war/Leaderboard.css +++ b/java/com.sap.sailing.gwt.ui/war/Leaderboard.css @@ -50,6 +50,12 @@ h1 { border: none; } +.refreshLink { + border: none; + position: relative; + vertical-align: middle; +} + /** v-align images in the table header */ .GALD-WOMD > span > img:first-child { position: relative; From f381872f3283242d5d9dadfdbd9136f0e6d34768 Mon Sep 17 00:00:00 2001 From: Axel Uhl Date: Sat, 17 Sep 2011 22:40:07 +0200 Subject: [PATCH 5/9] styled +/- buttons for expanding/collapsing a column --- .../ui/client/ExpandCollapseButtonCell.java | 61 ++++++++++++++++++ .../SortableExpandableColumnHeader.java | 14 +--- .../war/Leaderboard.css | 5 ++ .../war/images/minus.png | Bin 0 -> 262 bytes .../war/images/plus.png | Bin 0 -> 273 bytes .../war/images/refresh.png | Bin 0 -> 485 bytes 6 files changed, 67 insertions(+), 13 deletions(-) create mode 100755 java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/ui/client/ExpandCollapseButtonCell.java create mode 100755 java/com.sap.sailing.gwt.ui/war/images/minus.png create mode 100755 java/com.sap.sailing.gwt.ui/war/images/plus.png create mode 100755 java/com.sap.sailing.gwt.ui/war/images/refresh.png 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/SortableExpandableColumnHeader.java b/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/ui/client/SortableExpandableColumnHeader.java index 44b584dcad6..15fabcc5251 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 @@ -53,19 +53,7 @@ public class SortableExpandableColumnHeader extends Header { 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); - } - }; + return new ExpandCollapseButtonCell(column, new ExpandCollapseButtonAction(column)); } @Override diff --git a/java/com.sap.sailing.gwt.ui/war/Leaderboard.css b/java/com.sap.sailing.gwt.ui/war/Leaderboard.css index f216faf9976..0d1e706ccb9 100755 --- a/java/com.sap.sailing.gwt.ui/war/Leaderboard.css +++ b/java/com.sap.sailing.gwt.ui/war/Leaderboard.css @@ -62,6 +62,11 @@ h1 { vertical-align: middle; } +.valignMiddle { + position: relative; + vertical-align: middle; +} + /** grey background for table header */ .GALD-WOPD > thead { background-color: #e5e5e5; 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 0000000000000000000000000000000000000000..5bf3536d89e2d3f9dc454e481a695cbf3fa0843a GIT binary patch literal 262 zcmeAS@N?(olHy`uVBq!ia0vp^!XV7S1|*9D%+3HQ#^NA%Cx&(BWL^R}Y)RhkE)4%c zaKYZ?lYt_f1s;*b3=G^recZx~4727)00r4gJbhi+Z*vNYsOg^BcEAcKB%2u$QR1AR zo12mdKI;Vst0QS043IG5A literal 0 HcmV?d00001 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 0000000000000000000000000000000000000000..128473613a681c6ebeeacb412fd0b50d74856bb9 GIT binary patch literal 273 zcmeAS@N?(olHy`uVBq!ia0vp^f*{Pn1|+R>-G2co#^NA%Cx&(BWL^R}Y)RhkE)4%c zaKYZ?lYt_f1s;*b3=G`DAk4@xYmNj^kiEpy*OmP?r=WXGGtC%Uz{Nwc}F@P4IP;GxWIck}=M|H}{F=;`U%T(B}ZX#tajP1}YCT+B5O zo8{cDlyg?`^c>?;J0Q+y^2raVc~gn=SHqyiHjE77j#6`#vbqF7j`4K$b6Mw<&;$Ui Cj#Y91 literal 0 HcmV?d00001 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 0000000000000000000000000000000000000000..16422e326b3dec8e184dc59fadcb673de8fa0a32 GIT binary patch literal 485 zcmeAS@N?(olHy`uVBq!ia0vp^Vn8g)!3HFq6y&A?DaPU;cPEB*=VV?2Ic!PZ?k)`f zL2$v|<&%LToCO|{#S9GG!XV7ZFl&wkP>{XE)7O>#Hm9JlnQ^7b&t9OAY-UJAiF1B# zZfaf$kjuc}T$GwvlA5AWo>`Ki;O^-gkfN8$4z$k3)5S5w;`H7rd%c()MOyclPSu#! zl;FhG%<mh1DTQ*wzf_RYO+6j(}3so znWo)w5_-ky-`>nDPWNNb33kw_x^}%WHi3J^if=qV4c-r~-jZjY$XyZtQy^l~wN+BN z4}7*3H=a}8u!N&gF5vo~;4^s*?pMtk+x&!C}eg2g;dQ zac6G_)cIew_}9G5_v!C7aSxewwYN9wKd{pNFp+&re#F7nN?&K@KMGGDi*4XK(_nrz z%V?$EhDFcrGde%m{b71~-1Zw6uB6WPJfm~FM5;C=ch6MYylA)oAG$9-|L5@U{M|Z+ XrcTpjH-TPnPyl Date: Mon, 19 Sep 2011 11:49:33 +0200 Subject: [PATCH 6/9] updated logos / icons according to Susann's proposal --- .../war/images/minus.png | Bin 262 -> 971 bytes .../war/images/plus.png | Bin 273 -> 980 bytes .../war/images/refresh.png | Bin 485 -> 1214 bytes .../war/images/sap_66_transparent.png | Bin 3243 -> 2265 bytes 4 files changed, 0 insertions(+), 0 deletions(-) diff --git a/java/com.sap.sailing.gwt.ui/war/images/minus.png b/java/com.sap.sailing.gwt.ui/war/images/minus.png index 5bf3536d89e2d3f9dc454e481a695cbf3fa0843a..dec651a9e593791c73503f3aef0663d1c5db818a 100755 GIT binary patch literal 971 zcmaJ=&ui0A91jkL&JG-cP*0D{qfK6tHl?9)rb*`tOBro(MMRb+uWjg(7n4_;_Tmr( zJqUsx=Fz)&7CgAC;6W#N*gxP=@F>cB>Dq1wYvASm;Pd%>Ki}{BzNcH&TgyvVml%dw zu51`JI;WCxev$rf_wRnEQ<{{Uq>kHUV1n;#nP3LzXkV{}B}#W&ya3CTW_R zij6(aN-$jP1(eM&#kDxF>>eVZg*vXUvOnH`V1etX>~_wCW}u_4yDTWg|3rho&{qF>8b3AsiwIFbQ~g(<6y>yG6b@~2~swn z&tC^36d(^pUJx@vUXervLNNJQ8ZC6%O3hfG#G*Tu?Gh3wJUcIXDg#Xd+BtrqSRm8DKkQt*PAtRGFvL<`2pR=^7!Oj4Qx zP4oXy&zqqmQbVVH|0x_bh5_PhD8l{FrWe;ojLrs<>L&!=cSNNOScjTxY(Q>|8ES&G5;!p1J1f z5$&C1Icr+FnYBIgX|IR0sqK|N&*+2DDu&jGk6OQvkJt3k=-0zV_TbYiDV_d$c=)82 zTG&ioJ9pIE(SBaK_xND%_2J9<#u_c(-!pV(Q!FmdKI;Vst0QS043IG5A diff --git a/java/com.sap.sailing.gwt.ui/war/images/plus.png b/java/com.sap.sailing.gwt.ui/war/images/plus.png index 128473613a681c6ebeeacb412fd0b50d74856bb9..7fe5ac6e8138f26681b67265711797537121a3b1 100755 GIT binary patch literal 980 zcmaJ=J#5oJ7{(U(-JMWXoGCi(C{%=v`8BR%`tXx9UIo}!*962aS32ITePKb z$R=?FBgP1k<1seJ71kopFuRz7Hr}yah5z~KGY@P_;WyJd)V&h!*y{ryHwM+FIp~^s zi(gv>g-B)s4yFc(oSqxVk-`skWwwrwMIHGl(e1}p`7R4|Og)k)$e@8_5d_LBY zq$EQmgI$*zQPK^T#|kPAOyBmXOs)7?(5# z>iYkojx#|Aw2sg7{ikry-1V?n#{ud4CcC)poYF zn0*Jkbj-ERx#_9g*a(itBCFW9A7QKF69)_nmhI`eNK^GjTx)tRsi|C%B_qbydf}SK zN6b6%a$;Jxnb;n?%Cxs`~EE*3-W`t}tN$ literal 273 zcmeAS@N?(olHy`uVBq!ia0vp^f*{Pn1|+R>-G2co#^NA%Cx&(BWL^R}Y)RhkE)4%c zaKYZ?lYt_f1s;*b3=G`DAk4@xYmNj^kiEpy*OmP?r=WXGGtC%Uz{Nwc}F@P4IP;GxWIck}=M|H}{F=;`U%T(B}ZX#tajP1}YCT+B5O zo8{cDlyg?`^c>?;J0Q+y^2raVc~gn=SHqyiHjE77j#6`#vbqF7j`4K$b6Mw<&;$Ui Cj#Y91 diff --git a/java/com.sap.sailing.gwt.ui/war/images/refresh.png b/java/com.sap.sailing.gwt.ui/war/images/refresh.png index 16422e326b3dec8e184dc59fadcb673de8fa0a32..abee5f548ec1171442ceff00edecbafd232ea5dd 100755 GIT binary patch literal 1214 zcmaJ>ZA=?w96z{)l5V&flEo>qCx<2mY45E-d$iDNuRzTXn^LoCLc;a#X?uZt;qI^n zH5NZ8_-P+Z6wGwfWx+2xKg_V0IE^fsb7TZv!tk3fb1pH&n3$;_@Hs}AAFP+$J#W9? z@BjZl|6gt)Ju=kdeb|d(SW9YH$e_{ZzRgYOd+hfe2@OY`WX>5i3Qk$FAjT_39)gr6 z6=4QS%FNVPFoIz?P_sEFCm!cyLkmbQCQ#8##Ky45K*f~g3Fv@4EUJ2x*#7hq0aPVQ zoah!Q(M-USIy`H^(bT+oAZj%Jqg*X#Y z;$BiYF%1%i1wnU!^2<~Y1$yWJ%?5jWd%FNb(G*EBB+dBgUXEoriUNBNfudPTfy)Sk zd$G_eN|YSO%lDARi-Xy(4GZtq&ZQQT%_XrtPC`Cj;;2`=7#gcE*Hc2HM87 zC8Nd_I^0kum$0DZ7*^IWCTq8tE*XwtmkbjmM!UfYRacC%y^9t_E~VR!q{}cRLQ0TT+~>yYa$O^6CWLhJMMJfv}mz!d#EF?TgcQu zDe(miYY3(UK3mz!D=}PE)jPmD|Lfc)*7;(?{Ncvmy1>f9**^x@rCS8JfKIA8@BHHF zhgLs1@Vz3-KWrDTzY~36A6kM?P~{1{djl>tiN|L_E+Tfh8RBvPT?1Bwl4q4;JVp9hW&U+0fkqad?Rbr z!29@-zna*1kLQ!Ibxjt!K|K_u<*lqr)G0Iz!DjO1OA+F}>DT zT{+Zt@H~ZuA6Z&_uKHH%YaO5AQ!Q!jn8j89KH4cYufDY2b*=iwsV}T6OFRZX$6k0+ V&KHlg{p|ixQppkF!}$0s{{Wekl%fCt literal 485 zcmeAS@N?(olHy`uVBq!ia0vp^Vn8g)!3HFq6y&A?DaPU;cPEB*=VV?2Ic!PZ?k)`f zL2$v|<&%LToCO|{#S9GG!XV7ZFl&wkP>{XE)7O>#Hm9JlnQ^7b&t9OAY-UJAiF1B# zZfaf$kjuc}T$GwvlA5AWo>`Ki;O^-gkfN8$4z$k3)5S5w;`H7rd%c()MOyclPSu#! zl;FhG%<mh1DTQ*wzf_RYO+6j(}3so znWo)w5_-ky-`>nDPWNNb33kw_x^}%WHi3J^if=qV4c-r~-jZjY$XyZtQy^l~wN+BN z4}7*3H=a}8u!N&gF5vo~;4^s*?pMtk+x&!C}eg2g;dQ zac6G_)cIew_}9G5_v!C7aSxewwYN9wKd{pNFp+&re#F7nN?&K@KMGGDi*4XK(_nrz z%V?$EhDFcrGde%m{b71~-1Zw6uB6WPJfm~FM5;C=ch6MYylA)oAG$9-|L5@U{M|Z+ XrcTpjH-TPnPylfP52YE0g=R#1*Vih?e2!<3QNCwa&NI3YndS?Wdtd4xh#zlp?b(M}~TI{FXlor5na#(6~yCHYPJ9F4FS7 z)cN!?kuzvm|KvZGmEG>w+!BDeqA`;z{vK7sb?WcXwl~aPU-B_0sk=l8gO>K{e$KJ( zyp177)GLKnrk1^hH&!{1tzITF%;97_3R-W_HghmSGxJn?@komP=4Zi*f!F<%JCobm zC$)-R-&rj-=Ds7So!?FBE8#5*awvF8>K(|{dzML@NiMf{9Lti{+;;i>r-1#>11sl_ zK0KE>PjcQ^$BJqS%Lxa)u6$)bqLK~i^0$(WV&iE-YR+q>bQ{;=W{ns4%U=` z%S{=i;|fy4#=D*8Y8oPc?_uSaosXc)`~jb%bzR%j`Kzll z+;Ti8Ec!E?EQW8c+)CU~ZA8qkeGVE2*LXWSNmVjgeA*4p{wkB-QYuqk-$=!4Dy}>? z)IA|fh%P_Ad2d$8)kH|MB6Tp=+`?lvr1Z`iGbVZ!TOD&YRKKa)J#rl5nBQ15+98NX zd71NfWHlVOz1{j&<($#W~g4~{if`H1EVicu214JoJ~*B zgl&E`u2ZyOj@H!F-kyE#-eu3*eJA^Lr*39@Dbv(uE5b(#&GpdBHn~{zjK3PSN@{u# zQ1*^cM??R5B42nsOMUIhM+IUOvZf;d9C8gkGuuj}FA@vvBV-+C@>bnbqE3f-9L z0fgBsXJGaW%@X5Q!ZT?aOI@kfxAE`DJ8EfQ!ioMx<%*v z(>L+KGm%ha$wkqV-gnOUxTm#78E`rOW}V|$+cbJYdU^61nz>SNX43R;T#Lk=j%)T= zAE8D6b2iDN`4q>zyK^|P1AiBIj+TbftBBN`?WI#&kL_cUtLAq2Xg18Xx3>)a!$|2z z;aWH!e(OsMk@nwO;xd8lsny`#N$ThSRbpMz5Hnw0IroYn-EG^qY40JDG&@_ZxSFbp zwd_cPFI2^&iioMd*#DxJklB(Jc*+ViflCjSD_r8E_k_AAw-wmDlnh|jwU8@pR$D+C zz?-sctA(&@*OoxaG`I1d=GxomDqV|$*DS~4p*w9J$DD!>+wAMgA57_Yup|!9RTsax zn)suu?_sKg7whhBG;0O?Rb$yVr#$~2+iXXv^Yt6jL>jiL9$Q~;igN5cI-AZYWew%( zXPqrAI2vw$$$$L;+w%3!Euy~fbV#OAUCiD}F=MPLI>?{gfuYdej z3^OOD?m=moOjD87dB`?1wSHQ?cKfd*2CEs*I*#?cO<)mu559#f5=7Hf?v_7huMU=GLC2KNwCL9ND2` Ygxa;DL5O&cTKL&uF+&+mep_<>0KTTDIRF3v literal 3243 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 Date: Mon, 19 Sep 2011 18:09:24 +0200 Subject: [PATCH 7/9] styled leaderboard selection, header, spacing --- .../gwt/ui/client/DataEntryDialog.java | 4 +- .../ui/client/ExpandableSortableColumn.java | 2 +- .../gwt/ui/client/LeaderboardPanel.java | 58 ++++++++-- .../gwt/ui/client/LeaderboardTable.css | 107 ++++++++++++++++++ .../sap/sailing/gwt/ui/client/LegColumn.java | 22 +++- .../ui/client/LegDetailSelectionPanel.java | 49 ++++++++ .../ui/client/LegDetailSelectionProvider.java | 19 ++++ .../ModifiableLegDetailSelectionProvider.java | 6 + .../SortableExpandableColumnHeader.java | 2 +- .../war/Leaderboard.css | 19 +--- .../war/Leaderboard.html | 11 +- 11 files changed, 264 insertions(+), 35 deletions(-) create mode 100755 java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/ui/client/LeaderboardTable.css create mode 100755 java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/ui/client/LegDetailSelectionPanel.java create mode 100755 java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/ui/client/LegDetailSelectionProvider.java create mode 100755 java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/ui/client/ModifiableLegDetailSelectionProvider.java 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/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 { @@ -211,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()); @@ -323,6 +339,7 @@ public class LeaderboardPanel extends FormPanel { getLeaderboardTable().addColumnSortHandler(listHandler); loadCompleteLeaderboard(getLeaderboardDisplayDate()); VerticalPanel vp = new VerticalPanel(); + vp.setSpacing(15); Anchor sapLogo = new Anchor(new SafeHtmlBuilder().appendHtmlConstant("").toSafeHtml()); sapLogo.setHref("http://www.sap.com"); vp.add(sapLogo); @@ -332,16 +349,22 @@ public class LeaderboardPanel extends FormPanel { Label leaderboardLabel = new Label(stringConstants.leaderboard()+" "+leaderboardName.toUpperCase()); leaderboardLabel.addStyleName("boldLabel"); dockPanel.add(leaderboardLabel, DockPanel.WEST); - Anchor refresh = new Anchor(new SafeHtmlBuilder().appendHtmlConstant( - " "+stringConstants.refresh()).toSafeHtml()); - dockPanel.setHorizontalAlignment(HasHorizontalAlignment.ALIGN_RIGHT); - dockPanel.add(refresh, DockPanel.EAST); - refresh.addClickHandler(new ClickHandler() { + ClickHandler refreshHandler = new ClickHandler() { @Override public void onClick(ClickEvent event) { loadCompleteLeaderboard(getLeaderboardDisplayDate()); } - }); + }; + 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); @@ -588,4 +611,21 @@ 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 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; +} + +.cellTableKeyboardSelectedRow { + border-bottom: 1px solid #e5e5e5; + background-color: #FFFFFF; +} + +.cellTableEvenRowCell { + border-left: none !important; + border-right: none !important; + padding: 5px 5px 5px !important; +} + +.cellTableKeyboardSelectedRowCell { + 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; +} + +// TODO white background, #e5f2f9 for "mouse over"; for selection blue border 2px #21a0e4 with #e5f2f9 background + +// TODO linie table header weg! +// TODO table header background color \ 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 15fabcc5251..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 @@ -98,7 +98,7 @@ public class SortableExpandableColumnHeader extends Header { } @Override public SafeHtml getValue(SafeHtml object) { - return new SafeHtmlBuilder().appendEscaped(title).toSafeHtml(); + return new SafeHtmlBuilder().appendHtmlConstant(" ").appendEscaped(title).toSafeHtml(); } }); return new CompositeCell(cells) { diff --git a/java/com.sap.sailing.gwt.ui/war/Leaderboard.css b/java/com.sap.sailing.gwt.ui/war/Leaderboard.css index 0d1e706ccb9..5f6d50314d5 100755 --- a/java/com.sap.sailing.gwt.ui/war/Leaderboard.css +++ b/java/com.sap.sailing.gwt.ui/war/Leaderboard.css @@ -2,7 +2,7 @@ * { font-family: Arial; - font-size-adjust: 0.5; + font-size: 12px; } @@ -56,23 +56,16 @@ h1 { vertical-align: middle; } -/** v-align images in the table header */ -.GALD-WOMD > span > img:first-child { - position: relative; - vertical-align: middle; -} - .valignMiddle { position: relative; vertical-align: middle; } -/** grey background for table header */ -.GALD-WOPD > thead { - background-color: #e5e5e5; -} - .boldLabel { - font-size-adjust: 0.7; + 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 @@ + + + + + + From 6a71320e7fc136c92302e6d62ed6528689432463 Mon Sep 17 00:00:00 2001 From: Axel Uhl Date: Mon, 19 Sep 2011 18:12:40 +0200 Subject: [PATCH 8/9] removed extra specs in style sheet --- .../sailing/gwt/ui/client/LeaderboardTable.css | 18 +----------------- 1 file changed, 1 insertion(+), 17 deletions(-) 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 index 042c5cdf1a4..66ead8640f5 100755 --- 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 @@ -56,23 +56,12 @@ background-color: #FFFFFF; } -.cellTableKeyboardSelectedRow { - border-bottom: 1px solid #e5e5e5; - background-color: #FFFFFF; -} - .cellTableEvenRowCell { border-left: none !important; border-right: none !important; padding: 5px 5px 5px !important; } -.cellTableKeyboardSelectedRowCell { - border-left: none !important; - border-right: none !important; - padding: 5px 5px 5px !important; -} - .cellTableHoveredRow { background-color: #e5f2f9; border-bottom: 1px solid #e5e5e5; @@ -99,9 +88,4 @@ boder-right: none; border-top: 2px solid #21a0e4; border-bottom: 2px solid #21a0e4; -} - -// TODO white background, #e5f2f9 for "mouse over"; for selection blue border 2px #21a0e4 with #e5f2f9 background - -// TODO linie table header weg! -// TODO table header background color \ No newline at end of file +} \ No newline at end of file From 8e4c9d224517876aad96791c168be2e005ab0186 Mon Sep 17 00:00:00 2001 From: Axel Uhl Date: Mon, 19 Sep 2011 21:05:24 +0200 Subject: [PATCH 9/9] further preparations to exchange leg details --- .../com/sap/sailing/gwt/ui/client/LeaderboardPanel.java | 7 ++++++- 1 file changed, 6 insertions(+), 1 deletion(-) diff --git a/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/ui/client/LeaderboardPanel.java b/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/ui/client/LeaderboardPanel.java index 9be134f420e..e6d822cf95a 100755 --- a/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/ui/client/LeaderboardPanel.java +++ b/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/ui/client/LeaderboardPanel.java @@ -624,7 +624,12 @@ public class LeaderboardPanel extends FormPanel implements LegDetailSelectionPro */ 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(); + } } }