From: Matti Tahvonen Date: Thu, 3 Sep 2009 07:53:21 +0000 (+0000) Subject: better margin support (via server side api) for csslayout + some cleaning X-Git-Tag: 6.7.0.beta1~2535 X-Git-Url: https://source.dussan.org/?a=commitdiff_plain;h=96e28d485251f2cf268b5ea0ca17fd75c8423a89;p=vaadin-framework.git better margin support (via server side api) for csslayout + some cleaning svn changeset:8644/svn branch:6.1 --- diff --git a/WebContent/VAADIN/themes/base/csslayout/csslayout.css b/WebContent/VAADIN/themes/base/csslayout/csslayout.css new file mode 100644 index 0000000000..12f1cd08fc --- /dev/null +++ b/WebContent/VAADIN/themes/base/csslayout/csslayout.css @@ -0,0 +1,16 @@ +.v-csslayout { + overflow: hidden; +} + +.v-csslayout-margin-top { + padding-top: 2em; +} +.v-csslayout-margin-bottom { + padding-bottom: 2em; +} +.v-csslayout-margin-left { + padding-left: 2em; +} +.v-csslayout-margin-right { + padding-right: 2em; +} diff --git a/WebContent/VAADIN/themes/base/styles.css b/WebContent/VAADIN/themes/base/styles.css index db1084616f..def4572a00 100644 --- a/WebContent/VAADIN/themes/base/styles.css +++ b/WebContent/VAADIN/themes/base/styles.css @@ -448,6 +448,23 @@ div.v-app-loading { padding: 2px; } +.v-csslayout { + overflow: hidden; +} + +.v-csslayout-margin-top { + padding-top: 2em; +} +.v-csslayout-margin-bottom { + padding-bottom: 2em; +} +.v-csslayout-margin-left { + padding-left: 2em; +} +.v-csslayout-margin-right { + padding-right: 2em; +} + .v-customcomponent { overflow: hidden; } diff --git a/WebContent/VAADIN/themes/reindeer/styles.css b/WebContent/VAADIN/themes/reindeer/styles.css index c9c689fa02..368b2808f8 100644 --- a/WebContent/VAADIN/themes/reindeer/styles.css +++ b/WebContent/VAADIN/themes/reindeer/styles.css @@ -448,6 +448,23 @@ div.v-app-loading { padding: 2px; } +.v-csslayout { + overflow: hidden; +} + +.v-csslayout-margin-top { + padding-top: 2em; +} +.v-csslayout-margin-bottom { + padding-bottom: 2em; +} +.v-csslayout-margin-left { + padding-left: 2em; +} +.v-csslayout-margin-right { + padding-right: 2em; +} + .v-customcomponent { overflow: hidden; } diff --git a/WebContent/VAADIN/themes/runo/styles.css b/WebContent/VAADIN/themes/runo/styles.css index 20f009d850..957913d450 100644 --- a/WebContent/VAADIN/themes/runo/styles.css +++ b/WebContent/VAADIN/themes/runo/styles.css @@ -448,6 +448,23 @@ div.v-app-loading { padding: 2px; } +.v-csslayout { + overflow: hidden; +} + +.v-csslayout-margin-top { + padding-top: 2em; +} +.v-csslayout-margin-bottom { + padding-bottom: 2em; +} +.v-csslayout-margin-left { + padding-left: 2em; +} +.v-csslayout-margin-right { + padding-right: 2em; +} + .v-customcomponent { overflow: hidden; } diff --git a/src/com/vaadin/terminal/gwt/client/ui/VCssLayout.java b/src/com/vaadin/terminal/gwt/client/ui/VCssLayout.java index 0371715772..fccb9e0fd2 100644 --- a/src/com/vaadin/terminal/gwt/client/ui/VCssLayout.java +++ b/src/com/vaadin/terminal/gwt/client/ui/VCssLayout.java @@ -16,6 +16,7 @@ import com.google.gwt.user.client.ui.FlowPanel; import com.google.gwt.user.client.ui.SimplePanel; import com.google.gwt.user.client.ui.Widget; import com.vaadin.terminal.gwt.client.ApplicationConnection; +import com.vaadin.terminal.gwt.client.BrowserInfo; import com.vaadin.terminal.gwt.client.Container; import com.vaadin.terminal.gwt.client.Paintable; import com.vaadin.terminal.gwt.client.RenderSpace; @@ -37,9 +38,9 @@ public class VCssLayout extends SimplePanel implements Paintable, Container { public VCssLayout() { super(); - DOM.appendChild(getElement(), margin); - DOM.setStyleAttribute(getElement(), "overflow", "hidden"); + getElement().appendChild(margin); setStyleName(CLASSNAME); + margin.setClassName(CLASSNAME + "-margin"); setWidget(panel); } @@ -51,14 +52,14 @@ public class VCssLayout extends SimplePanel implements Paintable, Container { @Override public void setWidth(String width) { super.setWidth(width); - panel.setWidth(width); + // panel.setWidth(width); hasWidth = width != null && !width.equals(""); } @Override public void setHeight(String height) { super.setHeight(height); - panel.setHeight(height); + // panel.setHeight(height); hasHeight = height != null && !height.equals(""); } @@ -70,7 +71,6 @@ public class VCssLayout extends SimplePanel implements Paintable, Container { final VMarginInfo margins = new VMarginInfo(uidl .getIntAttribute("margins")); - setStyleName(margin, CLASSNAME + "-" + StyleConstants.MARGIN_TOP, margins.hasTop()); setStyleName(margin, CLASSNAME + "-" + StyleConstants.MARGIN_RIGHT, @@ -208,10 +208,33 @@ public class VCssLayout extends SimplePanel implements Paintable, Container { } } + private RenderSpace space; + public RenderSpace getAllocatedSpace(Widget child) { - com.google.gwt.dom.client.Element div = child.getElement() - .getParentElement(); - return new RenderSpace(div.getOffsetWidth(), div.getOffsetHeight()); + if (space == null) { + space = new RenderSpace(-1, -1) { + @Override + public int getWidth() { + if (BrowserInfo.get().isIE()) { + int width = getOffsetWidth(); + int margins = margin.getOffsetWidth() + - panel.getOffsetWidth(); + return width - margins; + } else { + return panel.getOffsetWidth(); + } + } + + @Override + public int getHeight() { + int height = getOffsetHeight(); + int margins = margin.getOffsetHeight() + - panel.getOffsetHeight(); + return height - margins; + } + }; + } + return space; } public boolean requestLayout(Set children) {