diff options
author | Jani Laakso <jani.laakso@itmill.com> | 2007-12-03 19:14:00 +0000 |
---|---|---|
committer | Jani Laakso <jani.laakso@itmill.com> | 2007-12-03 19:14:00 +0000 |
commit | 362efe6fdf7c3a627e3bb7e63c33d21228619e6c (patch) | |
tree | aeb506a9900f616d470edcc8b3afcafe853dc92e /src/com/itmill/toolkit/tests | |
parent | e84304f70234b3768502e44ef97f88f19e902ea0 (diff) | |
download | vaadin-framework-362efe6fdf7c3a627e3bb7e63c33d21228619e6c.tar.gz vaadin-framework-362efe6fdf7c3a627e3bb7e63c33d21228619e6c.zip |
Packaging fixes
Added open source license and 3rd party licenses
Building new package
svn changeset:3129/svn branch:trunk
Diffstat (limited to 'src/com/itmill/toolkit/tests')
13 files changed, 1552 insertions, 0 deletions
diff --git a/src/com/itmill/toolkit/tests/testbench/TestBench.java b/src/com/itmill/toolkit/tests/testbench/TestBench.java new file mode 100644 index 0000000000..35373cfabb --- /dev/null +++ b/src/com/itmill/toolkit/tests/testbench/TestBench.java @@ -0,0 +1,209 @@ +package com.itmill.toolkit.tests.testbench; + +import java.io.File; +import java.net.URL; +import java.util.ArrayList; +import java.util.Enumeration; +import java.util.HashMap; +import java.util.Iterator; +import java.util.List; + +import com.itmill.toolkit.Application; +import com.itmill.toolkit.data.Property; +import com.itmill.toolkit.data.util.HierarchicalContainer; +import com.itmill.toolkit.terminal.Sizeable; +import com.itmill.toolkit.ui.Component; +import com.itmill.toolkit.ui.CustomComponent; +import com.itmill.toolkit.ui.ExpandLayout; +import com.itmill.toolkit.ui.Label; +import com.itmill.toolkit.ui.Panel; +import com.itmill.toolkit.ui.SplitPanel; +import com.itmill.toolkit.ui.Tree; +import com.itmill.toolkit.ui.Window; + +/** + * TestBench finds out testable classes within given java packages and adds them + * to menu from where they can be executed. Class is considered testable if it + * is of class CustomComponent. + * + * Note: edit TestBench.testablePackages array + * + * @author IT Mill Ltd. + * + */ +public class TestBench extends com.itmill.toolkit.Application implements + Property.ValueChangeListener { + + // Add here packages which are used for finding testable classes + String[] testablePackages = { "com.itmill.toolkit.demo.testbench" }; + + HierarchicalContainer testables = new HierarchicalContainer(); + + Window mainWindow = new Window("TestBench window"); + + // Main layout consists of tree menu and body layout + SplitPanel mainLayout = new SplitPanel(SplitPanel.ORIENTATION_HORIZONTAL); + + Tree menu; + + Panel bodyLayout = new Panel(); + + HashMap itemCaptions = new HashMap(); + + public void init() { + + // Add testable classes to hierarchical container + for (int p = 0; p < testablePackages.length; p++) { + testables.addItem(testablePackages[p]); + try { + List testableClasses = getTestableClassesForPackage(testablePackages[p]); + for (Iterator it = testableClasses.iterator(); it.hasNext();) { + Class t = (Class) it.next(); + // ignore TestBench itself + if (t.equals(TestBench.class)) { + continue; + } + try { + testables.addItem(t); + itemCaptions.put(t, t.getName()); + testables.setParent(t, testablePackages[p]); + continue; + } catch (Exception e) { + try { + testables.addItem(t); + itemCaptions.put(t, t.getName()); + testables.setParent(t, testablePackages[p]); + continue; + } catch (Exception e1) { + e1.printStackTrace(); + } + } + } + } catch (Exception e) { + e.printStackTrace(); + } + } + + menu = new Tree("Testables", testables); + for (Iterator i = itemCaptions.keySet().iterator(); i.hasNext();) { + Class testable = (Class) i.next(); + // simplify captions + String name = testable.getName().substring( + testable.getName().lastIndexOf('.') + 1); + menu.setItemCaption(testable, name); + } + // expand all root items + for (Iterator i = menu.rootItemIds().iterator(); i.hasNext();) { + menu.expandItemsRecursively(i.next()); + } + + menu.addListener(this); + menu.setImmediate(true); + + mainLayout.addComponent(menu); + + bodyLayout.addStyleName("light"); + bodyLayout.setHeight(100); + bodyLayout.setHeightUnits(Sizeable.UNITS_PERCENTAGE); + bodyLayout.setLayout(new ExpandLayout()); + + mainLayout.addComponent(bodyLayout); + + mainLayout.setSplitPosition(30); + + mainWindow.setLayout(mainLayout); + + setMainWindow(mainWindow); + } + + private Component createTestable(Class c) { + try { + Application app = (Application) c.newInstance(); + app.init(); + return app.getMainWindow().getLayout(); + } catch (Exception e) { + try { + CustomComponent cc = (CustomComponent) c.newInstance(); + return cc; + } catch (Exception e1) { + e1.printStackTrace(); + return new Label("Cannot create custom component: " + + e1.toString()); + } + } + } + + // Handle menu selection and update body + public void valueChange(Property.ValueChangeEvent event) { + bodyLayout.removeAllComponents(); + bodyLayout.setCaption(null); + + Object o = menu.getValue(); + if (o != null && o instanceof Class) { + Class c = (Class) o; + String title = c.getName(); + bodyLayout.setCaption(title); + bodyLayout.addComponent(createTestable(c)); + } else { + // NOP node selected or deselected tree item + } + + } + + /** + * Return all testable classes within given package. Class is considered + * testable if it's superclass is CustomComponent. + * + * @param packageName + * @return + * @throws ClassNotFoundException + */ + public static List getTestableClassesForPackage(String packageName) + throws Exception { + ArrayList directories = new ArrayList(); + try { + ClassLoader cld = Thread.currentThread().getContextClassLoader(); + if (cld == null) { + throw new ClassNotFoundException("Can't get class loader."); + } + String path = packageName.replace('.', '/'); + // Ask for all resources for the path + Enumeration resources = cld.getResources(path); + while (resources.hasMoreElements()) { + URL url = (URL) resources.nextElement(); + directories.add(new File(url.getFile())); + } + } catch (Exception x) { + throw new Exception(packageName + + " does not appear to be a valid package."); + } + + ArrayList classes = new ArrayList(); + // For every directory identified capture all the .class files + for (Iterator it = directories.iterator(); it.hasNext();) { + File directory = (File) it.next(); + if (directory.exists()) { + // Get the list of the files contained in the package + String[] files = directory.list(); + for (int j = 0; j < files.length; j++) { + // we are only interested in .class files + if (files[j].endsWith(".class")) { + // removes the .class extension + String p = packageName + '.' + + files[j].substring(0, files[j].length() - 6); + Class c = Class.forName(p); + if (c.getSuperclass() != null) { + if ((c.getSuperclass() + .equals(com.itmill.toolkit.ui.CustomComponent.class))) { + classes.add(c); + } + } + } + } + } + } + + return classes; + } + +} diff --git a/src/com/itmill/toolkit/tests/testbench/TestForAlignments.java b/src/com/itmill/toolkit/tests/testbench/TestForAlignments.java new file mode 100644 index 0000000000..858ddaa29b --- /dev/null +++ b/src/com/itmill/toolkit/tests/testbench/TestForAlignments.java @@ -0,0 +1,62 @@ +package com.itmill.toolkit.tests.testbench; + +import com.itmill.toolkit.ui.Button; +import com.itmill.toolkit.ui.CustomComponent; +import com.itmill.toolkit.ui.DateField; +import com.itmill.toolkit.ui.OrderedLayout; +import com.itmill.toolkit.ui.TextField; + +public class TestForAlignments extends CustomComponent { + + public TestForAlignments() { + + OrderedLayout main = new OrderedLayout(); + + Button b1 = new Button("Right"); + Button b2 = new Button("Left"); + Button b3 = new Button("Bottom"); + Button b4 = new Button("Top"); + TextField t1 = new TextField("Right aligned"); + TextField t2 = new TextField("Bottom aligned"); + DateField d1 = new DateField("Center aligned"); + DateField d2 = new DateField("Center aligned"); + + OrderedLayout vert = new OrderedLayout(); + vert.addComponent(b1); + vert.addComponent(b2); + vert.addComponent(t1); + vert.addComponent(d1); + vert.setWidth(500); + vert.setComponentAlignment(b1, OrderedLayout.ALIGNMENT_RIGHT, + OrderedLayout.ALIGNMENT_TOP); + vert.setComponentAlignment(b2, OrderedLayout.ALIGNMENT_LEFT, + OrderedLayout.ALIGNMENT_TOP); + vert.setComponentAlignment(t1, OrderedLayout.ALIGNMENT_RIGHT, + OrderedLayout.ALIGNMENT_TOP); + vert.setComponentAlignment(d1, + OrderedLayout.ALIGNMENT_HORIZONTAL_CENTER, + OrderedLayout.ALIGNMENT_TOP); + OrderedLayout hori = new OrderedLayout( + OrderedLayout.ORIENTATION_HORIZONTAL); + hori.addComponent(b3); + hori.addComponent(b4); + hori.addComponent(t2); + hori.addComponent(d2); + hori.setHeight(200); + hori.setComponentAlignment(b3, OrderedLayout.ALIGNMENT_LEFT, + OrderedLayout.ALIGNMENT_BOTTOM); + hori.setComponentAlignment(b4, OrderedLayout.ALIGNMENT_LEFT, + OrderedLayout.ALIGNMENT_TOP); + hori.setComponentAlignment(t2, OrderedLayout.ALIGNMENT_LEFT, + OrderedLayout.ALIGNMENT_BOTTOM); + hori.setComponentAlignment(d2, OrderedLayout.ALIGNMENT_LEFT, + OrderedLayout.ALIGNMENT_VERTICAL_CENTER); + + main.addComponent(vert); + main.addComponent(hori); + + setCompositionRoot(main); + + } + +} diff --git a/src/com/itmill/toolkit/tests/testbench/TestForBasicApplicationLayout.java b/src/com/itmill/toolkit/tests/testbench/TestForBasicApplicationLayout.java new file mode 100644 index 0000000000..822c408be1 --- /dev/null +++ b/src/com/itmill/toolkit/tests/testbench/TestForBasicApplicationLayout.java @@ -0,0 +1,116 @@ +package com.itmill.toolkit.tests.testbench;
+
+import java.sql.SQLException;
+import java.util.Locale;
+
+import com.itmill.toolkit.data.util.QueryContainer;
+import com.itmill.toolkit.demo.util.SampleDatabase;
+import com.itmill.toolkit.terminal.Sizeable;
+import com.itmill.toolkit.ui.Button;
+import com.itmill.toolkit.ui.CustomComponent;
+import com.itmill.toolkit.ui.DateField;
+import com.itmill.toolkit.ui.ExpandLayout;
+import com.itmill.toolkit.ui.Label;
+import com.itmill.toolkit.ui.OrderedLayout;
+import com.itmill.toolkit.ui.Panel;
+import com.itmill.toolkit.ui.SplitPanel;
+import com.itmill.toolkit.ui.TabSheet;
+import com.itmill.toolkit.ui.Table;
+import com.itmill.toolkit.ui.Button.ClickEvent;
+import com.itmill.toolkit.ui.Button.ClickListener;
+
+public class TestForBasicApplicationLayout extends CustomComponent {
+
+ private Button click;
+ private Button click2;
+ private TabSheet tab;
+
+ // Database provided with sample data
+ private SampleDatabase sampleDatabase;
+
+ public TestForBasicApplicationLayout() {
+
+ click = new Button("Set height -1", new ClickListener() {
+
+ public void buttonClick(ClickEvent event) {
+ tab.setHeight(-1);
+ }
+
+ });
+
+ click2 = new Button("Set height 100%", new ClickListener() {
+
+ public void buttonClick(ClickEvent event) {
+ tab.setHeight(100);
+ tab.setHeightUnits(Sizeable.UNITS_PERCENTAGE);
+ }
+
+ });
+
+ SplitPanel sp = new SplitPanel(SplitPanel.ORIENTATION_HORIZONTAL);
+ sp.setSplitPosition(290, Sizeable.UNITS_PIXELS);
+
+ SplitPanel sp2 = new SplitPanel(SplitPanel.ORIENTATION_VERTICAL);
+ sp2.setSplitPosition(255, Sizeable.UNITS_PIXELS);
+
+ Panel p = new Panel("Accordion Panel");
+ p.setSizeFull();
+
+ tab = new TabSheet();
+ tab.setSizeFull();
+
+ Panel report = new Panel("Monthly Program Runs", new ExpandLayout());
+ OrderedLayout controls = new OrderedLayout();
+ controls.setMargin(true);
+ controls.addComponent(new Label("Report tab"));
+ controls.addComponent(click);
+ controls.addComponent(click2);
+ report.addComponent(controls);
+ DateField cal = new DateField();
+ cal.setResolution(DateField.RESOLUTION_DAY);
+ cal.setLocale(new Locale("en", "US"));
+ report.addComponent(cal);
+ ((ExpandLayout) report.getLayout()).expand(controls);
+ report.addStyleName(Panel.STYLE_LIGHT);
+ report.setHeight(100);
+ report.setHeightUnits(Sizeable.UNITS_PERCENTAGE);
+
+ sp2.setFirstComponent(report);
+
+ Table table = new Table();
+ // populate Toolkit table component with test SQL table rows
+ try {
+ sampleDatabase = new SampleDatabase();
+ QueryContainer qc = new QueryContainer("SELECT * FROM employee",
+ sampleDatabase.getConnection());
+ table.setContainerDataSource(qc);
+ } catch (SQLException e) {
+ e.printStackTrace();
+ }
+ // define which columns should be visible on Table component
+ table.setVisibleColumns(new Object[] { "FIRSTNAME", "LASTNAME",
+ "TITLE", "UNIT" });
+ table.setItemCaptionPropertyId("ID");
+ table.setPageLength(15);
+ table.setSelectable(true);
+ table.setRowHeaderMode(Table.ROW_HEADER_MODE_INDEX);
+ table.setColumnCollapsingAllowed(true);
+ table.setColumnReorderingAllowed(true);
+ table.setSortDisabled(false);
+ table.setSizeFull();
+ table.addStyleName("table-inline");
+ sp2.setSecondComponent(table);
+
+ tab.addTab(new Label("Tab1"), "Summary", null);
+ tab.addTab(sp2, "Reports", null);
+ tab.addTab(new Label("Tab 3"), "Statistics", null);
+ tab.addTab(new Label("Tab 4"), "Error Tracking", null);
+ tab.setSelectedTab(sp2);
+
+ sp.setFirstComponent(p);
+ sp.setSecondComponent(tab);
+
+ setCompositionRoot(sp);
+ }
+
+}
diff --git a/src/com/itmill/toolkit/tests/testbench/TestForContainerFilterable.java b/src/com/itmill/toolkit/tests/testbench/TestForContainerFilterable.java new file mode 100644 index 0000000000..93320ee0d8 --- /dev/null +++ b/src/com/itmill/toolkit/tests/testbench/TestForContainerFilterable.java @@ -0,0 +1,93 @@ +package com.itmill.toolkit.tests.testbench; + +import com.itmill.toolkit.data.util.IndexedContainer; +import com.itmill.toolkit.terminal.Sizeable; +import com.itmill.toolkit.ui.Button; +import com.itmill.toolkit.ui.CustomComponent; +import com.itmill.toolkit.ui.Label; +import com.itmill.toolkit.ui.OrderedLayout; +import com.itmill.toolkit.ui.Panel; +import com.itmill.toolkit.ui.Table; +import com.itmill.toolkit.ui.TextField; +import com.itmill.toolkit.ui.Button.ClickEvent; + +public class TestForContainerFilterable extends CustomComponent { + + OrderedLayout lo = new OrderedLayout(); + IndexedContainer ic = new IndexedContainer(); + Table t = new Table(); + private static String parts[] = { "Neo", "Sa", "rem", "the", "adi", "za", + "tre", "day", "Ca", "re", "cen", "ter", "mi", "nal" }; + TextField firstFilter = new TextField("first-filter"); + TextField secondFilter = new TextField("second-filter"); + Button filterButton = new Button("Filter"); + Label count = new Label(); + + public TestForContainerFilterable() { + setCompositionRoot(lo); + + // Init datasource + ic.addContainerProperty("first", String.class, ""); + ic.addContainerProperty("second", String.class, ""); + for (int i = 0; i < 1000; i++) { + Object id = ic.addItem(); + ic.getContainerProperty(id, "first").setValue(randomWord()); + ic.getContainerProperty(id, "second").setValue(randomWord()); + } + + // Init filtering view + Panel filterPanel = new Panel("Filter", new OrderedLayout( + OrderedLayout.ORIENTATION_HORIZONTAL)); + filterPanel.setWidth(100); + filterPanel.setWidthUnits(Sizeable.UNITS_PERCENTAGE); + lo.addComponent(filterPanel); + filterPanel.addComponent(firstFilter); + filterPanel.addComponent(secondFilter); + filterPanel.addComponent(filterButton); + firstFilter + .setDescription("Filters first column in case-sensitive contains manner."); + secondFilter + .setDescription("Filters second column in case-insensitive prefix manner."); + filterPanel.addComponent(count); + + // Table + lo.addComponent(t); + t.setPageLength(12); + t.setWidth(100); + t.setWidthUnits(Sizeable.UNITS_PERCENTAGE); + t.setContainerDataSource(ic); + + // Handler + filterButton.addListener(new Button.ClickListener() { + public void buttonClick(ClickEvent event) { + ic.removeAllContainerFilters(); + if (firstFilter.toString().length() > 0) { + ic.addContainerFilter("first", firstFilter.toString(), false, + false); + } + if (secondFilter.toString().length() > 0) { + ic.addContainerFilter("second", secondFilter.toString(), true, + true); + } + count.setValue("Rows in table: " + ic.size()); + } + }); + + // Resetbutton + lo.addComponent(new Button("Rebind table datasource", + new Button.ClickListener() { + public void buttonClick(ClickEvent event) { + t.setContainerDataSource(ic); + } + })); + } + + private String randomWord() { + int len = (int) (Math.random() * 4); + StringBuffer buf = new StringBuffer(); + while (len-- >= 0) { + buf.append(parts[(int) (Math.random() * parts.length)]); + } + return buf.toString(); + } +} diff --git a/src/com/itmill/toolkit/tests/testbench/TestForMultipleStyleNames.java b/src/com/itmill/toolkit/tests/testbench/TestForMultipleStyleNames.java new file mode 100644 index 0000000000..a4649bbb18 --- /dev/null +++ b/src/com/itmill/toolkit/tests/testbench/TestForMultipleStyleNames.java @@ -0,0 +1,92 @@ +package com.itmill.toolkit.tests.testbench; + +import java.util.ArrayList; +import java.util.Collection; +import java.util.Iterator; + +import com.itmill.toolkit.data.Property.ValueChangeEvent; +import com.itmill.toolkit.data.Property.ValueChangeListener; +import com.itmill.toolkit.data.util.IndexedContainer; +import com.itmill.toolkit.ui.CustomComponent; +import com.itmill.toolkit.ui.Label; +import com.itmill.toolkit.ui.OrderedLayout; +import com.itmill.toolkit.ui.TwinColSelect; + +/** + * TODO: Note you need to add Theme under WebContent/ITMILL/Themes/mytheme in + * order to see actual visible results on the browser. Currently changes are + * visible only by inspecting DOM. + * + * @author IT Mill Ltd. + */ +public class TestForMultipleStyleNames extends CustomComponent implements + ValueChangeListener { + + private final OrderedLayout main = new OrderedLayout(); + + private Label l; + + private final TwinColSelect s = new TwinColSelect(); + + private ArrayList styleNames2; + + public TestForMultipleStyleNames() { + setCompositionRoot(main); + createNewView(); + } + + public void createNewView() { + main.removeAllComponents(); + main.addComponent(new Label( + "TK5 supports multiple stylenames for components.")); + main.addComponent(new Label("Note you need to add Theme under" + + " WebContent/ITMILL/Themes/mytheme" + + " in order to see actual visible results" + + " on the browser. Currently changes are" + + " visible only by inspecting DOM.")); + + styleNames2 = new ArrayList(); + + styleNames2.add("red"); + styleNames2.add("bold"); + styleNames2.add("italic"); + + s.setContainerDataSource(new IndexedContainer(styleNames2)); + s.addListener(this); + s.setImmediate(true); + main.addComponent(s); + + l = new Label("Test labele"); + main.addComponent(l); + + } + + public void valueChange(ValueChangeEvent event) { + + String currentStyle = l.getStyle(); + String[] tmp = currentStyle.split(" "); + ArrayList curStyles = new ArrayList(); + for (int i = 0; i < tmp.length; i++) { + if (tmp[i] != "") { + curStyles.add(tmp[i]); + } + } + + Collection styles = (Collection) s.getValue(); + + for (Iterator iterator = styles.iterator(); iterator.hasNext();) { + String styleName = (String) iterator.next(); + if (curStyles.contains(styleName)) { + // already added + curStyles.remove(styleName); + } else { + l.addStyleName(styleName); + } + } + for (Iterator iterator2 = curStyles.iterator(); iterator2.hasNext();) { + String object = (String) iterator2.next(); + l.removeStyleName(object); + } + } + +} diff --git a/src/com/itmill/toolkit/tests/testbench/TestForPreconfiguredComponents.java b/src/com/itmill/toolkit/tests/testbench/TestForPreconfiguredComponents.java new file mode 100644 index 0000000000..99ca0e3089 --- /dev/null +++ b/src/com/itmill/toolkit/tests/testbench/TestForPreconfiguredComponents.java @@ -0,0 +1,182 @@ +package com.itmill.toolkit.tests.testbench; + +import com.itmill.toolkit.event.Action; +import com.itmill.toolkit.event.Action.Handler; +import com.itmill.toolkit.ui.AbstractSelect; +import com.itmill.toolkit.ui.Button; +import com.itmill.toolkit.ui.CheckBox; +import com.itmill.toolkit.ui.Component; +import com.itmill.toolkit.ui.CustomComponent; +import com.itmill.toolkit.ui.Label; +import com.itmill.toolkit.ui.NativeSelect; +import com.itmill.toolkit.ui.OptionGroup; +import com.itmill.toolkit.ui.OrderedLayout; +import com.itmill.toolkit.ui.Panel; +import com.itmill.toolkit.ui.Tree; +import com.itmill.toolkit.ui.TwinColSelect; +import com.itmill.toolkit.ui.Button.ClickEvent; +import com.itmill.toolkit.ui.Button.ClickListener; + +/** + * @author IT Mill Ltd. + */ +public class TestForPreconfiguredComponents extends CustomComponent implements + Handler { + + private static final String[] firstnames = new String[] { "John", "Mary", + "Joe", "Sarah", "Jeff", "Jane", "Peter", "Marc", "Josie", "Linus" }; + + private static final String[] lastnames = new String[] { "Torvalds", + "Smith", "Jones", "Beck", "Sheridan", "Picard", "Hill", "Fielding", + "Einstein" }; + + private final OrderedLayout main = new OrderedLayout(); + + private final Action[] actions = new Action[] { new Action("edit"), + new Action("delete") }; + + private Panel al; + + private Tree contextTree; + + public TestForPreconfiguredComponents() { + + setCompositionRoot(main); + createNewView(); + } + + public void createNewView() { + main.removeAllComponents(); + main + .addComponent(new Label( + "In Toolkit 5 we introduce new componens. Previously we" + + " usually used setStyle or some other methods on possibly " + + "multiple steps to configure component for ones needs. These new " + + "server side components are mostly just classes that in constructor " + + "set base class to state that programmer wants.")); + + main.addComponent(new Button("commit")); + + Panel test = createTestBench(new CheckBox()); + test.setCaption("CheckBox (configured from button)"); + main.addComponent(test); + + AbstractSelect s = new TwinColSelect(); + fillSelect(s, 20); + test = createTestBench(s); + test.setCaption("TwinColSelect (configured from select)"); + main.addComponent(test); + + s = new NativeSelect(); + fillSelect(s, 20); + test = createTestBench(s); + test.setCaption("Native (configured from select)"); + main.addComponent(test); + + s = new OptionGroup(); + fillSelect(s, 20); + test = createTestBench(s); + test.setCaption("OptionGroup (configured from select)"); + main.addComponent(test); + + s = new OptionGroup(); + fillSelect(s, 20); + s.setMultiSelect(true); + test = createTestBench(s); + test + .setCaption("OptionGroup + multiselect manually (configured from select)"); + main.addComponent(test); + + Button b = new Button("refresh view", this, "createNewView"); + main.addComponent(b); + + } + + public static void fillSelect(AbstractSelect s, int items) { + for (int i = 0; i < items; i++) { + String name = firstnames[(int) (Math.random() * (firstnames.length - 1))] + + " " + + lastnames[(int) (Math.random() * (lastnames.length - 1))]; + s.addItem(name); + } + } + + public Tree createTestTree() { + Tree t = new Tree("Tree"); + String[] names = new String[100]; + for (int i = 0; i < names.length; i++) { + names[i] = firstnames[(int) (Math.random() * (firstnames.length - 1))] + + " " + + lastnames[(int) (Math.random() * (lastnames.length - 1))]; + } + + // Create tree + t = new Tree("Organization Structure"); + for (int i = 0; i < 100; i++) { + t.addItem(names[i]); + String parent = names[(int) (Math.random() * (names.length - 1))]; + if (t.containsId(parent)) { + t.setParent(names[i], parent); + } + } + + // Forbid childless people to have children (makes them leaves) + for (int i = 0; i < 100; i++) { + if (!t.hasChildren(names[i])) { + t.setChildrenAllowed(names[i], false); + } + } + return t; + } + + public Panel createTestBench(Component t) { + Panel ol = new Panel(); + ol.setLayout(new OrderedLayout(OrderedLayout.ORIENTATION_HORIZONTAL)); + + ol.addComponent(t); + + final OrderedLayout ol2 = new OrderedLayout( + OrderedLayout.ORIENTATION_HORIZONTAL); + final Panel status = new Panel("Events"); + final Button clear = new Button("clear event log"); + clear.addListener(new ClickListener() { + public void buttonClick(ClickEvent event) { + status.removeAllComponents(); + status.addComponent(ol2); + } + }); + ol2.addComponent(clear); + final Button commit = new Button("commit changes"); + ol2.addComponent(commit); + status.addComponent(ol2); + + status.setHeight(300); + status.setWidth(400); + + ol.addComponent(status); + + t.addListener(new Listener() { + public void componentEvent(Event event) { + status.addComponent(new Label(event.getClass().getName())); + status.addComponent(new Label("selected: " + + event.getSource().toString())); + } + }); + + return ol; + } + + public Action[] getActions(Object target, Object sender) { + return actions; + } + + public void handleAction(Action action, Object sender, Object target) { + if (action == actions[1]) { + al.addComponent(new Label("Delete selected on " + target)); + contextTree.removeItem(target); + + } else { + al.addComponent(new Label("Edit selected on " + target)); + } + } +} diff --git a/src/com/itmill/toolkit/tests/testbench/TestForRichTextEditor.java b/src/com/itmill/toolkit/tests/testbench/TestForRichTextEditor.java new file mode 100644 index 0000000000..ebefb888c9 --- /dev/null +++ b/src/com/itmill/toolkit/tests/testbench/TestForRichTextEditor.java @@ -0,0 +1,53 @@ +package com.itmill.toolkit.tests.testbench; + +import com.itmill.toolkit.data.Property.ValueChangeEvent; +import com.itmill.toolkit.data.Property.ValueChangeListener; +import com.itmill.toolkit.ui.Button; +import com.itmill.toolkit.ui.CustomComponent; +import com.itmill.toolkit.ui.Label; +import com.itmill.toolkit.ui.OrderedLayout; +import com.itmill.toolkit.ui.RichTextArea; + +/** + * + * @author IT Mill Ltd. + */ +public class TestForRichTextEditor extends CustomComponent implements + ValueChangeListener { + + private OrderedLayout main = new OrderedLayout(); + + private Label l; + + private RichTextArea rte; + + public TestForRichTextEditor() { + + setCompositionRoot(main); + createNewView(); + } + + public void createNewView() { + main.removeAllComponents(); + main.addComponent(new Label( + "RTE uses google richtextArea and their examples toolbar.")); + + rte = new RichTextArea(); + rte.addListener(this); + + rte.setEnabled(false); + + main.addComponent(rte); + + main.addComponent(new Button("commit content to label below")); + + l = new Label("", Label.CONTENT_XHTML); + main.addComponent(l); + + } + + public void valueChange(ValueChangeEvent event) { + l.setValue(rte.getValue()); + } + +} diff --git a/src/com/itmill/toolkit/tests/testbench/TestForTrees.java b/src/com/itmill/toolkit/tests/testbench/TestForTrees.java new file mode 100644 index 0000000000..cf89b2c27b --- /dev/null +++ b/src/com/itmill/toolkit/tests/testbench/TestForTrees.java @@ -0,0 +1,162 @@ +package com.itmill.toolkit.tests.testbench; + +import com.itmill.toolkit.event.Action; +import com.itmill.toolkit.event.Action.Handler; +import com.itmill.toolkit.ui.Button; +import com.itmill.toolkit.ui.Component; +import com.itmill.toolkit.ui.CustomComponent; +import com.itmill.toolkit.ui.Label; +import com.itmill.toolkit.ui.OrderedLayout; +import com.itmill.toolkit.ui.Panel; +import com.itmill.toolkit.ui.Tree; +import com.itmill.toolkit.ui.Button.ClickEvent; +import com.itmill.toolkit.ui.Button.ClickListener; + +/** + * Some test cases for trees. Events panel logs events that happen server side. + * + * @author IT Mill Ltd. + */ +public class TestForTrees extends CustomComponent implements Handler { + + private static final String[] firstnames = new String[] { "John", "Mary", + "Joe", "Sarah", "Jeff", "Jane", "Peter", "Marc", "Josie", "Linus" }; + + private static final String[] lastnames = new String[] { "Torvalds", + "Smith", "Jones", "Beck", "Sheridan", "Picard", "Hill", "Fielding", + "Einstein" }; + + private OrderedLayout main = new OrderedLayout(); + + private Action[] actions = new Action[] { new Action("edit"), + new Action("delete") }; + + private Panel al; + + private Tree contextTree; + + public TestForTrees() { + + setCompositionRoot(main); + createNewView(); + } + + public void createNewView() { + main.removeAllComponents(); + main + .addComponent(new Label( + "Some test cases for trees. Events panel logs events that happen server side.")); + + main.addComponent(new Button("commit")); + + Tree t; + + t = createTestTree(); + t.setCaption("Default settings"); + main.addComponent(createTestBench(t)); + + t = createTestTree(); + t.setCaption("Multiselect settings"); + t.setMultiSelect(true); + main.addComponent(createTestBench(t)); + + t = createTestTree(); + t.setCaption("Multiselect and immediate"); + t.setImmediate(true); + t.setMultiSelect(true); + main.addComponent(createTestBench(t)); + + t = createTestTree(); + t.setCaption("immediate"); + t.setImmediate(true); + main.addComponent(createTestBench(t)); + + t = createTestTree(); + t.setCaption("with actions"); + t.setImmediate(true); + t.addActionHandler(this); + OrderedLayout ol = (OrderedLayout) createTestBench(t); + al = new Panel("action log"); + ol.addComponent(al); + main.addComponent(ol); + contextTree = t; + + Button b = new Button("refresh view", this, "createNewView"); + main.addComponent(b); + + } + + public Tree createTestTree() { + Tree t = new Tree("Tree"); + String[] names = new String[100]; + for (int i = 0; i < names.length; i++) { + names[i] = firstnames[(int) (Math.random() * (firstnames.length - 1))] + + " " + + lastnames[(int) (Math.random() * (lastnames.length - 1))]; + } + + // Create tree + t = new Tree("Organization Structure"); + for (int i = 0; i < 100; i++) { + t.addItem(names[i]); + String parent = names[(int) (Math.random() * (names.length - 1))]; + if (t.containsId(parent)) { + t.setParent(names[i], parent); + } + } + + // Forbid childless people to have children (makes them leaves) + for (int i = 0; i < 100; i++) { + if (!t.hasChildren(names[i])) { + t.setChildrenAllowed(names[i], false); + } + } + return t; + } + + public Component createTestBench(Tree t) { + OrderedLayout ol = new OrderedLayout(); + ol.setOrientation(OrderedLayout.ORIENTATION_HORIZONTAL); + + ol.addComponent(t); + + final Panel status = new Panel("Events"); + final Button clear = new Button("c"); + clear.addListener(new ClickListener() { + public void buttonClick(ClickEvent event) { + status.removeAllComponents(); + status.addComponent(clear); + } + }); + status.addComponent(clear); + + status.setHeight(300); + status.setWidth(400); + + ol.addComponent(status); + + t.addListener(new Listener() { + public void componentEvent(Event event) { + status.addComponent(new Label(event.getClass().getName())); + status.addComponent(new Label("selected: " + + event.getSource().toString())); + } + }); + + return ol; + } + + public Action[] getActions(Object target, Object sender) { + return actions; + } + + public void handleAction(Action action, Object sender, Object target) { + if (action == actions[1]) { + al.addComponent(new Label("Delete selected on " + target)); + contextTree.removeItem(target); + + } else { + al.addComponent(new Label("Edit selected on " + target)); + } + } +} diff --git a/src/com/itmill/toolkit/tests/testbench/TestForUpload.java b/src/com/itmill/toolkit/tests/testbench/TestForUpload.java new file mode 100644 index 0000000000..2e6c5d4e29 --- /dev/null +++ b/src/com/itmill/toolkit/tests/testbench/TestForUpload.java @@ -0,0 +1,345 @@ +package com.itmill.toolkit.tests.testbench; + +import java.io.ByteArrayInputStream; +import java.io.ByteArrayOutputStream; +import java.io.File; +import java.io.FileInputStream; +import java.io.FileNotFoundException; +import java.io.FileOutputStream; +import java.io.IOException; +import java.io.InputStream; +import java.io.OutputStream; + +import com.itmill.toolkit.data.Property.ValueChangeEvent; +import com.itmill.toolkit.terminal.StreamResource; +import com.itmill.toolkit.ui.AbstractField; +import com.itmill.toolkit.ui.Button; +import com.itmill.toolkit.ui.CustomComponent; +import com.itmill.toolkit.ui.Label; +import com.itmill.toolkit.ui.Layout; +import com.itmill.toolkit.ui.Link; +import com.itmill.toolkit.ui.OrderedLayout; +import com.itmill.toolkit.ui.Panel; +import com.itmill.toolkit.ui.ProgressIndicator; +import com.itmill.toolkit.ui.Select; +import com.itmill.toolkit.ui.Upload; +import com.itmill.toolkit.ui.Button.ClickEvent; +import com.itmill.toolkit.ui.Upload.FailedEvent; +import com.itmill.toolkit.ui.Upload.FailedListener; +import com.itmill.toolkit.ui.Upload.FinishedEvent; +import com.itmill.toolkit.ui.Upload.FinishedListener; +import com.itmill.toolkit.ui.Upload.StartedEvent; +import com.itmill.toolkit.ui.Upload.StartedListener; +import com.itmill.toolkit.ui.Upload.SucceededEvent; +import com.itmill.toolkit.ui.Upload.SucceededListener; + +public class TestForUpload extends CustomComponent implements + Upload.FinishedListener, FailedListener, SucceededListener, + Upload.ProgressListener, StartedListener { + + Layout main = new OrderedLayout(); + + Buffer buffer = new MemoryBuffer(); + + Panel status = new Panel("Uploaded file:"); + + private final Upload up; + + private final Label l; + + private final ProgressIndicator pi = new ProgressIndicator(); + + private final Label memoryStatus; + + private final Select uploadBufferSelector; + + public TestForUpload() { + setCompositionRoot(main); + main.addComponent(new Label( + "This is a simple test for upload application. " + + "Upload should work with big files and concurrent " + + "requests should not be blocked. Button 'b' reads " + + "current state into label below it. Memory receiver " + + "streams upload contents into memory. You may track" + + "consumption." + + "tempfile receiver writes upload to file and " + + "should have low memory consumption.")); + + main + .addComponent(new Label( + "Clicking on button b updates information about upload components status or same with garbage collector.")); + + up = new Upload("Upload", buffer); + up.setImmediate(true); + up.addListener((FinishedListener) this); + up.addListener((FailedListener) this); + up.addListener((SucceededListener) this); + up.addListener((StartedListener) this); + + up.setProgressListener(this); + + Button b = new Button("b", this, "readState"); + + Button c = new Button("b with gc", this, "gc"); + + main.addComponent(b); + main.addComponent(c); + + uploadBufferSelector = new Select("Receiver type"); + uploadBufferSelector.setImmediate(true); + uploadBufferSelector.addItem("memory"); + uploadBufferSelector.setValue("memory"); + uploadBufferSelector.addItem("tempfile"); + uploadBufferSelector + .addListener(new AbstractField.ValueChangeListener() { + public void valueChange(ValueChangeEvent event) { + setBuffer(); + } + }); + main.addComponent(uploadBufferSelector); + + main.addComponent(up); + l = new Label("Idle"); + main.addComponent(l); + + pi.setVisible(false); + pi.setPollingInterval(1000); + main.addComponent(pi); + + memoryStatus = new Label(); + main.addComponent(memoryStatus); + + status.setVisible(false); + main.addComponent(status); + + Button restart = new Button("R"); + restart.addListener(new Button.ClickListener() { + + public void buttonClick(ClickEvent event) { + getApplication().close(); + } + }); + main.addComponent(restart); + + } + + private void setBuffer() { + String id = (String) uploadBufferSelector.getValue(); + if ("memory".equals(id)) { + buffer = new MemoryBuffer(); + } else if ("tempfile".equals(id)) { + buffer = new TmpFileBuffer(); + } + up.setReceiver(buffer); + } + + public void gc() { + Runtime.getRuntime().gc(); + readState(); + } + + public void readState() { + StringBuffer sb = new StringBuffer(); + + if (up.isUploading()) { + sb.append("Uploading..."); + sb.append(up.getBytesRead()); + sb.append("/"); + sb.append(up.getUploadSize()); + sb.append(" "); + sb.append(Math.round(100 * up.getBytesRead() + / (double) up.getUploadSize())); + sb.append("%"); + } else { + sb.append("Idle"); + } + l.setValue(sb.toString()); + refreshMemUsage(); + } + + public void uploadFinished(FinishedEvent event) { + status.removeAllComponents(); + InputStream stream = buffer.getStream(); + if (stream == null) { + status.addComponent(new Label( + "Upload finished, but output buffer is null!!")); + } else { + status + .addComponent(new Label("<b>Name:</b> " + + event.getFilename(), Label.CONTENT_XHTML)); + status.addComponent(new Label("<b>Mimetype:</b> " + + event.getMIMEType(), Label.CONTENT_XHTML)); + status.addComponent(new Label("<b>Size:</b> " + event.getLength() + + " bytes.", Label.CONTENT_XHTML)); + + status.addComponent(new Link("Download " + buffer.getFileName(), + new StreamResource(buffer, buffer.getFileName(), + getApplication()))); + + status.setVisible(true); + } + } + + public interface Buffer extends StreamResource.StreamSource, + Upload.Receiver { + + String getFileName(); + } + + public class MemoryBuffer implements Buffer { + ByteArrayOutputStream outputBuffer = null; + + String mimeType; + + String fileName; + + public MemoryBuffer() { + + } + + public InputStream getStream() { + if (outputBuffer == null) { + return null; + } + return new ByteArrayInputStream(outputBuffer.toByteArray()); + } + + /** + * @see com.itmill.toolkit.ui.Upload.Receiver#receiveUpload(String, + * String) + */ + public OutputStream receiveUpload(String filename, String MIMEType) { + fileName = filename; + mimeType = MIMEType; + outputBuffer = new ByteArrayOutputStream(); + return outputBuffer; + } + + /** + * Returns the fileName. + * + * @return String + */ + public String getFileName() { + return fileName; + } + + /** + * Returns the mimeType. + * + * @return String + */ + public String getMimeType() { + return mimeType; + } + + } + + public class TmpFileBuffer implements Buffer { + String mimeType; + + String fileName; + + private File file; + + private FileInputStream stream; + + public TmpFileBuffer() { + String tempFileName = "upload_tmpfile_" + + System.currentTimeMillis(); + try { + file = File.createTempFile(tempFileName, null); + } catch (IOException e) { + // TODO Auto-generated catch block + e.printStackTrace(); + } + + } + + public InputStream getStream() { + if (file == null) { + return null; + } + try { + return new FileInputStream(file); + } catch (FileNotFoundException e) { + // TODO Auto-generated catch block + e.printStackTrace(); + } + return null; + } + + /** + * @see com.itmill.toolkit.ui.Upload.Receiver#receiveUpload(String, + * String) + */ + public OutputStream receiveUpload(String filename, String MIMEType) { + fileName = filename; + mimeType = MIMEType; + try { + return new FileOutputStream(file); + } catch (FileNotFoundException e) { + // TODO Auto-generated catch block + e.printStackTrace(); + } + return null; + } + + /** + * Returns the fileName. + * + * @return String + */ + public String getFileName() { + return fileName; + } + + /** + * Returns the mimeType. + * + * @return String + */ + public String getMimeType() { + return mimeType; + } + + } + + public void uploadFailed(FailedEvent event) { + System.out.println(event); + + System.out.println(event.getSource()); + + } + + public void uploadSucceeded(SucceededEvent event) { + pi.setVisible(false); + l.setValue("Finished upload, idle"); + System.out.println(event); + setBuffer(); + } + + public void updateProgress(long readBytes, long contentLenght) { + pi.setValue(new Float(readBytes / (float) contentLenght)); + + refreshMemUsage(); + } + + private void refreshMemUsage() { + memoryStatus.setValue("Not available in Java 1.4"); + /* + * StringBuffer mem = new StringBuffer(); MemoryMXBean mmBean = + * ManagementFactory.getMemoryMXBean(); mem.append("Heap (M):"); + * mem.append(mmBean.getHeapMemoryUsage().getUsed() / 1048576); + * mem.append(" |�Non-Heap (M):"); + * mem.append(mmBean.getNonHeapMemoryUsage().getUsed() / 1048576); + * memoryStatus.setValue(mem.toString()); + */ + } + + public void uploadStarted(StartedEvent event) { + pi.setVisible(true); + l.setValue("Started uploading file " + event.getFilename()); + } + +} diff --git a/src/com/itmill/toolkit/tests/testbench/TestForWindowOpen.java b/src/com/itmill/toolkit/tests/testbench/TestForWindowOpen.java new file mode 100644 index 0000000000..b8f94e13d7 --- /dev/null +++ b/src/com/itmill/toolkit/tests/testbench/TestForWindowOpen.java @@ -0,0 +1,55 @@ +package com.itmill.toolkit.tests.testbench; + +import com.itmill.toolkit.terminal.ExternalResource; +import com.itmill.toolkit.ui.Button; +import com.itmill.toolkit.ui.CustomComponent; +import com.itmill.toolkit.ui.OrderedLayout; +import com.itmill.toolkit.ui.Button.ClickEvent; + +public class TestForWindowOpen extends CustomComponent { + + public TestForWindowOpen() { + + OrderedLayout main = new OrderedLayout(); + setCompositionRoot(main); + + main.addComponent(new Button("Open in this window", + new Button.ClickListener() { + + public void buttonClick(ClickEvent event) { + ExternalResource r = new ExternalResource( + "http://www.google.com"); + getApplication().getMainWindow().open(r); + + } + + })); + + main.addComponent(new Button("Open in target \"mytarget\"", + new Button.ClickListener() { + + public void buttonClick(ClickEvent event) { + ExternalResource r = new ExternalResource( + "http://www.google.com"); + getApplication().getMainWindow().open(r, "mytarget"); + + } + + })); + + main.addComponent(new Button("Open in target \"secondtarget\"", + new Button.ClickListener() { + + public void buttonClick(ClickEvent event) { + ExternalResource r = new ExternalResource( + "http://www.google.com"); + getApplication().getMainWindow() + .open(r, "secondtarget"); + + } + + })); + + } + +} diff --git a/src/com/itmill/toolkit/tests/testbench/TestForWindowing.java b/src/com/itmill/toolkit/tests/testbench/TestForWindowing.java new file mode 100644 index 0000000000..eec366b578 --- /dev/null +++ b/src/com/itmill/toolkit/tests/testbench/TestForWindowing.java @@ -0,0 +1,84 @@ +package com.itmill.toolkit.tests.testbench; + +import com.itmill.toolkit.data.Property.ValueChangeEvent; +import com.itmill.toolkit.data.Property.ValueChangeListener; +import com.itmill.toolkit.ui.AbstractSelect; +import com.itmill.toolkit.ui.Button; +import com.itmill.toolkit.ui.CustomComponent; +import com.itmill.toolkit.ui.Label; +import com.itmill.toolkit.ui.OptionGroup; +import com.itmill.toolkit.ui.OrderedLayout; +import com.itmill.toolkit.ui.Select; +import com.itmill.toolkit.ui.Slider; +import com.itmill.toolkit.ui.Window; +import com.itmill.toolkit.ui.Button.ClickEvent; +import com.itmill.toolkit.ui.Button.ClickListener; + +public class TestForWindowing extends CustomComponent { + + private Select s2; + + public TestForWindowing() { + + OrderedLayout main = new OrderedLayout(); + + main.addComponent(new Label( + "Click the button to create a new inline window.")); + + Button create = new Button("Create a new window", new ClickListener() { + + public void buttonClick(ClickEvent event) { + Window w = new Window("Testing Window"); + + AbstractSelect s1 = new OptionGroup(); + s1.setCaption("1. Select output format"); + s1.addItem("Excel sheet"); + s1.addItem("CSV plain text"); + s1.setValue("Excel sheet"); + + s2 = new Select(); + s2.addItem("Separate by comma (,)"); + s2.addItem("Separate by colon (:)"); + s2.addItem("Separate by semicolon (;)"); + s2.setEnabled(false); + + s1.addListener(new ValueChangeListener() { + + public void valueChange(ValueChangeEvent event) { + String v = (String) event.getProperty().getValue(); + if (v.equals("CSV plain text")) { + s2.setEnabled(true); + } else { + s2.setEnabled(false); + } + } + + }); + + w.addComponent(s1); + w.addComponent(s2); + + Slider s = new Slider(); + s.setCaption("Volume"); + s.setMax(13); + s.setMin(12); + s.setResolution(2); + s.setImmediate(true); + // s.setOrientation(Slider.ORIENTATION_VERTICAL); + // s.setArrows(false); + + w.addComponent(s); + + getApplication().getMainWindow().addWindow(w); + + } + + }); + + main.addComponent(create); + + setCompositionRoot(main); + + } + +} diff --git a/src/com/itmill/toolkit/tests/testbench/TestSetVisibleAndCaching.java b/src/com/itmill/toolkit/tests/testbench/TestSetVisibleAndCaching.java new file mode 100644 index 0000000000..2c6da7a26a --- /dev/null +++ b/src/com/itmill/toolkit/tests/testbench/TestSetVisibleAndCaching.java @@ -0,0 +1,77 @@ +package com.itmill.toolkit.tests.testbench; + +import com.itmill.toolkit.ui.Button; +import com.itmill.toolkit.ui.Label; +import com.itmill.toolkit.ui.Panel; +import com.itmill.toolkit.ui.Window; +import com.itmill.toolkit.ui.Button.ClickEvent; +import com.itmill.toolkit.ui.Button.ClickListener; + +public class TestSetVisibleAndCaching extends com.itmill.toolkit.Application { + + Panel panelA = new Panel("Panel A"); + Panel panelB = new Panel("Panel B"); + Panel panelC = new Panel("Panel C"); + + Button buttonNextPanel = new Button("Show next panel"); + + int selectedPanel = 0; + + public void init() { + Window mainWindow = new Window("TestSetVisibleAndCaching"); + setMainWindow(mainWindow); + + panelA.addComponent(new Label( + "AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA")); + panelB.addComponent(new Label( + "BBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBB")); + panelC.addComponent(new Label( + "CCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCC")); + + mainWindow + .addComponent(new Label( + "Inspect transfered data from server to " + + "client using firebug (http request / response cycles)." + + " See how widgets are re-used," + + " after each panel is once shown in GUI then" + + " their contents are not resend.")); + mainWindow.addComponent(buttonNextPanel); + mainWindow.addComponent(panelA); + mainWindow.addComponent(panelB); + mainWindow.addComponent(panelC); + + selectPanel(selectedPanel); + + buttonNextPanel.addListener(new ClickListener() { + public void buttonClick(ClickEvent event) { + selectedPanel++; + if (selectedPanel > 2) { + selectedPanel = 0; + } + selectPanel(selectedPanel); + } + }); + + } + + private void selectPanel(int selectedPanel) { + System.err.println("Selecting panel " + selectedPanel); + switch (selectedPanel) { + case 0: + panelA.setVisible(true); + panelB.setVisible(false); + panelC.setVisible(false); + break; + case 1: + panelA.setVisible(false); + panelB.setVisible(true); + panelC.setVisible(false); + break; + case 2: + panelA.setVisible(false); + panelB.setVisible(false); + panelC.setVisible(true); + break; + } + } +} diff --git a/src/com/itmill/toolkit/tests/testbench/TestSplitPanel.java b/src/com/itmill/toolkit/tests/testbench/TestSplitPanel.java new file mode 100644 index 0000000000..a4234cdcf5 --- /dev/null +++ b/src/com/itmill/toolkit/tests/testbench/TestSplitPanel.java @@ -0,0 +1,22 @@ +package com.itmill.toolkit.tests.testbench; + +import com.itmill.toolkit.ui.Label; +import com.itmill.toolkit.ui.SplitPanel; +import com.itmill.toolkit.ui.Window; + +public class TestSplitPanel extends com.itmill.toolkit.Application { + + SplitPanel verticalSplit = new SplitPanel(SplitPanel.ORIENTATION_VERTICAL); + + public void init() { + Window mainWindow = new Window("Feature Browser"); + setMainWindow(mainWindow); + + verticalSplit.setFirstComponent(new Label("vertical first")); + verticalSplit.setSecondComponent(new Label("vertical second")); + + mainWindow.setLayout(verticalSplit); + + } + +} |