]> source.dussan.org Git - vaadin-framework.git/commitdiff
improvements for test case
authorMatti Tahvonen <matti.tahvonen@itmill.com>
Thu, 9 Apr 2009 12:57:22 +0000 (12:57 +0000)
committerMatti Tahvonen <matti.tahvonen@itmill.com>
Thu, 9 Apr 2009 12:57:22 +0000 (12:57 +0000)
svn changeset:7380/svn branch:6.0

src/com/itmill/toolkit/tests/layouts/TestAbsoluteLayout.java

index cf78880dac799501a892e90013f7e64342b4dff1..f3c02dce3dd69e6c1056755e2b10c9151ef8f830 100644 (file)
@@ -1,5 +1,8 @@
 package com.itmill.toolkit.tests.layouts;\r
 \r
+import java.io.File;\r
+import java.net.URL;\r
+import java.util.ArrayList;\r
 import java.util.Arrays;\r
 import java.util.Iterator;\r
 \r
@@ -179,6 +182,88 @@ public class TestAbsoluteLayout extends TestBase {
 \r
             addComponent(componentChooser);\r
 \r
+            Button addComp = new Button("add component");\r
+            addComp.addListener(new Button.ClickListener() {\r
+                public void buttonClick(ClickEvent event) {\r
+                    final Window chooser = new Window(\r
+                            "Choose component type to add");\r
+                    chooser.getLayout().setSizeUndefined();\r
+                    chooser.setModal(true);\r
+\r
+                    NativeSelect select = new NativeSelect(\r
+                            "Choose component to edit");\r
+\r
+                    select.setNullSelectionAllowed(false);\r
+\r
+                    IndexedContainer container = new IndexedContainer();\r
+\r
+                    URL resource = AbstractComponent.class.getResource(".");\r
+                    File directory = new File(resource.getFile());\r
+                    if (directory.exists()) {\r
+                        // Get the list of the files contained in the\r
+                        // package\r
+                        final String[] files = directory.list();\r
+                        for (int j = 0; j < files.length; j++) {\r
+                            // we are only interested in .class files\r
+                            if (files[j].endsWith(".class")) {\r
+                                // removes the .class extension\r
+                                String p = resource.toString()\r
+                                        + files[j].substring(0, files[j]\r
+                                                .length() - 6);\r
+                                p = p.replaceAll(".*classes/", "");\r
+                                p = p.replaceAll("/", ".");\r
+                                Class c;\r
+                                try {\r
+                                    c = Class.forName(p);\r
+                                    if (AbstractComponent.class\r
+                                            .isAssignableFrom(c)\r
+                                            && !p.toLowerCase().contains(\r
+                                                    "layout")\r
+                                            && !p.toLowerCase().contains(\r
+                                                    "abstract")) {\r
+                                        container.addItem(c);\r
+                                    }\r
+                                } catch (ClassNotFoundException e) {\r
+                                    // TODO Auto-generated catch block\r
+                                    e.printStackTrace();\r
+                                }\r
+                            }\r
+                        }\r
+                    }\r
+                    select.setContainerDataSource(container);\r
+                    select.setImmediate(true);\r
+\r
+                    select.addListener(new ValueChangeListener() {\r
+                        public void valueChange(ValueChangeEvent event) {\r
+                            Class c = (Class) event.getProperty().getValue();\r
+\r
+                            try {\r
+                                Component newInstance = (Component) c\r
+                                        .newInstance();\r
+                                l.addComponent(newInstance);\r
+                                editcomponent(newInstance);\r
+                                getMainWindow().removeWindow(chooser);\r
+                            } catch (InstantiationException e) {\r
+                                // TODO Auto-generated catch block\r
+                                e.printStackTrace();\r
+                            } catch (IllegalAccessException e) {\r
+                                // TODO Auto-generated catch block\r
+                                e.printStackTrace();\r
+                            }\r
+\r
+                        }\r
+\r
+                    });\r
+\r
+                    chooser.addComponent(select);\r
+\r
+                    getMainWindow().addWindow(chooser);\r
+\r
+                }\r
+            });\r
+\r
+            addComponent(addComp);\r
+\r
             componentEditor = new Form();\r
             componentEditor.setWriteThrough(false);\r
             componentEditor.setCaption("Component properties:");\r
@@ -204,22 +289,24 @@ public class TestAbsoluteLayout extends TestBase {
         private void editcomponent(Component value) {\r
 \r
             BeanItem beanItem = new BeanItem(value);\r
-            componentEditor.setItemDataSource(beanItem, Arrays\r
-                    .asList(new String[] { "width", "widthUnits", "height",\r
-                            "heightUnits", "caption", "styleName" }));\r
-\r
-            beanItem = new BeanItem(l.getPosition(value));\r
             String c = "Component properties for "\r
                     + value.getClass().getSimpleName();\r
+            ArrayList<String> fields = new ArrayList<String>(Arrays\r
+                    .asList(new String[] { "width", "widthUnits", "height",\r
+                            "heightUnits", "caption", "styleName" }));\r
             if (value instanceof Label) {\r
                 c += "(" + ((Label) value).getValue() + ")";\r
+                fields.add("value");\r
             }\r
+\r
+            componentEditor.setItemDataSource(beanItem, fields);\r
+\r
+            beanItem = new BeanItem(l.getPosition(value));\r
             componentEditor.setCaption(c);\r
 \r
             positionEditor.setItemDataSource(beanItem);\r
 \r
         }\r
-\r
     }\r
 \r
 }\r