From 40f87f7873f132d4899e853ef0f3da40790d9534 Mon Sep 17 00:00:00 2001 From: Marc Englund Date: Fri, 1 Feb 2008 12:19:19 +0000 Subject: [PATCH] Added test for adding components multiple times, and container recursion. svn changeset:3702/svn branch:trunk --- .../tests/TestComponentAddAndRecursion.java | 107 ++++++++++++++++++ 1 file changed, 107 insertions(+) create mode 100644 src/com/itmill/toolkit/tests/TestComponentAddAndRecursion.java diff --git a/src/com/itmill/toolkit/tests/TestComponentAddAndRecursion.java b/src/com/itmill/toolkit/tests/TestComponentAddAndRecursion.java new file mode 100644 index 0000000000..e70fdc1573 --- /dev/null +++ b/src/com/itmill/toolkit/tests/TestComponentAddAndRecursion.java @@ -0,0 +1,107 @@ +/** + * + */ +package com.itmill.toolkit.tests; + +import com.itmill.toolkit.ui.Button; +import com.itmill.toolkit.ui.CustomComponent; +import com.itmill.toolkit.ui.Label; +import com.itmill.toolkit.ui.OrderedLayout; +import com.itmill.toolkit.ui.Panel; +import com.itmill.toolkit.ui.Window; +import com.itmill.toolkit.ui.Button.ClickEvent; + +/** + * @author marc + * + */ +public class TestComponentAddAndRecursion extends CustomComponent { + Panel p; + Panel p2; + Label l; + Label l2; + Panel p3; + + public TestComponentAddAndRecursion() { + + OrderedLayout main = new OrderedLayout(); + setCompositionRoot(main); + + l = new Label("A"); + l2 = new Label("B"); + p = new Panel("p"); + p.addComponent(l); + p.addComponent(l2); + main.addComponent(p); + p2 = new Panel("p2"); + p2.addComponent(l); + main.addComponent(p2); + p3 = new Panel("p3"); + p2.addComponent(p3); + + Button b = new Button("move B", new Button.ClickListener() { + + public void buttonClick(ClickEvent event) { + p2.addComponent(l2); + } + + }); + main.addComponent(b); + b = new Button("move p", new Button.ClickListener() { + + public void buttonClick(ClickEvent event) { + p3.addComponent(p); + } + + }); + main.addComponent(b); + b = new Button("add to both", new Button.ClickListener() { + + public void buttonClick(ClickEvent event) { + Label l = new Label("both"); + p.addComponent(l); + p2.addComponent(l); + } + + }); + main.addComponent(b); + b = new Button("recurse", new Button.ClickListener() { + + public void buttonClick(ClickEvent event) { + try { + p3.addComponent(p2); + getWindow().showNotification("ERROR", + "This should have failed", + Window.Notification.TYPE_ERROR_MESSAGE); + } catch (Exception e) { + getWindow().showNotification("OK", "threw, as expected", + Window.Notification.TYPE_ERROR_MESSAGE); + } + } + + }); + main.addComponent(b); + b = new Button("recurse2", new Button.ClickListener() { + + public void buttonClick(ClickEvent event) { + Panel p = new Panel("dynamic"); + p.addComponent(p2); + try { + p3.addComponent(p); + getWindow().showNotification("ERROR", + "This should have failed", + Window.Notification.TYPE_ERROR_MESSAGE); + } catch (Exception e) { + getWindow().showNotification("OK", "threw, as expected", + Window.Notification.TYPE_ERROR_MESSAGE); + } + } + + }); + main.addComponent(b); + /* + * And that's it! The framework will display the main window and its + * contents when the application is accessed with the terminal. + */ + } +} -- 2.39.5