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.VerticalPanel;
public abstract class AbstractEntryPoint implements EntryPoint, ErrorReporter {
public abstract class AbstractEntryPoint implements EntryPoint, ErrorReporter, WindowSizeDetector {
private DialogBox errorDialogBox;
private HTML serverResponseLabel;
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();
return width <= 720;
}
public void createErrorPage(String message) {
LogoAndTitlePanel logoAndTitlePanel = new LogoAndTitlePanel(stringMessages, isSmallWidth());
LogoAndTitlePanel logoAndTitlePanel = new LogoAndTitlePanel(stringMessages, this);
logoAndTitlePanel.addStyleName("LogoAndTitlePanel");
RootPanel.get().add(logoAndTitlePanel);
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.FlowPanel;
import com.google.gwt.user.client.ui.Label;
import com.google.gwt.user.client.ui.RequiresResize;
public class LogoAndTitlePanel extends FlowPanel {
protected Label titleLabel;
protected Label subTitleLabel;
public class LogoAndTitlePanel extends FlowPanel implements RequiresResize {
private final String title;
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) {
this(null, null, stringConstants, isSmallWidth);
public LogoAndTitlePanel(StringMessages stringConstants, WindowSizeDetector windowSizeDetector) {
this(null, null, stringConstants, windowSizeDetector);
}
public LogoAndTitlePanel(String title, StringMessages stringConstants, boolean isSmallWidth) {
this(title, null, stringConstants, isSmallWidth);
public LogoAndTitlePanel(String title, StringMessages stringConstants, WindowSizeDetector windowSizeDetector) {
this(title, null, stringConstants, windowSizeDetector);
}
public LogoAndTitlePanel(String title, String subTitle, StringMessages stringConstants, boolean isSmallWidth) {
Anchor sapLogo = new Anchor(new SafeHtmlBuilder().appendHtmlConstant(
public LogoAndTitlePanel(String title, String subtitle, StringMessages stringMessages, WindowSizeDetector windowSizeDetector) {
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());
sapLogo.setHref("http://www.sap.com");
sapLogo.addStyleName("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();
Label sailingAnalyticsLabel = new Label(stringConstants.sapSailingAnalytics());
Label sailingAnalyticsLabel = new Label(stringMessages.sapSailingAnalytics());
sailingAnalyticsLabelPanel.add(sailingAnalyticsLabel);
sailingAnalyticsLabelPanel.addStyleName("sailingAnalyticsLabelPanel");
sailingAnalyticsLabel.addStyleName("sailingAnalyticsLabel boldLabel");
this.add(sailingAnalyticsLabelPanel);
}
if (!isSmallWidth && title != null) {
if (!lastIsSmallWidth && title != null) {
FlowPanel titleLabelWrapper = new FlowPanel();
titleLabelWrapper.addStyleName("titleLabelWrapper");
titleLabel = new Label(title);
@@ -39,10 +60,10 @@ public class LogoAndTitlePanel extends FlowPanel {
titleLabelWrapper.add(titleLabel);
this.add(titleLabelWrapper);
}
if (subTitle != null) {
subTitleLabel = new Label(subTitle);
if (subtitle != null) {
subTitleLabel = new Label(subtitle);
FlowPanel subTitleLabelWrapper = new FlowPanel();
if (isSmallWidth) {
if (lastIsSmallWidth) {
subTitleLabelWrapper.addStyleName("titleLabelWrapper");
subTitleLabel.addStyleName("titleLabelRight");
} else {
@@ -72,5 +93,14 @@ public class LogoAndTitlePanel extends FlowPanel {
if(subTitleLabel != null) {
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.rpc.AsyncCallback;
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.RootLayoutPanel;
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 String leaderboardName;
private String leaderboardGroupName;
private GlobalNavigationPanel globalNavigationPanel;
@Override
public void onModuleLoad() {
@@ -95,10 +95,20 @@ public class LeaderboardEntryPoint extends AbstractEntryPoint {
if (leaderboardDisplayName == null || leaderboardDisplayName.isEmpty()) {
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");
if (!isSmallWidth()) {
FlowPanel globalNavigationPanel = new GlobalNavigationPanel(stringMessages, true, null, leaderboardGroupName);
logoAndTitlePanel.add(globalNavigationPanel);
}
mainPanel.addNorth(logoAndTitlePanel, 68);
@@ -19,7 +19,7 @@ public class LeaderboardEditPage extends AbstractEntryPoint {
public void onSuccess(List<String> leaderboardNames) {
String leaderboardName = Window.Location.getParameter("name");
if (leaderboardNames.contains(leaderboardName)) {
LogoAndTitlePanel logoAndTitlePanel = new LogoAndTitlePanel(stringMessages.editScores(), stringMessages, isSmallWidth());
LogoAndTitlePanel logoAndTitlePanel = new LogoAndTitlePanel(stringMessages.editScores(), stringMessages, LeaderboardEditPage.this);
logoAndTitlePanel.addStyleName("LogoAndTitlePanel");
EditableLeaderboardPanel leaderboardPanel = new EditableLeaderboardPanel(sailingService, new AsyncActionsExecutor(), leaderboardName, null,
LeaderboardEditPage.this, stringMessages, userAgent);
@@ -36,6 +36,8 @@ public class RaceBoardEntryPoint extends AbstractEntryPoint {
private String leaderboardGroupName;
private RaceBoardViewModes viewMode;
private GlobalNavigationPanel globalNavigationPanel;
@Override
public void onModuleLoad() {
super.onModuleLoad();
@@ -172,10 +174,20 @@ public class RaceBoardEntryPoint extends AbstractEntryPoint {
}
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");
if (!isSmallWidth()) {
FlowPanel globalNavigationPanel = new GlobalNavigationPanel(stringMessages, true, leaderboardName, leaderboardGroupName);
logoAndTitlePanel.add(globalNavigationPanel);
}
return logoAndTitlePanel;
@@ -56,7 +56,7 @@ public class SpectatorEntryPoint extends AbstractEntryPoint implements RegattaRe
&& Window.Location.getParameter("embedded").equalsIgnoreCase("true");
if (!embedded) {
String title = groupName != null ? groupName : stringMessages.overview();
LogoAndTitlePanel logoAndTitlePanel = new LogoAndTitlePanel(title, stringMessages, isSmallWidth());
LogoAndTitlePanel logoAndTitlePanel = new LogoAndTitlePanel(title, stringMessages, this);
logoAndTitlePanel.addStyleName("LogoAndTitlePanel");
FlowPanel globalNavigationPanel = new GlobalNavigationPanel(stringMessages, true, null, null);
logoAndTitlePanel.add(globalNavigationPanel);
@@ -58,7 +58,7 @@ public class TVEntryPoint extends AbstractEntryPoint {
if(leaderboardDisplayName == null || leaderboardDisplayName.isEmpty()) {
leaderboardDisplayName = leaderboardName;
}
logoAndTitlePanel = new LogoAndTitlePanel(leaderboardGroupName, leaderboardDisplayName, stringMessages, isSmallWidth());
logoAndTitlePanel = new LogoAndTitlePanel(leaderboardGroupName, leaderboardDisplayName, stringMessages, this);
logoAndTitlePanel.addStyleName("LogoAndTitlePanel");
mainPanel.addNorth(logoAndTitlePanel, 68);
}