some resize magic :-)

This commit is contained in:
Axel Uhl committed 2012-12-06 00:24:11 +01:00
1 parent c8adb0880e
commit 02e2f10854
7 files changed
+79 -27

No files matched your search

@@ -19,8 +19,7 @@ import com.google.gwt.user.client.ui.Label;
import com.google.gwt.user.client.ui.RootPanel; import com.google.gwt.user.client.ui.RootPanel;
import com.google.gwt.user.client.ui.VerticalPanel; import com.google.gwt.user.client.ui.VerticalPanel;
public abstract class AbstractEntryPoint implements EntryPoint, ErrorReporter { public abstract class AbstractEntryPoint implements EntryPoint, ErrorReporter, WindowSizeDetector {
private DialogBox errorDialogBox; private DialogBox errorDialogBox;
private HTML serverResponseLabel; private HTML serverResponseLabel;
private Button dialogCloseButton; private Button dialogCloseButton;
@@ -76,13 +75,14 @@ public abstract class AbstractEntryPoint implements EntryPoint, ErrorReporter {
} }
} }
protected boolean isSmallWidth() { @Override
public boolean isSmallWidth() {
int width = Window.getClientWidth(); int width = Window.getClientWidth();
return width <= 720; return width <= 720;
} }
public void createErrorPage(String message) { public void createErrorPage(String message) {
LogoAndTitlePanel logoAndTitlePanel = new LogoAndTitlePanel(stringMessages, isSmallWidth()); LogoAndTitlePanel logoAndTitlePanel = new LogoAndTitlePanel(stringMessages, this);
logoAndTitlePanel.addStyleName("LogoAndTitlePanel"); logoAndTitlePanel.addStyleName("LogoAndTitlePanel");
RootPanel.get().add(logoAndTitlePanel); RootPanel.get().add(logoAndTitlePanel);
RootPanel.get().add(new Label(message)); RootPanel.get().add(new Label(message));
@@ -4,34 +4,55 @@ import com.google.gwt.safehtml.shared.SafeHtmlBuilder;
import com.google.gwt.user.client.ui.Anchor; import com.google.gwt.user.client.ui.Anchor;
import com.google.gwt.user.client.ui.FlowPanel; import com.google.gwt.user.client.ui.FlowPanel;
import com.google.gwt.user.client.ui.Label; import com.google.gwt.user.client.ui.Label;
import com.google.gwt.user.client.ui.RequiresResize;
public class LogoAndTitlePanel extends FlowPanel { public class LogoAndTitlePanel extends FlowPanel implements RequiresResize {
protected Label titleLabel; private final String title;
protected Label subTitleLabel; private final String subtitle;
private Label titleLabel;
private Label subTitleLabel;
private final Anchor sapLogo;
private boolean lastIsSmallWidth;
private final WindowSizeDetector windowSizeDetector;
private final StringMessages stringMessages;
public LogoAndTitlePanel(StringMessages stringConstants, boolean isSmallWidth) { public LogoAndTitlePanel(StringMessages stringConstants, WindowSizeDetector windowSizeDetector) {
this(null, null, stringConstants, isSmallWidth); this(null, null, stringConstants, windowSizeDetector);
} }
public LogoAndTitlePanel(String title, StringMessages stringConstants, boolean isSmallWidth) { public LogoAndTitlePanel(String title, StringMessages stringConstants, WindowSizeDetector windowSizeDetector) {
this(title, null, stringConstants, isSmallWidth); this(title, null, stringConstants, windowSizeDetector);
} }
public LogoAndTitlePanel(String title, String subTitle, StringMessages stringConstants, boolean isSmallWidth) { public LogoAndTitlePanel(String title, String subtitle, StringMessages stringMessages, WindowSizeDetector windowSizeDetector) {
Anchor sapLogo = new Anchor(new SafeHtmlBuilder().appendHtmlConstant( this.title = title;
this.subtitle = subtitle;
this.stringMessages = stringMessages;
this.windowSizeDetector = windowSizeDetector;
lastIsSmallWidth = windowSizeDetector.isSmallWidth();
sapLogo = new Anchor(new SafeHtmlBuilder().appendHtmlConstant(
"<img class=\"linkNoBorder\" src=\"/gwt/images/sap_66_transparent.png\"/>").toSafeHtml()); "<img class=\"linkNoBorder\" src=\"/gwt/images/sap_66_transparent.png\"/>").toSafeHtml());
sapLogo.setHref("http://www.sap.com"); sapLogo.setHref("http://www.sap.com");
sapLogo.addStyleName("sapLogo"); sapLogo.addStyleName("sapLogo");
this.add(sapLogo); this.add(sapLogo);
if (!isSmallWidth) { renderUI();
}
private void renderUI() {
for (int i=getWidgetCount()-1; i>=0; i--) {
if (getWidget(i) != sapLogo) {
remove(i);
}
}
if (!lastIsSmallWidth) {
FlowPanel sailingAnalyticsLabelPanel = new FlowPanel(); FlowPanel sailingAnalyticsLabelPanel = new FlowPanel();
Label sailingAnalyticsLabel = new Label(stringConstants.sapSailingAnalytics()); Label sailingAnalyticsLabel = new Label(stringMessages.sapSailingAnalytics());
sailingAnalyticsLabelPanel.add(sailingAnalyticsLabel); sailingAnalyticsLabelPanel.add(sailingAnalyticsLabel);
sailingAnalyticsLabelPanel.addStyleName("sailingAnalyticsLabelPanel"); sailingAnalyticsLabelPanel.addStyleName("sailingAnalyticsLabelPanel");
sailingAnalyticsLabel.addStyleName("sailingAnalyticsLabel boldLabel"); sailingAnalyticsLabel.addStyleName("sailingAnalyticsLabel boldLabel");
this.add(sailingAnalyticsLabelPanel); this.add(sailingAnalyticsLabelPanel);
} }
if (!isSmallWidth && title != null) { if (!lastIsSmallWidth && title != null) {
FlowPanel titleLabelWrapper = new FlowPanel(); FlowPanel titleLabelWrapper = new FlowPanel();
titleLabelWrapper.addStyleName("titleLabelWrapper"); titleLabelWrapper.addStyleName("titleLabelWrapper");
titleLabel = new Label(title); titleLabel = new Label(title);
@@ -39,10 +60,10 @@ public class LogoAndTitlePanel extends FlowPanel {
titleLabelWrapper.add(titleLabel); titleLabelWrapper.add(titleLabel);
this.add(titleLabelWrapper); this.add(titleLabelWrapper);
} }
if (subTitle != null) { if (subtitle != null) {
subTitleLabel = new Label(subTitle); subTitleLabel = new Label(subtitle);
FlowPanel subTitleLabelWrapper = new FlowPanel(); FlowPanel subTitleLabelWrapper = new FlowPanel();
if (isSmallWidth) { if (lastIsSmallWidth) {
subTitleLabelWrapper.addStyleName("titleLabelWrapper"); subTitleLabelWrapper.addStyleName("titleLabelWrapper");
subTitleLabel.addStyleName("titleLabelRight"); subTitleLabel.addStyleName("titleLabelRight");
} else { } else {
@@ -72,5 +93,14 @@ public class LogoAndTitlePanel extends FlowPanel {
if(subTitleLabel != null) { if(subTitleLabel != null) {
subTitleLabel.setText(subTitle); subTitleLabel.setText(subTitle);
} }
}
@Override
public void onResize() {
if (windowSizeDetector.isSmallWidth() != lastIsSmallWidth) {
lastIsSmallWidth = windowSizeDetector.isSmallWidth();
renderUI();
}
} }
} }
@@ -10,7 +10,6 @@ import com.google.gwt.dom.client.Style.Unit;
import com.google.gwt.user.client.Window; import com.google.gwt.user.client.Window;
import com.google.gwt.user.client.rpc.AsyncCallback; import com.google.gwt.user.client.rpc.AsyncCallback;
import com.google.gwt.user.client.ui.DockLayoutPanel; import com.google.gwt.user.client.ui.DockLayoutPanel;
import com.google.gwt.user.client.ui.FlowPanel;
import com.google.gwt.user.client.ui.Label; import com.google.gwt.user.client.ui.Label;
import com.google.gwt.user.client.ui.RootLayoutPanel; import com.google.gwt.user.client.ui.RootLayoutPanel;
import com.google.gwt.user.client.ui.RootPanel; import com.google.gwt.user.client.ui.RootPanel;
@@ -56,6 +55,7 @@ public class LeaderboardEntryPoint extends AbstractEntryPoint {
private static final String PARAM_NAME_LAST_N = "lastN"; private static final String PARAM_NAME_LAST_N = "lastN";
private String leaderboardName; private String leaderboardName;
private String leaderboardGroupName; private String leaderboardGroupName;
private GlobalNavigationPanel globalNavigationPanel;
@Override @Override
public void onModuleLoad() { public void onModuleLoad() {
@@ -95,10 +95,20 @@ public class LeaderboardEntryPoint extends AbstractEntryPoint {
if (leaderboardDisplayName == null || leaderboardDisplayName.isEmpty()) { if (leaderboardDisplayName == null || leaderboardDisplayName.isEmpty()) {
leaderboardDisplayName = leaderboardName; leaderboardDisplayName = leaderboardName;
} }
logoAndTitlePanel = new LogoAndTitlePanel(leaderboardGroupName, leaderboardDisplayName, stringMessages, isSmallWidth()); globalNavigationPanel = new GlobalNavigationPanel(stringMessages, true, null, leaderboardGroupName);
logoAndTitlePanel = new LogoAndTitlePanel(leaderboardGroupName, leaderboardDisplayName, stringMessages, this) {
@Override
public void onResize() {
super.onResize();
if (isSmallWidth()) {
remove(globalNavigationPanel);
} else {
add(globalNavigationPanel);
}
}
};
logoAndTitlePanel.addStyleName("LogoAndTitlePanel"); logoAndTitlePanel.addStyleName("LogoAndTitlePanel");
if (!isSmallWidth()) { if (!isSmallWidth()) {
FlowPanel globalNavigationPanel = new GlobalNavigationPanel(stringMessages, true, null, leaderboardGroupName);
logoAndTitlePanel.add(globalNavigationPanel); logoAndTitlePanel.add(globalNavigationPanel);
} }
mainPanel.addNorth(logoAndTitlePanel, 68); mainPanel.addNorth(logoAndTitlePanel, 68);
@@ -19,7 +19,7 @@ public class LeaderboardEditPage extends AbstractEntryPoint {
public void onSuccess(List<String> leaderboardNames) { public void onSuccess(List<String> leaderboardNames) {
String leaderboardName = Window.Location.getParameter("name"); String leaderboardName = Window.Location.getParameter("name");
if (leaderboardNames.contains(leaderboardName)) { if (leaderboardNames.contains(leaderboardName)) {
LogoAndTitlePanel logoAndTitlePanel = new LogoAndTitlePanel(stringMessages.editScores(), stringMessages, isSmallWidth()); LogoAndTitlePanel logoAndTitlePanel = new LogoAndTitlePanel(stringMessages.editScores(), stringMessages, LeaderboardEditPage.this);
logoAndTitlePanel.addStyleName("LogoAndTitlePanel"); logoAndTitlePanel.addStyleName("LogoAndTitlePanel");
EditableLeaderboardPanel leaderboardPanel = new EditableLeaderboardPanel(sailingService, new AsyncActionsExecutor(), leaderboardName, null, EditableLeaderboardPanel leaderboardPanel = new EditableLeaderboardPanel(sailingService, new AsyncActionsExecutor(), leaderboardName, null,
LeaderboardEditPage.this, stringMessages, userAgent); LeaderboardEditPage.this, stringMessages, userAgent);
@@ -36,6 +36,8 @@ public class RaceBoardEntryPoint extends AbstractEntryPoint {
private String leaderboardGroupName; private String leaderboardGroupName;
private RaceBoardViewModes viewMode; private RaceBoardViewModes viewMode;
private GlobalNavigationPanel globalNavigationPanel;
@Override @Override
public void onModuleLoad() { public void onModuleLoad() {
super.onModuleLoad(); super.onModuleLoad();
@@ -172,10 +174,20 @@ public class RaceBoardEntryPoint extends AbstractEntryPoint {
} }
private FlowPanel createLogoAndTitlePanel(RaceBoardPanel raceBoardPanel) { private FlowPanel createLogoAndTitlePanel(RaceBoardPanel raceBoardPanel) {
LogoAndTitlePanel logoAndTitlePanel = new LogoAndTitlePanel(regattaName, selectedRace.name, stringMessages, isSmallWidth()); globalNavigationPanel = new GlobalNavigationPanel(stringMessages, true, leaderboardName, leaderboardGroupName);
LogoAndTitlePanel logoAndTitlePanel = new LogoAndTitlePanel(regattaName, selectedRace.name, stringMessages, this) {
@Override
public void onResize() {
super.onResize();
if (isSmallWidth()) {
remove(globalNavigationPanel);
} else {
add(globalNavigationPanel);
}
}
};
logoAndTitlePanel.addStyleName("LogoAndTitlePanel"); logoAndTitlePanel.addStyleName("LogoAndTitlePanel");
if (!isSmallWidth()) { if (!isSmallWidth()) {
FlowPanel globalNavigationPanel = new GlobalNavigationPanel(stringMessages, true, leaderboardName, leaderboardGroupName);
logoAndTitlePanel.add(globalNavigationPanel); logoAndTitlePanel.add(globalNavigationPanel);
} }
return logoAndTitlePanel; return logoAndTitlePanel;
@@ -56,7 +56,7 @@ public class SpectatorEntryPoint extends AbstractEntryPoint implements RegattaRe
&& Window.Location.getParameter("embedded").equalsIgnoreCase("true"); && Window.Location.getParameter("embedded").equalsIgnoreCase("true");
if (!embedded) { if (!embedded) {
String title = groupName != null ? groupName : stringMessages.overview(); String title = groupName != null ? groupName : stringMessages.overview();
LogoAndTitlePanel logoAndTitlePanel = new LogoAndTitlePanel(title, stringMessages, isSmallWidth()); LogoAndTitlePanel logoAndTitlePanel = new LogoAndTitlePanel(title, stringMessages, this);
logoAndTitlePanel.addStyleName("LogoAndTitlePanel"); logoAndTitlePanel.addStyleName("LogoAndTitlePanel");
FlowPanel globalNavigationPanel = new GlobalNavigationPanel(stringMessages, true, null, null); FlowPanel globalNavigationPanel = new GlobalNavigationPanel(stringMessages, true, null, null);
logoAndTitlePanel.add(globalNavigationPanel); logoAndTitlePanel.add(globalNavigationPanel);
@@ -58,7 +58,7 @@ public class TVEntryPoint extends AbstractEntryPoint {
if(leaderboardDisplayName == null || leaderboardDisplayName.isEmpty()) { if(leaderboardDisplayName == null || leaderboardDisplayName.isEmpty()) {
leaderboardDisplayName = leaderboardName; leaderboardDisplayName = leaderboardName;
} }
logoAndTitlePanel = new LogoAndTitlePanel(leaderboardGroupName, leaderboardDisplayName, stringMessages, isSmallWidth()); logoAndTitlePanel = new LogoAndTitlePanel(leaderboardGroupName, leaderboardDisplayName, stringMessages, this);
logoAndTitlePanel.addStyleName("LogoAndTitlePanel"); logoAndTitlePanel.addStyleName("LogoAndTitlePanel");
mainPanel.addNorth(logoAndTitlePanel, 68); mainPanel.addNorth(logoAndTitlePanel, 68);
} }