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
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
\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
\r
}\r
\r
- private void setWidget(Widget w) {\r
+ public void setWidget(Widget w) {\r
// Validate\r
if (w == widget) {\r
return;\r
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
\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