]> source.dussan.org Git - vaadin-framework.git/commitdiff
Improved testcase; instructions, includes special cases Panel, Form and Table
authorMarc Englund <marc.englund@itmill.com>
Thu, 25 Sep 2008 07:58:59 +0000 (07:58 +0000)
committerMarc Englund <marc.englund@itmill.com>
Thu, 25 Sep 2008 07:58:59 +0000 (07:58 +0000)
svn changeset:5511/svn branch:trunk

src/com/itmill/toolkit/tests/tickets/Ticket677.java

index e38a6e710096f47d30b4d9c81968c88e31f3267d..f687899e74d35327d064a0f19478256af30f8ee0 100644 (file)
 package com.itmill.toolkit.tests.tickets;\r
 \r
-import java.util.Date;\r
-import java.util.Set;\r
-\r
 import com.itmill.toolkit.Application;\r
-import com.itmill.toolkit.data.Property.ValueChangeEvent;\r
+import com.itmill.toolkit.data.Container;\r
+import com.itmill.toolkit.data.Item;\r
+import com.itmill.toolkit.data.Property;\r
+import com.itmill.toolkit.data.util.BeanItem;\r
+import com.itmill.toolkit.ui.BaseFieldFactory;\r
 import com.itmill.toolkit.ui.Button;\r
-import com.itmill.toolkit.ui.DateField;\r
+import com.itmill.toolkit.ui.Component;\r
+import com.itmill.toolkit.ui.ComponentContainer;\r
+import com.itmill.toolkit.ui.Field;\r
 import com.itmill.toolkit.ui.Form;\r
 import com.itmill.toolkit.ui.GridLayout;\r
 import com.itmill.toolkit.ui.Label;\r
-import com.itmill.toolkit.ui.Layout;\r
-import com.itmill.toolkit.ui.OptionGroup;\r
 import com.itmill.toolkit.ui.OrderedLayout;\r
 import com.itmill.toolkit.ui.Panel;\r
+import com.itmill.toolkit.ui.Table;\r
 import com.itmill.toolkit.ui.TextField;\r
 import com.itmill.toolkit.ui.Window;\r
 import com.itmill.toolkit.ui.Button.ClickEvent;\r
