From 87273a9dd0222ce78a27df85340a328e25b6efa6 Mon Sep 17 00:00:00 2001 From: Johannes Tuikkala Date: Mon, 26 Jul 2010 13:28:52 +0000 Subject: [PATCH] #5334 layout test classes for vertical, horizontal and gridlayout svn changeset:14324/svn branch:6.4 --- .../layouttester/AbstractLayoutTests.java | 17 + .../layouts/layouttester/GridLayoutTests.java | 615 ++++++++++++++++++ .../layouttester/HorizontalLayoutTests.java | 586 +++++++++++++++++ .../layouttester/LayoutTesterApplication.java | 111 ++++ .../layouttester/VerticalLayoutTests.java | 559 ++++++++++++++++ .../tests/layouts/layouttester/alert.png | Bin 0 -> 3205 bytes .../tests/layouts/layouttester/help.png | Bin 0 -> 1109 bytes 7 files changed, 1888 insertions(+) create mode 100644 tests/src/com/vaadin/tests/layouts/layouttester/AbstractLayoutTests.java create mode 100644 tests/src/com/vaadin/tests/layouts/layouttester/GridLayoutTests.java create mode 100644 tests/src/com/vaadin/tests/layouts/layouttester/HorizontalLayoutTests.java create mode 100644 tests/src/com/vaadin/tests/layouts/layouttester/LayoutTesterApplication.java create mode 100644 tests/src/com/vaadin/tests/layouts/layouttester/VerticalLayoutTests.java create mode 100644 tests/src/com/vaadin/tests/layouts/layouttester/alert.png create mode 100644 tests/src/com/vaadin/tests/layouts/layouttester/help.png diff --git a/tests/src/com/vaadin/tests/layouts/layouttester/AbstractLayoutTests.java b/tests/src/com/vaadin/tests/layouts/layouttester/AbstractLayoutTests.java new file mode 100644 index 0000000000..22882b5158 --- /dev/null +++ b/tests/src/com/vaadin/tests/layouts/layouttester/AbstractLayoutTests.java @@ -0,0 +1,17 @@ +package com.vaadin.tests.layouts.layouttester; + +import com.vaadin.ui.Layout; + +public abstract class AbstractLayoutTests { + + abstract protected Layout getCaptionsTests(); + abstract protected Layout getIconsTests(); + abstract protected Layout getRequiredErrorIndicatorsTests(); + abstract protected Layout getAlignmentTests(); + abstract protected Layout getExpandRatiosTests(); + abstract protected Layout getMarginSpacingTests(); + abstract protected Layout getComponentAddReplaceMoveTests(); + abstract protected Layout getComponentSizingTests(); + abstract protected Layout getLayoutSizingTests(); + +} diff --git a/tests/src/com/vaadin/tests/layouts/layouttester/GridLayoutTests.java b/tests/src/com/vaadin/tests/layouts/layouttester/GridLayoutTests.java new file mode 100644 index 0000000000..b328914c75 --- /dev/null +++ b/tests/src/com/vaadin/tests/layouts/layouttester/GridLayoutTests.java @@ -0,0 +1,615 @@ +package com.vaadin.tests.layouts.layouttester; + +import com.vaadin.Application; +import com.vaadin.terminal.ClassResource; +import com.vaadin.terminal.Resource; +import com.vaadin.terminal.SystemError; +import com.vaadin.terminal.UserError; +import com.vaadin.ui.AbstractComponent; +import com.vaadin.ui.AbstractField; +import com.vaadin.ui.Alignment; +import com.vaadin.ui.Button; +import com.vaadin.ui.CheckBox; +import com.vaadin.ui.DateField; +import com.vaadin.ui.GridLayout; +import com.vaadin.ui.HorizontalLayout; +import com.vaadin.ui.InlineDateField; +import com.vaadin.ui.Label; +import com.vaadin.ui.Layout; +import com.vaadin.ui.Link; +import com.vaadin.ui.NativeSelect; +import com.vaadin.ui.Panel; +import com.vaadin.ui.TabSheet; +import com.vaadin.ui.Table; +import com.vaadin.ui.TextField; +import com.vaadin.ui.VerticalLayout; +import com.vaadin.ui.Button.ClickEvent; +import com.vaadin.ui.themes.Reindeer; + +public class GridLayoutTests extends AbstractLayoutTests { + + private Application application; + private AbstractComponent rc1, col1, col2, col3, row1, row2, row3, x3, x22; + + public GridLayoutTests(Application application) { + super(); + this.application = application; + } + + @Override + protected Layout getAlignmentTests() { + HorizontalLayout hlo = new HorizontalLayout(); + hlo.setSpacing(true); + GridLayout glo = getTestGrid(); + glo.addStyleName(Reindeer.LAYOUT_WHITE); + Alignment[] alignments = new Alignment[] { Alignment.BOTTOM_LEFT, + Alignment.BOTTOM_CENTER, Alignment.BOTTOM_RIGHT, + Alignment.MIDDLE_LEFT, Alignment.MIDDLE_CENTER, + Alignment.MIDDLE_RIGHT, Alignment.TOP_LEFT, + Alignment.TOP_CENTER, Alignment.TOP_RIGHT }; + + glo.replaceComponent(col1, col1 = new TextField()); + glo.replaceComponent(col2, col2 = new TextField()); + glo.replaceComponent(col3, col3 = new TextField()); + ((TextField) col1).setValue("BOTTOM_RIGHT"); + ((TextField) col2).setValue("BOTTOM_LEFT"); + ((TextField) col3).setValue("BOTTOM_CENTER"); + glo.setComponentAlignment(col2, alignments[0]); + glo.setComponentAlignment(col3, alignments[1]); + glo.setComponentAlignment(col1, alignments[2]); + + glo.setComponentAlignment(row1, alignments[3]); + glo.setComponentAlignment(row2, alignments[4]); + glo.setComponentAlignment(row3, alignments[5]); + hlo.addComponent(glo); + glo = getTestGrid(); + glo.replaceComponent(row1, row1 = new DateField()); + glo.replaceComponent(row2, row2 = new DateField()); + glo.replaceComponent(row3, row3 = new DateField()); + glo.setComponentAlignment(col2, alignments[6]); + glo.setComponentAlignment(col3, alignments[7]); + glo.setComponentAlignment(col1, alignments[8]); + hlo.addComponent(glo); + return hlo; + } + + @Override + protected Layout getCaptionsTests() { + GridLayout glo = getTestGrid(); + glo.setWidth("600px"); + String[] captions = new String[] { + "", + "abcdefghijklmnopq", + "abc def hij klm nop qrs tuv xyz qaz wsx edc rfv tgb yhn ujm mko nji bhu vgy cft cde" }; + glo.replaceComponent(col1, col1 = new TextField()); + glo.replaceComponent(col2, col2 = new TextField()); + glo.replaceComponent(col3, col3 = new TextField()); + + col1.setCaption(captions[0]); + col2.setCaption(captions[1]); + col3.setCaption(captions[2]); + col3.setIcon(new ClassResource("help.png", application)); + + glo.replaceComponent(row1, row1 = new Label()); + glo.replaceComponent(row2, row2 = new Label()); + glo.replaceComponent(row3, row3 = new Label()); + + row1.setCaption(captions[0]); + row2.setCaption(captions[1]); + row3.setCaption(captions[2]); + + glo.replaceComponent(x3, x3 = getTestTabsheet()); + glo.replaceComponent(x22, x22 = getTestTable()); + x22.setComponentError(new UserError("component error, user error")); + + x3.setCaption(captions[1]); + x22.setCaption(captions[2]); + + return glo; + } + + @Override + protected Layout getComponentAddReplaceMoveTests() { + final GridLayout glo = getTestGrid(); + Layout baseLayout = getBaseLayout(); + final Button button1 = new Button("Test add"); + final Button button2 = new Button("Test replace"); + final Button button3 = new Button("Test move"); + final Button button4 = new Button("Test remove comp 1,1"); + final Button button5 = new Button("Test remove row 0"); + final Button button6 = new Button("Test remove comp row3"); + + baseLayout.addComponent(button1); + baseLayout.addComponent(button2); + baseLayout.addComponent(button3); + baseLayout.addComponent(button4); + baseLayout.addComponent(button5); + baseLayout.addComponent(button6); + baseLayout.addComponent(glo); + button1.setEnabled(true); + button2.setEnabled(false); + button3.setEnabled(false); + button4.setEnabled(false); + button5.setEnabled(false); + button6.setEnabled(false); + + final HorizontalLayout source = new HorizontalLayout(); + source.addComponent(new Label("MOVE LABEL 1")); + source.addComponent(new Label("MOVE LABEL 2")); + + final AbstractComponent cc1 = getTestTabsheet(); + cc1.setCaption("ADDED COMPONENT"); + + final AbstractComponent cc2 = getTestTabsheet(); + cc2.setCaption("REPLACEMENT COMPONENT"); + + button1.addListener(new Button.ClickListener() { + private static final long serialVersionUID = 7716267156088629379L; + + @Override + public void buttonClick(ClickEvent event) { + glo.addComponent(cc1); + button1.setEnabled(false); + button2.setEnabled(true); + } + }); + button2.addListener(new Button.ClickListener() { + private static final long serialVersionUID = 7716267156088629379L; + + @Override + public void buttonClick(ClickEvent event) { + glo.replaceComponent(x22, cc2); + button2.setEnabled(false); + button3.setEnabled(true); + } + }); + button3.addListener(new Button.ClickListener() { + private static final long serialVersionUID = 7716267156088629379L; + + @Override + public void buttonClick(ClickEvent event) { + glo.moveComponentsFrom(source); + button3.setEnabled(false); + button4.setEnabled(true); + } + }); + button4.addListener(new Button.ClickListener() { + private static final long serialVersionUID = 7716267156088629379L; + + @Override + public void buttonClick(ClickEvent event) { + glo.removeComponent(1,1); + button4.setEnabled(false); + button5.setEnabled(true); + } + }); + + button5.addListener(new Button.ClickListener() { + private static final long serialVersionUID = 7716267156088629379L; + + @Override + public void buttonClick(ClickEvent event) { + glo.removeRow(0); + button5.setEnabled(false); + button6.setEnabled(true); + } + }); + button6.addListener(new Button.ClickListener() { + private static final long serialVersionUID = 7716267156088629379L; + + @Override + public void buttonClick(ClickEvent event) { + glo.removeComponent(row3); + button6.setEnabled(false); + } + }); + + return baseLayout; + } + + @Override + protected Layout getComponentSizingTests() { + final GridLayout glo = getTestGrid(); + Layout baseLayout = getBaseLayout(); + final Button button1 = new Button("full size, 3x1"); + final Button button2 = new Button("200 px width, 3x1"); + final Button button3 = new Button("200 px width, table"); + final Button button4 = new Button("undefined size+add, table"); + + glo.replaceComponent(x22, x22=getTestTable()); + + baseLayout.addComponent(button1); + baseLayout.addComponent(button2); + baseLayout.addComponent(button3); + baseLayout.addComponent(button4); + baseLayout.addComponent(glo); + button1.setEnabled(true); + button2.setEnabled(false); + button3.setEnabled(false); + button4.setEnabled(false); + + button1.addListener(new Button.ClickListener() { + private static final long serialVersionUID = 7716267156088629379L; + + @Override + public void buttonClick(ClickEvent event) { + x3.setSizeFull(); + button1.setEnabled(false); + button2.setEnabled(true); + } + }); + button2.addListener(new Button.ClickListener() { + private static final long serialVersionUID = 7716267156088629379L; + + @Override + public void buttonClick(ClickEvent event) { + x3.setWidth("200px"); + button2.setEnabled(false); + button3.setEnabled(true); + } + }); + button3.addListener(new Button.ClickListener() { + private static final long serialVersionUID = 7716267156088629379L; + + @Override + public void buttonClick(ClickEvent event) { + x22.setWidth("200px"); + button3.setEnabled(false); + button4.setEnabled(true); + } + }); + button4.addListener(new Button.ClickListener() { + private static final long serialVersionUID = 7716267156088629379L; + + @Override + public void buttonClick(ClickEvent event) { + x22.setSizeUndefined(); + ((Table)x22).addItem(new Object[] { "NEW ROW1" }, 3); + ((Table)x22).addItem(new Object[] { "NEW ROW2" }, 4); + button4.setEnabled(false); + } + }); + + + return baseLayout; + } + + @Override + protected Layout getExpandRatiosTests() { + final GridLayout glo = getTestGrid(); + Layout baseLayout = getBaseLayout(); + final Button button1 = new Button("set col 3 expand 1"); + final Button button2 = new Button("set all cols expand 0.25"); + final Button button3 = new Button("set row 0 expand 0.5"); + final Button button4 = new Button("set row 3 expand 0.2"); + + glo.replaceComponent(x22, x22=getTestTable()); + + baseLayout.addComponent(button1); + baseLayout.addComponent(button2); + baseLayout.addComponent(button3); + baseLayout.addComponent(button4); + baseLayout.addComponent(glo); + button1.setEnabled(true); + button2.setEnabled(false); + button3.setEnabled(false); + button4.setEnabled(false); + + button1.addListener(new Button.ClickListener() { + private static final long serialVersionUID = 7716267156088629379L; + + @Override + public void buttonClick(ClickEvent event) { + glo.setColumnExpandRatio(3, 1); + button1.setEnabled(false); + button2.setEnabled(true); + } + }); + button2.addListener(new Button.ClickListener() { + private static final long serialVersionUID = 7716267156088629379L; + + @Override + public void buttonClick(ClickEvent event) { + glo.setColumnExpandRatio(0, 0.25f); + glo.setColumnExpandRatio(1, 0.25f); + glo.setColumnExpandRatio(2, 0.25f); + glo.setColumnExpandRatio(3, 0.25f); + button2.setEnabled(false); + button3.setEnabled(true); + } + }); + button3.addListener(new Button.ClickListener() { + private static final long serialVersionUID = 7716267156088629379L; + + @Override + public void buttonClick(ClickEvent event) { + glo.setRowExpandRatio(0, 0.5f); + button3.setEnabled(false); + button4.setEnabled(true); + } + }); + button4.addListener(new Button.ClickListener() { + private static final long serialVersionUID = 7716267156088629379L; + + @Override + public void buttonClick(ClickEvent event) { + glo.setRowExpandRatio(3, 0.3f); + button4.setEnabled(false); + } + }); + + return baseLayout; + } + + @Override + protected Layout getIconsTests() { + GridLayout glo = getTestGrid(); + glo.setWidth("600px"); + Resource[] icons = new Resource[] { + new ClassResource("alert.png", application), + new ClassResource("help.png", application) }; + + glo.replaceComponent(col1, col1 = new TextField("TEXTFIELD")); + glo.replaceComponent(col2, col2 = new Label("LABEL")); + glo.replaceComponent(col3, col3 = new Link("LINK",null)); + + col1.setIcon(icons[0]); + col2.setIcon(icons[1]); + col3.setIcon(icons[0]); + rc1.setIcon(icons[1]); + col3.setCaption("long test caption bewucbwuebco or bmort b cbwecubw wbeucwe asdasd asdasda asdasd"); + col3.setComponentError(new UserError("component error, user error")); + + glo.replaceComponent(row1, row1 = new DateField()); + glo.replaceComponent(row2, row2 = new NativeSelect()); + glo.replaceComponent(row3, row3 = getTestTabsheet()); + + row1.setIcon(icons[1]); + row2.setIcon(icons[0]); + row3.setIcon(icons[1]); + + glo.replaceComponent(x3, x3 = new CheckBox("CHECKBOX")); + glo.replaceComponent(x22, x22 = new Panel("PANEL")); + x22.setIcon(new ClassResource("alert.png", application)); + + x3.setIcon(icons[0]); + x22.setIcon(icons[1]); + + return glo; + } + + @Override + protected Layout getLayoutSizingTests() { + final GridLayout glo = getTestGrid(); + Layout baseLayout = getBaseLayout(); + baseLayout.setWidth("500px"); + baseLayout.setHeight("500px"); + final Button button1 = new Button("Set fixed height 350px"); + final Button button2 = new Button("Set undefined size and add component"); + final Button button3 = new Button("Set fixed width and height 75%"); + final Button button4 = new Button("Set size full"); + + glo.replaceComponent(x22, x22=getTestTable()); + + baseLayout.addComponent(button1); + baseLayout.addComponent(button2); + baseLayout.addComponent(button3); + baseLayout.addComponent(button4); + baseLayout.addComponent(glo); + button1.setEnabled(true); + button2.setEnabled(false); + button3.setEnabled(false); + button4.setEnabled(false); + + button1.addListener(new Button.ClickListener() { + private static final long serialVersionUID = 7716267156088629379L; + + @Override + public void buttonClick(ClickEvent event) { + glo.setHeight("350px"); + button1.setEnabled(false); + button2.setEnabled(true); + } + }); + button2.addListener(new Button.ClickListener() { + private static final long serialVersionUID = 7716267156088629379L; + + @Override + public void buttonClick(ClickEvent event) { + glo.setSizeUndefined(); + glo.addComponent(new Label("--- NEW LABEL ---")); + button2.setEnabled(false); + button3.setEnabled(true); + } + }); + button3.addListener(new Button.ClickListener() { + private static final long serialVersionUID = 7716267156088629379L; + + @Override + public void buttonClick(ClickEvent event) { + glo.setWidth("75%"); + glo.setHeight("75%"); + button3.setEnabled(false); + button4.setEnabled(true); + } + }); + button4.addListener(new Button.ClickListener() { + private static final long serialVersionUID = 7716267156088629379L; + + @Override + public void buttonClick(ClickEvent event) { + glo.setSizeFull(); + button4.setEnabled(false); + } + }); + + + return baseLayout; + } + + @Override + protected Layout getMarginSpacingTests() { + final GridLayout glo = getTestGrid(); + Layout baseLayout = getBaseLayout(); + baseLayout.setWidth("500px"); + baseLayout.setHeight("500px"); + final Button button1 = new Button("Set margin on"); + final Button button2 = new Button("Set spacing on"); + final Button button3 = new Button("Set margin off"); + final Button button4 = new Button("Set spacing off"); + + baseLayout.addComponent(button1); + baseLayout.addComponent(button2); + baseLayout.addComponent(button3); + baseLayout.addComponent(button4); + button1.setEnabled(true); + button2.setEnabled(false); + button3.setEnabled(false); + button4.setEnabled(false); + + baseLayout.addComponent(glo); + + button1.addListener(new Button.ClickListener() { + private static final long serialVersionUID = 7716267156088629379L; + + @Override + public void buttonClick(ClickEvent event) { + glo.setMargin(true); + button1.setEnabled(false); + button2.setEnabled(true); + } + }); + button2.addListener(new Button.ClickListener() { + private static final long serialVersionUID = 7716267156088629379L; + + @Override + public void buttonClick(ClickEvent event) { + glo.setSpacing(true); + button2.setEnabled(false); + button3.setEnabled(true); + } + }); + button3.addListener(new Button.ClickListener() { + private static final long serialVersionUID = 7716267156088629379L; + + @Override + public void buttonClick(ClickEvent event) { + glo.setMargin(false); + button3.setEnabled(false); + button4.setEnabled(true); + } + }); + button4.addListener(new Button.ClickListener() { + private static final long serialVersionUID = 7716267156088629379L; + + @Override + public void buttonClick(ClickEvent event) { + glo.setSpacing(false); + button4.setEnabled(false); + } + }); + + return baseLayout; + } + + @Override + protected Layout getRequiredErrorIndicatorsTests() { + GridLayout glo = getTestGrid(); + glo.setWidth("600px"); + Resource[] icons = new Resource[] { + new ClassResource("alert.png", application), + new ClassResource("help.png", application) }; + + glo.replaceComponent(col1, col1 = new TextField("TEXTFIELD")); + glo.replaceComponent(col2, col2 = new Label("LABEL")); + glo.replaceComponent(col3, col3 = new Link("LINK",null)); + + col1.setIcon(icons[0]); + col1.setComponentError(new UserError("component error, user error")); + col2.setComponentError(new SystemError("component error, system error")); + col3.setComponentError(new UserError("component error, user error")); + + glo.replaceComponent(row1, row1 = new DateField()); + glo.replaceComponent(row2, row2 = new NativeSelect()); + glo.replaceComponent(row3, row3 = getTestTabsheet()); + + ((AbstractField)col1).setRequired(true); + ((AbstractField)col1).setValidationVisible(true); + ((AbstractField)col1).setRequiredError("required error"); + + ((AbstractField)row1).setRequired(true); + ((AbstractField)row1).setValidationVisible(true); + ((AbstractField)row1).setRequiredError("required error"); + + ((AbstractField)row2).setRequired(true); + ((AbstractField)row2).setValidationVisible(true); + ((AbstractField)row2).setRequiredError("required error"); + row2.setComponentError(new UserError("component error, user error")); + + row3.setComponentError(new UserError("component error, user error")); + row3.setIcon(icons[1]); + row3.setCaption("long test caption bewucbwuebco or bmort b cbwecubw wbeucwe asdasd asdasda asdasd"); + + glo.replaceComponent(x3, x3 = new CheckBox("CHECKBOX")); + glo.replaceComponent(x22, x22 = new Panel("PANEL")); + + x3.setComponentError(new UserError("component error, user error")); + x22.setComponentError(new UserError("component error, user error")); + x22.setIcon(icons[0]); + + return glo; + } + + private GridLayout getTestGrid() { + // Create a 4 by 4 grid layout. + GridLayout grid = new GridLayout(4, 4); + // Fill out the first row using the cursor. + grid.addComponent(rc1 = new Button("R/C 1")); + + grid.addComponent(col1 = new Button("Col " + (grid.getCursorX() + 1))); + grid.addComponent(col2 = new Button("Col " + (grid.getCursorX() + 1))); + grid.addComponent(col3 = new Button("Col " + (grid.getCursorX() + 1))); + + // Fill out the first column using coordinates. + + grid.addComponent(row1 = new Button("Row " + 1), 0, 1); + grid.addComponent(row2 = new Button("Row " + 2), 0, 2); + grid.addComponent(row3 = new Button("Row " + 3), 0, 3); + + // Add some components of various shapes. + grid.addComponent(x3 = new Button("3x1 button"), 1, 1, 3, 1); + grid.addComponent(new Label("1x2 cell"), 1, 2, 1, 3); + x22 = new InlineDateField("A 2x2 date field"); + ((InlineDateField) x22).setResolution(DateField.RESOLUTION_DAY); + grid.addComponent(x22, 2, 2, 3, 3); + grid.setWidth("450px"); + grid.setHeight("450px"); + return grid; + } + + private VerticalLayout getBaseLayout() { + VerticalLayout vlo = new VerticalLayout(); + vlo.setSizeUndefined(); + return vlo; + } + + private AbstractComponent getTestTabsheet() { + TabSheet tabsheet = new TabSheet(); + tabsheet.setSizeUndefined(); + tabsheet.addTab(new Label("TAB1"), "TAB1", new ClassResource( + "alert.png", application)); + tabsheet.addTab(new Label("TAB2"), "TAB2", null); + return tabsheet; + } + + private Table getTestTable() { + Table t = new Table(); + t.setSizeUndefined(); + t.setPageLength(5); + t.addContainerProperty("test", String.class, null); + t.addItem(new Object[] { "qwertyuiop asdfghjklöä zxccvbnm,m,." }, 1); + t.addItem(new Object[] { "YGVYTCTCTRXRXRXRX" }, 2); + return t; + } + +} diff --git a/tests/src/com/vaadin/tests/layouts/layouttester/HorizontalLayoutTests.java b/tests/src/com/vaadin/tests/layouts/layouttester/HorizontalLayoutTests.java new file mode 100644 index 0000000000..103997ef8e --- /dev/null +++ b/tests/src/com/vaadin/tests/layouts/layouttester/HorizontalLayoutTests.java @@ -0,0 +1,586 @@ +package com.vaadin.tests.layouts.layouttester; + +import com.vaadin.Application; +import com.vaadin.terminal.ClassResource; +import com.vaadin.terminal.Resource; +import com.vaadin.terminal.SystemError; +import com.vaadin.terminal.UserError; +import com.vaadin.ui.AbstractComponent; +import com.vaadin.ui.AbstractField; +import com.vaadin.ui.Alignment; +import com.vaadin.ui.Button; +import com.vaadin.ui.CheckBox; +import com.vaadin.ui.DateField; +import com.vaadin.ui.HorizontalLayout; +import com.vaadin.ui.Label; +import com.vaadin.ui.Layout; +import com.vaadin.ui.Link; +import com.vaadin.ui.NativeSelect; +import com.vaadin.ui.Select; +import com.vaadin.ui.TabSheet; +import com.vaadin.ui.Table; +import com.vaadin.ui.TextField; +import com.vaadin.ui.VerticalLayout; +import com.vaadin.ui.Button.ClickEvent; +import com.vaadin.ui.themes.Reindeer; + +public class HorizontalLayoutTests extends AbstractLayoutTests { + + private Application application; + + public HorizontalLayoutTests(Application application) { + super(); + this.application = application; + } + + @Override + protected Layout getAlignmentTests() { + Layout baseLayout = getBaseLayout(); + HorizontalLayout vlo = getTestLaytout(); + AbstractComponent[] components = new AbstractComponent[9]; + String[] styles = { Reindeer.LAYOUT_BLUE, Reindeer.LAYOUT_WHITE }; + Alignment[] alignments = new Alignment[] { Alignment.BOTTOM_LEFT, + Alignment.BOTTOM_CENTER, Alignment.BOTTOM_RIGHT, + Alignment.MIDDLE_LEFT, Alignment.MIDDLE_CENTER, + Alignment.MIDDLE_RIGHT, Alignment.TOP_LEFT, + Alignment.TOP_CENTER, Alignment.TOP_RIGHT }; + + vlo.addStyleName(Reindeer.LAYOUT_WHITE); + baseLayout.addComponent(vlo); + int index = 0; + for (int i = 0; i < components.length; i++) { + if (i > 0 && i % 3 == 0) { + vlo = getTestLaytout(); + vlo.addStyleName(styles[index++]); + baseLayout.addComponent(vlo); + } + components[i] = new TextField(); + ((TextField) components[i]).setValue("FIELD " + i); + vlo.addComponent(components[i]); + vlo.setComponentAlignment(components[i], alignments[i]); + } + return baseLayout; + } + + @Override + protected Layout getCaptionsTests() { + Layout baseLayout = getBaseLayout(); + AbstractComponent component = null; + + String[] captions = new String[] { + "", + "abcdefghijklmnopq", + "abc def hij klm nop qrs tuv xyz qaz wsx edc rfv tgb yhn ujm mko nji bhu vgy cft cde" }; + + HorizontalLayout vlo = getTestLaytout(); + for (int i = 0; i < captions.length; i++) { + component = new TextField(); + ((TextField) component).setValue("FIELD " + i); + component.setCaption(captions[i]); + vlo.addComponent(component); + } + baseLayout.addComponent(vlo); + vlo = getTestLaytout(); + for (int i = 0; i < captions.length; i++) { + component = new Label(); + ((Label) component).setValue("Label " + i); + component.setCaption(captions[i]); + vlo.addComponent(component); + } + baseLayout.addComponent(vlo); + vlo = getTestLaytout(); + for (int i = 0; i < captions.length; i++) { + component = new Select(); + component.setCaption(captions[i]); + component.setIcon(new ClassResource("help.png", application)); + vlo.addComponent(component); + } + baseLayout.addComponent(vlo); + vlo = getTestLaytout(); + for (int i = 0; i < captions.length; i++) { + component = getTestTabsheet(); + component.setCaption(captions[i]); + component.setComponentError(new UserError("component error, user error")); + vlo.addComponent(component); + } + baseLayout.addComponent(vlo); + return baseLayout; + } + + @Override + protected Layout getComponentAddReplaceMoveTests() { + final HorizontalLayout vlo = getTestLaytout(); + Layout baseLayout = getBaseLayout(); + final HorizontalLayout source = new HorizontalLayout(); + source.addComponent(new Label("OTHER LABEL 1")); + source.addComponent(new Label("OTHER LABEL 2")); + + final AbstractComponent c1 = new Button("BUTTON"); + final AbstractComponent c2 = new Label("LABEL", + Label.CONTENT_XHTML); + final AbstractComponent c3 = new Table("TABLE"); + c3.setHeight("100px"); + c3.setWidth("100%"); + + final Button addButton = new Button("Test add"); + final Button replaceButton = new Button("Test replace"); + final Button moveButton = new Button("Test move"); + final Button removeButton = new Button("Test remove"); + + replaceButton.setEnabled(false); + moveButton.setEnabled(false); + removeButton.setEnabled(false); + + addButton.addListener(new Button.ClickListener() { + private static final long serialVersionUID = 7716267156088629379L; + + @Override + public void buttonClick(ClickEvent event) { + vlo.addComponent(new TextField()); + addButton.setEnabled(false); + replaceButton.setEnabled(true); + } + }); + replaceButton.addListener(new Button.ClickListener() { + private static final long serialVersionUID = 7716267156088629379L; + + @Override + public void buttonClick(ClickEvent event) { + vlo.replaceComponent(c1, c3); + replaceButton.setEnabled(false); + moveButton.setEnabled(true); + } + }); + moveButton.addListener(new Button.ClickListener() { + private static final long serialVersionUID = 7716267156088629379L; + + @Override + public void buttonClick(ClickEvent event) { + vlo.moveComponentsFrom(source); + moveButton.setEnabled(false); + removeButton.setEnabled(true); + } + }); + removeButton.addListener(new Button.ClickListener() { + private static final long serialVersionUID = 7716267156088629379L; + + @Override + public void buttonClick(ClickEvent event) { + vlo.removeComponent(c1); + vlo.removeComponent(c2); + removeButton.setEnabled(false); + } + }); + + baseLayout.addComponent(addButton); + baseLayout.addComponent(replaceButton); + baseLayout.addComponent(moveButton); + baseLayout.addComponent(removeButton); + + vlo.addComponent(c1); + vlo.addComponent(c2); + vlo.addComponent(c3); + baseLayout.addComponent(vlo); + + return baseLayout; + } + + @Override + protected Layout getComponentSizingTests() { + final HorizontalLayout vlo = getTestLaytout(); + Layout baseLayout = getBaseLayout(); + + final AbstractComponent c = getTestTable(); + + final Button biggerButton = new Button("full size"); + final Button smallerButton = new Button("200 px width"); + final Button originalButton = new Button("undefined size+add"); + + baseLayout.addComponent(biggerButton); + baseLayout.addComponent(smallerButton); + baseLayout.addComponent(originalButton); + vlo.addComponent(c); + baseLayout.addComponent(vlo); + + biggerButton.setEnabled(true); + smallerButton.setEnabled(false); + originalButton.setEnabled(false); + + biggerButton.addListener(new Button.ClickListener() { + private static final long serialVersionUID = 7716267156088629379L; + + @Override + public void buttonClick(ClickEvent event) { + c.setSizeFull(); + biggerButton.setEnabled(false); + smallerButton.setEnabled(true); + } + }); + smallerButton.addListener(new Button.ClickListener() { + private static final long serialVersionUID = 7716267156088629379L; + + @Override + public void buttonClick(ClickEvent event) { + c.setWidth("200px"); + smallerButton.setEnabled(false); + originalButton.setEnabled(true); + } + }); + originalButton.addListener(new Button.ClickListener() { + private static final long serialVersionUID = 7716267156088629379L; + + @Override + public void buttonClick(ClickEvent event) { + originalButton.setEnabled(false); + c.setSizeUndefined(); + ((Table) c) + .addItem( + new Object[] { "VYVTCTC VYVYV ECECCE NIDSD SDMPOM" }, + 3); + } + }); + + return baseLayout; + } + + @Override + protected Layout getLayoutSizingTests() { + final HorizontalLayout vlo = getTestLaytout(); + vlo.setSpacing(false); + vlo.setMargin(false); + Layout baseLayout = getBaseLayout(); + final AbstractComponent c1 = getTestTable(); + c1.setSizeFull(); + final AbstractComponent c2 = getTestTable(); + c2.setSizeFull(); + + final Button button1 = new Button("Set fixed height 350px"); + final Button button2 = new Button( + "Set undefined size and add component"); + final Button button3 = new Button("Set fixed width and height 75%"); + final Button button4 = new Button("Set size full"); + + baseLayout.addComponent(button1); + baseLayout.addComponent(button2); + baseLayout.addComponent(button3); + baseLayout.addComponent(button4); + button1.setEnabled(true); + button2.setEnabled(false); + button3.setEnabled(false); + button4.setEnabled(false); + + vlo.addComponent(c1); + vlo.addComponent(c2); + vlo.setExpandRatio(c1, 0.5f); + vlo.setExpandRatio(c2, 0.5f); + + baseLayout.addComponent(vlo); + + button1.addListener(new Button.ClickListener() { + private static final long serialVersionUID = 7716267156088629379L; + + @Override + public void buttonClick(ClickEvent event) { + vlo.setHeight("350px"); + button1.setEnabled(false); + button2.setEnabled(true); + } + }); + button2.addListener(new Button.ClickListener() { + private static final long serialVersionUID = 7716267156088629379L; + + @Override + public void buttonClick(ClickEvent event) { + vlo.setSizeUndefined(); + vlo.addComponent(new Label("--- NEW LABEL ---")); + button2.setEnabled(false); + button3.setEnabled(true); + } + }); + button3.addListener(new Button.ClickListener() { + private static final long serialVersionUID = 7716267156088629379L; + + @Override + public void buttonClick(ClickEvent event) { + vlo.setWidth("75%"); + vlo.setHeight("75%"); + button3.setEnabled(false); + button4.setEnabled(true); + } + }); + button4.addListener(new Button.ClickListener() { + private static final long serialVersionUID = 7716267156088629379L; + + @Override + public void buttonClick(ClickEvent event) { + vlo.setSizeFull(); + button4.setEnabled(false); + } + }); + + return baseLayout; + } + + @Override + protected Layout getExpandRatiosTests() { + final HorizontalLayout vlo = getTestLaytout(); + Layout baseLayout = getBaseLayout(); + final AbstractComponent c1 = getTestTable(); + c1.setSizeFull(); + final AbstractComponent c2 = getTestTable(); + c2.setSizeFull(); + + final Button button1 = new Button("Expand to 1/undefined"); + final Button button2 = new Button("Expand to 0.5/0.5"); + final Button button3 = new Button("Expand to 0.75/0.25"); + + baseLayout.addComponent(button1); + baseLayout.addComponent(button2); + baseLayout.addComponent(button3); + button1.setEnabled(true); + button2.setEnabled(false); + button3.setEnabled(false); + + vlo.addComponent(c1); + vlo.addComponent(c2); + baseLayout.addComponent(vlo); + + button1.addListener(new Button.ClickListener() { + private static final long serialVersionUID = 7716267156088629379L; + + @Override + public void buttonClick(ClickEvent event) { + vlo.setExpandRatio(c1, 1.0f); + button1.setEnabled(false); + button2.setEnabled(true); + } + }); + button2.addListener(new Button.ClickListener() { + private static final long serialVersionUID = 7716267156088629379L; + + @Override + public void buttonClick(ClickEvent event) { + vlo.setExpandRatio(c1, 0.5f); + vlo.setExpandRatio(c2, 0.5f); + button2.setEnabled(false); + button3.setEnabled(true); + } + }); + button3.addListener(new Button.ClickListener() { + private static final long serialVersionUID = 7716267156088629379L; + + @Override + public void buttonClick(ClickEvent event) { + vlo.setExpandRatio(c1, 0.75f); + vlo.setExpandRatio(c2, 0.25f); + button3.setEnabled(false); + } + }); + return baseLayout; + } + + @Override + protected Layout getIconsTests() { + HorizontalLayout vlo = getTestLaytout(); + AbstractComponent[] components = new AbstractComponent[2]; + Layout baseLayout = getBaseLayout(); + Resource[] icons = new Resource[] { + new ClassResource("alert.png", application), + new ClassResource("help.png", application) }; + + for (int i = 0; i < components.length; i++) { + components[i] = new TextField(); + ((TextField) components[i]).setValue("FIELD " + i); + components[i].setIcon(icons[i]); + components[i].setCaption("long test caption bewucbwuebco or bmort b cbwecubw wbeucwe asdasd asdasda asdasd"); + vlo.addComponent(components[i]); + } + for (int i = 0; i < components.length; i++) { + components[i] = new Label(); + ((Label) components[i]).setValue("Label " + i); + components[i].setIcon(icons[i]); + vlo.addComponent(components[i]); + } + baseLayout.addComponent(vlo); + vlo = getTestLaytout(); + for (int i = 0; i < components.length; i++) { + components[i] = new Select(); + components[i].setIcon(icons[i]); + vlo.addComponent(components[i]); + } + for (int i = 0; i < components.length; i++) { + components[i] = new Button(); + components[i].setComponentError(new UserError("component error, user error")); + components[i].setIcon(icons[i]); + vlo.addComponent(components[i]); + } + for (int i = 0; i < components.length; i++) { + components[i] = new Link("Link", null); + components[i].setIcon(icons[i]); + vlo.addComponent(components[i]); + } + baseLayout.addComponent(vlo); + return baseLayout; + } + + @Override + protected Layout getMarginSpacingTests() { + final HorizontalLayout vlo = getTestLaytout(); + vlo.setSpacing(false); + vlo.setMargin(false); + Layout baseLayout = getBaseLayout(); + final AbstractComponent c1 = getTestTable(); + c1.setSizeFull(); + final AbstractComponent c2 = getTestTable(); + c2.setSizeFull(); + + final Button button1 = new Button("Set margin on"); + final Button button2 = new Button("Set spacing on"); + final Button button3 = new Button("Set margin off"); + final Button button4 = new Button("Set spacing off"); + + baseLayout.addComponent(button1); + baseLayout.addComponent(button2); + baseLayout.addComponent(button3); + baseLayout.addComponent(button4); + button1.setEnabled(true); + button2.setEnabled(false); + button3.setEnabled(false); + button4.setEnabled(false); + + vlo.addComponent(c1); + vlo.addComponent(c2); + vlo.setExpandRatio(c1, 0.5f); + vlo.setExpandRatio(c2, 0.5f); + baseLayout.addComponent(vlo); + + button1.addListener(new Button.ClickListener() { + private static final long serialVersionUID = 7716267156088629379L; + + @Override + public void buttonClick(ClickEvent event) { + vlo.setMargin(true); + button1.setEnabled(false); + button2.setEnabled(true); + } + }); + button2.addListener(new Button.ClickListener() { + private static final long serialVersionUID = 7716267156088629379L; + + @Override + public void buttonClick(ClickEvent event) { + vlo.setSpacing(true); + button2.setEnabled(false); + button3.setEnabled(true); + } + }); + button3.addListener(new Button.ClickListener() { + private static final long serialVersionUID = 7716267156088629379L; + + @Override + public void buttonClick(ClickEvent event) { + vlo.setMargin(false); + button3.setEnabled(false); + button4.setEnabled(true); + } + }); + button4.addListener(new Button.ClickListener() { + private static final long serialVersionUID = 7716267156088629379L; + + @Override + public void buttonClick(ClickEvent event) { + vlo.setSpacing(false); + button4.setEnabled(false); + } + }); + + return baseLayout; + } + + @Override + protected Layout getRequiredErrorIndicatorsTests() { + HorizontalLayout vlo = getTestLaytout(); + Layout baseLayout = getBaseLayout(); + AbstractComponent[] components = new AbstractComponent[4]; + components[0] = new Label("LABEL"); + components[0].setSizeUndefined(); + components[1] = new Button("BUTTON"); + components[2] = getTestTable(); + components[3] = getTestTabsheet(); + components[3].setIcon(new ClassResource("help.png", application)); + + AbstractField[] fields = new AbstractField[6]; + fields[0] = new TextField(); + fields[0].setRequired(true); + fields[0].setValidationVisible(true); + fields[0].setRequiredError("required error"); + + fields[1] = new TextField(); + fields[1].setValue("TEXTFIELD2"); + fields[1] + .setComponentError(new UserError("component error, user error")); + + fields[2] = new Select(); + fields[2].setComponentError(new SystemError( + "component error, system error")); + fields[3] = new DateField(); + fields[3].setComponentError(new SystemError( + "component error, system error")); + + fields[4] = new CheckBox(); + fields[4] + .setComponentError(new UserError("component error, user error")); + + fields[5] = new NativeSelect(); + fields[5].setRequired(true); + fields[5].setValidationVisible(true); + fields[5].setRequiredError("required error"); + fields[5].setComponentError(new UserError("component error, user error")); + fields[5].setIcon(new ClassResource("alert.png", application)); + + for (int i = 0; i < components.length; i++) { + components[i].setComponentError(new UserError( + "component error, user error")); + vlo.addComponent(components[i]); + } + baseLayout.addComponent(vlo); + vlo = getTestLaytout(); + for (int i = 0; i < fields.length; i++) { + vlo.addComponent(fields[i]); + } + baseLayout.addComponent(vlo); + return baseLayout; + } + + private VerticalLayout getBaseLayout() { + VerticalLayout vlo = new VerticalLayout(); + vlo.setSizeUndefined(); + return vlo; + } + + private HorizontalLayout getTestLaytout() { + HorizontalLayout vlo = new HorizontalLayout(); + vlo.setHeight("100px"); + vlo.setWidth("750px"); + return vlo; + } + + private AbstractComponent getTestTabsheet() { + TabSheet tabsheet = new TabSheet(); + tabsheet.setSizeUndefined(); + tabsheet.addTab(new Label("TAB1"), "TAB1", new ClassResource( + "alert.png", application)); + tabsheet.addTab(new Label("TAB2"), "TAB2", null); + return tabsheet; + } + + private Table getTestTable() { + Table t = new Table(); + t.setSizeUndefined(); + t.setPageLength(5); + t.addContainerProperty("test", String.class, null); + t.addItem(new Object[] { "qwertyuiop asdfghjklöä zxccvbnm,m,." }, 1); + t.addItem(new Object[] { "YGVYTCTCTRXRXRXRX" }, 2); + return t; + } +} diff --git a/tests/src/com/vaadin/tests/layouts/layouttester/LayoutTesterApplication.java b/tests/src/com/vaadin/tests/layouts/layouttester/LayoutTesterApplication.java new file mode 100644 index 0000000000..134aa979ac --- /dev/null +++ b/tests/src/com/vaadin/tests/layouts/layouttester/LayoutTesterApplication.java @@ -0,0 +1,111 @@ +package com.vaadin.tests.layouts.layouttester; + +import java.lang.reflect.Method; + +import com.vaadin.Application; +import com.vaadin.data.Property; +import com.vaadin.data.Property.ValueChangeEvent; +import com.vaadin.ui.*; +import com.vaadin.ui.Button.ClickEvent; +import com.vaadin.ui.themes.Reindeer; + +public class LayoutTesterApplication extends Application { + private static final long serialVersionUID = 4599974816374406981L; + Button nextButton = new Button("Next"); + private int layoutIndex = -1; + private int layoutCount = 1; + + private Method[] layoutGetters; + private Window mainWindow; + private NativeSelect layoutSelector; + + @Override + public void init() { + mainWindow = new Window("LayoutTesterApplication"); + setMainWindow(mainWindow); + loadLayoutGetters(); + nextLaytout(); + + nextButton.addListener(new Button.ClickListener() { + private static final long serialVersionUID = -1577298910202253538L; + @Override + public void buttonClick(ClickEvent event) { + nextLaytout(); + } + }); + } + + private void nextLaytout() { + try { + mainWindow.removeAllComponents(); + HorizontalLayout vlo = new HorizontalLayout(); + vlo.setSpacing(true); + ++layoutIndex; + if (layoutIndex>=layoutCount) { + layoutIndex=0; + } + mainWindow.addComponent(vlo); + vlo.addComponent(nextButton); + vlo.addComponent(getLayoutTypeSelect()); + vlo.addComponent(new Label(layoutGetters[layoutIndex].getName())); + + Layout lo = null; + if (layoutSelector.getValue()==VerticalLayout.class) { + lo = getVerticalTestLayout(layoutIndex); + } + else if (layoutSelector.getValue()==HorizontalLayout.class) { + lo = getHorizontalTestLayout(layoutIndex); + } + else if (layoutSelector.getValue()==GridLayout.class) { + lo = getGridTestLayout(layoutIndex); + } + if (lo!=null) { + lo.addStyleName(Reindeer.LAYOUT_BLUE); + mainWindow.addComponent(lo); + } + } catch (Exception e) { + e.printStackTrace(); + throw new RuntimeException(e); + } + } + + public void loadLayoutGetters() { + layoutGetters = AbstractLayoutTests.class.getDeclaredMethods(); + layoutCount = layoutGetters.length; + } + + public Layout getVerticalTestLayout(int index) throws Exception { + VerticalLayoutTests vlotest = new VerticalLayoutTests(this); + return (Layout) layoutGetters[index].invoke(vlotest, (Object[])null); + } + public Layout getHorizontalTestLayout(int index) throws Exception { + HorizontalLayoutTests hlotest = new HorizontalLayoutTests(this); + return (Layout) layoutGetters[index].invoke(hlotest, (Object[])null); + } + public Layout getGridTestLayout(int index) throws Exception { + GridLayoutTests hlotest = new GridLayoutTests(this); + return (Layout) layoutGetters[index].invoke(hlotest, (Object[])null); + } + + private NativeSelect getLayoutTypeSelect() { + if (layoutSelector==null) { + layoutSelector = new NativeSelect(); + layoutSelector.addItem(VerticalLayout.class); + layoutSelector.addItem(HorizontalLayout.class); + layoutSelector.addItem(GridLayout.class); + layoutSelector.setNullSelectionAllowed(false); + layoutSelector.setImmediate(true); + layoutSelector.select(VerticalLayout.class); + layoutSelector.addListener(new Property.ValueChangeListener() { + private static final long serialVersionUID = -605319614765838359L; + @Override + public void valueChange(ValueChangeEvent event) { + layoutIndex=-1; + nextLaytout(); + } + }); + } + return layoutSelector; + } + +} diff --git a/tests/src/com/vaadin/tests/layouts/layouttester/VerticalLayoutTests.java b/tests/src/com/vaadin/tests/layouts/layouttester/VerticalLayoutTests.java new file mode 100644 index 0000000000..8677130117 --- /dev/null +++ b/tests/src/com/vaadin/tests/layouts/layouttester/VerticalLayoutTests.java @@ -0,0 +1,559 @@ +package com.vaadin.tests.layouts.layouttester; + +import com.vaadin.Application; +import com.vaadin.terminal.ClassResource; +import com.vaadin.terminal.Resource; +import com.vaadin.terminal.SystemError; +import com.vaadin.terminal.UserError; +import com.vaadin.ui.AbstractComponent; +import com.vaadin.ui.AbstractField; +import com.vaadin.ui.Alignment; +import com.vaadin.ui.Button; +import com.vaadin.ui.CheckBox; +import com.vaadin.ui.DateField; +import com.vaadin.ui.HorizontalLayout; +import com.vaadin.ui.Label; +import com.vaadin.ui.Layout; +import com.vaadin.ui.Link; +import com.vaadin.ui.NativeSelect; +import com.vaadin.ui.Select; +import com.vaadin.ui.TabSheet; +import com.vaadin.ui.Table; +import com.vaadin.ui.TextField; +import com.vaadin.ui.VerticalLayout; +import com.vaadin.ui.Button.ClickEvent; + +public class VerticalLayoutTests extends AbstractLayoutTests { + + private Application application; + + public VerticalLayoutTests(Application application) { + super(); + this.application = application; + } + + + + @Override + protected Layout getAlignmentTests() { + VerticalLayout vlo = getTestLaytout(); + AbstractComponent[] components = new AbstractComponent[9]; + Alignment[] alignments = new Alignment[] { Alignment.BOTTOM_CENTER, + Alignment.BOTTOM_LEFT, Alignment.BOTTOM_RIGHT, + Alignment.MIDDLE_CENTER, Alignment.MIDDLE_LEFT, + Alignment.MIDDLE_RIGHT, Alignment.TOP_CENTER, + Alignment.TOP_LEFT, Alignment.TOP_RIGHT }; + + vlo.addComponent(new Label("
", Label.CONTENT_XHTML)); + for (int i = 0; i < components.length; i++) { + components[i] = new TextField(); + ((TextField) components[i]).setValue("FIELD " + i); + vlo.addComponent(components[i]); + vlo.setComponentAlignment(components[i], alignments[i]); + vlo.addComponent(new Label("
", Label.CONTENT_XHTML)); + } + return vlo; + } + + @Override + protected Layout getCaptionsTests() { + VerticalLayout vlo = getTestLaytout(); + AbstractComponent component = null; + + String[] captions = new String[] { + "", + "abcdefghijklmnopq", + "abc def hij klm nop qrs tuv xyz qaz wsx edc rfv tgb yhn ujm mko nji bhu vgy cft cde"}; + + vlo.addComponent(new Label("
", Label.CONTENT_XHTML)); + for (int i = 0; i < captions.length; i++) { + component = new TextField(); + ((TextField) component).setValue("FIELD " + i); + component.setCaption(captions[i]); + vlo.addComponent(component); + } + vlo.addComponent(new Label("
", Label.CONTENT_XHTML)); + for (int i = 0; i < captions.length; i++) { + component = new Label(); + ((Label) component).setValue("Label " + i); + component.setCaption(captions[i]); + vlo.addComponent(component); + } + vlo.addComponent(new Label("
", Label.CONTENT_XHTML)); + for (int i = 0; i < captions.length; i++) { + component = new Select(); + component.setCaption(captions[i]); + component.setIcon(new ClassResource("help.png", application)); + vlo.addComponent(component); + } + vlo.addComponent(new Label("
", Label.CONTENT_XHTML)); + for (int i = 0; i < captions.length; i++) { + component = getTestTabsheet(); + component.setCaption(captions[i]); + component.setComponentError(new UserError("component error, user error")); + vlo.addComponent(component); + } + return vlo; + } + + @Override + protected Layout getComponentAddReplaceMoveTests() { + final VerticalLayout vlo = getTestLaytout(); + vlo.addComponent(new Label("
", Label.CONTENT_XHTML)); + + final HorizontalLayout source = new HorizontalLayout(); + source.addComponent(new Label("OTHER LABEL 1")); + source.addComponent(new Label("OTHER LABEL 2")); + + final AbstractComponent c1 = new Button("BUTTON"); + final AbstractComponent c2 = new Label("LABEL", Label.CONTENT_XHTML); + final AbstractComponent c3 = new Table("TABLE"); + c3.setHeight("100px"); + c3.setWidth("100%"); + + final Button addButton = new Button("Test add"); + final Button replaceButton = new Button("Test replace"); + final Button moveButton = new Button("Test move"); + final Button removeButton = new Button("Test remove"); + + replaceButton.setEnabled(false); + moveButton.setEnabled(false); + removeButton.setEnabled(false); + + addButton.addListener(new Button.ClickListener() { + private static final long serialVersionUID = 7716267156088629379L; + + @Override + public void buttonClick(ClickEvent event) { + vlo.addComponent(new TextField()); + addButton.setEnabled(false); + replaceButton.setEnabled(true); + } + }); + replaceButton.addListener(new Button.ClickListener() { + private static final long serialVersionUID = 7716267156088629379L; + + @Override + public void buttonClick(ClickEvent event) { + vlo.replaceComponent(c1, c3); + replaceButton.setEnabled(false); + moveButton.setEnabled(true); + } + }); + moveButton.addListener(new Button.ClickListener() { + private static final long serialVersionUID = 7716267156088629379L; + + @Override + public void buttonClick(ClickEvent event) { + vlo.moveComponentsFrom(source); + moveButton.setEnabled(false); + removeButton.setEnabled(true); + } + }); + removeButton.addListener(new Button.ClickListener() { + private static final long serialVersionUID = 7716267156088629379L; + + @Override + public void buttonClick(ClickEvent event) { + vlo.removeComponent(c1); + vlo.removeComponent(c2); + removeButton.setEnabled(false); + } + }); + + vlo.addComponent(addButton); + vlo.addComponent(replaceButton); + vlo.addComponent(moveButton); + vlo.addComponent(removeButton); + vlo.addComponent(new Label("
", Label.CONTENT_XHTML)); + + vlo.addComponent(c1); + vlo.addComponent(c2); + vlo.addComponent(c3); + + return vlo; + } + + @Override + protected Layout getComponentSizingTests() { + final VerticalLayout vlo = getTestLaytout(); + vlo.addComponent(new Label("
", Label.CONTENT_XHTML)); + + final AbstractComponent c = getTestTable(); + + final Button biggerButton = new Button("full size"); + final Button smallerButton = new Button("200 px width"); + final Button originalButton = new Button("undefined size and add"); + + vlo.addComponent(biggerButton); + vlo.addComponent(smallerButton); + vlo.addComponent(originalButton); + vlo.addComponent(c); + + biggerButton.setEnabled(true); + smallerButton.setEnabled(false); + originalButton.setEnabled(false); + + biggerButton.addListener(new Button.ClickListener() { + private static final long serialVersionUID = 7716267156088629379L; + + @Override + public void buttonClick(ClickEvent event) { + c.setSizeFull(); + biggerButton.setEnabled(false); + smallerButton.setEnabled(true); + } + }); + smallerButton.addListener(new Button.ClickListener() { + private static final long serialVersionUID = 7716267156088629379L; + + @Override + public void buttonClick(ClickEvent event) { + c.setWidth("200px"); + smallerButton.setEnabled(false); + originalButton.setEnabled(true); + } + }); + originalButton.addListener(new Button.ClickListener() { + private static final long serialVersionUID = 7716267156088629379L; + + @Override + public void buttonClick(ClickEvent event) { + originalButton.setEnabled(false); + c.setSizeUndefined(); + ((Table) c) + .addItem( + new Object[] { "VYVTCTC VYVYV ECECCE NIDSD SDMPOM" }, + 3); + } + }); + + return vlo; + } + + @Override + protected Layout getLayoutSizingTests() { + final VerticalLayout vlo = getTestLaytout(); + + vlo.setSpacing(false); + vlo.setMargin(false); + vlo.addComponent(new Label("
", Label.CONTENT_XHTML)); + final AbstractComponent c1 = getTestTable(); + c1.setSizeFull(); + final AbstractComponent c2 = getTestTable(); + c2.setSizeFull(); + + final Button button1 = new Button("Set fixed height 350px"); + final Button button2 = new Button("Set undefined size and add component"); + final Button button3 = new Button("Set fixed width and height 75%"); + final Button button4 = new Button("Set size full"); + + vlo.addComponent(button1); + vlo.addComponent(button2); + vlo.addComponent(button3); + vlo.addComponent(button4); + button1.setEnabled(true); + button2.setEnabled(false); + button3.setEnabled(false); + button4.setEnabled(false); + + vlo.addComponent(new Label("
", Label.CONTENT_XHTML)); + vlo.addComponent(c1); + vlo.addComponent(new Label("
", Label.CONTENT_XHTML)); + vlo.addComponent(c2); + vlo.addComponent(new Label("
", Label.CONTENT_XHTML)); + vlo.setExpandRatio(c1, 0.5f); + vlo.setExpandRatio(c2, 0.5f); + + button1.addListener(new Button.ClickListener() { + private static final long serialVersionUID = 7716267156088629379L; + @Override + public void buttonClick(ClickEvent event) { + vlo.setHeight("350px"); + button1.setEnabled(false); + button2.setEnabled(true); + } + }); + button2.addListener(new Button.ClickListener() { + private static final long serialVersionUID = 7716267156088629379L; + @Override + public void buttonClick(ClickEvent event) { + vlo.setSizeUndefined(); + vlo.addComponent(new Label("--- NEW LABEL ---")); + button2.setEnabled(false); + button3.setEnabled(true); + } + }); + button3.addListener(new Button.ClickListener() { + private static final long serialVersionUID = 7716267156088629379L; + @Override + public void buttonClick(ClickEvent event) { + vlo.setWidth("75%"); + vlo.setHeight("75%"); + button3.setEnabled(false); + button4.setEnabled(true); + } + }); + button4.addListener(new Button.ClickListener() { + private static final long serialVersionUID = 7716267156088629379L; + @Override + public void buttonClick(ClickEvent event) { + vlo.setSizeFull(); + button4.setEnabled(false); + } + }); + + return vlo; + } + + @Override + protected Layout getExpandRatiosTests() { + final VerticalLayout vlo = getTestLaytout(); + vlo.addComponent(new Label("
", Label.CONTENT_XHTML)); + final AbstractComponent c1 = getTestTable(); + c1.setSizeFull(); + final AbstractComponent c2 = getTestTable(); + c2.setSizeFull(); + + final Button button1 = new Button("Expand to 1/undefined"); + final Button button2 = new Button("Expand to 0.5/0.5"); + final Button button3 = new Button("Expand to 0.75/0.25"); + + vlo.addComponent(button1); + vlo.addComponent(button2); + vlo.addComponent(button3); + button1.setEnabled(true); + button2.setEnabled(false); + button3.setEnabled(false); + + vlo.addComponent(c1); + vlo.addComponent(c2); + + button1.addListener(new Button.ClickListener() { + private static final long serialVersionUID = 7716267156088629379L; + + @Override + public void buttonClick(ClickEvent event) { + vlo.setExpandRatio(c1, 1.0f); + button1.setEnabled(false); + button2.setEnabled(true); + } + }); + button2.addListener(new Button.ClickListener() { + private static final long serialVersionUID = 7716267156088629379L; + + @Override + public void buttonClick(ClickEvent event) { + vlo.setExpandRatio(c1, 0.5f); + vlo.setExpandRatio(c2, 0.5f); + button2.setEnabled(false); + button3.setEnabled(true); + } + }); + button3.addListener(new Button.ClickListener() { + private static final long serialVersionUID = 7716267156088629379L; + + @Override + public void buttonClick(ClickEvent event) { + vlo.setExpandRatio(c1, 0.75f); + vlo.setExpandRatio(c2, 0.25f); + button3.setEnabled(false); + } + }); + return vlo; + } + + @Override + protected Layout getIconsTests() { + VerticalLayout vlo = getTestLaytout(); + AbstractComponent[] components = new AbstractComponent[2]; + + Resource[] icons = new Resource[] { + new ClassResource("alert.png", application), + new ClassResource("help.png", application) }; + + vlo.addComponent(new Label("
", Label.CONTENT_XHTML)); + for (int i = 0; i < components.length; i++) { + components[i] = new TextField(); + ((TextField) components[i]).setValue("FIELD " + i); + components[i].setIcon(icons[i]); + components[i].setCaption("long test caption bewucbwuebco or bmort b cbwecubw wbeucwe asdasd asdasda asdasd"); + vlo.addComponent(components[i]); + } + vlo.addComponent(new Label("
", Label.CONTENT_XHTML)); + for (int i = 0; i < components.length; i++) { + components[i] = new Label(); + ((Label) components[i]).setValue("Label " + i); + components[i].setIcon(icons[i]); + vlo.addComponent(components[i]); + } + vlo.addComponent(new Label("
", Label.CONTENT_XHTML)); + for (int i = 0; i < components.length; i++) { + components[i] = new Select(); + components[i].setIcon(icons[i]); + vlo.addComponent(components[i]); + } + vlo.addComponent(new Label("
", Label.CONTENT_XHTML)); + for (int i = 0; i < components.length; i++) { + components[i] = new Button(); + components[i].setComponentError(new UserError("component error, user error")); + components[i].setIcon(icons[i]); + vlo.addComponent(components[i]); + } + vlo.addComponent(new Label("
", Label.CONTENT_XHTML)); + for (int i = 0; i < components.length; i++) { + components[i] = new Link("Link",null); + components[i].setIcon(icons[i]); + vlo.addComponent(components[i]); + } + return vlo; + } + + @Override + protected Layout getMarginSpacingTests() { + final VerticalLayout vlo = getTestLaytout(); + vlo.setSpacing(false); + vlo.setMargin(false); + vlo.addComponent(new Label("
", Label.CONTENT_XHTML)); + final AbstractComponent c1 = getTestTable(); + c1.setSizeFull(); + final AbstractComponent c2 = getTestTable(); + c2.setSizeFull(); + + final Button button1 = new Button("Set margin on"); + final Button button2 = new Button("Set spacing on"); + final Button button3 = new Button("Set margin off"); + final Button button4 = new Button("Set spacing off"); + + vlo.addComponent(button1); + vlo.addComponent(button2); + vlo.addComponent(button3); + vlo.addComponent(button4); + button1.setEnabled(true); + button2.setEnabled(false); + button3.setEnabled(false); + button4.setEnabled(false); + + vlo.addComponent(new Label("
", Label.CONTENT_XHTML)); + vlo.addComponent(c1); + vlo.addComponent(new Label("
", Label.CONTENT_XHTML)); + vlo.addComponent(c2); + vlo.addComponent(new Label("
", Label.CONTENT_XHTML)); + vlo.setExpandRatio(c1, 0.5f); + vlo.setExpandRatio(c2, 0.5f); + + button1.addListener(new Button.ClickListener() { + private static final long serialVersionUID = 7716267156088629379L; + @Override + public void buttonClick(ClickEvent event) { + vlo.setMargin(true); + button1.setEnabled(false); + button2.setEnabled(true); + } + }); + button2.addListener(new Button.ClickListener() { + private static final long serialVersionUID = 7716267156088629379L; + @Override + public void buttonClick(ClickEvent event) { + vlo.setSpacing(true); + button2.setEnabled(false); + button3.setEnabled(true); + } + }); + button3.addListener(new Button.ClickListener() { + private static final long serialVersionUID = 7716267156088629379L; + @Override + public void buttonClick(ClickEvent event) { + vlo.setMargin(false); + button3.setEnabled(false); + button4.setEnabled(true); + } + }); + button4.addListener(new Button.ClickListener() { + private static final long serialVersionUID = 7716267156088629379L; + @Override + public void buttonClick(ClickEvent event) { + vlo.setSpacing(false); + button4.setEnabled(false); + } + }); + + return vlo; + } + + @Override + protected Layout getRequiredErrorIndicatorsTests() { + VerticalLayout vlo = getTestLaytout(); + AbstractComponent[] components= new AbstractComponent[4]; + components[0] = new Label("LABEL"); + components[0].setSizeUndefined(); + components[1] = new Button("BUTTON"); + components[2] = getTestTable(); + components[3] = getTestTabsheet(); + components[3].setIcon(new ClassResource("help.png", application)); + + AbstractField[] fields= new AbstractField[6]; + fields[0] = new TextField(); + fields[0].setRequired(true); + fields[0].setValidationVisible(true); + fields[0].setRequiredError("required error"); + + fields[1] = new TextField(); + fields[1].setValue("TEXTFIELD2"); + fields[1].setComponentError(new UserError("component error, user error")); + + fields[2] = new Select(); + fields[2].setComponentError(new SystemError("component error, system error")); + fields[3] = new DateField(); + fields[3].setComponentError(new SystemError("component error, system error")); + + fields[4] = new CheckBox(); + fields[4].setComponentError(new UserError("component error, user error")); + + fields[5] = new NativeSelect(); + fields[5].setRequired(true); + fields[5].setValidationVisible(true); + fields[5].setRequiredError("required error"); + fields[5].setComponentError(new UserError("component error, user error")); + fields[5].setIcon(new ClassResource("alert.png", application)); + + vlo.addComponent(new Label("
", Label.CONTENT_XHTML)); + for (int i=0; i", Label.CONTENT_XHTML)); + for (int i=0; i", Label.CONTENT_XHTML)); + + return vlo; + } + + private VerticalLayout getTestLaytout() { + VerticalLayout vlo = new VerticalLayout(); + vlo.setHeight("600px"); + vlo.setWidth("400px"); + return vlo; + } + + + private AbstractComponent getTestTabsheet() { + TabSheet tabsheet = new TabSheet(); + tabsheet.setSizeUndefined(); + tabsheet.addTab(new Label("TAB1"), "TAB1", new ClassResource("alert.png", application)); + tabsheet.addTab(new Label("TAB2"), "TAB2", null); + return tabsheet; + } + + private Table getTestTable() { + Table t = new Table(); + t.setSizeUndefined(); + t.setPageLength(5); + t.addContainerProperty("test", String.class, null); + t.addItem(new Object[] { "qwertyuiop asdfghjklöä zxccvbnm,m,." }, 1); + t.addItem(new Object[] { "YGVYTCTCTRXRXRXRX" }, 2); + return t; + } +} diff --git a/tests/src/com/vaadin/tests/layouts/layouttester/alert.png b/tests/src/com/vaadin/tests/layouts/layouttester/alert.png new file mode 100644 index 0000000000000000000000000000000000000000..3d9d98087f7b2253e98c1dd2ed6d6175c3d2e05c GIT binary patch literal 3205 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