From 4e82d3d9fe902e44262a137b68cd39d4b649dc5c Mon Sep 17 00:00:00 2001 From: Artur Signell Date: Fri, 7 Nov 2008 14:01:49 +0000 Subject: [PATCH] Implemented replaceChildComponent for OrderedLayout svn changeset:5832/svn branch:trunk --- .../gwt/client/ui/layout/CellBasedLayout.java | 18 +++++++++++++----- .../ui/layout/ChildComponentContainer.java | 12 +++++------- 2 files changed, 18 insertions(+), 12 deletions(-) diff --git a/src/com/itmill/toolkit/terminal/gwt/client/ui/layout/CellBasedLayout.java b/src/com/itmill/toolkit/terminal/gwt/client/ui/layout/CellBasedLayout.java index a362e0ac69..09d1b5164d 100644 --- a/src/com/itmill/toolkit/terminal/gwt/client/ui/layout/CellBasedLayout.java +++ b/src/com/itmill/toolkit/terminal/gwt/client/ui/layout/CellBasedLayout.java @@ -9,6 +9,7 @@ import com.google.gwt.user.client.ui.ComplexPanel; import com.google.gwt.user.client.ui.Widget; import com.itmill.toolkit.terminal.gwt.client.ApplicationConnection; import com.itmill.toolkit.terminal.gwt.client.Container; +import com.itmill.toolkit.terminal.gwt.client.Paintable; import com.itmill.toolkit.terminal.gwt.client.UIDL; import com.itmill.toolkit.terminal.gwt.client.ui.MarginInfo; @@ -80,11 +81,6 @@ public abstract class CellBasedLayout extends ComplexPanel implements Container return widgetToComponentContainer.containsKey(component); } - public void replaceChildComponent(Widget oldComponent, Widget newComponent) { - // TODO: Must support - throw new UnsupportedOperationException(); - } - public void updateFromUIDL(UIDL uidl, ApplicationConnection client) { this.client = client; @@ -275,4 +271,16 @@ public abstract class CellBasedLayout extends ComplexPanel implements Container } + public void replaceChildComponent(Widget oldComponent, Widget newComponent) { + ChildComponentContainer componentContainer = widgetToComponentContainer + .remove(oldComponent); + if (componentContainer == null) { + return; + } + + componentContainer.setWidget(newComponent); + client.unregisterPaintable((Paintable) oldComponent); + widgetToComponentContainer.put(newComponent, componentContainer); + } + } diff --git a/src/com/itmill/toolkit/terminal/gwt/client/ui/layout/ChildComponentContainer.java b/src/com/itmill/toolkit/terminal/gwt/client/ui/layout/ChildComponentContainer.java index 0fbe91f4e3..426c194253 100644 --- a/src/com/itmill/toolkit/terminal/gwt/client/ui/layout/ChildComponentContainer.java +++ b/src/com/itmill/toolkit/terminal/gwt/client/ui/layout/ChildComponentContainer.java @@ -86,7 +86,7 @@ public class ChildComponentContainer extends Panel { } - private void setWidget(Widget w) { + public void setWidget(Widget w) { // Validate if (w == widget) { return; @@ -163,8 +163,8 @@ public class ChildComponentContainer extends Panel { int w = widget.getOffsetWidth(); int h = widget.getOffsetHeight(); -// ApplicationConnection.getConsole().log( -// Util.getSimpleName(widget) + " size is " + w + "," + h); + // ApplicationConnection.getConsole().log( + // Util.getSimpleName(widget) + " size is " + w + "," + h); widgetSize.setHeight(h); widgetSize.setWidth(w); } @@ -445,12 +445,10 @@ public class ChildComponentContainer extends Panel { // Physical && Logical Detach if (child == caption) { - containerDIV.removeChild(caption.getElement()); + containerDIV.removeChild(child.getElement()); caption = null; } else { - if (widget.isAttached()) { - containerDIV.removeChild(widget.getElement()); - } + widgetDIV.removeChild(child.getElement()); widget = null; } -- 2.39.5