]> source.dussan.org Git - vaadin-framework.git/commitdiff
Implemented replaceChildComponent for OrderedLayout
authorArtur Signell <artur.signell@itmill.com>
Fri, 7 Nov 2008 14:01:49 +0000 (14:01 +0000)
committerArtur Signell <artur.signell@itmill.com>
Fri, 7 Nov 2008 14:01:49 +0000 (14:01 +0000)
svn changeset:5832/svn branch:trunk

src/com/itmill/toolkit/terminal/gwt/client/ui/layout/CellBasedLayout.java
src/com/itmill/toolkit/terminal/gwt/client/ui/layout/ChildComponentContainer.java

index a362e0ac6989974041ee75f040f53c2f7abaaf6f..09d1b5164d72709e4620544af705ec1a8f59aabb 100644 (file)
@@ -9,6 +9,7 @@ import com.google.gwt.user.client.ui.ComplexPanel;
 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.Container;\r
+import com.itmill.toolkit.terminal.gwt.client.Paintable;\r
 import com.itmill.toolkit.terminal.gwt.client.UIDL;\r
 import com.itmill.toolkit.terminal.gwt.client.ui.MarginInfo;\r
 \r
@@ -80,11 +81,6 @@ public abstract class CellBasedLayout extends ComplexPanel implements Container
         return widgetToComponentContainer.containsKey(component);\r
     }\r
 \r
-    public void replaceChildComponent(Widget oldComponent, Widget newComponent) {\r
-        // TODO: Must support\r
-        throw new UnsupportedOperationException();\r
-    }\r
-\r
     public void updateFromUIDL(UIDL uidl, ApplicationConnection client) {\r
         this.client = client;\r
 \r
@@ -275,4 +271,16 @@ public abstract class CellBasedLayout extends ComplexPanel implements Container
 \r
     }\r
 \r
+    public void replaceChildComponent(Widget oldComponent, Widget newComponent) {\r
+        ChildComponentContainer componentContainer = widgetToComponentContainer\r
+                .remove(oldComponent);\r
+        if (componentContainer == null) {\r
+            return;\r
+        }\r
+\r
+        componentContainer.setWidget(newComponent);\r
+        client.unregisterPaintable((Paintable) oldComponent);\r
+        widgetToComponentContainer.put(newComponent, componentContainer);\r
+    }\r
+\r
 }\r
index 0fbe91f4e3a6b9e4a46c7a4827b1fe1380e00aee..426c19425322f5326498418914e2ec874f639e2c 100644 (file)
@@ -86,7 +86,7 @@ public class ChildComponentContainer extends Panel {
 \r
     }\r
 \r
-    private void setWidget(Widget w) {\r
+    public void setWidget(Widget w) {\r
         // Validate\r
         if (w == widget) {\r
             return;\r
@@ -163,8 +163,8 @@ public class ChildComponentContainer extends Panel {
         int w = widget.getOffsetWidth();\r
         int h = widget.getOffsetHeight();\r
 \r
-//        ApplicationConnection.getConsole().log(\r
-//               Util.getSimpleName(widget) + " size is " + w + "," + h);\r
+        // ApplicationConnection.getConsole().log(\r
+        // Util.getSimpleName(widget) + " size is " + w + "," + h);\r
         widgetSize.setHeight(h);\r
         widgetSize.setWidth(w);\r
     }\r
@@ -445,12 +445,10 @@ public class ChildComponentContainer extends Panel {
 \r
         // Physical && Logical Detach\r
         if (child == caption) {\r
-            containerDIV.removeChild(caption.getElement());\r
+            containerDIV.removeChild(child.getElement());\r
             caption = null;\r
         } else {\r
-            if (widget.isAttached()) {\r
-                containerDIV.removeChild(widget.getElement());\r
-            }\r
+            widgetDIV.removeChild(child.getElement());\r
             widget = null;\r
         }\r
 \r