-import com.itmill.toolkit.ui.Button.ClickListener;\r
 \r
 public class Ticket677 extends Application {\r
 \r
-    private static final Object P1 = new Object();\r
-    private static final Object P2 = new Object();\r
-    private static final Object P3 = new Object();\r
+    private static final Label info = new Label(\r
+            "<li> keep debug window open to see variable changes"\r
+                    + "<li> disable root panel w/ toggle button"\r
+                    + "<li> toggle one of the subpanels"\r
+                    + "<li> we attempt to focus the subpanels first textfield"\r
+                    + "<li> focusing should fail (try tabbing as well) [worked previousy]"\r
+                    + "<li> no variable changes should be sent from disabled fields [changed sent previously]"\r
+                    + "<li> try further toggling and tabbing around",\r
+            Label.CONTENT_RAW);\r
 \r
-    private Panel panel;\r
-    private Form form;\r
+    Panel root = new Panel("Enabled");\r
+    Panel one = new Panel("Enabled");\r
+    Panel two = new Panel("Enabled");\r
 \r
     public void init() {\r
-        Window w = new Window(getClass().getName());\r
-        setMainWindow(w);\r
-        // setTheme("tests-ticket");\r
-        GridLayout layout = new GridLayout(10, 10);\r
-        w.setLayout(layout);\r
-        createUI(layout);\r
-\r
-        createMultiLevelHierarchy();\r
-    }\r
-\r
-    private void createMultiLevelHierarchy() {\r
+        Window main = new Window();\r
+        setMainWindow(main);\r
 \r
-        Layout lo = new OrderedLayout();\r
+        main.addComponent(info);\r
 \r
-        final OptionGroup disabled = new OptionGroup("Levels to disable");\r
-        disabled.addItem("L1");\r
-        disabled.addItem("L2");\r
-        disabled.addItem("L3");\r
-        disabled.setMultiSelect(true);\r
-        disabled.setImmediate(true);\r
-        lo.addComponent(disabled);\r
-\r
-        final Label lastClick = new Label("-");\r
-        lastClick.setCaption("Last Click:");\r
-        lo.addComponent(lastClick);\r
+        OrderedLayout l = new OrderedLayout(\r
+                OrderedLayout.ORIENTATION_HORIZONTAL);\r
+        main.addComponent(l);\r
 \r
-        ClickListener clickListener = new Button.ClickListener() {\r
+        l.addComponent(new Button("Toggle root", new Button.ClickListener() {\r
             public void buttonClick(ClickEvent event) {\r
-                lastClick.setValue(event.getButton().getCaption() + " : "\r
-                        + new Date());\r
+                toggle(root);\r
             }\r
-        };\r
-\r
-        final Panel[] p = new Panel[4];\r
-\r
-        p[1] = new Panel("Level1");\r
-        lo.addComponent(p[1]);\r
-        Button b1 = new Button("Inside level1");\r
-        b1.addListener(clickListener);\r
-        p[1].addComponent(b1);\r
-        Button b1d = new Button("Disabked Inside level1");\r
-        b1d.setEnabled(false);\r
-        b1d.addListener(clickListener);\r
-        p[1].addComponent(b1d);\r
-\r
-        p[2] = new Panel("Level2");\r
-        p[1].addComponent(p[2]);\r
-        Button b2 = new Button("Inside level2");\r
-        b2.addListener(clickListener);\r
-        p[2].addComponent(b2);\r
-        Button b2d = new Button("Disabled Inside level2");\r
-        b2d.setEnabled(false);\r
-        b2d.addListener(clickListener);\r
-        p[2].addComponent(b2d);\r
-\r
-        p[3] = new Panel("Level3");\r
-        p[2].addComponent(p[3]);\r
-        Button b3 = new Button("Inside level3");\r
-        b3.addListener(clickListener);\r
-        p[3].addComponent(b3);\r
-        Button b3d = new Button("Disabled Inside level3");\r
-        b3d.setEnabled(false);\r
-        b3d.addListener(clickListener);\r
-        p[3].addComponent(b3d);\r
-\r
-        disabled.addListener(new OptionGroup.ValueChangeListener() {\r
-            public void valueChange(ValueChangeEvent event) {\r
-                Set disabledIds = (Set) disabled.getValue();\r
-                for (int i = 1; i < 4; i++) {\r
-                    boolean ena = !disabledIds.contains("L" + i);\r
-                    if (p[i].isEnabled() != ena) {\r
-                        p[i].setEnabled(ena);\r
-                    }\r
-                }\r
+        }));\r
+        l.addComponent(new Button("Toggle one", new Button.ClickListener() {\r
+            public void buttonClick(ClickEvent event) {\r
+                toggle(one);\r
             }\r
-        });\r
+        }));\r
+        l.addComponent(new Button("Toggle two", new Button.ClickListener() {\r
+            public void buttonClick(ClickEvent event) {\r
+                toggle(two);\r
+            }\r
+        }));\r
 \r
-        getMainWindow().addComponent(lo);\r
-    }\r
+        root.setLayout(new GridLayout(2, 3));\r
+        main.addComponent(root);\r
 \r
-    private void createUI(GridLayout layout) {\r
-        createPanel(layout);\r
-        createForm(layout);\r
+        TextField tf = new TextField("Enabled");\r
+        tf.setImmediate(true);\r
+        root.addComponent(tf);\r
+        tf = new TextField("Disabled");\r
+        tf.setImmediate(true);\r
+        tf.setEnabled(false);\r
+        root.addComponent(tf);\r
 \r
-        layout.addComponent(new Button("Enable", new ClickListener() {\r
+        root.addComponent(one);\r
+        tf = new TextField("Enabled");\r
+        tf.setImmediate(true);\r
+        one.addComponent(tf);\r
+        tf = new TextField("Disabled");\r
+        tf.setImmediate(true);\r
+        tf.setEnabled(false);\r
+        one.addComponent(tf);\r
 \r
-            public void buttonClick(ClickEvent event) {\r
-                panel.setEnabled(true);\r
-                form.setEnabled(true);\r
-            }\r
+        root.addComponent(two);\r
+        tf = new TextField("Enabled");\r
+        tf.setImmediate(true);\r
+        two.addComponent(tf);\r
+        tf = new TextField("Disabled");\r
+        tf.setImmediate(true);\r
+        tf.setEnabled(false);\r
+        two.addComponent(tf);\r
 \r
-        }));\r
+        Form f = new Form();\r
+        f.setFieldFactory(new BaseFieldFactory() {\r
 \r
-        layout.addComponent(new Button("Disable", new ClickListener() {\r
+            public Field createField(Item item, Object propertyId,\r
+                    Component uiContext) {\r
+                Field f = super.createField(item, propertyId, uiContext);\r
+                f.setEnabled(!"disabled".equals(propertyId));\r
+                return f;\r
+            }\r
 \r
-            public void buttonClick(ClickEvent event) {\r
-                panel.setEnabled(false);\r
-                form.setEnabled(false);\r
+        });\r
+        f.setItemDataSource(new BeanItem(new MyBean()));\r
+        root.addComponent(f);\r
+\r
+        Table t = new Table();\r
+        t.addContainerProperty("Text", String.class, null);\r
+        for (int i = 0; i < 5; i++) {\r
+            Item item = t.addItem("Item" + i);\r
+            Property p = item.getItemProperty("Text");\r
+            p.setValue(i > 1 ? "enabled" : "disabled");\r
+        }\r
+\r
+        t.setFieldFactory(new BaseFieldFactory() {\r
+\r
+            public Field createField(Container container, Object itemId,\r
+                    Object propertyId, Component uiContext) {\r
+                Field f = super.createField(container, itemId, propertyId,\r
+                        uiContext);\r
+                Item item = container.getItem(itemId);\r
+                Property p = item.getItemProperty(propertyId);\r
+                if ("disabled".equals(p.getValue())) {\r
+                    f.setEnabled(false);\r
+                }\r
+                return f;\r
             }\r
 \r
-        }));\r
+        });\r
+        t.setEditable(true);\r
+        root.addComponent(t);\r
 \r
     }\r
 \r
-    private void createForm(GridLayout layout) {\r
-        form = new Form();\r
-        form.addField(P1, new TextField());\r
-        form.addField(P2, new DateField());\r
-        form.addField(P3, new DateField());\r
-\r
-        layout.addComponent(form);\r
+    private void toggle(ComponentContainer c) {\r
+        boolean enable = "Disabled".equals(c.getCaption());\r
+        c.setEnabled(enable);\r
+        c.setCaption((enable ? "Enabled" : "Disabled"));\r
+        TextField tf = (TextField) c.getComponentIterator().next();\r
+        tf.focus();\r
     }\r
 \r
-    private void createPanel(GridLayout layout) {\r
-        panel = new Panel("panel caption");\r
-        layout.addComponent(panel);\r
+    class MyBean {\r
+        boolean on = false;\r
+        int number = 1;\r
+        String rw = "read/write";\r
+        String r = "read";\r
+        String disabled = "disabled";\r
 \r
-        panel.addComponent(new Label("Label 1"));\r
+        public boolean isOn() {\r
+            return on;\r
+        }\r
 \r
-        OrderedLayout innerLayout1 = new OrderedLayout(\r
-                OrderedLayout.ORIENTATION_HORIZONTAL);\r
-        innerLayout1.setSpacing(true);\r
-        panel.addComponent(innerLayout1);\r
+        public void setOn(boolean on) {\r
+            this.on = on;\r
+        }\r
 \r
-        TextField tf = new TextField("TextField inside orderedLayout");\r
-        tf.setImmediate(true);\r
-        innerLayout1.addComponent(tf);\r
-        innerLayout1.addComponent(new Button("Button inside orderedLayout",\r
-                new ClickListener() {\r
+        public int getNumber() {\r
+            return number;\r
+        }\r
 \r
-                    public void buttonClick(ClickEvent event) {\r
-                        System.out.println("Clicked "\r
-                                + event.getButton().getCaption());\r
-                    }\r
+        public void setNumber(int number) {\r
+            this.number = number;\r
+        }\r
 \r
-                }));\r
-        innerLayout1.addComponent(new Label("Label inside orderedLayout"));\r
+        public String getRw() {\r
+            return rw;\r
+        }\r
 \r
-        panel.addComponent(new Label("Label 2"));\r
+        public void setRw(String rw) {\r
+            this.rw = rw;\r
+        }\r
 \r
-        GridLayout innerLayout2 = new GridLayout(3, 3);\r
-        innerLayout2.setSpacing(true);\r
-        tf = new TextField("TextField inside gridLayout");\r
-        tf.setImmediate(true);\r
-        innerLayout2.addComponent(tf);\r
-        innerLayout2.addComponent(new Button("Button inside gridLayout"));\r
-        innerLayout2.addComponent(new Label("Label inside gridLayout"));\r
-        panel.addComponent(innerLayout2);\r
+        public String getDisabled() {\r
+            return disabled;\r
+        }\r
+\r
+        public void setDisabled(String disabled) {\r
+            this.disabled = disabled;\r
+        }\r
+\r
+        public String getR() {\r
+            return r;\r
+        }\r
 \r
     }\r
 }\r