Merge remote-tracking branch 'server/gwt' into gwt

This commit is contained in:
Axel Uhl committed 2012-01-17 16:28:51 +01:00
commit 4847513f33
11 files changed
+402 -26

No files matched your search

+99
View File
@@ -0,0 +1,99 @@
/** Add css rules here for your application. */
/*
body #calendar:after
content: " ";
display: block;
height: 0;
clear: both;
visibility: hidden;
*/
.clear {
clear: both;
font-size: 1px;
height: 0px;
line-height: 0px;
margin: -1px 0 0;
width: 100%; }
.cover {
left: -1000px;
overflow: hidden;
position: absolute;
top: -1000px; }
body {
background: url(images/header_bg.png) 0 0 repeat-x;
font-family: Arial, Verdana, sans-serif;
line-height: 1;
font-size: 62.5%;
margin-top: 0; }
/** Example rules used by the template application (remove for your app) */
h1 {
font-size: 2em;
font-weight: bold;
color: #777777;
margin: 40px 0px 70px;
text-align: center;}
table {
border-collapse: separate; }
table td, table th {
vertical-align: bottom;
line-height: 1.3;
padding-top: 2px;}
.LogoAndTitlePanel {
margin: 0 0 24px 0;
height: 58px; }
.LogoAndTitlePanel:after {
content: " ";
display: block;
height: 0;
clear: both;
visibility: hidden; }
.sapLogo {
float: left;
margin: 8px 0 0 0; }
.sailingAnalyticsLabelPanel {
margin: 10px 0 0 0;
border: 1px solid red;}
.sailingAnalyticsLabel {
float: left;
color: #fff;
font-size: 1.2em;
font-weight: bold;
margin: 20px 0 0 0; }
.leaderboardLabel {
border-bottom: 2px solid #007dc0;
font-weight: bold;
padding: 0 0 6px 0; }
.refreshAndSettings {
background: #f2f2f2;
border-bottom: 2px solid #fff;
border-top: 2px solid #fff;
height: 30px; }
.refreshAndSettings table td {
padding: 0 10px 0 0;}
.refreshAndSettings table table td{
padding: 0 0 0 0;}
.race-name {
margin: 2px 10px 0 0;
line-height: 1.0;
float: left;}
input.magnifier{
display: block;
margin: 3px auto 0 auto !important;
}
@@ -0,0 +1,24 @@
<!doctype html>
<html>
<head>
<meta http-equiv="content-type" content="text/html; charset=UTF-8">
<title>SAP Sailing Analytics Race Board</title>
<script type="text/javascript" language="javascript" src="com.sap.sailing.gwt.ui.RaceBoard/com.sap.sailing.gwt.ui.RaceBoard.nocache.js"></script>
</head>
<body>
<iframe src="javascript:''" id="__gwt_historyFrame" tabIndex='-1' style="position:absolute;width:0;height:0;border:0"></iframe>
<!-- RECOMMENDED if your web app will not function without JavaScript enabled -->
<noscript>
<div style="width: 22em; position: absolute; left: 50%; margin-left: -11em; color: red; background-color: white; border: 1px solid red; padding: 4px; font-family: sans-serif">
Your web browser must have JavaScript enabled
in order for this application to display correctly.
</div>
</noscript>
</body>
</html>
@@ -24,27 +24,26 @@ public class QuickRanksListBoxComposite extends Composite implements CompetitorS
private final List<QuickRankDAO> quickRankList;
private final List<CompetitorDAO> competitorList;
private final ListBox quickRankListBox;
private final boolean hasMultiSelection;
public QuickRanksListBoxComposite(boolean hasMultiSelection) {
public QuickRanksListBoxComposite(final boolean hasMultiSelection) {
this.competitorSelectionChangeListeners = new HashSet<CompetitorSelectionChangeListener>();
this.hasMultiSelection = hasMultiSelection;
quickRankListBox = new ListBox(hasMultiSelection);
quickRankListBox.addChangeHandler(new ChangeHandler() {
@Override
public void onChange(ChangeEvent event) {
fireCompetitorSelectionChanged(Collections.singletonList(getSelectedCompetitor()));
onSelectionChanged();
}
});
quickRankListBox.addClickHandler(new ClickHandler() {
@Override
public void onClick(ClickEvent event) {
CompetitorDAO selectedCompetitor = getSelectedCompetitor();
List<CompetitorDAO> selectedCompetitorsCollection = Collections.emptyList();
if (selectedCompetitor != null) {
Collections.singletonList(selectedCompetitor);
}
fireCompetitorSelectionChanged(selectedCompetitorsCollection);
onSelectionChanged();
}
});
quickRankList = new ArrayList<QuickRankDAO>();
competitorList = new ArrayList<CompetitorDAO>();
VerticalPanel vp = new VerticalPanel();
@@ -54,6 +53,21 @@ public class QuickRanksListBoxComposite extends Composite implements CompetitorS
initWidget(vp);
}
private void onSelectionChanged()
{
List<CompetitorDAO> selectedCompetitors = null;
if(hasMultiSelection) {
selectedCompetitors = getSelectedCompetitors();
} else {
CompetitorDAO selectedCompetitor = getSelectedCompetitor();
if (selectedCompetitor != null) {
selectedCompetitors = new ArrayList<CompetitorDAO>();
selectedCompetitors.add(selectedCompetitor);
}
}
fireCompetitorSelectionChanged(selectedCompetitors);
}
public void fillQuickRanks(List<QuickRankDAO> quickRanks, boolean isSorted) {
List<CompetitorDAO> oldSelection = getSelectedCompetitors();
@@ -109,6 +123,7 @@ public class QuickRanksListBoxComposite extends Composite implements CompetitorS
}
i++;
}
System.out.println("Anzahl Selected competitors: " + result.size());
return result;
}
@@ -35,8 +35,8 @@ import com.google.gwt.maps.client.overlay.MarkerOptions;
import com.google.gwt.maps.client.overlay.Polyline;
import com.google.gwt.maps.client.overlay.PolylineOptions;
import com.google.gwt.user.client.rpc.AsyncCallback;
import com.google.gwt.user.client.ui.Grid;
import com.google.gwt.user.client.ui.Label;
import com.google.gwt.user.client.ui.Panel;
import com.google.gwt.user.client.ui.VerticalPanel;
import com.google.gwt.user.client.ui.Widget;
import com.sap.sailing.domain.common.impl.Util.Triple;
@@ -183,7 +183,7 @@ public class RaceMap implements TimeListener, CompetitorSelectionChangeListener,
return dist;
}
public void loadMapsAPI(final Grid grid, final int gridRow, final int gridColumn) {
public void loadMapsAPI(final Panel parentPanel) {
Maps.loadMapsApi(mapsAPIKey, "2", false, new Runnable() {
public void run() {
map = new MapWidget();
@@ -191,11 +191,10 @@ public class RaceMap implements TimeListener, CompetitorSelectionChangeListener,
map.addControl(new MenuMapTypeControl());
map.addControl(new ScaleControl());
// Add the map to the HTML host page
map.setSize("100%", "100%");
map.setScrollWheelZoomEnabled(true);
map.setContinuousZoom(true);
grid.setWidget(gridRow, gridColumn, map);
parentPanel.add(map);
map.setSize("100%", "100%");
imageResources = new RaceMapResources(map);
@@ -245,9 +244,9 @@ public class RaceMap implements TimeListener, CompetitorSelectionChangeListener,
@Override
public void onCompetitorSelectionChange(List<CompetitorDAO> newSelectedCompetitors) {
for (CompetitorDAO competitorDAO : newSelectedCompetitors) {
for (CompetitorDAO competitorDAO : selectedMapCompetitors) {
if (!selectedMapCompetitors.contains(competitorDAO)) {
if (!newSelectedCompetitors.contains(competitorDAO)) {
// "lowlight" currently selected competitor
Marker highlightedMarker = boatMarkers.get(competitorDAO);
if (highlightedMarker != null) {
@@ -255,20 +254,18 @@ public class RaceMap implements TimeListener, CompetitorSelectionChangeListener,
map.removeOverlay(highlightedMarker);
map.addOverlay(lowlightedMarker);
boatMarkers.put(competitorDAO, lowlightedMarker);
selectedMapCompetitors.remove(competitorDAO);
}
} else {
Marker lowlightedMarker = boatMarkers.get(competitorDAO);
if (lowlightedMarker != null) {
if (lowlightedMarker == null) {
Marker highlightedMarker = createBoatMarker(competitorDAO, true);
map.removeOverlay(lowlightedMarker);
map.addOverlay(highlightedMarker);
boatMarkers.put(competitorDAO, highlightedMarker);
}
// add the competitor even if not currently contained in map
selectedMapCompetitors.add(competitorDAO);
}
}
selectedMapCompetitors.clear();
selectedMapCompetitors.addAll(newSelectedCompetitors);
}
@Override
@@ -993,10 +990,6 @@ public class RaceMap implements TimeListener, CompetitorSelectionChangeListener,
lastShownFix.put(competitorDAO, indexOfLastShownFix);
}
public Set<CompetitorDAO> getSelectedMapCompetitors() {
return selectedMapCompetitors;
}
public RaceMapSettings getSettings() {
return settings;
}
@@ -9,6 +9,7 @@ import com.google.gwt.event.logical.shared.ValueChangeEvent;
import com.google.gwt.event.logical.shared.ValueChangeHandler;
import com.google.gwt.maps.client.geom.LatLng;
import com.google.gwt.user.client.rpc.AsyncCallback;
import com.google.gwt.user.client.ui.AbsolutePanel;
import com.google.gwt.user.client.ui.CheckBox;
import com.google.gwt.user.client.ui.FormPanel;
import com.google.gwt.user.client.ui.Grid;
@@ -115,9 +116,11 @@ public class RaceMapPanel extends FormPanel implements EventDisplayer, TimeListe
grid.getColumnFormatter().setWidth(0, "20%");
grid.getColumnFormatter().setWidth(1, "80%");
grid.getCellFormatter().setHeight(2, 1, "100%");
AbsolutePanel mapPanel = new AbsolutePanel();
mapPanel.setSize("100%", "100%");
grid.setWidget(2, 1, mapPanel);
raceMap = new RaceMap(sailingService, errorReporter, timer);
raceMap.loadMapsAPI(grid, 2, 1);
raceMap.loadMapsAPI(mapPanel);
setMapDisplayOptions();
@@ -0,0 +1,46 @@
package com.sap.sailing.gwt.ui.raceboard;
import java.util.List;
import com.google.gwt.user.client.Window;
import com.google.gwt.user.client.rpc.AsyncCallback;
import com.google.gwt.user.client.ui.RootPanel;
import com.sap.sailing.gwt.ui.client.AbstractEntryPoint;
import com.sap.sailing.gwt.ui.client.LogoAndTitlePanel;
public class RaceBoardEntryPoint extends AbstractEntryPoint {
@Override
public void onModuleLoad() {
super.onModuleLoad();
sailingService.getLeaderboardNames(new AsyncCallback<List<String>>() {
@Override
public void onSuccess(List<String> leaderboardNames) {
String leaderboardName = Window.Location.getParameter("name");
LogoAndTitlePanel logoAndTitlePanel = new LogoAndTitlePanel(stringConstants);
logoAndTitlePanel.addStyleName("LogoAndTitlePanel");
RaceBoardPanel raceBoardPanel = new RaceBoardPanel(sailingService, leaderboardName,
RaceBoardEntryPoint.this, stringConstants);
String padding = Window.Location.getParameter("padding");
if (padding != null && Boolean.valueOf(padding)) {
raceBoardPanel.addStyleName("leftPaddedPanel");
}
RootPanel.get().add(logoAndTitlePanel);
RootPanel.get().add(raceBoardPanel);
}
@Override
public void onFailure(Throwable t) {
reportError("Error trying to obtain list of leaderboard names: " + t.getMessage());
}
});
}
}
@@ -0,0 +1,138 @@
package com.sap.sailing.gwt.ui.raceboard;
import java.util.List;
import com.google.gwt.core.client.GWT;
import com.google.gwt.event.logical.shared.CloseEvent;
import com.google.gwt.event.logical.shared.CloseHandler;
import com.google.gwt.event.logical.shared.OpenEvent;
import com.google.gwt.event.logical.shared.OpenHandler;
import com.google.gwt.user.client.ui.AbsolutePanel;
import com.google.gwt.user.client.ui.DisclosurePanel;
import com.google.gwt.user.client.ui.FormPanel;
import com.google.gwt.user.client.ui.Label;
import com.google.gwt.user.client.ui.Panel;
import com.google.gwt.user.client.ui.VerticalPanel;
import com.google.gwt.user.client.ui.Widget;
import com.sap.sailing.gwt.ui.adminconsole.RaceMap;
import com.sap.sailing.gwt.ui.client.ErrorReporter;
import com.sap.sailing.gwt.ui.client.SailingServiceAsync;
import com.sap.sailing.gwt.ui.client.StringMessages;
import com.sap.sailing.gwt.ui.client.Timer;
import com.sap.sailing.gwt.ui.shared.components.Component;
import com.sap.sailing.gwt.ui.shared.components.SettingsDialogComponent;
public class RaceBoardPanel extends FormPanel implements Component<RaceBoardSettings> {
private final SailingServiceAsync sailingService;
private final ErrorReporter errorReporter;
private final StringMessages stringConstants;
private String raceBoardName;
private static RaceBoardResources resources = GWT.create(RaceBoardResources.class);
private List<DisclosurePanel> collapsablePanels;
public RaceBoardPanel(SailingServiceAsync sailingService, String raceBoardName, ErrorReporter errorReporter,
final StringMessages stringConstants) {
this.sailingService = sailingService;
this.setRaceBoardName(raceBoardName);
this.errorReporter = errorReporter;
this.stringConstants = stringConstants;
VerticalPanel mainPanel = new VerticalPanel();
mainPanel.setSize("100%", "100%");
setWidget(mainPanel);
RaceMap raceMap = new RaceMap(sailingService, errorReporter, new Timer(/* delayBetweenAutoAdvancesInMilliseconds */500));
for(int i = 0; i < 4; i++)
{
if(i == 0)
{
AbsolutePanel contentPanel = new AbsolutePanel();
DisclosurePanel panel = createDisclosePanel(contentPanel, "Panel " + i, 300);
raceMap.loadMapsAPI(contentPanel);
mainPanel.add(panel);
}
else
{
VerticalPanel contentPanel = new VerticalPanel();
DisclosurePanel panel = createDisclosePanel(contentPanel, "Panel " + i, 100);
contentPanel.add(new Label("Content of panel " + i));
mainPanel.add(panel);
}
}
}
private DisclosurePanel createDisclosePanel(Panel contentPanel, String panelTitle, int heightInPx)
{
DisclosurePanel disclosurePanel = new DisclosurePanel (resources.openIcon(), resources.closeIcon(), panelTitle);
disclosurePanel.setSize("100%", "100%");
disclosurePanel.setOpen(true);
contentPanel.setSize("100%", heightInPx + "px");
disclosurePanel.setContent(contentPanel);
disclosurePanel.addOpenHandler(new OpenHandler<DisclosurePanel>() {
@Override
public void onOpen(OpenEvent<DisclosurePanel> event) {
}
});
disclosurePanel.addCloseHandler(new CloseHandler<DisclosurePanel>() {
@Override
public void onClose(CloseEvent<DisclosurePanel> event) {
}
});
return disclosurePanel;
}
@Override
public Widget getEntryWidget() {
return this;
}
public void updateSettings(RaceBoardSettings result) {
}
protected SailingServiceAsync getSailingService() {
return sailingService;
}
protected String getRaceBoardName() {
return raceBoardName;
}
protected void setRaceBoardName(String raceBoardName) {
this.raceBoardName = raceBoardName;
}
protected ErrorReporter getErrorReporter() {
return errorReporter;
}
@Override
public String getLocalizedShortName() {
return null;
}
@Override
public boolean hasSettings() {
return true;
}
@Override
public SettingsDialogComponent<RaceBoardSettings> getSettingsDialogComponent() {
return null;
}
}
@@ -0,0 +1,14 @@
package com.sap.sailing.gwt.ui.raceboard;
import com.google.gwt.resources.client.ClientBundle;
import com.google.gwt.resources.client.ImageResource;
interface RaceBoardResources extends ClientBundle {
@Source("com/sap/sailing/gwt/ui/client/images/open.png")
ImageResource openIcon();
@Source("com/sap/sailing/gwt/ui/client/images/close.png")
ImageResource closeIcon();
}
@@ -0,0 +1,5 @@
package com.sap.sailing.gwt.ui.raceboard;
public class RaceBoardSettings {
}
@@ -0,0 +1,39 @@
<?xml version="1.0" encoding="UTF-8"?>
<!-- Could not determine the version of your GWT SDK; using the module DTD from GWT 1.6.4. You may want to change this. -->
<!DOCTYPE module PUBLIC "-//Google Inc.//DTD Google Web Toolkit 1.6.4//EN" "http://google-web-toolkit.googlecode.com/svn/tags/1.6.4/distro-source/core/src/gwt-module.dtd">
<module>
<stylesheet src="../reset.css" />
<!-- Inherit the core Web Toolkit stuff. -->
<inherits name='com.google.gwt.user.User'/>
<!-- Inherit the default GWT style sheet. You can change -->
<!-- the theme of your GWT application by uncommenting -->
<!-- any one of the following lines. -->
<inherits name='com.google.gwt.user.theme.clean.Clean'/>
<!-- <inherits name='com.google.gwt.user.theme.standard.Standard'/> -->
<!-- <inherits name='com.google.gwt.user.theme.chrome.Chrome'/> -->
<!-- <inherits name='com.google.gwt.user.theme.dark.Dark'/> -->
<stylesheet src="../RaceBoard.css" />
<!-- Google Maps API -->
<inherits name='com.google.gwt.maps.GoogleMaps' />
<!-- Flot-Gwt API -->
<inherits name='ca.nanometrics.gflot.GFlot'/>
<!-- Phoenix Stuff -->
<inherits name='com.sap.ui.commons.Module' />
<!-- Other module inherits -->
<inherits name="com.sap.sailing.server.SailingServer" />
<inherits name="com.sap.sailing.domain.SailingDomain" />
<!-- Specify the app entry point class. -->
<entry-point class='com.sap.sailing.gwt.ui.raceboard.RaceBoardEntryPoint'/>
<!-- Specify the paths for translatable code -->
<extend-property name="locale" values="de"/>
<source path='client'/>
<source path='raceboard'/>
<source path='adminconsole'/>
<source path='shared'/>
</module>
Binary file not shown.

After

Width:  |  Height:  |  Size: 1.3 KiB