extended the autoplay configuration page to create settings for 'perspectives' (raceboard, leaderboard) containing potentially multiple components

This commit is contained in:
fmittag committed 2015-12-03 18:30:31 +01:00
1 parent fe56759bf2
commit ab574bb15f
13 files changed
+325 -257

No files matched your search

@@ -24,6 +24,8 @@ import com.google.gwt.user.client.ui.ListBox;
import com.google.gwt.user.client.ui.TextBox;
import com.google.gwt.user.client.ui.Widget;
import com.google.web.bindery.event.shared.EventBus;
import com.sap.sailing.domain.common.dto.AbstractLeaderboardDTO;
import com.sap.sailing.domain.common.dto.RaceColumnDTO;
import com.sap.sailing.gwt.autoplay.client.app.PlaceNavigator;
import com.sap.sailing.gwt.autoplay.client.place.player.PlayerPlace;
import com.sap.sailing.gwt.autoplay.client.shared.header.SAPHeader;
@@ -31,12 +33,16 @@ import com.sap.sailing.gwt.common.client.SharedResources;
import com.sap.sailing.gwt.ui.client.StringMessages;
import com.sap.sailing.gwt.ui.client.shared.perspective.Perspective;
import com.sap.sailing.gwt.ui.client.shared.perspective.TabbedPerspectiveConfigurationDialog;
import com.sap.sailing.gwt.ui.leaderboard.LeaderboardPerspective;
import com.sap.sailing.gwt.ui.raceboard.RaceViewerPerspective;
import com.sap.sailing.gwt.ui.leaderboard.ProxyLeaderboardPerspective;
import com.sap.sailing.gwt.ui.leaderboard.LeaderboardSettings;
import com.sap.sailing.gwt.ui.leaderboard.LeaderboardSettingsFactory;
import com.sap.sailing.gwt.ui.raceboard.ProxyRaceViewerPerspective;
import com.sap.sailing.gwt.ui.shared.EventDTO;
import com.sap.sailing.gwt.ui.shared.LeaderboardGroupDTO;
import com.sap.sailing.gwt.ui.shared.StrippedLeaderboardDTO;
import com.sap.sse.gwt.client.dialog.DataEntryDialog.DialogCallback;
import com.sap.sse.gwt.client.event.LocaleChangeEvent;
import com.sap.sse.gwt.client.shared.components.CompositeSettings;
public class DesktopStartView extends Composite implements StartView {
private static StartPageViewUiBinder uiBinder = GWT.create(StartPageViewUiBinder.class);
@@ -69,13 +75,14 @@ public class DesktopStartView extends Composite implements StartView {
private Map<String, String> raceboardParameters;
private Map<String, String> leaderboardParameters;
private List<Perspective> supportedPerspectives;
private final List<Perspective> supportedPerspectives;
private LeaderboardPerspective leaderboardPerspective;
private RaceViewerPerspective raceViewerPerspective;
private ProxyLeaderboardPerspective leaderboardPerspective;
private ProxyRaceViewerPerspective raceViewerPerspective;
private final int defaultTimeToStartTimeInSeconds = 180;
private final Map<Perspective, CompositeSettings> perspectiveSettings;
public DesktopStartView(PlaceNavigator navigator, EventBus eventBus) {
super();
this.navigator = navigator;
@@ -93,11 +100,7 @@ public class DesktopStartView extends Composite implements StartView {
localeSelectionBox = new ListBox();
localeSelectionBox.setMultipleSelect(false);
leaderboardPerspective = new LeaderboardPerspective();
raceViewerPerspective = new RaceViewerPerspective();
supportedPerspectives.add(leaderboardPerspective);
supportedPerspectives.add(raceViewerPerspective);
perspectiveSettings = new HashMap<>();
LocaleInfo currentLocale = LocaleInfo.getCurrentLocale();
int i = 0;
@@ -130,8 +133,28 @@ public class DesktopStartView extends Composite implements StartView {
startAutoPlayButton.addStyleName(SharedResources.INSTANCE.mainCss().buttoninactive());
}
private void openPerspectiveConfigurationDialog(Perspective perspective) {
TabbedPerspectiveConfigurationDialog dialog = new TabbedPerspectiveConfigurationDialog(StringMessages.INSTANCE, perspective);
private void updatePerspectives(AbstractLeaderboardDTO leaderboard) {
leaderboardPerspective = new ProxyLeaderboardPerspective(leaderboard, createDefaultLeaderboardSettings(leaderboard));
raceViewerPerspective = new ProxyRaceViewerPerspective(leaderboard, createDefaultLeaderboardSettings(leaderboard));
perspectiveSettings.clear();
supportedPerspectives.clear();
supportedPerspectives.add(leaderboardPerspective);
supportedPerspectives.add(raceViewerPerspective);
}
private void openPerspectiveConfigurationDialog(final Perspective perspective) {
TabbedPerspectiveConfigurationDialog dialog = new TabbedPerspectiveConfigurationDialog(StringMessages.INSTANCE,
perspective, new DialogCallback<CompositeSettings>() {
@Override
public void cancel() {
}
@Override
public void ok(CompositeSettings newSettings) {
perspectiveSettings.put(perspective, newSettings);
}
});
dialog.show();
}
@@ -169,9 +192,7 @@ public class DesktopStartView extends Composite implements StartView {
startAutoPlayButton.removeStyleName(SharedResources.INSTANCE.mainCss().buttoninactive());
StrippedLeaderboardDTO selectedLeaderboard = getSelectedLeaderboard();
leaderboardPerspective.setLeaderboard(selectedLeaderboard);
raceViewerPerspective.setLeaderboard(selectedLeaderboard);
this.updatePerspectives(selectedLeaderboard);
perspectiveConfigurationPanel.clear();
for(final Perspective perspective: supportedPerspectives) {
@@ -217,6 +238,17 @@ public class DesktopStartView extends Composite implements StartView {
}
}
private LeaderboardSettings createDefaultLeaderboardSettings(AbstractLeaderboardDTO leaderboard) {
List<String> namesOfRaceColumnsToShow = new ArrayList<String>();
for (RaceColumnDTO raceColumn : leaderboard.getRaceList()) {
namesOfRaceColumnsToShow.add(raceColumn.getName());
}
return LeaderboardSettingsFactory.getInstance().createNewDefaultSettings(
namesOfRaceColumnsToShow, /* namesOfRacesToShow */null, /* nameOfRaceToSort */null, /* autoExpandPreSelectedRace */
false, /* showRegattaRank */ true);
}
private String getLeaderboardZoom() {
return leaderboardAutoZoomBox.getValue() == true ? "auto" : String.valueOf(leaderboardZoomBox.getValue());
}
@@ -1,87 +0,0 @@
package com.sap.sailing.gwt.autoplay.client.place.start;
import java.util.ArrayList;
import java.util.List;
import com.google.gwt.user.client.ui.Widget;
import com.sap.sailing.domain.common.dto.AbstractLeaderboardDTO;
import com.sap.sailing.domain.common.dto.RaceColumnDTO;
import com.sap.sailing.gwt.ui.client.StringMessages;
import com.sap.sailing.gwt.ui.leaderboard.ExplicitRaceColumnSelection;
import com.sap.sailing.gwt.ui.leaderboard.LeaderboardSettings;
import com.sap.sailing.gwt.ui.leaderboard.LeaderboardSettingsDialogComponent;
import com.sap.sailing.gwt.ui.leaderboard.LeaderboardSettingsFactory;
import com.sap.sse.gwt.client.shared.components.Component;
import com.sap.sse.gwt.client.shared.components.SettingsDialog;
import com.sap.sse.gwt.client.shared.components.SettingsDialogComponent;
public class LeaderboardSettingsDialog extends SettingsDialog<LeaderboardSettings> {
public LeaderboardSettingsDialog(AbstractLeaderboardDTO leaderboard, StringMessages stringMessages, DialogCallback<LeaderboardSettings> callback) {
super(new ProxyLeaderboardComponent(leaderboard, stringMessages), stringMessages, callback);
}
public static class ProxyLeaderboardComponent implements Component<LeaderboardSettings> {
private final StringMessages stringMessages;
private final LeaderboardSettingsDialogComponent settingsDialogComponent;
public ProxyLeaderboardComponent(AbstractLeaderboardDTO leaderboard, StringMessages stringMessages) {
this.stringMessages = stringMessages;
List<RaceColumnDTO> raceList = leaderboard.getRaceList();
List<String> namesOfRaceColumnsToShow = new ArrayList<String>();
for (RaceColumnDTO raceColumn : raceList) {
namesOfRaceColumnsToShow.add(raceColumn.getName());
}
LeaderboardSettings settings = LeaderboardSettingsFactory.getInstance().createNewDefaultSettings(
namesOfRaceColumnsToShow, /* namesOfRacesToShow */null, /* nameOfRaceToSort */null, /* autoExpandPreSelectedRace */
false, /* showRegattaRank */ true);
this.settingsDialogComponent = new LeaderboardSettingsDialogComponent(settings.getManeuverDetailsToShow(),
settings.getLegDetailsToShow(), settings.getRaceDetailsToShow(), settings.getOverallDetailsToShow(), raceList,
/* select all races by default */ raceList, new ExplicitRaceColumnSelection(),
/* autoExpandPreSelectedRace */ false, settings.isShowAddedScores(),
/* delayBetweenAutoAdvancesInMilliseconds */ 3000l, settings.isShowOverallColumnWithNumberOfRacesCompletedPerCompetitor(),
settings.isShowCompetitorSailIdColumn(), settings.isShowCompetitorFullNameColumn(), stringMessages);
}
@Override
public boolean hasSettings() {
return true;
}
@Override
public SettingsDialogComponent<LeaderboardSettings> getSettingsDialogComponent() {
return settingsDialogComponent;
}
@Override
public void updateSettings(LeaderboardSettings newSettings) {
// no-op; the resulting URL has already been updated to the anchor in the dialog
}
@Override
public String getLocalizedShortName() {
return stringMessages.leaderboardConfiguration();
}
@Override
public Widget getEntryWidget() {
throw new UnsupportedOperationException(
"Internal error. This settings dialog does not actually belong to a LeaderboardPanel");
}
@Override
public boolean isVisible() {
return false;
}
@Override
public void setVisible(boolean visibility) {
// no-op
}
@Override
public String getDependentCssClassName() {
return "leaderboardSettingsDialog";
}
}
}
@@ -0,0 +1,71 @@
package com.sap.sailing.gwt.autoplay.client.place.start;
import java.util.List;
import com.google.gwt.user.client.ui.Widget;
import com.sap.sailing.domain.common.dto.AbstractLeaderboardDTO;
import com.sap.sailing.domain.common.dto.RaceColumnDTO;
import com.sap.sailing.gwt.ui.client.StringMessages;
import com.sap.sailing.gwt.ui.leaderboard.ExplicitRaceColumnSelection;
import com.sap.sailing.gwt.ui.leaderboard.LeaderboardSettings;
import com.sap.sailing.gwt.ui.leaderboard.LeaderboardSettingsDialogComponent;
import com.sap.sse.gwt.client.shared.components.Component;
import com.sap.sse.gwt.client.shared.components.SettingsDialogComponent;
public class ProxyLeaderboardComponent implements Component<LeaderboardSettings> {
private final StringMessages stringMessages;
private LeaderboardSettings settings;
private final List<RaceColumnDTO> raceList;
public ProxyLeaderboardComponent(LeaderboardSettings settings, AbstractLeaderboardDTO leaderboard, StringMessages stringMessages) {
this.settings = settings;
this.stringMessages = stringMessages;
raceList = leaderboard.getRaceList();
}
@Override
public boolean hasSettings() {
return true;
}
@Override
public SettingsDialogComponent<LeaderboardSettings> getSettingsDialogComponent() {
return new LeaderboardSettingsDialogComponent(settings.getManeuverDetailsToShow(),
settings.getLegDetailsToShow(), settings.getRaceDetailsToShow(), settings.getOverallDetailsToShow(), raceList,
/* select all races by default */ raceList, new ExplicitRaceColumnSelection(),
/* autoExpandPreSelectedRace */ false, settings.isShowAddedScores(),
/* delayBetweenAutoAdvancesInMilliseconds */ 3000l, settings.isShowOverallColumnWithNumberOfRacesCompletedPerCompetitor(),
settings.isShowCompetitorSailIdColumn(), settings.isShowCompetitorFullNameColumn(), stringMessages);
}
@Override
public void updateSettings(LeaderboardSettings newSettings) {
this.settings = newSettings;
}
@Override
public String getLocalizedShortName() {
return stringMessages.leaderboardConfiguration();
}
@Override
public Widget getEntryWidget() {
throw new UnsupportedOperationException(
"Internal error. This settings dialog does not actually belong to a LeaderboardPanel");
}
@Override
public boolean isVisible() {
return false;
}
@Override
public void setVisible(boolean visibility) {
// no-op
}
@Override
public String getDependentCssClassName() {
return "leaderboardSettingsDialog";
}
}
@@ -0,0 +1,59 @@
package com.sap.sailing.gwt.autoplay.client.place.start;
import com.google.gwt.user.client.ui.Widget;
import com.sap.sailing.gwt.ui.client.StringMessages;
import com.sap.sailing.gwt.ui.client.shared.racemap.RaceMapSettings;
import com.sap.sailing.gwt.ui.client.shared.racemap.RaceMapSettingsDialogComponent;
import com.sap.sse.gwt.client.shared.components.Component;
import com.sap.sse.gwt.client.shared.components.SettingsDialogComponent;
public class ProxyRaceMapComponent implements Component<RaceMapSettings> {
private final StringMessages stringMessages;
private RaceMapSettings settings;
public ProxyRaceMapComponent(RaceMapSettings raceMapSettings, StringMessages stringMessages) {
this.settings = raceMapSettings;
this.stringMessages = stringMessages;
}
@Override
public boolean hasSettings() {
return true;
}
@Override
public SettingsDialogComponent<RaceMapSettings> getSettingsDialogComponent() {
return new RaceMapSettingsDialogComponent(settings, stringMessages, false);
}
@Override
public void updateSettings(RaceMapSettings newSettings) {
this.settings = newSettings;
}
@Override
public String getLocalizedShortName() {
return stringMessages.settingsForComponent(stringMessages.map());
}
@Override
public Widget getEntryWidget() {
throw new UnsupportedOperationException(
"Internal error. This settings dialog does not actually belong to a RaceMap");
}
@Override
public boolean isVisible() {
return false;
}
@Override
public void setVisible(boolean visibility) {
// no-op
}
@Override
public String getDependentCssClassName() {
return "raceMapSettingsDialog";
}
}
@@ -0,0 +1,59 @@
package com.sap.sailing.gwt.autoplay.client.place.start;
import com.google.gwt.user.client.ui.Widget;
import com.sap.sailing.gwt.ui.client.StringMessages;
import com.sap.sailing.gwt.ui.client.shared.charts.WindChartSettings;
import com.sap.sailing.gwt.ui.client.shared.charts.WindChartSettingsDialogComponent;
import com.sap.sse.gwt.client.shared.components.Component;
import com.sap.sse.gwt.client.shared.components.SettingsDialogComponent;
public class ProxyWindChartComponent implements Component<WindChartSettings> {
private final StringMessages stringMessages;
private WindChartSettings settings;
public ProxyWindChartComponent(WindChartSettings settings, StringMessages stringMessages) {
this.settings = settings;
this.stringMessages = stringMessages;
}
@Override
public boolean hasSettings() {
return true;
}
@Override
public SettingsDialogComponent<WindChartSettings> getSettingsDialogComponent() {
return new WindChartSettingsDialogComponent(settings, stringMessages);
}
@Override
public void updateSettings(WindChartSettings newSettings) {
this.settings = newSettings;
}
@Override
public String getLocalizedShortName() {
return stringMessages.settingsForComponent(stringMessages.windChart());
}
@Override
public Widget getEntryWidget() {
throw new UnsupportedOperationException(
"Internal error. This settings dialog does not actually belong to a wind chart");
}
@Override
public boolean isVisible() {
return false;
}
@Override
public void setVisible(boolean visibility) {
// no-op
}
@Override
public String getDependentCssClassName() {
return "windChartSettingsDialog";
}
}
@@ -1,67 +0,0 @@
package com.sap.sailing.gwt.autoplay.client.place.start;
import com.google.gwt.user.client.ui.Widget;
import com.sap.sailing.gwt.ui.client.StringMessages;
import com.sap.sailing.gwt.ui.client.shared.racemap.RaceMapSettings;
import com.sap.sailing.gwt.ui.client.shared.racemap.RaceMapSettingsDialogComponent;
import com.sap.sse.gwt.client.shared.components.Component;
import com.sap.sse.gwt.client.shared.components.SettingsDialog;
import com.sap.sse.gwt.client.shared.components.SettingsDialogComponent;
public class RaceMapSettingsDialog extends SettingsDialog<RaceMapSettings> {
public RaceMapSettingsDialog(RaceMapSettings raceMapSettings, StringMessages stringMessages, DialogCallback<RaceMapSettings> callback) {
super(new ProxyRaceMapComponent(raceMapSettings, stringMessages), stringMessages, callback);
}
public static class ProxyRaceMapComponent implements Component<RaceMapSettings> {
private final StringMessages stringMessages;
private final RaceMapSettingsDialogComponent settingsDialogComponent;
public ProxyRaceMapComponent(RaceMapSettings raceMapSettings, StringMessages stringMessages) {
this.stringMessages = stringMessages;
this.settingsDialogComponent = new RaceMapSettingsDialogComponent(raceMapSettings, stringMessages, false);
}
@Override
public boolean hasSettings() {
return true;
}
@Override
public SettingsDialogComponent<RaceMapSettings> getSettingsDialogComponent() {
return settingsDialogComponent;
}
@Override
public void updateSettings(RaceMapSettings newSettings) {
// no-op; the resulting URL has already been updated to the anchor in the dialog
}
@Override
public String getLocalizedShortName() {
return stringMessages.settingsForComponent(stringMessages.map());
}
@Override
public Widget getEntryWidget() {
throw new UnsupportedOperationException(
"Internal error. This settings dialog does not actually belong to a RaceMap");
}
@Override
public boolean isVisible() {
return false;
}
@Override
public void setVisible(boolean visibility) {
// no-op
}
@Override
public String getDependentCssClassName() {
return "raceMapSettingsDialog";
}
}
}
@@ -0,0 +1,25 @@
package com.sap.sailing.gwt.ui.client.shared.perspective;
import java.util.ArrayList;
import java.util.List;
import com.sap.sse.gwt.client.shared.components.Component;
/**
* An abstract base class for perspectives.
* @author Frank
*
*/
public abstract class AbstractPerspective implements Perspective {
protected final List<Component<?>> components;
public AbstractPerspective() {
components = new ArrayList<Component<?>>();
}
@Override
public Iterable<Component<?>> getComponents() {
return components;
}
}
@@ -1,6 +1,7 @@
package com.sap.sailing.gwt.ui.client.shared.perspective;
import com.sap.sailing.gwt.ui.client.StringMessages;
import com.sap.sse.gwt.client.shared.components.CompositeSettings;
import com.sap.sse.gwt.client.shared.components.CompositeTabbedSettingsDialog;
/**
@@ -9,8 +10,12 @@ import com.sap.sse.gwt.client.shared.components.CompositeTabbedSettingsDialog;
*
*/
public class TabbedPerspectiveConfigurationDialog extends CompositeTabbedSettingsDialog {
public TabbedPerspectiveConfigurationDialog(StringMessages stringConstants, Perspective perspective) {
super(stringConstants, perspective.getComponents(), perspective.getPerspectiveName());
}
public TabbedPerspectiveConfigurationDialog(StringMessages stringConstants, Perspective perspective, DialogCallback<CompositeSettings> callback) {
super(stringConstants, perspective.getComponents(), perspective.getPerspectiveName(), callback);
}
}
@@ -1,40 +0,0 @@
package com.sap.sailing.gwt.ui.leaderboard;
import java.util.ArrayList;
import java.util.List;
import com.sap.sailing.domain.common.dto.AbstractLeaderboardDTO;
import com.sap.sailing.gwt.autoplay.client.place.start.LeaderboardSettingsDialog.ProxyLeaderboardComponent;
import com.sap.sailing.gwt.ui.client.StringMessages;
import com.sap.sailing.gwt.ui.client.shared.perspective.Perspective;
import com.sap.sse.gwt.client.shared.components.Component;
/**
* A perspective containing only a LeaderboardPanel
* @author Frank
*
*/
public class LeaderboardPerspective implements Perspective {
private final List<Component<?>> components;
public LeaderboardPerspective() {
components = new ArrayList<Component<?>>();
}
public void setLeaderboard(AbstractLeaderboardDTO leaderboard) {
components.clear();
components.add(new ProxyLeaderboardComponent(leaderboard, StringMessages.INSTANCE));
}
@Override
public Iterable<Component<?>> getComponents() {
return components;
}
@Override
public String getPerspectiveName() {
return StringMessages.INSTANCE.leaderboard();
}
}
@@ -0,0 +1,23 @@
package com.sap.sailing.gwt.ui.leaderboard;
import com.sap.sailing.domain.common.dto.AbstractLeaderboardDTO;
import com.sap.sailing.gwt.autoplay.client.place.start.ProxyLeaderboardComponent;
import com.sap.sailing.gwt.ui.client.StringMessages;
import com.sap.sailing.gwt.ui.client.shared.perspective.AbstractPerspective;
/**
* A proxy perspective containing a proxy component for the LeaderboardPanel
* @author Frank
*
*/
public class ProxyLeaderboardPerspective extends AbstractPerspective {
public ProxyLeaderboardPerspective(AbstractLeaderboardDTO leaderboard, LeaderboardSettings defaultLeaderboardSettings) {
super();
components.add(new ProxyLeaderboardComponent(defaultLeaderboardSettings, leaderboard, StringMessages.INSTANCE));
}
@Override
public String getPerspectiveName() {
return StringMessages.INSTANCE.leaderboard();
}
}
@@ -0,0 +1,30 @@
package com.sap.sailing.gwt.ui.raceboard;
import com.sap.sailing.domain.common.dto.AbstractLeaderboardDTO;
import com.sap.sailing.gwt.autoplay.client.place.start.ProxyLeaderboardComponent;
import com.sap.sailing.gwt.autoplay.client.place.start.ProxyRaceMapComponent;
import com.sap.sailing.gwt.autoplay.client.place.start.ProxyWindChartComponent;
import com.sap.sailing.gwt.ui.client.StringMessages;
import com.sap.sailing.gwt.ui.client.shared.charts.WindChartSettings;
import com.sap.sailing.gwt.ui.client.shared.perspective.AbstractPerspective;
import com.sap.sailing.gwt.ui.client.shared.racemap.RaceMapSettings;
import com.sap.sailing.gwt.ui.leaderboard.LeaderboardSettings;
/**
* A proxy perspective containing proxy components for all components of a race viewer with all components like map, leaderboard, charts, etc.
* @author Frank
*
*/
public class ProxyRaceViewerPerspective extends AbstractPerspective {
public ProxyRaceViewerPerspective(AbstractLeaderboardDTO leaderboard, LeaderboardSettings defaultLeaderboardSettings) {
super();
components.add(new ProxyRaceMapComponent(new RaceMapSettings(), StringMessages.INSTANCE));
components.add(new ProxyWindChartComponent(new WindChartSettings(), StringMessages.INSTANCE));
components.add(new ProxyLeaderboardComponent(defaultLeaderboardSettings, leaderboard, StringMessages.INSTANCE));
}
@Override
public String getPerspectiveName() {
return "Race Viewer";
}
}
@@ -1,41 +0,0 @@
package com.sap.sailing.gwt.ui.raceboard;
import java.util.ArrayList;
import java.util.List;
import com.sap.sailing.domain.common.dto.AbstractLeaderboardDTO;
import com.sap.sailing.gwt.autoplay.client.place.start.LeaderboardSettingsDialog.ProxyLeaderboardComponent;
import com.sap.sailing.gwt.autoplay.client.place.start.RaceMapSettingsDialog.ProxyRaceMapComponent;
import com.sap.sailing.gwt.ui.client.StringMessages;
import com.sap.sailing.gwt.ui.client.shared.perspective.Perspective;
import com.sap.sailing.gwt.ui.client.shared.racemap.RaceMapSettings;
import com.sap.sse.gwt.client.shared.components.Component;
/**
* A perspective containing a race viewer with all components like map, leaderboard, charts, etc.
* @author Frank
*
*/
public class RaceViewerPerspective implements Perspective {
private final List<Component<?>> components;
public RaceViewerPerspective() {
components = new ArrayList<Component<?>>();
}
public void setLeaderboard(AbstractLeaderboardDTO leaderboard) {
components.clear();
components.add(new ProxyRaceMapComponent(new RaceMapSettings(), StringMessages.INSTANCE));
components.add(new ProxyLeaderboardComponent(leaderboard, StringMessages.INSTANCE));
}
@Override
public Iterable<Component<?>> getComponents() {
return components;
}
@Override
public String getPerspectiveName() {
return "Race Viewer";
}
}
@@ -10,13 +10,12 @@ import com.sap.sse.gwt.client.StringMessages;
*
*/
public class CompositeTabbedSettingsDialog extends SettingsDialog<CompositeSettings> {
public CompositeTabbedSettingsDialog(StringMessages stringConstants, final Iterable<Component<?>> components) {
this(stringConstants, components, null);
}
public CompositeTabbedSettingsDialog(StringMessages stringConstants, final Iterable<Component<?>> components, final String title) {
super(new CompositeTabbedSettingsComponent(components, title), stringConstants);
}
public CompositeTabbedSettingsDialog(StringMessages stringConstants, final Iterable<Component<?>> components, final String title, DialogCallback<CompositeSettings> callback) {
super(new CompositeTabbedSettingsComponent(components, title), stringConstants, callback);
}
}