diff --git a/java/com.sap.sailing.gwt.ui/.classpath b/java/com.sap.sailing.gwt.ui/.classpath
index d61b2a24382..dd566e6861a 100755
--- a/java/com.sap.sailing.gwt.ui/.classpath
+++ b/java/com.sap.sailing.gwt.ui/.classpath
@@ -2,14 +2,10 @@
-
-
-
-
-
+
-
+
diff --git a/java/com.sap.sailing.gwt.ui/.project b/java/com.sap.sailing.gwt.ui/.project
index 0e39cc17829..02737d5c66e 100755
--- a/java/com.sap.sailing.gwt.ui/.project
+++ b/java/com.sap.sailing.gwt.ui/.project
@@ -30,6 +30,11 @@
+ full,incremental,
+
+ LaunchConfigHandle
+ <project>/.externalToolBuilders/org.eclipse.m2e.core.maven2Builder.launch
+
org.eclipse.pde.PluginNature
diff --git a/java/com.sap.sailing.gwt.ui/.settings/com.google.gwt.eclipse.core.prefs b/java/com.sap.sailing.gwt.ui/.settings/com.google.gwt.eclipse.core.prefs
index b4ad05b12bb..ea7accb991a 100755
--- a/java/com.sap.sailing.gwt.ui/.settings/com.google.gwt.eclipse.core.prefs
+++ b/java/com.sap.sailing.gwt.ui/.settings/com.google.gwt.eclipse.core.prefs
@@ -1,4 +1,5 @@
-#Thu Sep 29 09:30:43 CEST 2011
+#Wed Nov 09 12:43:38 CET 2011
eclipse.preferences.version=1
+entryPointModules=
filesCopiedToWebInfLib=gwt-servlet.jar
gwtCompileSettings=PGd3dC1jb21waWxlLXNldHRpbmdzPjxsb2ctbGV2ZWw+SU5GTzwvbG9nLWxldmVsPjxvdXRwdXQtc3R5bGU+T0JGVVNDQVRFRDwvb3V0cHV0LXN0eWxlPjxleHRyYS1hcmdzPjwhW0NEQVRBW11dPjwvZXh0cmEtYXJncz48dm0tYXJncz48IVtDREFUQVstWG14NTEybV1dPjwvdm0tYXJncz48ZW50cnktcG9pbnQtbW9kdWxlPmNvbS5zYXAuc2FpbGluZy5nd3QudWkuQWRtaW5Db25zb2xlPC9lbnRyeS1wb2ludC1tb2R1bGU+PC9nd3QtY29tcGlsZS1zZXR0aW5ncz4\=
diff --git a/java/com.sap.sailing.gwt.ui/SailingGWT.launch b/java/com.sap.sailing.gwt.ui/SailingGWT.launch
index 661dfa84bfe..3a34b75a325 100755
--- a/java/com.sap.sailing.gwt.ui/SailingGWT.launch
+++ b/java/com.sap.sailing.gwt.ui/SailingGWT.launch
@@ -21,7 +21,7 @@
-
+
diff --git a/java/com.sap.sailing.gwt.ui/build.properties b/java/com.sap.sailing.gwt.ui/build.properties
index 967a7882162..534ad514cdd 100755
--- a/java/com.sap.sailing.gwt.ui/build.properties
+++ b/java/com.sap.sailing.gwt.ui/build.properties
@@ -3,7 +3,5 @@ source.. = src/main/resources,\
output.. = bin
bin.includes = META-INF/,\
.,\
- lib/gwt-visualization.jar,\
- lib/gwt-maps.jar,\
- lib/gwt-servlet.jar,\
war/
+jars.compile.order = .
diff --git a/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/ui/client/AdminConsole.java b/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/ui/client/AdminConsole.java
index f1e2b64c361..479e111b839 100644
--- a/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/ui/client/AdminConsole.java
+++ b/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/ui/client/AdminConsole.java
@@ -38,10 +38,10 @@ public class AdminConsole extends AbstractEntryPoint implements EventRefresher {
eventDisplayers.add(windPanel);
windPanel.setSize("90%", "90%");
tabPanel.add(windPanel, stringConstants.wind(), /* asHTML */ false);
- final RaceMapPanel raceMapPanel = new RaceMapPanel(sailingService, this, this, stringConstants);
- eventDisplayers.add(raceMapPanel);
- raceMapPanel.setSize("90%", "90%");
- tabPanel.add(raceMapPanel, stringConstants.map(), /* asHTML */ false);
+ //final RaceMapPanel raceMapPanel = new RaceMapPanel(sailingService, this, this, stringConstants);
+ //eventDisplayers.add(raceMapPanel);
+ //raceMapPanel.setSize("90%", "90%");
+ //tabPanel.add(raceMapPanel, stringConstants.map(), /* asHTML */ false);
LeaderboardPanel defaultLeaderboardPanel = new LeaderboardPanel(sailingService, stringConstants.defaultLeaderboard(), this, stringConstants);
defaultLeaderboardPanel.setSize("90%", "90%");
tabPanel.add(defaultLeaderboardPanel, stringConstants.defaultLeaderboard(), /* asHTML */ false);
@@ -51,14 +51,14 @@ public class AdminConsole extends AbstractEntryPoint implements EventRefresher {
eventDisplayers.add(leaderboardConfigPanel);
tabPanel.selectTab(0);
- tabPanel.addSelectionHandler(new SelectionHandler() {
+ /*tabPanel.addSelectionHandler(new SelectionHandler() {
@Override
public void onSelection(SelectionEvent event) {
if(raceMapPanel.isVisible()) {
raceMapPanel.onResize();
}
}
- });
+ });*/
fillEvents();
}
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 5b0d1ab6b1f..46ea3eb345f 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
@@ -182,7 +182,7 @@ public abstract class ExpandableSortableColumn extends SortableColumn column) {
+ // TODO Auto-generated method stub
+ super.addColumn(column);
+ }
+
+ @Override
+ public RaceColumn> createRaceColumn(String raceName,
+ boolean isMedalRace, boolean isTracked) {
+ // TODO Auto-generated method stub
+ return super.createRaceColumn(raceName, isMedalRace, isTracked);
+ }
+
+ @Override
+ public void removeColumn(int columnIndex) {
+ // TODO Auto-generated method stub
+ super.removeColumn(columnIndex);
+ }
+
+ @Override
+ public void updateLeaderboard(LeaderboardDAO leaderboard) {
+ // TODO Auto-generated method stub
+ super.updateLeaderboard(leaderboard);
+ }
+
+ @Override
+ public CellTable getLeaderboardTable() {
+ // TODO Auto-generated method stub
+ return super.getLeaderboardTable();
+ }
+
+}
diff --git a/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/ui/test/TestColumnToggling.java b/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/ui/test/TestColumnToggling.java
new file mode 100644
index 00000000000..23b4a93f22e
--- /dev/null
+++ b/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/ui/test/TestColumnToggling.java
@@ -0,0 +1,218 @@
+package com.sap.sailing.gwt.ui.test;
+
+import java.util.ArrayList;
+import java.util.Date;
+import java.util.List;
+
+import com.google.gwt.core.client.GWT;
+import com.google.gwt.junit.client.GWTTestCase;
+import com.google.gwt.user.cellview.client.Column;
+import com.google.gwt.user.client.rpc.AsyncCallback;
+import com.sap.sailing.gwt.ui.client.ExpandableSortableColumn;
+import com.sap.sailing.gwt.ui.client.StringConstants;
+import com.sap.sailing.gwt.ui.shared.LeaderboardDAO;
+import com.sap.sailing.gwt.ui.shared.LeaderboardRowDAO;
+import com.sap.sailing.gwt.ui.shared.Pair;
+import com.sap.sailing.gwt.ui.shared.RaceRecordDAO;
+
+public class TestColumnToggling extends GWTTestCase {
+
+ //These objects should be created by calling GWT.create(Class c);
+ private LeaderboardPanelMock leaderboardPanel;
+ private TestSailingServiceAsync service;
+ private StringConstants sc;
+
+ //Test data.
+ private final String LEADERBOARD_NAME = "test";
+ private final String COLUMN1_NAME = "r1";
+ private final String EVENT_NAME = "Sailing Team Germany (STG)";
+ private final String JSON_URL= "http://germanmaster.traclive.dk/events/event_20110505_SailingTea/jsonservice.php";
+ private final String TRACKED_RACE = "schwerttest";
+
+
+ private LeaderboardDAO leaderboard;
+ private RaceRecordDAO rrDao;
+ private ExpandableSortableColumn rc;
+
+
+
+ @Override
+ protected void gwtSetUp() throws Exception {
+ super.gwtSetUp();
+ service = GWT.create(TestSailingService.class);
+ sc = GWT.create(StringConstants.class);
+ }
+
+ public void testColumnDeleting() {
+ delayTestFinish(1000000);
+
+ listRacesInEvent();
+
+ }
+
+ private void listRacesInEvent(){
+ service.listTracTracRacesInEvent(JSON_URL, new AsyncCallback>>() {
+
+ @Override
+ public void onFailure(Throwable caught) {
+ fail("Failed to list races." + caught.getLocalizedMessage());
+ }
+
+ @Override
+ public void onSuccess(Pair> result) {
+ System.out.println("Listed races.");
+ for (RaceRecordDAO rr : result.getB()){
+ if (rr.name.equals(TRACKED_RACE)){
+ rrDao = rr;
+ }
+ }
+ assertNotNull("rrDao != null",rrDao);
+ trackRace();
+ }
+ });
+ }
+
+ private void trackRace(){
+ service.track(rrDao, "", "", false, false, new AsyncCallback() {
+
+ @Override
+ public void onFailure(Throwable caught) {
+ fail("Failed to track race: " + caught.getLocalizedMessage());
+ }
+
+ @Override
+ public void onSuccess(Void result) {
+ System.out.println("Tracked race.");
+ createLeaderboard();
+ }
+ });
+ }
+
+ private void createLeaderboard(){
+ service.createLeaderboard(LEADERBOARD_NAME, new int[] { 1, 2 },
+ new AsyncCallback() {
+
+ @Override
+ public void onSuccess(Void result) {
+ System.out.println("Created Leaderboard.");
+ addColumnToLeaderboard();
+ }
+
+ @Override
+ public void onFailure(Throwable caught) {
+ fail("Failed to create Leaderboard." + caught.getLocalizedMessage());
+ finishTest();
+ }
+ });
+ }
+
+ private void addColumnToLeaderboard() {
+ leaderboardPanel = new LeaderboardPanelMock(service, LEADERBOARD_NAME,
+ null, sc);
+
+ service.addColumnToLeaderboard(COLUMN1_NAME, LEADERBOARD_NAME, false,
+ new AsyncCallback() {
+
+ @Override
+ public void onFailure(Throwable caught) {
+ fail("Failed to add column to leaderboard.");
+ finishTest();
+ }
+
+ @Override
+ public void onSuccess(Void result) {
+ System.out.println("Added column to leaderboard.");
+ leaderboardPanel.addColumn(leaderboardPanel.createRaceColumn(COLUMN1_NAME, false, false));
+ linkTrackedRace();
+ }
+ });
+ }
+
+ private void linkTrackedRace(){
+ service.connectTrackedRaceToLeaderboardColumn(LEADERBOARD_NAME, COLUMN1_NAME, EVENT_NAME, TRACKED_RACE, new AsyncCallback() {
+
+ @Override
+ public void onFailure(Throwable caught) {
+ fail("Failed to link race.");
+ }
+
+ @Override
+ public void onSuccess(Void result) {
+ System.out.println("Linked race to column.");
+ getLeaderboard();
+ }
+ });
+ }
+
+ private void getLeaderboard(){
+ ArrayList al = new ArrayList();
+ al.add(COLUMN1_NAME);
+ service.getLeaderboardByName(LEADERBOARD_NAME, new Date(), al,
+ new AsyncCallback() {
+
+ @Override
+ public void onFailure(Throwable caught) {
+ fail("Failed to get leaderboard.");
+ finishTest();
+ }
+
+ @Override
+ public void onSuccess(LeaderboardDAO result) {
+ System.out.println("Got leaderboard.");
+
+ leaderboard = result;
+ leaderboardPanel.updateLeaderboard(leaderboard);
+ for (int i = 0; i < leaderboardPanel.getLeaderboardTable()
+ .getColumnCount(); i++) {
+ Column c = leaderboardPanel.getLeaderboardTable().getColumn(i);
+ if (c instanceof ExpandableSortableColumn>) {
+
+ rc = (ExpandableSortableColumn) c;
+ rc.setEnableLegDrillDown(true);
+ }
+ }
+ removeColumnAndAssert();
+ }
+ });
+ }
+
+ private void removeColumnAndAssert(){
+ service.removeLeaderboardColumn(LEADERBOARD_NAME, COLUMN1_NAME,
+ new AsyncCallback() {
+
+ @Override
+ public void onFailure(Throwable caught) {
+ fail("Failed to remoce column.");
+ finishTest();
+ }
+
+ @Override
+ public void onSuccess(Void result) {
+ leaderboardPanel.updateLeaderboard(leaderboard);
+ assertNotNull(rc);
+ try {
+ rc.toggleExpansion();
+ leaderboardPanel.updateLeaderboard(leaderboard);
+ } catch (Exception e) {
+ fail("Toggle column failed." + e.getLocalizedMessage());
+ }
+ finishTest();
+ }
+ });
+ }
+
+
+
+ @Override
+ protected void gwtTearDown() throws Exception {
+ // TODO Auto-generated method stub
+ super.gwtTearDown();
+ }
+
+ @Override
+ public String getModuleName() {
+ // TODO Auto-generated method stub
+ return "com.sap.sailing.gwt.ui.AdminConsole";
+ }
+
+}
diff --git a/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/ui/test/TestSailingService.java b/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/ui/test/TestSailingService.java
new file mode 100644
index 00000000000..4b6f6375dd0
--- /dev/null
+++ b/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/ui/test/TestSailingService.java
@@ -0,0 +1,10 @@
+package com.sap.sailing.gwt.ui.test;
+
+import com.google.gwt.user.client.rpc.RemoteServiceRelativePath;
+import com.sap.sailing.gwt.ui.client.SailingService;
+import com.sap.sailing.server.RacingEventService;
+
+@RemoteServiceRelativePath("testsailing")
+public interface TestSailingService extends SailingService {
+
+}
diff --git a/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/ui/test/TestSailingServiceAsync.java b/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/ui/test/TestSailingServiceAsync.java
new file mode 100644
index 00000000000..09d92fadd4c
--- /dev/null
+++ b/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/ui/test/TestSailingServiceAsync.java
@@ -0,0 +1,26 @@
+package com.sap.sailing.gwt.ui.test;
+
+import java.util.Collection;
+import java.util.Date;
+import java.util.List;
+import java.util.Map;
+
+import com.google.gwt.user.client.rpc.AsyncCallback;
+import com.sap.sailing.gwt.ui.client.SailingServiceAsync;
+import com.sap.sailing.gwt.ui.shared.CompetitorDAO;
+import com.sap.sailing.gwt.ui.shared.EventDAO;
+import com.sap.sailing.gwt.ui.shared.GPSFixDAO;
+import com.sap.sailing.gwt.ui.shared.LeaderboardDAO;
+import com.sap.sailing.gwt.ui.shared.LeaderboardEntryDAO;
+import com.sap.sailing.gwt.ui.shared.MarkDAO;
+import com.sap.sailing.gwt.ui.shared.Pair;
+import com.sap.sailing.gwt.ui.shared.QuickRankDAO;
+import com.sap.sailing.gwt.ui.shared.RaceRecordDAO;
+import com.sap.sailing.gwt.ui.shared.TracTracConfigurationDAO;
+import com.sap.sailing.gwt.ui.shared.WindDAO;
+import com.sap.sailing.gwt.ui.shared.WindInfoForRaceDAO;
+import com.sap.sailing.server.RacingEventService;
+
+public interface TestSailingServiceAsync extends SailingServiceAsync {
+
+}
diff --git a/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/ui/test/TestSailingServiceImpl.java b/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/ui/test/TestSailingServiceImpl.java
new file mode 100644
index 00000000000..cfbccfa9aab
--- /dev/null
+++ b/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/ui/test/TestSailingServiceImpl.java
@@ -0,0 +1,32 @@
+package com.sap.sailing.gwt.ui.test;
+
+import org.osgi.framework.BundleContext;
+import org.osgi.util.tracker.ServiceTracker;
+
+import com.sap.sailing.gwt.ui.server.SailingServiceImpl;
+import com.sap.sailing.server.RacingEventService;
+import com.sap.sailing.server.RacingEventServiceImpl;
+
+public class TestSailingServiceImpl extends SailingServiceImpl implements TestSailingService {
+ private static final long serialVersionUID = 3647254510616623048L;
+
+ private RacingEventService service;
+
+ public TestSailingServiceImpl(){
+ super();
+ service = new RacingEventServiceImpl();
+ }
+
+ public RacingEventService getService(){
+ return service;
+ }
+
+ @Override
+ protected ServiceTracker createAndOpenRacingEventServiceTracker(
+ BundleContext context) {
+ // TODO Auto-generated method stub
+ return null;
+ }
+
+
+}
diff --git a/java/com.sap.sailing.gwt.ui/src/main/resources/com/sap/sailing/gwt/ui/AdminConsole.gwt.xml b/java/com.sap.sailing.gwt.ui/src/main/resources/com/sap/sailing/gwt/ui/AdminConsole.gwt.xml
index 925d4e3ff69..faf3549accc 100755
--- a/java/com.sap.sailing.gwt.ui/src/main/resources/com/sap/sailing/gwt/ui/AdminConsole.gwt.xml
+++ b/java/com.sap.sailing.gwt.ui/src/main/resources/com/sap/sailing/gwt/ui/AdminConsole.gwt.xml
@@ -1,6 +1,6 @@
-
+
@@ -29,4 +29,8 @@
+
+
+
+
\ No newline at end of file