/* * Copyright 2000-2013 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; import java.util.Iterator; import java.util.Vector; import com.vaadin.server.UserError; import com.vaadin.ui.Button; import com.vaadin.ui.Button.ClickEvent; import com.vaadin.ui.CustomComponent; import com.vaadin.ui.Label; import com.vaadin.ui.Layout; import com.vaadin.ui.Table; import com.vaadin.ui.VerticalLayout; /** * * This Component contains some simple test to see that component updates its * contents propertly. * * @author Vaadin Ltd. */ public class TestForTablesInitialColumnWidthLogicRendering extends CustomComponent { private final VerticalLayout main = new VerticalLayout(); public TestForTablesInitialColumnWidthLogicRendering() { setCompositionRoot(main); createNewView(); } public void createNewView() { main.removeAllComponents(); main.addComponent(new Label( "Below are same tables that all should render somewhat nice. Also when testing, you might want to try resizing window.")); Table t; Layout lo = new VerticalLayout(); lo.setWidth("600px"); lo.setHeight("250px"); t = getTestTable(4, 50); t.setSizeFull(); lo.setCaption("Fullsize table insize 400x250px layout"); lo.addComponent(t); main.addComponent(lo); // t = new Table("Empty table"); // main.addComponent(t); t = getTestTable(5, 0); t.setCaption("Table with only headers"); // main.addComponent(t); t = getTestTable(5, 200); t.setCaption("Table with some cols and lot of rows"); main.addComponent(t); t = getTestTable(5, 5); t.setCaption("Table with some cols and rows rows, some col widths fixed"); Iterator it = t.getContainerPropertyIds().iterator(); it.next(); it.next(); t.setColumnWidth(it.next(), 30); t.setColumnWidth(it.next(), 30); t.setWidth("700px"); main.addComponent(t); t = getTestTable(12, 4); t.setCaption("Table with some rows and lot of columns"); main.addComponent(t); t = getTestTable(3, 40); t.setCaption("Table with some columns and wide explicit width. (Ought to widen columns to use all space)"); t.setWidth("1000px"); main.addComponent(t); t = getTestTable(12, 4); t.setCaption("Table with some rows and lot of columns, width == 100%"); t.setWidth(100, Table.UNITS_PERCENTAGE); main.addComponent(t); t = getTestTable(12, 100); t.setCaption("Table with lot of rows and lot of columns, width == 50%"); t.setWidth(50, Table.UNITS_PERCENTAGE); main.addComponent(t); t = getTestTable(5, 100); t.setCaption("Table with 40 rows"); // main.addComponent(t); t = getTestTable(4, 4); t.setCaption("Table with some rows and width = 200px"); t.setWidth("200px"); main.addComponent(t); final Button b = new Button("refresh view", new Button.ClickListener() { @Override public void buttonClick(ClickEvent event) { createNewView(); } }); main.addComponent(b); } public static Table getTestTable(int cols, int rows) { final Table t = new Table(); t.setColumnCollapsingAllowed(true); for (int i = 0; i < cols; i++) { t.addContainerProperty(testString[i], String.class, ""); } t.addContainerProperty("button", Button.class, null); for (int i = 0; i < rows; i++) { final Vector content = new Vector(); for (int j = 0; j < cols; j++) { content.add(rndString()); } Button button = new Button("b", new Button.ClickListener() { @Override public void buttonClick(ClickEvent event) { System.out.println("b click"); } }); button.setDescription("Yep yep"); button.setComponentError(new UserError("Error")); content.add(button); t.addItem(content.toArray(), "" + i); } return t; } static String[] testString = new String[] { "Jacob", "Michael", "Joshua", "Matthew", "Ethan", "Andrew", "Daniel", "Anthony", "Christopher", "Joseph", "William", "Alexander", "Ryan", "David", "Nicholas", "Tyler", "James", "John", "Jonathan", "Nathan", "Samuel", "Christian", "Noah", "Dylan", "Benjamin", "Logan", "Brandon", "Gabriel", "Zachary", "Jose", "Elijah", "Angel", "Kevin", "Jack", "Caleb", "Justin", "Austin", "Evan", "Robert", "Thomas", "Luke", "Mason", "Aidan", "Jackson", "Isaiah", "Jordan", "Gavin", "Connor", "Aiden", "Isaac", "Jason", "Cameron", "Hunter", "Jayden", "Juan", "Charles", "Aaron", "Lucas", "Luis", "Owen", "Landon", "Diego", "Brian", "Adam", "Adrian", "Kyle", "Eric", "Ian", "Nathaniel", "Carlos", "Alex", "Bryan", "Jesus", "Julian", "Sean", "Carter", "Hayden", "Jeremiah", "Cole", "Brayden", "Wyatt", "Chase", "Steven", "Timothy", "Dominic", "Sebastian", "Xavier", "Jaden", "Jesse", "Devin", "Seth", "Antonio", "Richard", "Miguel", "Colin", "Cody", "Alejandro", "Caden", "Blake", "Carson" }; public static String rndString() { return testString[(int) (Math.random() * testString.length)]; } }