/* * Copyright 2000-2016 Vaadin Ltd. * * Licensed under the Apache License, Version 2.0 (the "License"); you may not * use this file except in compliance with the License. You may obtain a copy of * the License at * * http://www.apache.org/licenses/LICENSE-2.0 * * Unless required by applicable law or agreed to in writing, software * distributed under the License is distributed on an "AS IS" BASIS, WITHOUT * WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the * License for the specific language governing permissions and limitations under * the License. */ package com.vaadin.tests.components.gridlayout; import com.vaadin.server.VaadinRequest; import com.vaadin.tests.components.AbstractReindeerTestUI; import com.vaadin.ui.Alignment; import com.vaadin.ui.GridLayout; import com.vaadin.ui.Label; import com.vaadin.ui.VerticalLayout; import com.vaadin.v7.ui.TextField; /** * Test for grid required indicator location within slots. */ public class GridLayoutRequiredIndicatorLocation extends AbstractReindeerTestUI { @Override protected void setup(VaadinRequest request) { getPage().getCurrent().getStyles() .add(".allow-overflow { overflow: visible; }"); getPage().getCurrent().getStyles() .add(".colored { background: lime; overflow: visible; }"); getPage().getCurrent().getStyles() .add(".pink { background: pink; overflow: visible; }"); getPage().getCurrent().getStyles() .add(".v-gridlayout-slot { border: 1px solid red; }"); GridLayout rootLayout = new GridLayout(2, 2); rootLayout.addStyleName("allow-overflow"); rootLayout.setSpacing(true); addComponent(rootLayout); GridLayout gridLayout = createGridLayout(false); gridLayout.addStyleName("allow-overflow"); gridLayout.addStyleName("colored"); rootLayout.addComponent(gridLayout); // for reference, VerticalLayout does it right VerticalLayout vl = createVerticalLayout(false); vl.addStyleName("allow-overflow"); vl.addStyleName("colored"); rootLayout.addComponent(vl); GridLayout gridLayout2 = createGridLayout(true); gridLayout2.addStyleName("allow-overflow"); gridLayout2.addStyleName("colored"); rootLayout.addComponent(gridLayout2); VerticalLayout vl2 = createVerticalLayout(true); vl2.addStyleName("allow-overflow"); vl2.addStyleName("colored"); rootLayout.addComponent(vl2); } private VerticalLayout createVerticalLayout(boolean useCaption) { VerticalLayout vl = new VerticalLayout(); vl.setMargin(false); vl.setSpacing(false); vl.setWidth("320px"); addLabel(vl, "200px", Alignment.MIDDLE_LEFT, useCaption); addLabel(vl, "40%", Alignment.MIDDLE_LEFT, useCaption); addLabel(vl, "100%", Alignment.MIDDLE_LEFT, useCaption); addLabel(vl, "200px", Alignment.MIDDLE_CENTER, useCaption); addLabel(vl, "30%", Alignment.MIDDLE_CENTER, useCaption); addLabel(vl, "100%", Alignment.MIDDLE_CENTER, useCaption); addLabel(vl, "200px", Alignment.MIDDLE_RIGHT, useCaption); addLabel(vl, "50%", Alignment.MIDDLE_RIGHT, useCaption); addLabel(vl, "100%", Alignment.MIDDLE_RIGHT, useCaption); return vl; } private GridLayout createGridLayout(boolean useCaption) { GridLayout gridLayout = new GridLayout(); gridLayout.setColumns(2); gridLayout.setWidth("500px"); gridLayout.setColumnExpandRatio(0, 0); gridLayout.setColumnExpandRatio(1, 1); addLabel(gridLayout, "200px", Alignment.MIDDLE_LEFT, useCaption); addLabel(gridLayout, "40%", Alignment.MIDDLE_LEFT, useCaption); addLabel(gridLayout, "100%", Alignment.MIDDLE_LEFT, useCaption); addLabel(gridLayout, "200px", Alignment.MIDDLE_CENTER, useCaption); addLabel(gridLayout, "30%", Alignment.MIDDLE_CENTER, useCaption); addLabel(gridLayout, "100%", Alignment.MIDDLE_CENTER, useCaption); addLabel(gridLayout, "200px", Alignment.MIDDLE_RIGHT, useCaption); addLabel(gridLayout, "50%", Alignment.MIDDLE_RIGHT, useCaption); addLabel(gridLayout, "100%", Alignment.MIDDLE_RIGHT, useCaption); return gridLayout; } private void addLabel(GridLayout layout, String width, Alignment alignment, boolean useCaption) { Label label = new Label("Align " + alignment.getHorizontalAlignment() + " width " + width); label.setWidth("180px"); label.addStyleName("pink"); layout.addComponent(label); // TODO also test with captions TextField field = new TextField(useCaption ? "caption" : null); field.setRequired(true); field.setWidth(width); layout.addComponent(field); layout.setComponentAlignment(field, alignment); } private void addLabel(VerticalLayout layout, String width, Alignment alignment, boolean useCaption) { TextField field = new TextField(useCaption ? "caption" : null); field.setRequired(true); field.setWidth(width); layout.addComponent(field); layout.setComponentAlignment(field, alignment); } @Override protected Integer getTicketNumber() { return 18418; } @Override protected String getTestDescription() { return "If a GridLayout slot has a size smaller than 100%, the required indicators should be at the end of each field"; } }