Quick fix for the settings for touch devices

This commit is contained in:
Lennart Hensler
2012-03-17 12:18:16 +01:00
parent 1b50761e06
commit a1ae967cab
2 changed files with 60 additions and 15 deletions
@@ -4,12 +4,14 @@ import java.util.ArrayList;
import java.util.Collections;
import java.util.List;
import com.google.gwt.dom.client.Style;
import com.google.gwt.dom.client.Style.Unit;
import com.google.gwt.user.client.Window;
import com.google.gwt.user.client.ui.DockLayoutPanel;
import com.google.gwt.user.client.ui.FlowPanel;
import com.google.gwt.user.client.ui.RootLayoutPanel;
import com.google.gwt.user.client.ui.RootPanel;
import com.google.gwt.user.client.ui.Widget;
import com.sap.sailing.domain.common.DefaultLeaderboardName;
import com.sap.sailing.domain.common.RaceIdentifier;
import com.sap.sailing.domain.common.impl.Util.Pair;
@@ -242,11 +244,16 @@ public class RaceBoardEntryPoint extends AbstractEntryPoint {
RootLayoutPanel.get().add(p);
FlowPanel breadcrumbPanel = createBreadcrumbPanel();
//TODO Quickfix for touch devices
Widget settingsWidget = raceBoardPanel.getSettingsWidget();
settingsWidget.getElement().getStyle().setFloat(Style.Float.LEFT);
breadcrumbPanel.add(settingsWidget);
//
FlowPanel logoAndTitlePanel = createLogoAndTitlePanel(raceBoardPanel);
FlowPanel timePanel = createTimePanel(raceBoardPanel);
p.addNorth(logoAndTitlePanel, 68);
p.addNorth(breadcrumbPanel,30);
p.addNorth(breadcrumbPanel,60);
p.addSouth(timePanel, 122);
p.add(raceBoardPanel);
}
@@ -13,8 +13,10 @@ import com.google.gwt.event.dom.client.ClickHandler;
import com.google.gwt.user.client.Command;
import com.google.gwt.user.client.Window;
import com.google.gwt.user.client.ui.Anchor;
import com.google.gwt.user.client.ui.Button;
import com.google.gwt.user.client.ui.FlowPanel;
import com.google.gwt.user.client.ui.FormPanel;
import com.google.gwt.user.client.ui.Label;
import com.google.gwt.user.client.ui.MenuBar;
import com.google.gwt.user.client.ui.ToggleButton;
import com.google.gwt.user.client.ui.Widget;
@@ -78,6 +80,7 @@ public class RaceBoardPanel extends FormPanel implements EventDisplayer, RaceSel
private final List<ComponentViewer> componentViewers;
private FlowPanel componentsNavigationPanel;
private FlowPanel settingsPanel;
private RaceTimePanel timePanel;
private final Timer timer;
private final RaceSelectionProvider raceSelectionProvider;
@@ -182,21 +185,34 @@ public class RaceBoardPanel extends FormPanel implements EventDisplayer, RaceSel
mainPanel.add(componentViewer.getViewerWidget());
}
MenuBar mainMenu = new MenuBar();
mainMenu.setStyleName("raceBoardNavigation-navigationitem");
MenuBar settingsMenu = new MenuBar(true);
mainMenu.addItem("Settings", settingsMenu);
addSettingsMenuItem(settingsMenu, leaderboardPanel);
addSettingsMenuItem(settingsMenu, raceMap);
addSettingsMenuItem(settingsMenu, windChart);
addSettingsMenuItem(settingsMenu, competitorChart);
//TODO binding of settings to the user agent
// MenuBar mainMenu = new MenuBar();
// mainMenu.setStyleName("raceBoardNavigation-navigationitem");
// MenuBar settingsMenu = new MenuBar(true);
// mainMenu.addItem("Settings", settingsMenu);
//
// addSettingsMenuItem(settingsMenu, leaderboardPanel);
// addSettingsMenuItem(settingsMenu, raceMap);
// addSettingsMenuItem(settingsMenu, windChart);
// addSettingsMenuItem(settingsMenu, competitorChart);
//
// mainMenu.getElement().getStyle().setFloat(Style.Float.LEFT);
// mainMenu.getElement().getStyle().setPadding(3, Style.Unit.PX);
// mainMenu.getElement().getStyle().setMargin(3, Style.Unit.PX);
//
// componentsNavigationPanel.add(mainMenu);
settingsPanel = new FlowPanel();
settingsPanel.addStyleName("raceBoardNavigation-settingsButtonPanel");
Label settingsLabel = new Label("Settings: ");
settingsLabel.addStyleName("raceBoardNavigation-settingsLabel");
settingsLabel.getElement().getStyle().setFloat(Style.Float.LEFT);
settingsLabel.getElement().getStyle().setPadding(3, Style.Unit.PX);
settingsPanel.add(settingsLabel);
mainMenu.getElement().getStyle().setFloat(Style.Float.LEFT);
mainMenu.getElement().getStyle().setPadding(3, Style.Unit.PX);
mainMenu.getElement().getStyle().setMargin(3, Style.Unit.PX);
componentsNavigationPanel.add(mainMenu);
addSettingsMenuButton(settingsPanel, leaderboardPanel);
addSettingsMenuButton(settingsPanel, raceMap);
addSettingsMenuButton(settingsPanel, windChart);
addSettingsMenuButton(settingsPanel, competitorChart);
addComponentAsToogleButtonToNavigationMenu(leaderboardAndMapViewer, leaderboardPanel);
//addComponentAsToogleButtonToNavigationMenu(leaderboardAndMapViewer, raceMap);
@@ -205,6 +221,7 @@ public class RaceBoardPanel extends FormPanel implements EventDisplayer, RaceSel
}
@SuppressWarnings("unused")
private <SettingsType> void addSettingsMenuItem(MenuBar settingsMenu, final Component<SettingsType> component) {
if(component.hasSettings()) {
settingsMenu.addItem(component.getLocalizedShortName(), new Command() {
@@ -215,6 +232,23 @@ public class RaceBoardPanel extends FormPanel implements EventDisplayer, RaceSel
}
}
private <SettingsType> void addSettingsMenuButton(FlowPanel settingsPanel, final Component<SettingsType> component) {
if(component.hasSettings()) {
Button settingsButton = new Button(component.getLocalizedShortName());
settingsButton.addClickHandler(new ClickHandler() {
@Override
public void onClick(ClickEvent event) {
new SettingsDialog<SettingsType>(component, stringMessages).show();
}
});
settingsButton.addStyleName("raceBoardNavigation-settingsButton");
settingsButton.getElement().getStyle().setFloat(Style.Float.LEFT);
settingsButton.getElement().getStyle().setPadding(3, Style.Unit.PX);
settingsPanel.add(settingsButton);
}
}
private void createCascadingView(String leaderboardName, String leaderboardGroupName, FlowPanel mainPanel) {
boolean showLeaderboard = true;
boolean showMap = true;
@@ -384,6 +418,10 @@ public class RaceBoardPanel extends FormPanel implements EventDisplayer, RaceSel
public Widget getNavigationWidget() {
return componentsNavigationPanel;
}
public Widget getSettingsWidget() {
return settingsPanel;
}
public Widget getTimeWidget() {
return timePanel;