aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorJohannes Dahlström <johannesd@vaadin.com>2012-06-11 14:43:48 +0300
committerJohannes Dahlström <johannesd@vaadin.com>2012-06-11 14:43:48 +0300
commit7eb0276de46ec74416439f021fa47a1c24bd67d5 (patch)
tree2a9d88fdc049c5d43e2ba24f47795bc5fef3cdbc
parent7cfbbea6aef34cc753b2e9a7840d647782af44a7 (diff)
parente085efa41793fc68d455fa5d718bbfc1309296b9 (diff)
downloadvaadin-framework-7eb0276de46ec74416439f021fa47a1c24bd67d5.tar.gz
vaadin-framework-7eb0276de46ec74416439f021fa47a1c24bd67d5.zip
Merge commit 'e085e'
Conflicts: src/com/vaadin/terminal/gwt/client/ui/root/VRoot.java tests/testbench/com/vaadin/tests/integration/EmbedSizeTest.java
-rw-r--r--src/com/vaadin/terminal/gwt/client/ui/root/VRoot.java26
-rw-r--r--src/com/vaadin/ui/Window.java49
-rw-r--r--tests/testbench/com/vaadin/tests/integration/EmbedSizeTest.java4
3 files changed, 68 insertions, 11 deletions
diff --git a/src/com/vaadin/terminal/gwt/client/ui/root/VRoot.java b/src/com/vaadin/terminal/gwt/client/ui/root/VRoot.java
index 5f08f92cf0..31e09660fe 100644
--- a/src/com/vaadin/terminal/gwt/client/ui/root/VRoot.java
+++ b/src/com/vaadin/terminal/gwt/client/ui/root/VRoot.java
@@ -39,6 +39,10 @@ public class VRoot extends SimplePanel implements ResizeHandler,
public static final String FRAGMENT_VARIABLE = "fragment";
+ public static final String BROWSER_HEIGHT_VAR = "browserHeight";
+
+ public static final String BROWSER_WIDTH_VAR = "browserWidth";
+
private static final String CLASSNAME = "v-view";
public static final String NOTIFICATION_HTML_CONTENT_NOT_ALLOWED = "useplain";
@@ -306,16 +310,18 @@ public class VRoot extends SimplePanel implements ResizeHandler,
*/
private void sendClientResized() {
Element parentElement = getElement().getParentElement();
- int newViewHeight = parentElement.getClientHeight();
- int newViewWidth = parentElement.getClientWidth();
-
- // Send the view dimensions if they have changed
- if (newViewHeight != viewHeight || newViewWidth != viewWidth) {
- viewHeight = newViewHeight;
- viewWidth = newViewWidth;
- connection.updateVariable(id, "height", newViewHeight, false);
- connection.updateVariable(id, "width", newViewWidth, immediate);
- }
+ int viewHeight = parentElement.getClientHeight();
+ int viewWidth = parentElement.getClientWidth();
+
+ connection.updateVariable(id, "height", viewHeight, false);
+ connection.updateVariable(id, "width", viewWidth, false);
+
+ int windowWidth = Window.getClientWidth();
+ int windowHeight = Window.getClientHeight();
+
+ connection.updateVariable(id, BROWSER_WIDTH_VAR, windowWidth, false);
+ connection.updateVariable(id, BROWSER_HEIGHT_VAR, windowHeight,
+ immediate);
}
public native static void goTo(String url)
diff --git a/src/com/vaadin/ui/Window.java b/src/com/vaadin/ui/Window.java
index 3c17baf414..807b801155 100644
--- a/src/com/vaadin/ui/Window.java
+++ b/src/com/vaadin/ui/Window.java
@@ -83,6 +83,10 @@ public class Window extends Panel implements FocusNotifier, BlurNotifier,
}
};
+ private int browserWindowWidth = -1;
+
+ private int browserWindowHeight = -1;
+
/**
* Creates a new unnamed window with a default layout.
*/
@@ -170,6 +174,20 @@ public class Window extends Panel implements FocusNotifier, BlurNotifier,
.get("width") != getWidth())) {
sizeHasChanged = true;
}
+ Integer browserHeightVar = (Integer) variables
+ .get(VView.BROWSER_HEIGHT_VAR);
+ if (browserHeightVar != null
+ && browserHeightVar.intValue() != browserWindowHeight) {
+ browserWindowHeight = browserHeightVar.intValue();
+ sizeHasChanged = true;
+ }
+ Integer browserWidthVar = (Integer) variables
+ .get(VView.BROWSER_WIDTH_VAR);
+ if (browserWidthVar != null
+ && browserWidthVar.intValue() != browserWindowWidth) {
+ browserWindowWidth = browserWidthVar.intValue();
+ sizeHasChanged = true;
+ }
super.changeVariables(source, variables);
@@ -835,4 +853,35 @@ public class Window extends Panel implements FocusNotifier, BlurNotifier,
return (WindowState) super.getState();
}
+ /**
+ * Gets the height of the viewport area of the browser window where this
+ * window is displayed.
+ *
+ * @return the browser viewport height in pixels
+ */
+ public int getBrowserWindowHeight() {
+ // Size only reported by VView -> data only available from application
+ // level window
+ if (getParent() != null) {
+ return (getParent()).getBrowserWindowHeight();
+ }
+
+ return browserWindowHeight;
+ }
+
+ /**
+ * Gets the width of the viewport area of the browser window where this
+ * window is displayed.
+ *
+ * @return the browser viewport width in pixels
+ */
+ public int getBrowserWindowWidth() {
+ // Size only reported by VView -> data only available from application
+ // level window
+ if (getParent() != null) {
+ return (getParent()).getBrowserWindowWidth();
+ }
+
+ return browserWindowWidth;
+ }
}
diff --git a/tests/testbench/com/vaadin/tests/integration/EmbedSizeTest.java b/tests/testbench/com/vaadin/tests/integration/EmbedSizeTest.java
index eb26faacc0..7ca73ef63d 100644
--- a/tests/testbench/com/vaadin/tests/integration/EmbedSizeTest.java
+++ b/tests/testbench/com/vaadin/tests/integration/EmbedSizeTest.java
@@ -22,6 +22,7 @@ public class EmbedSizeTest extends TestBase {
CheckBox lazyCheckBox = new CheckBox("Lazy resize");
lazyCheckBox.addListener(new ValueChangeListener() {
+ @Override
public void valueChange(ValueChangeEvent event) {
CheckBox cb = (CheckBox) event.getProperty();
Boolean resizeLazy = cb.getValue();
@@ -34,11 +35,12 @@ public class EmbedSizeTest extends TestBase {
addComponent(lazyCheckBox);
addComponent(log);
+
mainWindow.addListener(new Root.BrowserWindowResizeListener() {
+ @Override
public void browserWindowResized(BrowserWindowResizeEvent event) {
log.log("Resize event: " + event.getWidth() + " x "
+ event.getHeight());
-
}
});
}