aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorMatti Tahvonen <matti.tahvonen@itmill.com>2008-05-09 17:52:40 +0000
committerMatti Tahvonen <matti.tahvonen@itmill.com>2008-05-09 17:52:40 +0000
commitdb31a311e03688b37399dd2a24ff48f0f6aafcf7 (patch)
tree612a4956ee92bb6559a1cf22c46f2b65f86cd79a
parentd90750a224dbc9e630487bad82e0051ab29f250d (diff)
downloadvaadin-framework-db31a311e03688b37399dd2a24ff48f0f6aafcf7.tar.gz
vaadin-framework-db31a311e03688b37399dd2a24ff48f0f6aafcf7.zip
support for non-pixel sizes for window. Fixes #1619
svn changeset:4415/svn branch:trunk
-rw-r--r--src/com/itmill/toolkit/terminal/gwt/client/ui/IWindow.java34
-rw-r--r--src/com/itmill/toolkit/ui/Window.java23
2 files changed, 28 insertions, 29 deletions
diff --git a/src/com/itmill/toolkit/terminal/gwt/client/ui/IWindow.java b/src/com/itmill/toolkit/terminal/gwt/client/ui/IWindow.java
index d846960b4d..17f19af5e2 100644
--- a/src/com/itmill/toolkit/terminal/gwt/client/ui/IWindow.java
+++ b/src/com/itmill/toolkit/terminal/gwt/client/ui/IWindow.java
@@ -203,14 +203,16 @@ public class IWindow extends PopupPanel implements Paintable, ScrollListener {
setModal(!modal);
}
- // Initialize the width from UIDL
+ // Initialize the size from UIDL
+ // FIXME relational size is for outer size, others are applied for
+ // content
if (uidl.hasVariable("width")) {
final String width = uidl.getStringVariable("width");
- setWidth(width);
- }
- if (uidl.hasVariable("height")) {
- final String height = uidl.getStringVariable("height");
- setHeight(height);
+ if (width.indexOf("px") < 0) {
+ DOM.setStyleAttribute(getElement(), "width", width);
+ } else {
+ setWidth(width);
+ }
}
// Initialize the position form UIDL
@@ -229,6 +231,26 @@ public class IWindow extends PopupPanel implements Paintable, ScrollListener {
show();
}
+ // Height set after show so we can detect space used by decorations
+ if (uidl.hasVariable("height")) {
+ final String height = uidl.getStringVariable("height");
+ if (height.indexOf("%") > 0) {
+ int winHeight = Window.getClientHeight();
+ float percent = Float.parseFloat(height.substring(0, height
+ .indexOf("%"))) / 100.0f;
+ int contentPixels = (int) (winHeight * percent);
+ contentPixels -= (DOM.getElementPropertyInt(getElement(),
+ "offsetHeight") - DOM.getElementPropertyInt(contents,
+ "offsetHeight"));
+ // FIXME hardcoded contents elements border size
+ contentPixels -= 2;
+
+ setHeight(contentPixels + "px");
+ } else {
+ setHeight(height);
+ }
+ }
+
if (uidl.hasAttribute("caption")) {
setCaption(uidl.getStringAttribute("caption"));
}
diff --git a/src/com/itmill/toolkit/ui/Window.java b/src/com/itmill/toolkit/ui/Window.java
index 2c87eab866..f8d8322d7c 100644
--- a/src/com/itmill/toolkit/ui/Window.java
+++ b/src/com/itmill/toolkit/ui/Window.java
@@ -20,7 +20,6 @@ import com.itmill.toolkit.terminal.PaintException;
import com.itmill.toolkit.terminal.PaintTarget;
import com.itmill.toolkit.terminal.ParameterHandler;
import com.itmill.toolkit.terminal.Resource;
-import com.itmill.toolkit.terminal.Sizeable;
import com.itmill.toolkit.terminal.Terminal;
import com.itmill.toolkit.terminal.URIHandler;
@@ -724,28 +723,6 @@ public class Window extends Panel implements URIHandler, ParameterHandler {
}
/**
- * Window only supports pixels as unit.
- *
- * @see com.itmill.toolkit.terminal.Sizeable#getHeightUnits()
- */
- public void setHeightUnits(int units) {
- if (units != Sizeable.UNITS_PIXELS) {
- throw new IllegalArgumentException("Only pixels are supported");
- }
- }
-
- /**
- * Window only supports pixels as unit.
- *
- * @see com.itmill.toolkit.terminal.Sizeable#getWidthUnits()
- */
- public void setWidthUnits(int units) {
- if (units != Sizeable.UNITS_PIXELS) {
- throw new IllegalArgumentException("Only pixels are supported");
- }
- }
-
- /**
* Private data structure for storing opening window properties.
*/
private class OpenResource {