aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
-rw-r--r--src/com/itmill/toolkit/terminal/gwt/client/ui/IFormLayout.java1
-rw-r--r--src/com/itmill/toolkit/terminal/gwt/client/ui/IGridLayout.java1
-rw-r--r--src/com/itmill/toolkit/terminal/gwt/client/ui/IPopupView.java4
-rw-r--r--src/com/itmill/toolkit/terminal/gwt/client/ui/ISplitPanel.java6
-rw-r--r--src/com/itmill/toolkit/terminal/gwt/client/ui/IView.java8
-rw-r--r--src/com/itmill/toolkit/tests/tickets/Ticket2204.java136
6 files changed, 148 insertions, 8 deletions
diff --git a/src/com/itmill/toolkit/terminal/gwt/client/ui/IFormLayout.java b/src/com/itmill/toolkit/terminal/gwt/client/ui/IFormLayout.java
index 6a7f32f777..9504edcae7 100644
--- a/src/com/itmill/toolkit/terminal/gwt/client/ui/IFormLayout.java
+++ b/src/com/itmill/toolkit/terminal/gwt/client/ui/IFormLayout.java
@@ -127,7 +127,6 @@ public class IFormLayout extends FlexTable implements Container {
client);
setWidget(i, 0, newCap);
setWidget(i, 1, newComponent);
- client.unregisterPaintable((Paintable) oldComponent);
break;
}
}
diff --git a/src/com/itmill/toolkit/terminal/gwt/client/ui/IGridLayout.java b/src/com/itmill/toolkit/terminal/gwt/client/ui/IGridLayout.java
index 1878ccbb69..fa332ed04a 100644
--- a/src/com/itmill/toolkit/terminal/gwt/client/ui/IGridLayout.java
+++ b/src/com/itmill/toolkit/terminal/gwt/client/ui/IGridLayout.java
@@ -538,7 +538,6 @@ public class IGridLayout extends SimplePanel implements Paintable, Container {
}
componentContainer.setWidget(newComponent);
- client.unregisterPaintable((Paintable) oldComponent);
widgetToComponentContainer.put(newComponent, componentContainer);
paintableToCell.put((Paintable) newComponent, paintableToCell
diff --git a/src/com/itmill/toolkit/terminal/gwt/client/ui/IPopupView.java b/src/com/itmill/toolkit/terminal/gwt/client/ui/IPopupView.java
index 640d4dafc6..04e90dfaa2 100644
--- a/src/com/itmill/toolkit/terminal/gwt/client/ui/IPopupView.java
+++ b/src/com/itmill/toolkit/terminal/gwt/client/ui/IPopupView.java
@@ -273,10 +273,6 @@ public class IPopupView extends HTML implements Paintable {
public void replaceChildComponent(Widget oldComponent,
Widget newComponent) {
- if (oldComponent != null) {
- client.unregisterPaintable((Paintable) oldComponent);
- }
-
popupComponentWidget = newComponent;
setWidget(popupComponentWidget);
diff --git a/src/com/itmill/toolkit/terminal/gwt/client/ui/ISplitPanel.java b/src/com/itmill/toolkit/terminal/gwt/client/ui/ISplitPanel.java
index 767db1b8f4..c59218ad30 100644
--- a/src/com/itmill/toolkit/terminal/gwt/client/ui/ISplitPanel.java
+++ b/src/com/itmill/toolkit/terminal/gwt/client/ui/ISplitPanel.java
@@ -480,7 +480,11 @@ public class ISplitPanel extends ComplexPanel implements Container,
}
public void replaceChildComponent(Widget oldComponent, Widget newComponent) {
- // TODO Auto-generated method stub
+ if (oldComponent == firstChild) {
+ setFirstWidget(newComponent);
+ } else if (oldComponent == secondChild) {
+ setSecondWidget(newComponent);
+ }
}
public boolean requestLayout(Set<Paintable> child) {
diff --git a/src/com/itmill/toolkit/terminal/gwt/client/ui/IView.java b/src/com/itmill/toolkit/terminal/gwt/client/ui/IView.java
index 9ceeb78e19..d5cffde209 100644
--- a/src/com/itmill/toolkit/terminal/gwt/client/ui/IView.java
+++ b/src/com/itmill/toolkit/terminal/gwt/client/ui/IView.java
@@ -473,7 +473,13 @@ public class IView extends SimplePanel implements Container,
}
public void replaceChildComponent(Widget oldComponent, Widget newComponent) {
- // TODO Auto-generated method stub
+ // TODO This is untested as no layouts require this
+ if (oldComponent != layout) {
+ return;
+ }
+
+ setWidget(newComponent);
+ layout = (Paintable) newComponent;
}
public boolean requestLayout(Set<Paintable> child) {
diff --git a/src/com/itmill/toolkit/tests/tickets/Ticket2204.java b/src/com/itmill/toolkit/tests/tickets/Ticket2204.java
new file mode 100644
index 0000000000..c19070d332
--- /dev/null
+++ b/src/com/itmill/toolkit/tests/tickets/Ticket2204.java
@@ -0,0 +1,136 @@
+package com.itmill.toolkit.tests.tickets;
+
+import java.util.ArrayList;
+import java.util.HashMap;
+import java.util.List;
+import java.util.Map;
+
+import com.itmill.toolkit.Application;
+import com.itmill.toolkit.terminal.Sizeable;
+import com.itmill.toolkit.ui.Accordion;
+import com.itmill.toolkit.ui.Button;
+import com.itmill.toolkit.ui.Component;
+import com.itmill.toolkit.ui.ComponentContainer;
+import com.itmill.toolkit.ui.CoordinateLayout;
+import com.itmill.toolkit.ui.GridLayout;
+import com.itmill.toolkit.ui.Label;
+import com.itmill.toolkit.ui.Layout;
+import com.itmill.toolkit.ui.OrderedLayout;
+import com.itmill.toolkit.ui.Panel;
+import com.itmill.toolkit.ui.RichTextArea;
+import com.itmill.toolkit.ui.SplitPanel;
+import com.itmill.toolkit.ui.TabSheet;
+import com.itmill.toolkit.ui.Window;
+import com.itmill.toolkit.ui.Button.ClickEvent;
+import com.itmill.toolkit.ui.Button.ClickListener;
+
+public class Ticket2204 extends Application {
+
+ private List<RichTextArea> textAreas = new ArrayList<RichTextArea>();
+ private TabSheet ts;
+ private Map<ComponentContainer, Component> containerToComponent = new HashMap<ComponentContainer, Component>();
+ private RichTextArea rta;
+ private List<Class<? extends ComponentContainer>> classes = new ArrayList<Class<? extends ComponentContainer>>();
+
+ public void init() {
+ classes.add(OrderedLayout.class);
+ classes.add(GridLayout.class);
+ classes.add(Accordion.class);
+ classes.add(TabSheet.class);
+ classes.add(Panel.class);
+ classes.add(CoordinateLayout.class);
+ classes.add(SplitPanel.class);
+
+ Window w = new Window(getClass().getSimpleName());
+ setMainWindow(w);
+ // setTheme("tests-tickets");
+ createUI((OrderedLayout) w.getLayout());
+ }
+
+ private void createUI(OrderedLayout layout) {
+ ts = new TabSheet();
+ layout.addComponent(ts);
+
+ for (Class c : classes) {
+ ts.addTab(createComponent(c), c.getSimpleName(), null);
+ }
+ rta = new RichTextArea();
+ rta.setVisible(false);
+ ts.addTab(rta, "Hidden rta", null);
+
+ Button b = new Button("Show area", new ClickListener() {
+
+ public void buttonClick(ClickEvent event) {
+ showHide();
+ }
+ });
+
+ layout.addComponent(b);
+
+ b = new Button("Show tab", new ClickListener() {
+
+ public void buttonClick(ClickEvent event) {
+ showTab();
+ }
+ });
+
+ layout.addComponent(b);
+
+ }
+
+ protected void showTab() {
+ rta.setVisible(!rta.isVisible());
+
+ }
+
+ protected void showHide() {
+ Component c = containerToComponent.get(ts.getSelectedTab());
+ c.setVisible(!c.isVisible());
+ }
+
+ private Component createComponent(Class c) {
+ RichTextArea textArea = new RichTextArea();
+ textArea.setVisible(false);
+ textArea.setCaption("This is the textArea");
+ textArea.setWidth("200px");
+ textArea.setHeight("100px");
+ textAreas.add(textArea);
+ ComponentContainer cc = null;
+
+ try {
+ cc = (ComponentContainer) c.newInstance();
+ } catch (Exception e) {
+ // TODO Auto-generated catch block
+ e.printStackTrace();
+ return null;
+ }
+ // if (c == OrderedLayout.class) {
+ // cc = new OrderedLayout();
+ // } else
+ if (c == Accordion.class) {
+ // Label l = new Label("Filler");
+ // l.setCaption("Filler label");
+ // cc.addComponent(l);
+ }
+ if (c == CoordinateLayout.class) {
+ ((Sizeable) cc).setHeight("100px");
+ }
+
+ containerToComponent.put(cc, textArea);
+ cc.addComponent(textArea);
+ if (c == SplitPanel.class) {
+ ((Sizeable) cc).setWidth("300px");
+ ((Sizeable) cc).setHeight("300px");
+ cc.addComponent(new Label("Label"));
+ }
+ if (c == Panel.class) {
+ Layout layout = ((Panel) cc).getLayout();
+ containerToComponent.put(cc, layout);
+ layout.setVisible(false);
+ textArea.setVisible(true);
+ return cc;
+ }
+
+ return cc;
+ }
+}