diff options
author | Artur Signell <artur@vaadin.com> | 2012-08-30 17:24:36 +0300 |
---|---|---|
committer | Artur Signell <artur@vaadin.com> | 2012-08-30 17:24:36 +0300 |
commit | 7b25b3886ea95bc6495506fbe9472e45fcbde684 (patch) | |
tree | 0b93cb65dab437feb46720659a63b8f1ef48f7f4 /uitest/src/com/vaadin/tests/tickets/Ticket1710.java | |
parent | 8941056349e302e687e40e94c13709e75f256d73 (diff) | |
download | vaadin-framework-7b25b3886ea95bc6495506fbe9472e45fcbde684.tar.gz vaadin-framework-7b25b3886ea95bc6495506fbe9472e45fcbde684.zip |
Renamed tests -> uitest and tests/testbench -> uitest/src (#9299)
Diffstat (limited to 'uitest/src/com/vaadin/tests/tickets/Ticket1710.java')
-rw-r--r-- | uitest/src/com/vaadin/tests/tickets/Ticket1710.java | 403 |
1 files changed, 403 insertions, 0 deletions
diff --git a/uitest/src/com/vaadin/tests/tickets/Ticket1710.java b/uitest/src/com/vaadin/tests/tickets/Ticket1710.java new file mode 100644 index 0000000000..c00e2f32eb --- /dev/null +++ b/uitest/src/com/vaadin/tests/tickets/Ticket1710.java @@ -0,0 +1,403 @@ +package com.vaadin.tests.tickets; + +import java.util.Iterator; + +import com.vaadin.data.Property; +import com.vaadin.data.Property.ValueChangeEvent; +import com.vaadin.data.util.MethodProperty; +import com.vaadin.server.SystemError; +import com.vaadin.server.ThemeResource; +import com.vaadin.shared.ui.AlignmentInfo.Bits; +import com.vaadin.shared.ui.MarginInfo; +import com.vaadin.ui.AbstractComponent; +import com.vaadin.ui.Alignment; +import com.vaadin.ui.Button; +import com.vaadin.ui.CheckBox; +import com.vaadin.ui.Component; +import com.vaadin.ui.ComponentContainer; +import com.vaadin.ui.DateField; +import com.vaadin.ui.Form; +import com.vaadin.ui.GridLayout; +import com.vaadin.ui.HorizontalLayout; +import com.vaadin.ui.Label; +import com.vaadin.ui.Layout; +import com.vaadin.ui.Layout.AlignmentHandler; +import com.vaadin.ui.NativeSelect; +import com.vaadin.ui.Panel; +import com.vaadin.ui.UI.LegacyWindow; +import com.vaadin.ui.TextField; +import com.vaadin.ui.VerticalLayout; + +public class Ticket1710 extends com.vaadin.Application.LegacyApplication { + + @Override + public void init() { + + setTheme("tests-tickets"); + + VerticalLayout lo = new VerticalLayout(); + setMainWindow(new LegacyWindow("#1710", lo)); + lo.setMargin(true); + lo.setSpacing(true); + lo.setWidth("100%"); + + // Hiding controls + HorizontalLayout hidingControls = new HorizontalLayout(); + lo.addComponent(hidingControls); + + // OrderedLayout + final VerticalLayout orderedLayout = new VerticalLayout(); + LayoutTestingPanel oltp = new LayoutTestingPanel("OrderedLayout", + orderedLayout); + CheckBox cb = new CheckBox("OrderedLayout", + new MethodProperty<Boolean>(oltp, "visible")); + cb.setImmediate(true); + hidingControls.addComponent(cb); + lo.addComponent(oltp); + orderedLayout.setSpacing(false); + addFields(orderedLayout); + + // GridLayout + GridLayout grid = new GridLayout(1, 1); + Panel g1tp = new LayoutTestingPanel("Gridlayout with 1 column", grid); + cb = new CheckBox("GridLayout (1col)", new MethodProperty<Boolean>( + g1tp, "visible")); + cb.setImmediate(true); + hidingControls.addComponent(cb); + g1tp.setVisible(false); + lo.addComponent(g1tp); + grid.setSpacing(true); + addFields(grid); + GridLayout grid2 = new GridLayout(2, 1); + Panel g2tp = new LayoutTestingPanel("Gridlayout with 2 columns", grid2); + cb = new CheckBox("GridLayout (2cols)", new MethodProperty<Boolean>( + g2tp, "visible")); + cb.setImmediate(true); + hidingControls.addComponent(cb); + g2tp.setVisible(false); + lo.addComponent(g2tp); + grid2.setSpacing(true); + addFields(grid2); + + // ExpandLayout + VerticalLayout el = new VerticalLayout(); + Panel elp = new LayoutTestingPanel( + "ExpandLayout width first component expanded", el); + cb = new CheckBox("ExpandLayout (vertical)", + new MethodProperty<Boolean>(elp, "visible")); + cb.setImmediate(true); + hidingControls.addComponent(cb); + elp.setVisible(false); + el.setHeight("700px"); + addFields(el); + Component firstComponent = el.getComponentIterator().next(); + firstComponent.setSizeFull(); + el.setExpandRatio(firstComponent, 1); + lo.addComponent(elp); + HorizontalLayout elh = new HorizontalLayout(); + Panel elhp = new LayoutTestingPanel( + "ExpandLayout width first component expanded; horizontal", elh); + cb = new CheckBox("ExpandLayout (horizontal)", + new MethodProperty<Boolean>(elhp, "visible")); + cb.setImmediate(true); + hidingControls.addComponent(cb); + elhp.setVisible(false); + elh.setWidth("2000px"); + elh.setHeight("100px"); + addFields(elh); + Component firstComponentElh = elh.getComponentIterator().next(); + firstComponentElh.setSizeFull(); + elh.setExpandRatio(firstComponentElh, 1); + lo.addComponent(elhp); + + // CustomLayout + VerticalLayout cl = new VerticalLayout(); + Panel clp = new LayoutTestingPanel("CustomLayout", cl); + cb = new CheckBox("CustomLayout", new MethodProperty<Boolean>(clp, + "visible")); + cb.setImmediate(true); + hidingControls.addComponent(cb); + clp.setVisible(false); + lo.addComponent(clp); + cl.addComponent(new Label("<<< Add customlayout testcase here >>>")); + + // Form + Panel formPanel = new Panel("Form"); + cb = new CheckBox("Form", new MethodProperty<Boolean>(formPanel, + "visible")); + cb.setImmediate(true); + hidingControls.addComponent(cb); + formPanel.setVisible(false); + formPanel.addComponent(getFormPanelExample()); + lo.addComponent(formPanel); + + for (Iterator<Component> i = hidingControls.getComponentIterator(); i + .hasNext();) { + ((AbstractComponent) i.next()).setImmediate(true); + } + + } + + private Form getFormPanelExample() { + Form f = new Form(); + f.setCaption("Test form"); + CheckBox fb2 = new CheckBox("Test button", true); + fb2.setComponentError(new SystemError("Test error")); + f.addField("fb2", fb2); + TextField ft1 = new TextField("With caption"); + ft1.setComponentError(new SystemError("Error")); + f.addField("ft1", ft1); + TextField ft2 = new TextField(); + ft2.setComponentError(new SystemError("Error")); + ft2.setValue("Without caption"); + f.addField("ft2", ft2); + TextField ft3 = new TextField("With caption and required"); + ft3.setComponentError(new SystemError("Error")); + ft3.setRequired(true); + f.addField("ft3", ft3); + return f; + } + + private void addFields(ComponentContainer lo) { + Button button = new Button("Test button"); + button.setComponentError(new SystemError("Test error")); + lo.addComponent(button); + + CheckBox b2 = new CheckBox("Test button"); + b2.setComponentError(new SystemError("Test error")); + lo.addComponent(b2); + + TextField t1 = new TextField("With caption"); + t1.setComponentError(new SystemError("Error")); + lo.addComponent(t1); + + TextField t2 = new TextField("With caption and required"); + t2.setComponentError(new SystemError("Error")); + t2.setRequired(true); + lo.addComponent(t2); + + TextField t3 = new TextField(); + t3.setValue("Without caption"); + t3.setComponentError(new SystemError("Error")); + lo.addComponent(t3); + + lo.addComponent(new TextField("Textfield with no error in it")); + + TextField tt1 = new TextField("100% wide Textfield with no error in it"); + tt1.setWidth("100%"); + lo.addComponent(tt1); + + TextField tt2 = new TextField(); + tt2.setWidth("100%"); + tt2.setValue("100% wide Textfield with no error in it and no caption"); + lo.addComponent(tt2); + + TextField t4 = new TextField(); + t4.setValue("Without caption, With required"); + t4.setComponentError(new SystemError("Error")); + t4.setRequired(true); + lo.addComponent(t4); + + TextField t5 = new TextField(); + t5.setValue("Without caption, WIDE"); + t5.setComponentError(new SystemError("Error")); + t5.setWidth("100%"); + lo.addComponent(t5); + + TextField t6 = new TextField(); + t6.setValue("Without caption, With required, WIDE"); + t6.setComponentError(new SystemError("Error")); + t6.setRequired(true); + t6.setWidth("100%"); + lo.addComponent(t6); + + TextField t7 = new TextField(); + t7.setValue("With icon and required and icon"); + t7.setComponentError(new SystemError("Error")); + t7.setRequired(true); + t7.setIcon(new ThemeResource("../runo/icons/16/ok.png")); + lo.addComponent(t7); + + DateField d1 = new DateField( + "Datefield with caption and icon, next one without caption"); + d1.setComponentError(new SystemError("Error")); + d1.setRequired(true); + d1.setIcon(new ThemeResource("../runo/icons/16/ok.png")); + lo.addComponent(d1); + + DateField d2 = new DateField(); + d2.setComponentError(new SystemError("Error")); + d2.setRequired(true); + lo.addComponent(d2); + } + + public class LayoutTestingPanel extends Panel { + + Layout testedLayout; + + HorizontalLayout controls = new HorizontalLayout(); + CheckBox marginLeft = new CheckBox("m-left", false); + CheckBox marginRight = new CheckBox("m-right", false); + CheckBox marginTop = new CheckBox("m-top", false); + CheckBox marginBottom = new CheckBox("m-bottom", false); + CheckBox spacing = new CheckBox("spacing", false); + VerticalLayout testPanelLayout = new VerticalLayout(); + + LayoutTestingPanel(String caption, Layout layout) { + super(caption); + VerticalLayout internalLayout = new VerticalLayout(); + internalLayout.setWidth("100%"); + setContent(internalLayout); + testedLayout = layout; + testPanelLayout.setWidth("100%"); + Panel controlWrapper = new Panel(); + controlWrapper.addComponent(controls); + controlWrapper.setWidth("100%"); + controlWrapper.setStyleName("controls"); + internalLayout.addComponent(controlWrapper); + Panel testPanel = new Panel(testPanelLayout); + testPanel.setStyleName("testarea"); + testPanelLayout.addComponent(testedLayout); + internalLayout.addComponent(testPanel); + internalLayout.setMargin(true); + internalLayout.setSpacing(true); + controls.setSpacing(true); + controls.setMargin(false); + controls.addComponent(new Label("width")); + controls.addComponent(new TextField(new MethodProperty<Float>( + testedLayout, "width"))); + controls.addComponent(new CheckBox("%", + new MethodProperty<Boolean>(this, "widthPercents"))); + controls.addComponent(new Label("height")); + controls.addComponent(new TextField(new MethodProperty<Float>( + testedLayout, "height"))); + controls.addComponent(new CheckBox("%", + new MethodProperty<Boolean>(this, "heightPercents"))); + controls.addComponent(marginLeft); + controls.addComponent(marginRight); + controls.addComponent(marginTop); + controls.addComponent(marginBottom); + if (testedLayout instanceof Layout.SpacingHandler) { + controls.addComponent(spacing); + } + + Property.ValueChangeListener marginSpacingListener = new Property.ValueChangeListener() { + @Override + public void valueChange(ValueChangeEvent event) { + updateMarginsAndSpacing(); + } + }; + + marginBottom.addListener(marginSpacingListener); + marginTop.addListener(marginSpacingListener); + marginLeft.addListener(marginSpacingListener); + marginRight.addListener(marginSpacingListener); + spacing.addListener(marginSpacingListener); + updateMarginsAndSpacing(); + + addAlignmentControls(); + + testedLayout.setStyleName("tested-layout"); + setStyleName("layout-testing-panel"); + + for (Iterator<Component> i = controls.getComponentIterator(); i + .hasNext();) { + ((AbstractComponent) i.next()).setImmediate(true); + } + } + + @SuppressWarnings("deprecation") + private void addAlignmentControls() { + if (!(testedLayout instanceof Layout.AlignmentHandler)) { + return; + } + @SuppressWarnings("unused") + final Layout.AlignmentHandler ah = (AlignmentHandler) testedLayout; + + final NativeSelect vAlign = new NativeSelect(); + final NativeSelect hAlign = new NativeSelect(); + controls.addComponent(new Label("component alignment")); + controls.addComponent(hAlign); + controls.addComponent(vAlign); + hAlign.setNullSelectionAllowed(false); + vAlign.setNullSelectionAllowed(false); + + vAlign.addItem(new Integer(Bits.ALIGNMENT_TOP)); + vAlign.setItemCaption(new Integer(Bits.ALIGNMENT_TOP), "top"); + vAlign.addItem(new Integer(Bits.ALIGNMENT_VERTICAL_CENTER)); + vAlign.setItemCaption(new Integer(Bits.ALIGNMENT_VERTICAL_CENTER), + "center"); + vAlign.addItem(new Integer(Bits.ALIGNMENT_BOTTOM)); + vAlign.setItemCaption(new Integer(Bits.ALIGNMENT_BOTTOM), "bottom"); + + hAlign.addItem(new Integer(Bits.ALIGNMENT_LEFT)); + hAlign.setItemCaption(new Integer(Bits.ALIGNMENT_LEFT), "left"); + hAlign.addItem(new Integer(Bits.ALIGNMENT_HORIZONTAL_CENTER)); + hAlign.setItemCaption( + new Integer(Bits.ALIGNMENT_HORIZONTAL_CENTER), "center"); + hAlign.addItem(new Integer(Bits.ALIGNMENT_RIGHT)); + hAlign.setItemCaption(new Integer(Bits.ALIGNMENT_RIGHT), "right"); + + Property.ValueChangeListener alignmentChangeListener = new Property.ValueChangeListener() { + @Override + public void valueChange(ValueChangeEvent event) { + Integer h = ((Integer) hAlign.getValue()).intValue(); + int v = ((Integer) vAlign.getValue()).intValue(); + + updateAlignments(new Alignment(h + v)); + } + + }; + + hAlign.setValue(new Integer(Bits.ALIGNMENT_LEFT)); + vAlign.addListener(alignmentChangeListener); + hAlign.addListener(alignmentChangeListener); + vAlign.setValue(new Integer(Bits.ALIGNMENT_TOP)); + + controls.addComponent(new Label("layout alignment")); + final NativeSelect lAlign = new NativeSelect(); + controls.addComponent(lAlign); + lAlign.setNullSelectionAllowed(false); + lAlign.addItem(new Integer(Bits.ALIGNMENT_LEFT)); + lAlign.setItemCaption(new Integer(Bits.ALIGNMENT_LEFT), "left"); + lAlign.addItem(new Integer(Bits.ALIGNMENT_HORIZONTAL_CENTER)); + lAlign.setItemCaption( + new Integer(Bits.ALIGNMENT_HORIZONTAL_CENTER), "center"); + lAlign.addItem(new Integer(Bits.ALIGNMENT_RIGHT)); + lAlign.setItemCaption(new Integer(Bits.ALIGNMENT_RIGHT), "right"); + + lAlign.addListener(new Property.ValueChangeListener() { + @Override + public void valueChange(ValueChangeEvent event) { + testPanelLayout.setComponentAlignment( + testedLayout, + new Alignment(((Integer) lAlign.getValue()) + .intValue() + Bits.ALIGNMENT_TOP)); + } + }); + } + + private void updateAlignments(Alignment a) { + for (Iterator<Component> i = testedLayout.getComponentIterator(); i + .hasNext();) { + ((Layout.AlignmentHandler) testedLayout).setComponentAlignment( + i.next(), a); + } + } + + private void updateMarginsAndSpacing() { + if (testedLayout instanceof Layout.MarginHandler) { + ((Layout.MarginHandler) testedLayout).setMargin(new MarginInfo( + marginTop.getValue().booleanValue(), marginRight + .getValue().booleanValue(), marginBottom + .getValue().booleanValue(), marginLeft + .getValue().booleanValue())); + } + if (testedLayout instanceof Layout.SpacingHandler) { + ((Layout.SpacingHandler) testedLayout).setSpacing(spacing + .getValue().booleanValue()); + } + } + + } +} |