From 106a294ebdaeac35582291c71c1fb03a54f8b26a Mon Sep 17 00:00:00 2001 From: John Alhroos Date: Tue, 10 Aug 2010 09:48:06 +0000 Subject: [PATCH] Added test case for #5424 svn changeset:14444/svn branch:6.4 --- .../tests/layouts/GridLayoutCaptions.java | 224 ++++++++++++++++++ 1 file changed, 224 insertions(+) create mode 100644 tests/src/com/vaadin/tests/layouts/GridLayoutCaptions.java diff --git a/tests/src/com/vaadin/tests/layouts/GridLayoutCaptions.java b/tests/src/com/vaadin/tests/layouts/GridLayoutCaptions.java new file mode 100644 index 0000000000..468261d523 --- /dev/null +++ b/tests/src/com/vaadin/tests/layouts/GridLayoutCaptions.java @@ -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 bi = new BeanItem(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; + } + +} -- 2.39.5