]> source.dussan.org Git - vaadin-framework.git/commitdiff
fixed iform renderspace calculation
authorMatti Tahvonen <matti.tahvonen@itmill.com>
Tue, 7 Oct 2008 13:28:08 +0000 (13:28 +0000)
committerMatti Tahvonen <matti.tahvonen@itmill.com>
Tue, 7 Oct 2008 13:28:08 +0000 (13:28 +0000)
svn changeset:5607/svn branch:trunk

src/com/itmill/toolkit/terminal/gwt/client/ui/IForm.java

index 8acb767098f38679620c659bc71694dd554652ad..a60bbf014997a98c17f0c8da7b75e94ed93130b0 100644 (file)
@@ -11,7 +11,6 @@ import com.google.gwt.user.client.Element;
 import com.google.gwt.user.client.ui.ComplexPanel;\r
 import com.google.gwt.user.client.ui.Widget;\r
 import com.itmill.toolkit.terminal.gwt.client.ApplicationConnection;\r
-import com.itmill.toolkit.terminal.gwt.client.ClientExceptionHandler;\r
 import com.itmill.toolkit.terminal.gwt.client.Container;\r
 import com.itmill.toolkit.terminal.gwt.client.ContainerResizedListener;\r
 import com.itmill.toolkit.terminal.gwt.client.IErrorMessage;\r
@@ -41,6 +40,8 @@ public class IForm extends ComplexPanel implements Container,
 \r
     private Element footerContainer = DOM.createDiv();\r
 \r
+    private Element fieldSet = DOM.createFieldSet();\r
+\r
     private Container footer;\r
 \r
     private ApplicationConnection client;\r
@@ -52,25 +53,30 @@ public class IForm extends ComplexPanel implements Container,
     private int borderPaddingVertical;\r
 \r
     public IForm() {\r
-        setElement(DOM.createFieldSet());\r
+        setElement(DOM.createDiv());\r
+        DOM.appendChild(getElement(), fieldSet);\r
         setStyleName(CLASSNAME);\r
-        DOM.appendChild(getElement(), legend);\r
+        DOM.appendChild(fieldSet, legend);\r
         DOM.appendChild(legend, caption);\r
         DOM.setElementProperty(errorIndicatorElement, "className",\r
                 "i-errorindicator");\r
         DOM.setStyleAttribute(errorIndicatorElement, "display", "none");\r
         DOM.setInnerText(errorIndicatorElement, " "); // needed for IE\r
         DOM.setElementProperty(desc, "className", "i-form-description");\r
-        DOM.appendChild(getElement(), desc);\r
-        DOM.appendChild(getElement(), fieldContainer);\r
+        DOM.appendChild(fieldSet, desc);\r
+        DOM.appendChild(fieldSet, fieldContainer);\r
         errorMessage.setVisible(false);\r
         errorMessage.setStyleName(CLASSNAME + "-errormessage");\r
-        DOM.appendChild(getElement(), errorMessage.getElement());\r
-        DOM.appendChild(getElement(), footerContainer);\r
+        DOM.appendChild(fieldSet, errorMessage.getElement());\r
+        DOM.appendChild(fieldSet, footerContainer);\r
     }\r
 \r
     public void updateFromUIDL(UIDL uidl, ApplicationConnection client) {\r
-        this.client = client;\r
+        if (this.client == null) {\r
+            this.client = client;\r
+            borderPaddingVertical = getOffsetHeight();\r
+            borderPaddingHorizontal = getOffsetWidth() - desc.getOffsetWidth();\r
+        }\r
 \r
         if (client.updateComponent(this, uidl, false)) {\r
             return;\r
@@ -168,7 +174,24 @@ public class IForm extends ComplexPanel implements Container,
     }\r
 \r
     public RenderSpace getAllocatedSpace(Widget child) {\r
-        return renderInformation.getContentAreaSize();\r
+        if (child == lo) {\r
+            int hPixels = 0;\r
+            if (!"".equals(height)) {\r
+                hPixels = getOffsetHeight();\r
+                hPixels -= borderPaddingVertical;\r
+                hPixels -= footerContainer.getOffsetHeight();\r
+                hPixels -= errorMessage.getOffsetHeight();\r
+                hPixels -= desc.getOffsetHeight();\r
+\r
+            }\r
+            return new RenderSpace(fieldContainer.getOffsetWidth(), 0);\r
+        } else if (child == footer) {\r
+            return new RenderSpace(footerContainer.getOffsetWidth(), 0);\r
+        } else {\r
+            ApplicationConnection.getConsole().error(\r
+                    "Invalid child requested RenderSpace information");\r
+            return null;\r
+        }\r
     }\r
 \r
     public boolean hasChildComponent(Widget component) {\r
@@ -207,35 +230,13 @@ public class IForm extends ComplexPanel implements Container,
     @Override\r
     public void setHeight(String height) {\r
         this.height = height;\r
-\r
         super.setHeight(height);\r
 \r
-        if (height.endsWith("px")) {\r
-            try {\r
-                borderPaddingVertical = getElement().getOffsetHeight()\r
-                        - Integer.parseInt(height.substring(0,\r
-                                height.length() - 2));\r
-            } catch (Exception e) {\r
-                ClientExceptionHandler.displayError(e);\r
-            }\r
-        }\r
-\r
     }\r
 \r
     @Override\r
     public void setWidth(String width) {\r
         this.width = width;\r
-\r
         super.setWidth(width);\r
-\r
-        if (width.endsWith("px")) {\r
-            try {\r
-                borderPaddingHorizontal = getElement().getOffsetWidth()\r
-                        - Integer.parseInt(width.substring(0,\r
-                                width.length() - 2));\r
-            } catch (Exception e) {\r
-                ClientExceptionHandler.displayError(e);\r
-            }\r
-        }\r
     }\r
 }\r