123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217 |
- /*
- * 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;
-
- import java.time.LocalDate;
- import java.util.Random;
-
- import com.vaadin.server.ExternalResource;
- import com.vaadin.shared.ui.datefield.DateResolution;
- import com.vaadin.tests.components.TestDateField;
- import com.vaadin.ui.AbstractComponent;
- import com.vaadin.ui.AbstractDateField;
- import com.vaadin.ui.Button;
- import com.vaadin.ui.CustomLayout;
- import com.vaadin.ui.GridLayout;
- import com.vaadin.ui.HorizontalLayout;
- import com.vaadin.ui.Label;
- import com.vaadin.ui.Layout;
- import com.vaadin.ui.LegacyWindow;
- import com.vaadin.ui.Link;
- import com.vaadin.ui.Panel;
- import com.vaadin.ui.TabSheet;
- import com.vaadin.ui.VerticalLayout;
- import com.vaadin.v7.ui.Select;
- import com.vaadin.v7.ui.TextField;
-
- /**
- * This example demonstrates layouts. Layouts are populated with sample Vaadin
- * UI components.
- *
- * @author Vaadin Ltd.
- *
- */
- public class RandomLayoutStress extends com.vaadin.server.LegacyApplication {
-
- private final Random seededRandom = new Random(1);
-
- // FIXME increasing these settings brings out interesting client-side issues
- // (DOM errors)
- // TODO increasing values "even more" crashes Hosted Mode, pumping Xmx/Xms
- // helps to some extent
- private static final int componentCountA = 50;
- private static final int componentCountB = 50;
- private static final int componentCountC = 200;
- private static final int componentCountD = 50;
-
- /**
- * Initialize Application. Demo components are added to main window.
- */
- @Override
- public void init() {
- final LegacyWindow mainWindow = new LegacyWindow("Layout demo");
- setMainWindow(mainWindow);
-
- // Create horizontal ordered layout
- VerticalLayout panelALayout = new VerticalLayout();
- panelALayout.setMargin(true);
- final Panel panelA = new Panel(
- "Panel containing horizontal ordered layout", panelALayout);
- HorizontalLayout layoutA = new HorizontalLayout();
- // Add 4 random components
- fillLayout(layoutA, componentCountA);
- // Add layout to panel
- panelALayout.addComponent(layoutA);
-
- // Create vertical ordered layout
- VerticalLayout panelBLayout = new VerticalLayout();
- panelBLayout.setMargin(true);
- final Panel panelB = new Panel(
- "Panel containing vertical ordered layout", panelBLayout);
- VerticalLayout layoutB = new VerticalLayout();
- // Add 4 random components
- fillLayout(layoutB, componentCountB);
- // Add layout to panel
- panelBLayout.addComponent(layoutB);
-
- // Create grid layout
- final int gridSize = (int) Math.sqrt(componentCountC);
- VerticalLayout panelGLayout = new VerticalLayout();
- panelGLayout.setMargin(true);
- final Panel panelG = new Panel("Panel containing grid layout ("
- + gridSize + " x " + gridSize + ")", panelGLayout);
- GridLayout layoutG = new GridLayout(gridSize, gridSize);
- // Add 12 random components
- fillLayout(layoutG, componentCountC);
- // Add layout to panel
- panelGLayout.addComponent(layoutG);
-
- // Create TabSheet
- final TabSheet tabsheet = new TabSheet();
- tabsheet.setCaption(
- "Tabsheet, above layouts are added to this component");
- layoutA = new HorizontalLayout();
- // Add 4 random components
- fillLayout(layoutA, componentCountA);
- tabsheet.addTab(layoutA, "Horizontal ordered layout", null);
- layoutB = new VerticalLayout();
- // Add 4 random components
- fillLayout(layoutB, componentCountB);
- tabsheet.addTab(layoutB, "Vertical ordered layout", null);
- layoutG = new GridLayout(gridSize, gridSize);
- // Add 12 random components
- fillLayout(layoutG, componentCountC);
- tabsheet.addTab(layoutG, "Grid layout (4 x 2)", null);
-
- // Create custom layout
- VerticalLayout panelCLayout = new VerticalLayout();
- panelCLayout.setMargin(true);
- final Panel panelC = new Panel("Custom layout with style exampleStyle",
- panelCLayout);
- final CustomLayout layoutC = new CustomLayout("exampleStyle");
- // Add 4 random components
- fillLayout(layoutC, componentCountD);
- // Add layout to panel
- panelCLayout.addComponent(layoutC);
-
- // Add demo panels (layouts) to main window
- mainWindow.addComponent(panelA);
- mainWindow.addComponent(panelB);
- mainWindow.addComponent(panelG);
- mainWindow.addComponent(tabsheet);
- mainWindow.addComponent(panelC);
- }
-
- private AbstractComponent getRandomComponent(int caption) {
- AbstractComponent result = null;
- final int randint = seededRandom.nextInt(7);
- switch (randint) {
- case 0:
- // Label
- result = new Label();
- result.setCaption("Label component " + caption);
- break;
- case 1:
- // Button
- result = new Button();
- result.setCaption("Button component " + caption);
- break;
- case 2:
- // TextField
- result = new TextField();
- result.setCaption("TextField component " + caption);
- break;
- case 3:
- // Select
- result = new Select("Select " + caption);
- result.setCaption("Select component " + caption);
- ((Select) result).addItem("First item");
- ((Select) result).addItem("Second item");
- ((Select) result).addItem("Third item");
- break;
- case 4:
- // Link
- result = new Link("",
- new ExternalResource("http://www.vaadin.com"));
- result.setCaption("Link component " + caption);
- break;
- case 5:
- // Link
- VerticalLayout panelLayout = new VerticalLayout();
- panelLayout.setMargin(true);
- result = new Panel(panelLayout);
- result.setCaption("Panel component " + caption);
- panelLayout.addComponent(new Label(
- "Panel is a container for other components, by default it draws a frame around it's "
- + "extremities and may have a caption to clarify the nature of the contained components' purpose."
- + " Panel contains a layout where the actual contained components are added, "
- + "this layout may be switched on the fly."));
- ((Panel) result).setWidth("250px");
- break;
- case 6:
- // Datefield
- result = new TestDateField();
- ((AbstractDateField<LocalDate, DateResolution>) result)
- .setStyleName("calendar");
- ((AbstractDateField<LocalDate, DateResolution>) result)
- .setValue(LocalDate.now());
- result.setCaption("Calendar component " + caption);
- break;
- case 7:
- // Datefield
- result = new TestDateField();
- ((AbstractDateField<LocalDate, DateResolution>) result)
- .setValue(LocalDate.now());
- result.setCaption("Calendar component " + caption);
- break;
- }
-
- return result;
- }
-
- /**
- * Add demo components to given layout
- *
- * @param layout
- */
- private void fillLayout(Layout layout, int numberOfComponents) {
- for (int i = 0; i < numberOfComponents; i++) {
- layout.addComponent(getRandomComponent(i));
- }
- }
-
- }
|