aboutsummaryrefslogtreecommitdiffstats
path: root/uitest/src/com/vaadin/tests/layouts/TestLayoutPerformance.java
diff options
context:
space:
mode:
Diffstat (limited to 'uitest/src/com/vaadin/tests/layouts/TestLayoutPerformance.java')
-rw-r--r--uitest/src/com/vaadin/tests/layouts/TestLayoutPerformance.java135
1 files changed, 135 insertions, 0 deletions
diff --git a/uitest/src/com/vaadin/tests/layouts/TestLayoutPerformance.java b/uitest/src/com/vaadin/tests/layouts/TestLayoutPerformance.java
new file mode 100644
index 0000000000..85ecf2897b
--- /dev/null
+++ b/uitest/src/com/vaadin/tests/layouts/TestLayoutPerformance.java
@@ -0,0 +1,135 @@
+package com.vaadin.tests.layouts;
+
+import com.vaadin.shared.ui.label.ContentMode;
+import com.vaadin.tests.components.TestBase;
+import com.vaadin.ui.AbstractComponent;
+import com.vaadin.ui.Button;
+import com.vaadin.ui.Button.ClickEvent;
+import com.vaadin.ui.CheckBox;
+import com.vaadin.ui.Component;
+import com.vaadin.ui.CssLayout;
+import com.vaadin.ui.GridLayout;
+import com.vaadin.ui.Label;
+import com.vaadin.ui.Layout;
+import com.vaadin.ui.NativeSelect;
+import com.vaadin.ui.TextField;
+import com.vaadin.ui.VerticalLayout;
+
+public class TestLayoutPerformance extends TestBase {
+ private NativeSelect ns;
+ private int i;
+ private NativeSelect ns2;
+ private VerticalLayout testarea = new VerticalLayout();
+
+ @Override
+ protected String getDescription() {
+ return "Test app to test simple rendering to various layouts.";
+ }
+
+ @Override
+ protected Integer getTicketNumber() {
+ return null;
+ }
+
+ @Override
+ protected void setup() {
+ Label label = new Label("<h1>CssLayout performance test.</h1>",
+ ContentMode.XHTML);
+ getLayout().addComponent(label);
+
+ label = new Label(
+ "<em>Hint</em>. Use debug dialog to measure rendering times TODO: extend with size settings (to both layout and content).",
+ ContentMode.XHTML);
+ getLayout().addComponent(label);
+
+ ns = new NativeSelect("Select component to test");
+ ns.addItem(CssLayout.class);
+ ns.addItem(GridLayout.class);
+ ns.addItem(VerticalLayout.class);
+ ns.setNullSelectionAllowed(false);
+ ns.setValue(CssLayout.class);
+
+ ns2 = new NativeSelect("Select component to render inside layout.");
+ ns2.addItem(Label.class);
+ ns2.addItem(Button.class);
+ ns2.setNullSelectionAllowed(false);
+ ns2.setValue(Label.class);
+
+ final TextField n = new TextField("Number of components");
+
+ n.setValue("1000");
+
+ final CheckBox cb = new CheckBox("Generate captions", false);
+
+ Button b = new Button("Render component");
+
+ b.addListener(new Button.ClickListener() {
+
+ @Override
+ public void buttonClick(ClickEvent event) {
+ int components = Integer.parseInt(n.getValue());
+ Layout layout = getCurrentLayout();
+ for (int i = 0; i < components; i++) {
+ Component component = newTestComponent();
+ if (cb.getValue()) {
+ component.setCaption("caption " + i);
+ }
+ layout.addComponent(component);
+ }
+
+ testarea.removeAllComponents();
+ testarea.addComponent(layout);
+ }
+
+ });
+
+ getLayout().addComponent(ns);
+ getLayout().addComponent(ns2);
+ getLayout().addComponent(n);
+ getLayout().addComponent(cb);
+ getLayout().addComponent(b);
+ getLayout().addComponent(testarea);
+
+ }
+
+ private Layout getCurrentLayout() {
+ Class<?> value = (Class<?>) ns.getValue();
+ if (value == GridLayout.class) {
+ return new GridLayout(10, 1);
+ }
+
+ try {
+ return (Layout) value.newInstance();
+ } catch (InstantiationException e) {
+ // TODO Auto-generated catch block
+ e.printStackTrace();
+ } catch (IllegalAccessException e) {
+ // TODO Auto-generated catch block
+ e.printStackTrace();
+ }
+ return null;
+
+ }
+
+ private Component newTestComponent() {
+ Class<?> componentClass = (Class<?>) ns2.getValue();
+ AbstractComponent newInstance = null;
+ try {
+ newInstance = (AbstractComponent) componentClass.newInstance();
+ } catch (InstantiationException e) {
+ // TODO Auto-generated catch block
+ e.printStackTrace();
+ } catch (IllegalAccessException e) {
+ // TODO Auto-generated catch block
+ e.printStackTrace();
+ }
+ if (componentClass == Label.class) {
+ ((Label) newInstance).setValue("Test l " + (i++));
+ ((Label) newInstance).setSizeUndefined();
+ } else {
+ newInstance.setCaption("Test l " + (i++));
+ }
+ return newInstance;
+ }
+
+}