]> source.dussan.org Git - vaadin-framework.git/commitdiff
Added test case for #5424
authorJohn Alhroos <john.ahlroos@itmill.com>
Tue, 10 Aug 2010 09:48:06 +0000 (09:48 +0000)
committerJohn Alhroos <john.ahlroos@itmill.com>
Tue, 10 Aug 2010 09:48:06 +0000 (09:48 +0000)
svn changeset:14444/svn branch:6.4

tests/src/com/vaadin/tests/layouts/GridLayoutCaptions.java [new file with mode: 0644]

diff --git a/tests/src/com/vaadin/tests/layouts/GridLayoutCaptions.java b/tests/src/com/vaadin/tests/layouts/GridLayoutCaptions.java
new file mode 100644 (file)
index 0000000..468261d
--- /dev/null
@@ -0,0 +1,224 @@
+package com.vaadin.tests.layouts;
+
+import com.vaadin.data.Item;
+import com.vaadin.data.Validator;
+import com.vaadin.data.util.BeanItem;
+import com.vaadin.tests.components.TestBase;
+import com.vaadin.ui.Button;
+import com.vaadin.ui.Component;
+import com.vaadin.ui.CssLayout;
+import com.vaadin.ui.DefaultFieldFactory;
+import com.vaadin.ui.Field;
+import com.vaadin.ui.Form;
+import com.vaadin.ui.FormFieldFactory;
+import com.vaadin.ui.GridLayout;
+import com.vaadin.ui.Label;
+import com.vaadin.ui.TextField;
+import com.vaadin.ui.VerticalLayout;
+import com.vaadin.ui.Window;
+import com.vaadin.ui.Button.ClickEvent;
+
+public class GridLayoutCaptions extends TestBase {
+
+    class CustomForm extends Form {
+        private com.vaadin.ui.GridLayout layout;
+
+        private VerticalLayout wrapper = new VerticalLayout();
+        private CssLayout wrapper2 = new CssLayout();
+
+        private FormFieldFactory fff = new FormFieldFactory() {
+            public Field createField(Item item, Object propertyId,
+                    Component uiContext) {
+
+                if (propertyId.equals(DataPOJO.Fields.name.name())) {
+                    Field f = DefaultFieldFactory.get().createField(item,
+                            propertyId, uiContext);
+                    f.setCaption("This is a long caption for the name field");
+                    return f;
+
+                } else if (propertyId.equals(DataPOJO.Fields.hp.name())) {
+                    Field f = DefaultFieldFactory.get().createField(item,
+                            propertyId, uiContext);
+                    f
+                            .setCaption("This is a long caption for the HP field, but it has a VL as a wrapper");
+
+                    return f;
+
+                } else if (propertyId.equals(DataPOJO.Fields.place.name())) {
+                    Field f = DefaultFieldFactory.get().createField(item,
+                            propertyId, uiContext);
+                    f
+                            .setCaption("This is a long caption for the Place field, but it has a CSSLo as a wrapper");
+
+                    return f;
+
+                } else if (propertyId.equals(DataPOJO.Fields.price.name())) {
+                    Field f = DefaultFieldFactory.get().createField(item,
+                            propertyId, uiContext);
+                    f
+                            .setCaption("With size undefined the caption behaves like this...");
+                    f.setSizeFull();
+
+                    return f;
+
+                } else {
+                    return DefaultFieldFactory.get().createField(item,
+                            propertyId, uiContext);
+                }
+            }
+        };
+
+        public CustomForm() {
+            super();
+            layout = new GridLayout(3, 3);
+            layout.addComponent(wrapper, 1, 0);
+            layout.addComponent(wrapper2, 2, 0);
+            layout.setSpacing(true);
+
+            setLayout(layout);
+            setFormFieldFactory(fff);
+
+            Label l = new Label("A label with caption");
+            l.setCaption("A really long caption that is clipped");
+
+            layout.addComponent(l, 0, 2);
+
+            Label l2 = new Label("A wrapped label with caption");
+            l2.setCaption("A really long caption that is not clipped");
+
+            VerticalLayout vl = new VerticalLayout();
+            vl.addComponent(l2);
+
+            layout.addComponent(vl, 1, 2);
+
+        }
+
+        public void createErrors() {
+            Validator.InvalidValueException ive = new Validator.InvalidValueException(
+                    "Ipsum lipsum laarum lop... ");
+
+            for (Object propIDs : getItemDataSource().getItemPropertyIds()) {
+                ((TextField) getField(propIDs)).setComponentError(ive);
+
+            }
+
+        }
+
+        public void clearErrors() {
+            for (Object propIDs : getItemDataSource().getItemPropertyIds()) {
+                ((TextField) getField(propIDs)).setComponentError(null);
+
+            }
+        }
+
+        @Override
+        protected void attachField(Object propertyId, Field field) {
+
+            if (propertyId.equals(DataPOJO.Fields.name.name())) {
+                layout.addComponent(field, 0, 0);
+
+            } else if (propertyId.equals(DataPOJO.Fields.hp.name())) {
+                wrapper.removeAllComponents();
+                wrapper.addComponent(field);
+            } else if (propertyId.equals(DataPOJO.Fields.place.name())) {
+                wrapper2.removeAllComponents();
+                wrapper2.addComponent(field);
+            } else if (propertyId.equals(DataPOJO.Fields.price.name())) {
+                layout.addComponent(field, 0, 1);
+            }
+
+        }
+    }
+
+    public static class DataPOJO {
+
+        public enum Fields {
+            name, price, hp, place;
+        }
+
+        private String name;
+        private int price;
+        private String hp;
+        private String place;
+
+        public String getName() {
+            return name;
+        }
+
+        public void setName(String name) {
+            this.name = name;
+        }
+
+        public int getPrice() {
+            return price;
+        }
+
+        public void setPrice(int price) {
+            this.price = price;
+        }
+
+        public String getHp() {
+            return hp;
+        }
+
+        public void setHp(String hp) {
+            this.hp = hp;
+        }
+
+        public String getPlace() {
+            return place;
+        }
+
+        public void setPlace(String place) {
+            this.place = place;
+        }
+
+    }
+
+    @Override
+    protected void setup() {
+        Window mainWindow = new Window("Formlayoutcaptionboom Application");
+        Label label = new Label("Hello Vaadin user");
+        mainWindow.addComponent(label);
+        setMainWindow(mainWindow);
+
+        DataPOJO forDemo = new DataPOJO();
+
+        BeanItem<DataPOJO> bi = new BeanItem<DataPOJO>(forDemo);
+
+        final CustomForm aFormWithGl = new CustomForm();
+
+        aFormWithGl.setItemDataSource(bi);
+
+        mainWindow.addComponent(aFormWithGl);
+
+        Button b = new Button("Give me an error!", new Button.ClickListener() {
+            public void buttonClick(ClickEvent event) {
+                aFormWithGl.createErrors();
+
+            }
+        });
+        mainWindow.addComponent(b);
+
+        Button b2 = new Button("Get rid of an error!",
+                new Button.ClickListener() {
+                    public void buttonClick(ClickEvent event) {
+                        aFormWithGl.clearErrors();
+
+                    }
+                });
+        mainWindow.addComponent(b2);
+
+    }
+
+    @Override
+    protected String getDescription() {
+        return "Captions in Gridlayout behaves differently than in other layouts";
+    }
+
+    @Override
+    protected Integer getTicketNumber() {
+        return 5424;
+    }
+
+}