aboutsummaryrefslogtreecommitdiffstats
path: root/src/com/itmill/toolkit/demo/testbench/TestBench.java
diff options
context:
space:
mode:
authorJani Laakso <jani.laakso@itmill.com>2007-12-03 19:14:00 +0000
committerJani Laakso <jani.laakso@itmill.com>2007-12-03 19:14:00 +0000
commit362efe6fdf7c3a627e3bb7e63c33d21228619e6c (patch)
treeaeb506a9900f616d470edcc8b3afcafe853dc92e /src/com/itmill/toolkit/demo/testbench/TestBench.java
parente84304f70234b3768502e44ef97f88f19e902ea0 (diff)
downloadvaadin-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/demo/testbench/TestBench.java')
-rw-r--r--src/com/itmill/toolkit/demo/testbench/TestBench.java209
1 files changed, 0 insertions, 209 deletions
diff --git a/src/com/itmill/toolkit/demo/testbench/TestBench.java b/src/com/itmill/toolkit/demo/testbench/TestBench.java
deleted file mode 100644
index bec73a9aed..0000000000
--- a/src/com/itmill/toolkit/demo/testbench/TestBench.java
+++ /dev/null
@@ -1,209 +0,0 @@
-package com.itmill.toolkit.demo.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;
- }
-
-}