From 69bbc91dc65565a968e1a5268b8673fd24b05759 Mon Sep 17 00:00:00 2001 From: Matti Tahvonen Date: Wed, 10 Oct 2007 10:15:37 +0000 Subject: [PATCH] ContainerResizedListener for tabsheet svn changeset:2476/svn branch:trunk --- .../terminal/gwt/client/ui/ITabsheet.java | 37 ++++++++++++++----- 1 file changed, 27 insertions(+), 10 deletions(-) diff --git a/src/com/itmill/toolkit/terminal/gwt/client/ui/ITabsheet.java b/src/com/itmill/toolkit/terminal/gwt/client/ui/ITabsheet.java index 134fd30064..71a6302be3 100644 --- a/src/com/itmill/toolkit/terminal/gwt/client/ui/ITabsheet.java +++ b/src/com/itmill/toolkit/terminal/gwt/client/ui/ITabsheet.java @@ -11,10 +11,12 @@ import com.google.gwt.user.client.ui.TabBar; import com.google.gwt.user.client.ui.TabListener; import com.google.gwt.user.client.ui.Widget; import com.itmill.toolkit.terminal.gwt.client.ApplicationConnection; +import com.itmill.toolkit.terminal.gwt.client.ContainerResizedListener; import com.itmill.toolkit.terminal.gwt.client.Paintable; import com.itmill.toolkit.terminal.gwt.client.UIDL; +import com.itmill.toolkit.terminal.gwt.client.Util; -public class ITabsheet extends FlowPanel implements Paintable { +public class ITabsheet extends FlowPanel implements Paintable, ContainerResizedListener { public static final String CLASSNAME = "i-tabsheet"; @@ -47,6 +49,8 @@ public class ITabsheet extends FlowPanel implements Paintable { }; + private String height; + public ITabsheet() { setStyleName(CLASSNAME); @@ -84,17 +88,9 @@ public class ITabsheet extends FlowPanel implements Paintable { // Try to calculate the height as close as possible if (h != null) { - // First, calculate needed pixel height setHeight(h); - int neededHeight = getOffsetHeight(); - setHeight(""); - // Then calculate the size the content area needs to be - tp.setHeight("0"); - DOM.setStyleAttribute(tp.getElement(), "overflow", "hidden"); - int height = getOffsetHeight(); - tp.setHeight(neededHeight - height + "px"); - DOM.setStyleAttribute(tp.getElement(), "overflow", ""); } else { + this.height = null; tp.setHeight("auto"); // We don't need overflow:auto when tabsheet height is not set DOM.setStyleAttribute(tp.getElement(), "overflow", "hidden"); @@ -168,4 +164,25 @@ public class ITabsheet extends FlowPanel implements Paintable { DOM.getChild(tr, DOM.getChildCount(tr) - 1), 0); DOM.removeElementAttribute(rest, "style"); } + + public void setHeight(String height) { + this.height = height; + iLayout(); + } + + public void iLayout() { + if(height != null) { + // First, calculate needed pixel height + super.setHeight(height); + int neededHeight = getOffsetHeight(); + super.setHeight(""); + // Then calculate the size the content area needs to be + tp.setHeight("0"); + DOM.setStyleAttribute(tp.getElement(), "overflow", "hidden"); + int pixelHeight = getOffsetHeight(); + tp.setHeight(neededHeight - pixelHeight + "px"); + DOM.setStyleAttribute(tp.getElement(), "overflow", ""); + } + Util.runAnchestorsLayout(this); + } } -- 2.39.5