summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
-rw-r--r--WebContent/index.html2
-rwxr-xr-xbuild/bin/mergetool.py36
-rw-r--r--build/build.xml111
-rw-r--r--src/com/itmill/toolkit/Application.java19
-rw-r--r--src/com/itmill/toolkit/data/util/PropertysetItem.java15
-rw-r--r--src/com/itmill/toolkit/demo/sampler/APIResource.java2
-rw-r--r--src/com/itmill/toolkit/terminal/gwt/server/ApplicationServlet.java3
-rw-r--r--src/com/itmill/toolkit/terminal/gwt/server/CommunicationManager.java3
-rw-r--r--src/com/itmill/toolkit/tests/TestBench.java574
-rw-r--r--src/com/itmill/toolkit/tests/book/BookTestApplication.java3365
-rw-r--r--src/com/itmill/toolkit/tests/book/DefaultButtonExample.java139
-rw-r--r--src/com/itmill/toolkit/ui/ProgressIndicator.java8
-rw-r--r--src/com/itmill/toolkit/ui/Slider.java5
13 files changed, 2183 insertions, 2099 deletions
diff --git a/WebContent/index.html b/WebContent/index.html
index 02cbaf26b9..61121b78ef 100644
--- a/WebContent/index.html
+++ b/WebContent/index.html
@@ -135,7 +135,7 @@
<h4>Eclipse IDE QuickStart</h4>
<p>The easiest way to start working with IT Mill Toolkit is to
use Eclipse IDE with the Toolkit QuickStart project.
- <a href="doc/manual/intro.quickstart.html" class="more">Instant Toolkit workspace for Eclipse</a></p>
+ <a href="doc/manual/getting-started.quickstart.html" class="more">Instant Toolkit workspace for Eclipse</a></p>
</div> <!-- /getting-started -->
diff --git a/build/bin/mergetool.py b/build/bin/mergetool.py
index bc1b23b090..7ed1cb1579 100755
--- a/build/bin/mergetool.py
+++ b/build/bin/mergetool.py
@@ -25,7 +25,7 @@ def help(exitvalue = 0):
print "\t-author\tHTML output. (Include author in HTML log.)"
print "\t-milestone <ms>\tList tickets in milestone (For 'log' command.)"
print "\nCommands:"
- print "massmerge <cfg> <src> <trg> [<from>] "
+ print "massmerge <cfg> <src> [<from>] "
print " - Merges changesets listed in the configuration"
print " file. The file is in svn log (text) format."
print " You can comment out unwanted changesets."
@@ -370,9 +370,26 @@ class Configuration:
if currentChange:
currentChange.addCommentLine(line)
- def massMerge(self, trunkURI, dryrun=0):
- for change in self.changes:
- change.merge(trunkURI, dryrun=dryrun)
+ def massMerge(self, trunkURI, dryrun=0, allatonce=0):
+ if not allatonce:
+ # Merge one changeset at a time
+ for change in self.changes:
+ change.merge(trunkURI, dryrun=dryrun)
+ else:
+ # What is the first changeset in the merge?
+ smallest = 99999999
+ for change in self.changes:
+ if change.getNumber() < smallest:
+ smallest = change.getNumber()
+
+ drycmd = ""
+ if dryrun:
+ drycmd = "--dry-run"
+
+ # Merge from the first changeset to HEAD
+ cmd = "svn merge --non-interactive %s -r %d:HEAD %s" % (drycmd, smallest, trunkURI)
+ print cmd
+ command(cmd)
def createLogComment(self):
# Create a log comment that lists all merged changesets with
@@ -563,9 +580,9 @@ def commandRevert():
print "Nothing to do."
# Command: massmerge
-def commandMassmerge(cfgfilename, sourceuri, startfrom, dryrun=0):
+def commandMassmerge(cfgfilename, sourceuri, startfrom, dryrun=0, allatonce=0):
cfg = Configuration(cfgfilename, startfrom=startfrom)
- cfg.massMerge(sourceuri, dryrun=dryrun)
+ cfg.massMerge(sourceuri, dryrun=dryrun, allatonce=allatonce)
# Command: single
def commandSingle(trunkuri, changeset, sourcebranch, targetbranch, onlymerge=0, onlycommit=0):
@@ -612,6 +629,7 @@ html_author = 0
html_milestone = None
onlymerge = 0
onlycommit = 0
+all = 0
while len(sys.argv)>1 and sys.argv[1][0] == '-':
if sys.argv[1] == "-d":
dryrun = 1
@@ -637,6 +655,10 @@ while len(sys.argv)>1 and sys.argv[1][0] == '-':
onlycommit = 1
del sys.argv[1:2]
+ elif sys.argv[1] == "-all":
+ all = 1
+ del sys.argv[1:2]
+
else:
print "Invalid option '%s'." % (sys.argv[1])
sys.exit(1)
@@ -654,7 +676,7 @@ elif (len(sys.argv) == 4 or len(sys.argv)==5) and sys.argv[1] == "massmerge":
startfrom = None
if len(sys.argv)>4:
startfrom = int(sys.argv[4])
- commandMassmerge(cfgfilename, sourceuri=REPOSITORY+sourcebranch, startfrom=startfrom, dryrun=dryrun)
+ commandMassmerge(cfgfilename, sourceuri=REPOSITORY+sourcebranch, startfrom=startfrom, dryrun=dryrun, allatonce=all)
elif len(sys.argv) == 5 and sys.argv[1] == "single":
changeset = int(sys.argv[2])
diff --git a/build/build.xml b/build/build.xml
index 384739dd40..b483fffda7 100644
--- a/build/build.xml
+++ b/build/build.xml
@@ -1008,6 +1008,14 @@
<tstamp>
<format property="manual.pubdate" pattern="yyyy-MM-dd"/>
</tstamp>
+
+ <!-- Classpath for running the XSLT processor. -->
+ <path id="docbook-xsl.classpath">
+ <pathelement path="build/lib/fserializer.jar" />
+ <pathelement path="build/lib/xalan.jar" />
+ <pathelement path="build/lib/xercesImpl.jar" />
+ <pathelement path="build/lib/xml-apis.jar" />
+ </path>
</target>
<!-- Build PDF manual from sources or just copy it. -->
@@ -1059,11 +1067,7 @@
<arg value="-param" />
<arg value="manual.version" />
<arg value="${version}" />
- <classpath>
- <pathelement location="build/lib/xalan.jar" />
- <pathelement location="build/lib/xercesImpl.jar" />
- <pathelement location="build/lib/xml-apis.jar" />
- </classpath>
+ <classpath refid="docbook-xsl.classpath" />
</java>
<echo>PDF Manual: converting fo to pdf</echo>
<!-- Run XEP FO processor to convert FO to PDF -->
@@ -1078,10 +1082,18 @@
</java>
</target>
- <target name="manual-html" depends="init, init-manual, preprocess-src">
- <echo>Manual: HTML</echo>
- <delete file="build/docbook/conf/temp.xsl" />
- <copy file="build/docbook/conf/custom-html-docbook.xsl" tofile="build/docbook/conf/temp.xsl">
+ <!-- Common initialization tasks for a HTML manual. -->
+ <!-- Some properties must be defined in the more specific HTML manual initialization. -->
+ <target name="init-manual-html-common" depends="preprocess-src">
+ <!-- Create the manual output directory if it doesn't already exist. -->
+ <mkdir dir="${manual.html.output.dir}"/>
+
+ <property name="manual.html.xsl.template" value="build/docbook/conf/custom-html-template.xsl"/>
+ <property name="manual.html.xsl.processed" value="build/docbook/conf/custom-html-processed.xsl"/>
+
+ <!-- Replace tags in the HTML stylesheet template. -->
+ <delete file="${manual.html.xsl.processed}" />
+ <copy file="${manual.html.xsl.template}" tofile="${manual.html.xsl.processed}">
<filterchain>
<replacetokens>
<token key="BODYHEADER" value="${html.body.start1}${docbook.head.title}${html.body.start2}" />
@@ -1089,19 +1101,17 @@
</replacetokens>
</filterchain>
</copy>
- <path id="docbook-xsl.classpath">
- <pathelement path="build/lib/fserializer.jar" />
- <pathelement path="build/lib/xalan.jar" />
- <pathelement path="build/lib/xercesImpl.jar" />
- <pathelement path="build/lib/xml-apis.jar" />
- </path>
+ </target>
+
+ <target name="manual-html-build" depends="init-manual-html, init-manual-html-common">
<java classname="org.apache.xalan.xslt.Process" failonerror="yes" fork="yes" maxmemory="512m">
<arg value="-in" />
<arg value="doc/manual/book.xml" />
<arg value="-xsl" />
- <arg value="build/docbook/conf/temp.xsl" />
+ <arg value="${manual.html.xsl}" />
+ <!-- The output file will be empty for eclipse plugin. -->
<arg value="-out" />
- <arg value="${output-dir}/WebContent/doc/manual/index.html" />
+ <arg value="${manual.html.output.index}" />
<arg value="-param" />
<arg value="section.autolabel" />
<arg value="1" />
@@ -1120,14 +1130,34 @@
<arg value="-param" />
<arg value="manual.version" />
<arg value="${version}" />
+ <!-- This is needed only for the Eclipse Help plugin. -->
+ <arg value="-param" />
+ <arg value="eclipse.plugin.version" />
+ <arg value="${eclipse.plugin.manual.version}" />
<classpath refid="docbook-xsl.classpath" />
</java>
- <delete file="build/docbook/conf/temp.xsl" />
- <copy todir="${output-dir}/WebContent/doc/manual/img">
+
+ <delete file="${manual.html.xsl.processed}" />
+ <copy todir="${output-dir}/WebContent/doc/eclipse/img">
<fileset dir="doc/manual/img">
<exclude name="**/.svn" />
</fileset>
</copy>
+ </target>
+
+ <!-- Configuration for building the regular HTML manual. -->
+ <target name="init-manual-html" depends="init, init-manual">
+ <property name="manual.html.xsl" value="build/docbook/conf/manual-html.xsl"/>
+ <property name="manual.html.output.dir" value="${output-dir}/WebContent/doc/manual"/>
+ <property name="manual.html.output.index" value="${manual.html.output.dir}/index.html"/>
+
+ <property name="output-dir-manual" value="${output-dir}/WebContent/doc/manual" />
+
+ <echo>Manual: HTML</echo>
+ <echo>Published: ${manual.pubdate}</echo>
+ </target>
+
+ <target name="manual-html" depends="init, init-manual, init-manual-html, init-manual-html-common, manual-html-build">
</target>
<!-- ant contrib required for flow control (for loop, if, property override) -->
@@ -1140,6 +1170,49 @@
<!-- java2html converter -->
<taskdef name="java2html" classname="de.java2html.anttasks.Java2HtmlTask" classpath="build/lib/java2html.jar" />
+ <target name="init-manual-eclipse" depends="">
+ <!-- Timestamp in YYYYMMDDHHMM format for plugin version number. -->
+ <tstamp>
+ <format property="eclipse.plugin.manual.pubtime" pattern="yyyyMMddkkmm"/>
+ </tstamp>
+
+ <property name="eclipse.plugin.manual.version" value="${version}.v${eclipse.plugin.manual.pubtime}" />
+ <echo>Manual: Eclipse Help Plugin (version ${eclipse.plugin.manual.version})</echo>
+
+ <property name="manual.html.xsl" value="build/docbook/conf/manual-eclipse-plugin.xsl"/>
+ <property name="manual.html.output.dir" value="${output-dir}/WebContent/doc/eclipse"/>
+ <property name="manual.html.output.index" value="${manual.html.output.dir}/index-eclipse.html"/>
+
+ <property name="output-dir-manual" value="${output-dir}/WebContent/doc/manual" />
+ </target>
+
+ <!-- Builds Eclipse Help plugin. Uses the manual-html-build target -->
+ <!-- to build the HTML content of the manual. -->
+ <target name="manual-eclipse" depends="init, init-manual, init-manual-eclipse, init-manual-html-common, manual-html-build">
+ <!-- The index-eclipse.html file is empty. -->
+ <delete file="${manual.html.output.index}" />
+
+ <!-- Plugin JAR filename -->
+ <property name="eclipse.plugin.manual.jar-name"
+ value="com.itmill.toolkit.manual_${eclipse.plugin.manual.version}.jar" />
+
+ <!-- Package the JAR. -->
+ <jar jarfile="${output-dir}/${eclipse.plugin.manual.jar-name}" compress="true">
+ <fileset dir="${manual.html.output.dir}">
+ <patternset>
+ <include name="**/*" />
+ </patternset>
+ </fileset>
+ <manifest>
+ <attribute name="Built-By" value="${user.name}"/>
+ <attribute name="Bundle-Name" value="IT Mill Toolkit Reference Manual"/>
+ <attribute name="Bundle-SymbolicName" value="com.itmill.toolkit.manual"/>
+ <attribute name="Bundle-Version" value="${eclipse.plugin.manual.version}"/>
+ <attribute name="Bundle-Vendor" value="IT Mill Inc."/>
+ </manifest>
+ </jar>
+ </target>
+
<!-- ================================================================== -->
<!-- Build Application Tutorial. -->
<!-- ================================================================== -->
diff --git a/src/com/itmill/toolkit/Application.java b/src/com/itmill/toolkit/Application.java
index 1b3f184382..60045ac702 100644
--- a/src/com/itmill/toolkit/Application.java
+++ b/src/com/itmill/toolkit/Application.java
@@ -1096,7 +1096,7 @@ public abstract class Application implements URIHandler, Terminal.ErrorListener
* @see com.itmill.toolkit.terminal.Terminal.ErrorListener#terminalError(com.itmill.toolkit.terminal.Terminal.ErrorEvent)
*/
public void terminalError(Terminal.ErrorEvent event) {
- Throwable t = event.getThrowable();
+ final Throwable t = event.getThrowable();
if (t instanceof SocketException) {
// Most likely client browser closed socket
System.err
@@ -1119,21 +1119,16 @@ public abstract class Application implements URIHandler, Terminal.ErrorListener
// Shows the error in AbstractComponent
if (owner instanceof AbstractComponent) {
- final Throwable e = event.getThrowable();
- if (e instanceof ErrorMessage) {
- ((AbstractComponent) owner).setComponentError((ErrorMessage) e);
+ if (t instanceof ErrorMessage) {
+ ((AbstractComponent) owner).setComponentError((ErrorMessage) t);
} else {
((AbstractComponent) owner)
- .setComponentError(new SystemError(e));
+ .setComponentError(new SystemError(t));
}
- } else {
- /*
- * Can't show it to the user in any way so we print to standard
- * error
- */
- t.printStackTrace();
-
}
+
+ // also print the error on console
+ t.printStackTrace();
}
/**
diff --git a/src/com/itmill/toolkit/data/util/PropertysetItem.java b/src/com/itmill/toolkit/data/util/PropertysetItem.java
index dfc819ca7e..c6c01743e2 100644
--- a/src/com/itmill/toolkit/data/util/PropertysetItem.java
+++ b/src/com/itmill/toolkit/data/util/PropertysetItem.java
@@ -259,15 +259,9 @@ public class PropertysetItem implements Item, Item.PropertySetChangeNotifier,
return npsi;
}
- /**
- * Returns <code>true</code> if and only if the argument is not
- * <code>null</code> and is a Boolean object that represents the same
- * boolean value as this object.
+ /*
+ * (non-Javadoc)
*
- * @param obj
- * the object to compare with.
- * @return <code>true</code> if the Boolean objects represent the same value
- * otherwise <code>false</code>.
* @see java.lang.Object#equals(java.lang.Object)
*/
@Override
@@ -308,10 +302,9 @@ public class PropertysetItem implements Item, Item.PropertySetChangeNotifier,
return true;
}
- /**
- * Returns the hash code value for this list.
+ /*
+ * (non-Javadoc)
*
- * @return the hash code value.
* @see java.lang.Object#hashCode()
*/
@Override
diff --git a/src/com/itmill/toolkit/demo/sampler/APIResource.java b/src/com/itmill/toolkit/demo/sampler/APIResource.java
index 183c9c3a52..e1973f9140 100644
--- a/src/com/itmill/toolkit/demo/sampler/APIResource.java
+++ b/src/com/itmill/toolkit/demo/sampler/APIResource.java
@@ -2,7 +2,7 @@ package com.itmill.toolkit.demo.sampler;
/**
* A NamedExternalResource pointing to the javadoc for the given class. Knows
- * where the javadocs are located for som common APIs, but one can also specify
+ * where the javadocs are located for some common APIs, but one can also specify
* a javadoc baseurl. The name will be set to the class simpleName.
*
*/
diff --git a/src/com/itmill/toolkit/terminal/gwt/server/ApplicationServlet.java b/src/com/itmill/toolkit/terminal/gwt/server/ApplicationServlet.java
index 2321e50051..bada4af66f 100644
--- a/src/com/itmill/toolkit/terminal/gwt/server/ApplicationServlet.java
+++ b/src/com/itmill/toolkit/terminal/gwt/server/ApplicationServlet.java
@@ -577,7 +577,8 @@ public class ApplicationServlet extends HttpServlet {
.getInternalErrorCaption(), ci
.getInternalErrorMessage(), ci.getInternalErrorURL());
if (application != null) {
- application.terminalError(new RequestError(e));
+ application.getErrorHandler().terminalError(
+ new RequestError(e));
} else {
throw new ServletException(e);
}
diff --git a/src/com/itmill/toolkit/terminal/gwt/server/CommunicationManager.java b/src/com/itmill/toolkit/terminal/gwt/server/CommunicationManager.java
index 16281a3c8a..5cb8405d2a 100644
--- a/src/com/itmill/toolkit/terminal/gwt/server/CommunicationManager.java
+++ b/src/com/itmill/toolkit/terminal/gwt/server/CommunicationManager.java
@@ -1473,7 +1473,8 @@ public class CommunicationManager implements Paintable.RepaintRequestListener {
}
} catch (final Throwable t) {
- application.terminalError(new URIHandlerErrorImpl(application, t));
+ application.getErrorHandler().terminalError(
+ new URIHandlerErrorImpl(application, t));
return null;
}
}
diff --git a/src/com/itmill/toolkit/tests/TestBench.java b/src/com/itmill/toolkit/tests/TestBench.java
index 99e770f487..1ea727a8a3 100644
--- a/src/com/itmill/toolkit/tests/TestBench.java
+++ b/src/com/itmill/toolkit/tests/TestBench.java
@@ -41,292 +41,292 @@ import com.itmill.toolkit.ui.UriFragmentUtility.FragmentChangedEvent;
*
*/
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.tests",
- "com.itmill.toolkit.demo", "com.itmill.toolkit.demo.colorpicker",
- "com.itmill.toolkit.demo.reservation",
- "com.itmill.toolkit.demo.features",
- "com.itmill.toolkit.tests.tickets" };
-
- 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();
-
- @Override
- public void init() {
-
- // Add testable classes to hierarchical container
- for (int p = 0; p < testablePackages.length; p++) {
- testables.addItem(testablePackages[p]);
- try {
- final List testableClasses = getTestableClassesForPackage(testablePackages[p]);
- for (final Iterator it = testableClasses.iterator(); it
- .hasNext();) {
- final 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]);
- testables.setChildrenAllowed(t, false);
- continue;
- } catch (final Exception e) {
- try {
- testables.addItem(t);
- itemCaptions.put(t, t.getName());
- testables.setParent(t, testablePackages[p]);
- testables.setChildrenAllowed(t, false);
- continue;
- } catch (final Exception e1) {
- e1.printStackTrace();
- }
- }
- }
- } catch (final Exception e) {
- e.printStackTrace();
- }
- }
-
- menu = new Tree("Testables", testables);
-
- for (final Iterator i = itemCaptions.keySet().iterator(); i.hasNext();) {
- final Class testable = (Class) i.next();
- // simplify captions
- final String name = testable.getName().substring(
- testable.getName().lastIndexOf('.') + 1);
- menu.setItemCaption(testable, name);
- }
- // expand all root items
- for (final Iterator i = menu.rootItemIds().iterator(); i.hasNext();) {
- menu.expandItemsRecursively(i.next());
- }
-
- menu.addListener(this);
- menu.setImmediate(true);
- menu.setNullSelectionAllowed(false);
- VerticalLayout lo = new VerticalLayout();
- lo.addComponent(menu);
-
- UriFragmentUtility uri = new UriFragmentUtility();
- lo.addComponent(uri);
-
- uri.addListener(new UriFragmentUtility.FragmentChangedListener() {
- public void fragmentChanged(FragmentChangedEvent source) {
- String fragment = source.getUriFragmentUtility().getFragment();
- if (fragment != null && !"".equals(fragment)) {
- // try to find a proper test class
-
- // exact match
- Iterator iterator = menu.getItemIds().iterator();
- while (iterator.hasNext()) {
- Object next = iterator.next();
- if (next instanceof Class) {
- Class c = (Class) next;
- String string = c.getName();
- if (string.equals(fragment)) {
- menu.setValue(c);
- mainLayout.setSplitPosition(0);
- return;
- }
- }
- }
-
- // simple name match
- iterator = menu.getItemIds().iterator();
- while (iterator.hasNext()) {
- Object next = iterator.next();
- if (next instanceof Class) {
- Class c = (Class) next;
- String string = c.getSimpleName();
- if (string.equals(fragment)) {
- menu.setValue(c);
- mainLayout.setSplitPosition(0);
- return;
- }
- }
- }
- // ticket match
- iterator = menu.getItemIds().iterator();
- while (iterator.hasNext()) {
- Object next = iterator.next();
- if (next instanceof Class) {
- Class c = (Class) next;
- String string = c.getSimpleName();
- if (string.startsWith("Ticket" + fragment)) {
- menu.setValue(c);
- mainLayout.setSplitPosition(0);
- return;
- }
- }
- }
-
- // just partly mach lowercase
- iterator = menu.getItemIds().iterator();
- while (iterator.hasNext()) {
- Object next = iterator.next();
- if (next instanceof Class) {
- Class c = (Class) next;
- String string = c.getSimpleName();
- if (string.toLowerCase().contains(
- fragment.toLowerCase())) {
- menu.setValue(c);
- mainLayout.setSplitPosition(0);
- return;
- }
- }
- }
-
- getMainWindow().showNotification(
- "No potential matc for #" + fragment);
-
- }
-
- }
- });
-
- mainLayout.addComponent(lo);
-
- bodyLayout.addStyleName("light");
- bodyLayout.setSizeFull();
- bodyLayout.setLayout(new ExpandLayout());
-
- mainLayout.addComponent(bodyLayout);
-
- mainLayout.setSplitPosition(30);
-
- mainWindow.setLayout(mainLayout);
-
- setMainWindow(mainWindow);
- }
-
- private Component createTestable(Class c) {
- try {
- final Application app = (Application) c.newInstance();
- app.init();
- Layout lo = app.getMainWindow().getLayout();
- lo.setParent(null);
- return lo;
- } catch (final Exception e) {
- try {
- final CustomComponent cc = (CustomComponent) c.newInstance();
- cc.setSizeFull();
- return cc;
- } catch (final Exception e1) {
- e1.printStackTrace();
- VerticalLayout lo = new VerticalLayout();
- lo.addComponent(new Label(
- "Cannot create application / custom component: "
- + e1.toString()));
-
- Link l = new Link("Try opening via app runner",
- new ExternalResource("../run/" + c.getName()));
- lo.addComponent(l);
-
- return lo;
- }
- }
- }
-
- // Handle menu selection and update body
- public void valueChange(Property.ValueChangeEvent event) {
- bodyLayout.removeAllComponents();
- bodyLayout.setCaption(null);
-
- final Object o = menu.getValue();
- if (o != null && o instanceof Class) {
- final Class c = (Class) o;
- final 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 Application or CustomComponent.
- *
- * @param packageName
- * @return
- * @throws ClassNotFoundException
- */
- public static List getTestableClassesForPackage(String packageName)
- throws Exception {
- final ArrayList directories = new ArrayList();
- try {
- final ClassLoader cld = Thread.currentThread()
- .getContextClassLoader();
- if (cld == null) {
- throw new ClassNotFoundException("Can't get class loader.");
- }
- final String path = packageName.replace('.', '/');
- // Ask for all resources for the path
- final Enumeration resources = cld.getResources(path);
- while (resources.hasMoreElements()) {
- final URL url = (URL) resources.nextElement();
- directories.add(new File(url.getFile()));
- }
- } catch (final Exception x) {
- throw new Exception(packageName
- + " does not appear to be a valid package.");
- }
-
- final ArrayList classes = new ArrayList();
- // For every directory identified capture all the .class files
- for (final Iterator it = directories.iterator(); it.hasNext();) {
- final File directory = (File) it.next();
- if (directory.exists()) {
- // Get the list of the files contained in the package
- final 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
- final String p = packageName + '.'
- + files[j].substring(0, files[j].length() - 6);
- final Class c = Class.forName(p);
- if (c.getSuperclass() != null) {
- if ((c.getSuperclass()
- .equals(com.itmill.toolkit.Application.class))) {
- classes.add(c);
- } else if ((c.getSuperclass()
- .equals(com.itmill.toolkit.ui.CustomComponent.class))) {
- classes.add(c);
- }
- }
-
- // for (int i = 0; i < c.getInterfaces().length; i++) {
- // Class cc = c.getInterfaces()[i];
- // if (c.getInterfaces()[i].equals(Testable.class)) {
- // // Class is testable
- // classes.add(c);
- // }
- // }
- }
- }
- } else {
- throw new ClassNotFoundException(packageName + " ("
- + directory.getPath()
- + ") does not appear to be a valid package");
- }
- }
-
- return classes;
- }
+ Property.ValueChangeListener {
+
+ // Add here packages which are used for finding testable classes
+ String[] testablePackages = { "com.itmill.toolkit.tests",
+ "com.itmill.toolkit.demo", "com.itmill.toolkit.demo.colorpicker",
+ "com.itmill.toolkit.demo.reservation",
+ "com.itmill.toolkit.demo.features",
+ "com.itmill.toolkit.tests.tickets", "com.itmill.toolkit.tests.book" };
+
+ 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();
+
+ @Override
+ public void init() {
+
+ // Add testable classes to hierarchical container
+ for (int p = 0; p < testablePackages.length; p++) {
+ testables.addItem(testablePackages[p]);
+ try {
+ final List testableClasses = getTestableClassesForPackage(testablePackages[p]);
+ for (final Iterator it = testableClasses.iterator(); it
+ .hasNext();) {
+ final 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]);
+ testables.setChildrenAllowed(t, false);
+ continue;
+ } catch (final Exception e) {
+ try {
+ testables.addItem(t);
+ itemCaptions.put(t, t.getName());
+ testables.setParent(t, testablePackages[p]);
+ testables.setChildrenAllowed(t, false);
+ continue;
+ } catch (final Exception e1) {
+ e1.printStackTrace();
+ }
+ }
+ }
+ } catch (final Exception e) {
+ e.printStackTrace();
+ }
+ }
+
+ menu = new Tree("Testables", testables);
+
+ for (final Iterator i = itemCaptions.keySet().iterator(); i.hasNext();) {
+ final Class testable = (Class) i.next();
+ // simplify captions
+ final String name = testable.getName().substring(
+ testable.getName().lastIndexOf('.') + 1);
+ menu.setItemCaption(testable, name);
+ }
+ // expand all root items
+ for (final Iterator i = menu.rootItemIds().iterator(); i.hasNext();) {
+ menu.expandItemsRecursively(i.next());
+ }
+
+ menu.addListener(this);
+ menu.setImmediate(true);
+ menu.setNullSelectionAllowed(false);
+ VerticalLayout lo = new VerticalLayout();
+ lo.addComponent(menu);
+
+ UriFragmentUtility uri = new UriFragmentUtility();
+ lo.addComponent(uri);
+
+ uri.addListener(new UriFragmentUtility.FragmentChangedListener() {
+ public void fragmentChanged(FragmentChangedEvent source) {
+ String fragment = source.getUriFragmentUtility().getFragment();
+ if (fragment != null && !"".equals(fragment)) {
+ // try to find a proper test class
+
+ // exact match
+ Iterator iterator = menu.getItemIds().iterator();
+ while (iterator.hasNext()) {
+ Object next = iterator.next();
+ if (next instanceof Class) {
+ Class c = (Class) next;
+ String string = c.getName();
+ if (string.equals(fragment)) {
+ menu.setValue(c);
+ mainLayout.setSplitPosition(0);
+ return;
+ }
+ }
+ }
+
+ // simple name match
+ iterator = menu.getItemIds().iterator();
+ while (iterator.hasNext()) {
+ Object next = iterator.next();
+ if (next instanceof Class) {
+ Class c = (Class) next;
+ String string = c.getSimpleName();
+ if (string.equals(fragment)) {
+ menu.setValue(c);
+ mainLayout.setSplitPosition(0);
+ return;
+ }
+ }
+ }
+ // ticket match
+ iterator = menu.getItemIds().iterator();
+ while (iterator.hasNext()) {
+ Object next = iterator.next();
+ if (next instanceof Class) {
+ Class c = (Class) next;
+ String string = c.getSimpleName();
+ if (string.startsWith("Ticket" + fragment)) {
+ menu.setValue(c);
+ mainLayout.setSplitPosition(0);
+ return;
+ }
+ }
+ }
+
+ // just partly mach lowercase
+ iterator = menu.getItemIds().iterator();
+ while (iterator.hasNext()) {
+ Object next = iterator.next();
+ if (next instanceof Class) {
+ Class c = (Class) next;
+ String string = c.getSimpleName();
+ if (string.toLowerCase().contains(
+ fragment.toLowerCase())) {
+ menu.setValue(c);
+ mainLayout.setSplitPosition(0);
+ return;
+ }
+ }
+ }
+
+ getMainWindow().showNotification(
+ "No potential matc for #" + fragment);
+
+ }
+
+ }
+ });
+
+ mainLayout.addComponent(lo);
+
+ bodyLayout.addStyleName("light");
+ bodyLayout.setSizeFull();
+ bodyLayout.setLayout(new ExpandLayout());
+
+ mainLayout.addComponent(bodyLayout);
+
+ mainLayout.setSplitPosition(30);
+
+ mainWindow.setLayout(mainLayout);
+
+ setMainWindow(mainWindow);
+ }
+
+ private Component createTestable(Class c) {
+ try {
+ final Application app = (Application) c.newInstance();
+ app.init();
+ Layout lo = app.getMainWindow().getLayout();
+ lo.setParent(null);
+ return lo;
+ } catch (final Exception e) {
+ try {
+ final CustomComponent cc = (CustomComponent) c.newInstance();
+ cc.setSizeFull();
+ return cc;
+ } catch (final Exception e1) {
+ e1.printStackTrace();
+ VerticalLayout lo = new VerticalLayout();
+ lo.addComponent(new Label(
+ "Cannot create application / custom component: "
+ + e1.toString()));
+
+ Link l = new Link("Try opening via app runner",
+ new ExternalResource("../run/" + c.getName()));
+ lo.addComponent(l);
+
+ return lo;
+ }
+ }
+ }
+
+ // Handle menu selection and update body
+ public void valueChange(Property.ValueChangeEvent event) {
+ bodyLayout.removeAllComponents();
+ bodyLayout.setCaption(null);
+
+ final Object o = menu.getValue();
+ if (o != null && o instanceof Class) {
+ final Class c = (Class) o;
+ final 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 Application or CustomComponent.
+ *
+ * @param packageName
+ * @return
+ * @throws ClassNotFoundException
+ */
+ public static List getTestableClassesForPackage(String packageName)
+ throws Exception {
+ final ArrayList directories = new ArrayList();
+ try {
+ final ClassLoader cld = Thread.currentThread()
+ .getContextClassLoader();
+ if (cld == null) {
+ throw new ClassNotFoundException("Can't get class loader.");
+ }
+ final String path = packageName.replace('.', '/');
+ // Ask for all resources for the path
+ final Enumeration resources = cld.getResources(path);
+ while (resources.hasMoreElements()) {
+ final URL url = (URL) resources.nextElement();
+ directories.add(new File(url.getFile()));
+ }
+ } catch (final Exception x) {
+ throw new Exception(packageName
+ + " does not appear to be a valid package.");
+ }
+
+ final ArrayList classes = new ArrayList();
+ // For every directory identified capture all the .class files
+ for (final Iterator it = directories.iterator(); it.hasNext();) {
+ final File directory = (File) it.next();
+ if (directory.exists()) {
+ // Get the list of the files contained in the package
+ final 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
+ final String p = packageName + '.'
+ + files[j].substring(0, files[j].length() - 6);
+ final Class c = Class.forName(p);
+ if (c.getSuperclass() != null) {
+ if ((c.getSuperclass()
+ .equals(com.itmill.toolkit.Application.class))) {
+ classes.add(c);
+ } else if ((c.getSuperclass()
+ .equals(com.itmill.toolkit.ui.CustomComponent.class))) {
+ classes.add(c);
+ }
+ }
+
+ // for (int i = 0; i < c.getInterfaces().length; i++) {
+ // Class cc = c.getInterfaces()[i];
+ // if (c.getInterfaces()[i].equals(Testable.class)) {
+ // // Class is testable
+ // classes.add(c);
+ // }
+ // }
+ }
+ }
+ } else {
+ throw new ClassNotFoundException(packageName + " ("
+ + directory.getPath()
+ + ") does not appear to be a valid package");
+ }
+ }
+
+ return classes;
+ }
}
diff --git a/src/com/itmill/toolkit/tests/book/BookTestApplication.java b/src/com/itmill/toolkit/tests/book/BookTestApplication.java
index 2402b0a57d..678f49c7dc 100644
--- a/src/com/itmill/toolkit/tests/book/BookTestApplication.java
+++ b/src/com/itmill/toolkit/tests/book/BookTestApplication.java
@@ -14,8 +14,6 @@ import java.util.Locale;
import java.util.Map;
import java.util.Set;
-import javax.management.Notification;
-
import com.itmill.toolkit.data.Item;
import com.itmill.toolkit.data.Validator;
import com.itmill.toolkit.data.Property.ValueChangeEvent;
@@ -63,1682 +61,1689 @@ import com.itmill.toolkit.ui.Layout.AlignmentHandler;
import com.itmill.toolkit.ui.MenuBar.MenuItem;
public class BookTestApplication extends com.itmill.toolkit.Application {
- Window main = new Window("Application window");
-
- TheButton butts1;
- TheButtons butts2;
- TheButtons2 butts3;
-
- Label mylabel1;
- Label mylabel2;
- Label mylabel3;
-
- StreamResource strres;
- VerticalLayout ol;
- int getwincount = 0;
-
- public void init() {
- setTheme("tests-book");
-
- setMainWindow(main);
-
- // Demo the use of parameter and URI handlers
- main.addParameterHandler(new MyParameterHandler());
- main.addURIHandler(new MyURIHandler());
-
- MyDynamicResource myresource = new MyDynamicResource();
- main.addParameterHandler(myresource);
- main.addURIHandler(myresource);
-
- main.addURIHandler(new BookTestURIHandler());
- }
-
- class MyParameterHandler implements ParameterHandler {
- public void handleParameters(Map parameters) {
- // Print out the parameters to standard output
- for (Iterator it = parameters.keySet().iterator(); it.hasNext();) {
- String key = (String) it.next();
- String value = ((String[]) parameters.get(key))[0];
- System.out.println("Key: " + key + ", value: " + value);
- }
- }
- }
-
- class MyURIHandler implements URIHandler {
- public DownloadStream handleURI(URL context, String relativeUri) {
- System.out.println("Context: " + context.toString()
- + ", relative: " + relativeUri);
- return null; // Let the Application provide the response
- }
- }
-
- class BookTestURIHandler implements URIHandler {
- public DownloadStream handleURI(URL context, String relativeUri) {
- String example;
- String param = null;
-
- final int slashPos = relativeUri.indexOf("/");
- if (slashPos > 0) {
- example = relativeUri.substring(0, slashPos);
- param = relativeUri.substring(slashPos + 1);
- } else {
- example = relativeUri;
- }
-
- /* Remove existing components and windows. */
- main.removeAllComponents();
- final Set childwindows = main.getChildWindows();
- for (final Iterator cwi = childwindows.iterator(); cwi.hasNext();) {
- final Window child = (Window) cwi.next();
- main.removeWindow(child);
- }
-
- // The index is listed inside a grid layout
- main.setLayout(new VerticalLayout());
- GridLayout grid = new GridLayout(4, 4);
- grid.addStyleName("index");
- main.addComponent(grid);
-
- if (example.equals("index")) {
- final String examples[] = { "defaultbutton", "label",
- "labelcontent", "tree", "embedded", "textfield",
- "textfieldvalidation", "datefield", "button",
- "select/select", "select/native", "select/optiongroup",
- "select/twincol", "filterselect", "validator", "table",
- "table/select", "table/component", "table/paging",
- "table/editable", "upload", "link", "gridlayout",
- "orderedlayout", "formlayout", "form", "form/simple",
- "form/layout", "panel", "expandlayout",
- "expandlayout/root", "tabsheet", "alignment",
- "alignment/grid", "window", "window/opener",
- "window/multiple", "classresource", "usererror",
- "progress/window", "progress/thread", "progress",
- "customlayout", "spacing", "margin", "clientinfo",
- "fillinform/templates", "notification", "print",
- "richtextfield", "querycontainer", "menubar" };
- for (int i = 0; i < examples.length; i++) {
- grid.addComponent(new Label("<a href='"
- + context.toString() + examples[i] + "'>"
- + examples[i] + "</a>", Label.CONTENT_XHTML));
- }
- return null;
- }
-
- if (example.equals("defaultbutton")) {
- example_defaultButton(main, param);
- } else if (example.equals("label")) {
- example_Label(main, param);
- } else if (example.equals("labelcontent")) {
- example_LabelContent(main, param);
- } else if (example.equals("tree")) {
- example_Tree(main, param);
- } else if (example.equals("embedded")) {
- example_Embedded(main, param);
- } else if (example.equals("textfield")) {
- example_TextField(main, param);
- } else if (example.equals("textfieldvalidation")) {
- example_TextFieldValidation(main, param);
- } else if (example.equals("usererror")) {
- example_UserError(main, param);
- } else if (example.equals("datefield")) {
- example_DateField(main, param);
- } else if (example.equals("button")) {
- example_Button(main, param);
- } else if (example.equals("checkbox")) {
- example_CheckBox(main, param);
- } else if (example.equals("select")) {
- example_Select(main, param);
- } else if (example.equals("filterselect")) {
- example_FilterSelect(main, param);
- } else if (example.equals("validator")) {
- example_Validator(main, param);
- } else if (example.equals("table")) {
- example_Table(main, param);
- } else if (example.equals("upload")) {
- example_Upload(main, param);
- } else if (example.equals("link")) {
- example_Link(main, param);
- } else if (example.equals("gridlayout")) {
- example_GridLayout(main, param);
- } else if (example.equals("orderedlayout")) {
- example_OrderedLayout(main, param);
- } else if (example.equals("formlayout")) {
- example_FormLayout(main, param);
- } else if (example.equals("form")) {
- example_Form(main, param);
- } else if (example.equals("tabsheet")) {
- example_TabSheet(main, param);
- } else if (example.equals("panel")) {
- example_Panel(main, param);
- } else if (example.equals("expandlayout")) {
- example_ExpandLayout(main, param);
- } else if (example.equals("alignment")) {
- example_Alignment(main, param);
- } else if (example.equals("window")) {
- example_Window(main, param);
- } else if (example.equals("classresource")) {
- example_ClassResource(main, param);
- } else if (example.equals("progress")) {
- example_ProgressIndicator(main, param);
- } else if (example.equals("customlayout")) {
- example_CustomLayout(main, param);
- } else if (example.equals("spacing")) {
- example_Spacing(main, param);
- } else if (example.equals("margin")) {
- example_Margin(main, param);
- } else if (example.equals("clientinfo")) {
- example_ClientInfo(main, param);
- } else if (example.equals("fillinform")) {
- example_FillInForm(main, param);
- } else if (example.equals("notification")) {
- example_Notification(main, param);
- } else if (example.equals("print")) {
- example_Print(main, param);
- } else if (example.equals("richtextfield")) {
- example_RichTextArea(main, param);
- } else if (example.equals("querycontainer")) {
- example_QueryContainer(main, param);
- } else if (example.equals("menubar")) {
- example_MenuBar(main, param);
- } else {
- ; // main.addComponent(new
- // Label("Unknown test '"+example+"'."));
- }
-
- return null;
- }
- }
-
- /*
- * public Window getWindow(String name) { Window superwin =
- * super.getWindow(name); if (superwin != null) return superwin;
- *
- * main.addComponent(new Label("Request 2 for window '"+name+"'.")); if
- * (name.equals("panel")) { Window window = new Window("Other Window " +
- * getwincount++); example_Panel(window, null); return window; } return
- * null; }
- */
- public void handleButton(Button.ClickEvent event) {
- ol.addStyleName("myLayout2");
- }
-
- void example_defaultButton(Window main, String param) {
- main.addComponent(new DefaultButtonExample(main));
- }
-
- void example_Label(Window main, String param) {
- /* Some container for the Label. */
- final Panel panel = new Panel("Panel Containing a Label");
- main.addComponent(panel);
-
- panel.addComponent(new Label(
- "This is a Label inside a Panel. There is enough "
- + "text in the label to make the text wrap if it "
- + "exceeds the width of the panel."));
- }
-
- void example_LabelContent(Window main, String param) {
- final GridLayout labelgrid = new GridLayout(2, 1);
- labelgrid.addStyleName("labelgrid");
- labelgrid.addComponent(new Label("CONTENT_DEFAULT"));
- labelgrid.addComponent(new Label(
- "This is a label in default mode: <plain text>",
- Label.CONTENT_DEFAULT));
- labelgrid.addComponent(new Label("CONTENT_PREFORMATTED"));
- labelgrid
- .addComponent(new Label(
- "This is a preformatted label.\nThe newline character \\n breaks the line.",
- Label.CONTENT_PREFORMATTED));
- labelgrid.addComponent(new Label("CONTENT_RAW"));
- labelgrid
- .addComponent(new Label(
- "This is a label in raw mode.<br>It can contain, for example, unbalanced markup.",
- Label.CONTENT_RAW));
- labelgrid.addComponent(new Label("CONTENT_TEXT"));
- labelgrid.addComponent(new Label(
- "This is a label in (plain) text mode", Label.CONTENT_TEXT));
- labelgrid.addComponent(new Label("CONTENT_XHTML"));
- labelgrid.addComponent(new Label(
- "<i>This</i> is an <b>XHTML<b> formatted label",
- Label.CONTENT_XHTML));
- labelgrid.addComponent(new Label("CONTENT_XML"));
- labelgrid.addComponent(new Label(
- "This is an <myelement>XML</myelement> formatted label",
- Label.CONTENT_XML));
- main.addComponent(labelgrid);
-
- final ClassResource labelimage = new ClassResource("smiley.jpg", this);
- main.addComponent(new Label("Here we have an image <img src=\""
- + getRelativeLocation(labelimage) + "\"/> within some text.",
- Label.CONTENT_XHTML));
- }
-
- void example_Tree(Window main, String param) {
- final Object[][] planets = new Object[][] {
- new Object[] { "Mercury" },
- new Object[] { "Venus" },
- new Object[] { "Earth", "The Moon" },
- new Object[] { "Mars", "Phobos", "Deimos" },
- new Object[] { "Jupiter", "Io", "Europa", "Ganymedes",
- "Callisto" },
- new Object[] { "Saturn", "Titan", "Tethys", "Dione", "Rhea",
- "Iapetus" },
- new Object[] { "Uranus", "Miranda", "Ariel", "Umbriel",
- "Titania", "Oberon" },
- new Object[] { "Neptune", "Triton", "Proteus", "Nereid",
- "Larissa" } };
-
- final Tree tree = new Tree();
-
- // Add planets as root items in the tree.
- for (int i = 0; i < planets.length; i++) {
- final String planet = (String) (planets[i][0]);
- tree.addItem(planet);
-
- if (planets[i].length == 1) {
- // The planet has no moons so make it a leaf.
- tree.setChildrenAllowed(planet, false);
- } else {
- // Add children (moons) under the planets.
- for (int j = 1; j < planets[i].length; j++) {
- final String moon = (String) planets[i][j];
-
- // Add the item as a regular item.
- tree.addItem(moon);
-
- // Set it to be a child.
- tree.setParent(moon, planet);
-
- // Make the moons look like leaves.
- tree.setChildrenAllowed(moon, false);
- }
-
- // Expand the subtree.
- tree.expandItemsRecursively(planet);
- }
- }
-
- // Horizontal layout with the tree on the left and a details panel on
- // the right.
- final HorizontalLayout horlayout = new HorizontalLayout();
- horlayout.addStyleName("treeexample");
- horlayout.setSizeFull();
-
- final Panel treepanel = new Panel("The Planets and Major Moons");
- treepanel.addComponent(tree);
- horlayout.addComponent(treepanel);
-
- final Panel detailspanel = new Panel("Details");
- horlayout.addComponent(detailspanel);
- horlayout.setExpandRatio(detailspanel, 1);
-
- final VerticalLayout detailslayout = new VerticalLayout();
- detailspanel.setLayout(detailslayout);
-
- // Allow null selection - this is the default actually.
- tree.setNullSelectionAllowed(true);
-
- // When a tree item (planet or moon) is clicked, open the item in
- // Details view.
- tree.setImmediate(true);
- tree.addListener(new ValueChangeListener() {
- String lastselected = null;
-
- public void valueChange(ValueChangeEvent event) {
- String planet = (String) tree.getValue();
-
- // Reselect a selected item if it is unselected by clicking it.
- if (planet == null) {
- planet = lastselected;
- tree.setValue(planet);
- }
- lastselected = planet;
-
- detailspanel.setCaption("Details on " + planet);
- detailslayout.removeAllComponents();
-
- // Put some stuff in the Details view.
- detailslayout.addComponent(new Label("Where is the cat?"));
- detailslayout.addComponent(new Label("The cat is in " + planet
- + "."));
-
- }
- });
-
- main.setLayout(horlayout);
- }
-
- void example_Select(Window main, String param) {
- final HorizontalLayout layout = new HorizontalLayout();
- layout.addStyleName("aligntop");
-
- if (param.equals("twincol")) {
- final SelectExample select1 = new SelectExample(this, param,
- "Select some items", true);
- layout.addComponent(select1);
- } else if (param.equals("filter")) {
- final SelectExample select1 = new SelectExample(this, param,
- "Enter containing substring", false);
- layout.addComponent(select1);
- } else {
- final SelectExample select1 = new SelectExample(this, param,
- "Single Selection Mode", false);
- final SelectExample select2 = new SelectExample(this, param,
- "Multiple Selection Mode", true);
- layout.addComponent(select1);
- layout.addComponent(select2);
- }
- main.addComponent(layout);
- }
-
- void example_FilterSelect(Window main, String param) {
- final Select select = new Select("Enter containing substring");
- main.addComponent(select);
-
- select
- .setFilteringMode(AbstractSelect.Filtering.FILTERINGMODE_CONTAINS);
-
- /* Fill the component with some items. */
- final String[] planets = new String[] { "Mercury", "Venus", "Earth",
- "Mars", "Jupiter", "Saturn", "Uranus", "Neptune" };
-
- for (int i = 0; i < planets.length; i++) {
- for (int j = 0; j < planets.length; j++) {
- select.addItem(planets[j] + " to " + planets[i]);
- }
- }
- }
-
- void example_TextField(Window main, String param) {
- /* Add a single-line text field. */
- final TextField subject = new TextField("Subject");
- subject.setColumns(40);
- main.addComponent(subject);
-
- /* Add a multi-line text field. */
- final TextField message = new TextField("Message");
- message.setRows(7);
- message.setColumns(40);
- main.addComponent(message);
- }
-
- void example_TextFieldValidation(Window main, String param) {
- // Create a text field with a label
- final TextField username = new TextField("Username");
- main.addComponent(username);
-
- // Set visible length to 16 characters
- username.setColumns(16);
-
- // Set content length to minimum of 6 and maximum of 16 characters.
- // The string also may not be null.
- username.addValidator(new StringLengthValidator(
- "Must be 6 to 16 characters long", 6, 16, false));
-
- // Setting component immediate causes a ValueChangeEvent to occur
- // when the TextField loses focus.
- username.setImmediate(true);
-
- // Listen for ValueChangeEvents and handle them
- username.addListener(new ValueChangeListener() {
- public void valueChange(ValueChangeEvent event) {
- // Get the source of the event
- final TextField username = (TextField) (event.getProperty());
-
- try {
- // Validate the field value.
- username.validate();
- } catch (final Validator.InvalidValueException e) {
- // The value was not ok. The error was set.
- }
- }
- });
- }
-
- void example_UserError(final Window main, String param) {
- if (param != null) {
- if (param.equals("form")) {
-
- final FormLayout layout = new FormLayout();
- main.addComponent(layout);
-
- final TextField textfield = new TextField("Enter code");
- layout.addComponent(textfield);
- textfield.setComponentError(null);
-
- final Button button = new Button("Ok!");
- layout.addComponent(button);
-
- button.addListener(new Button.ClickListener() {
- public void buttonClick(ClickEvent event) {
- if (((String) textfield.getValue()).length() == 0) {
- textfield.setComponentError(new UserError(
- "Must be letters and numbers."));
- } else {
- textfield.setComponentError(null);
- }
- }
- });
- }
- } else {
- main.setLayout(new HorizontalLayout());
-
- // Create a field.
- final TextField textfield = new TextField("Enter code");
- main.addComponent(textfield);
-
- // Let the component error be initially clear. (It actually is by default.)
- textfield.setComponentError(null);
-
- // Have a button right of the field (and align it properly).
- final Button button = new Button("Ok!");
- main.addComponent(button);
- ((HorizontalLayout)main.getLayout()).setComponentAlignment(button,
- HorizontalLayout.ALIGNMENT_LEFT, HorizontalLayout.ALIGNMENT_BOTTOM);
-
- // Handle button clicks
- button.addListener(new Button.ClickListener() {
- public void buttonClick(ClickEvent event) {
- // If the field value is bad, set its error.
- // (Here the content must be only alphanumeric characters.)
- if (! ((String) textfield.getValue()).matches("^\\w*$")) {
- // Put the component in error state and set the error message.
- textfield.setComponentError(new UserError("Must be letters and numbers"));
- } else {
- // Otherwise clear it.
- textfield.setComponentError(null);
- }
- }
- });
- }
- }
-
- void example_DateField(Window main, String param) {
- HorizontalLayout layout = new HorizontalLayout();
-
- /* Create a DateField with the calendar style. */
- final DateField popupdate = new PopupDateField("Popup calendar field");
-
- /* Set resolution of the date/time display. */
- popupdate.setResolution(DateField.RESOLUTION_MIN);
-
- /* Set the date and time to present. */
- popupdate.setValue(new java.util.Date());
-
- /* Create a DateField with the calendar style. */
- final DateField inlinedate = new InlineDateField(
- "Inline calendar field");
-
- /* Set locale of the DateField to American English. */
- inlinedate.setLocale(new Locale("en", "US"));
-
- /* Set the date and time to present. */
- inlinedate.setValue(new java.util.Date());
-
- /* Set resolution of the date/time display. */
- inlinedate.setResolution(DateField.RESOLUTION_MIN);
-
- layout.addComponent(popupdate);
- layout.addComponent(inlinedate);
- layout.setSpacing(true);
- main.addComponent(layout);
- }
-
- void example_Validator(Window main, String param) {
- if (param != null && param.equals("required")) {
- Form form = new Form();
- form.setCaption("My Form");
- form.setRequired(true);
- main.addComponent(form);
-
- TextField text = new TextField("This is a required text field");
- text.setRequired(true);
- text.setImmediate(true);
- form.getLayout().addComponent(text);
- return;
- }
- main.addComponent(new SSNField());
- }
-
- class PagingTable extends Table {
- public String getTag() {
- return "pagingtable";
- }
- }
-
- void example_Table(Window main, String param) {
- if (param != null) {
- if (param.equals("select")) {
- main.addComponent(new TableExample2());
- } else if (param.equals("component")) {
- main.addComponent(new TableExample3());
- } else if (param.equals("editable")) {
- main.addComponent(new TableEditable());
- } else if (param.equals("bean")) {
- main.addComponent(new TableEditableBean());
- } else if (param.equals("long")) {
- main.addComponent(new TableExample());
- } else if (param.equals("cellstyle")) {
- main.addComponent(new TableCellStyle());
- } else if (param.equals("huge")) {
- main.addComponent(new TableHuge());
- } else if (param.equals("paging")) {
- PagingTable table = new PagingTable();
- table.addContainerProperty("Column 1", String.class, null);
- for (int i = 0; i < 100; i++) {
- table.addItem(new Object[] { "Item " + i }, new Integer(i));
- }
- main.addComponent(table);
- }
- } else {
- main.addComponent(new TableExample1());
- }
- }
-
- void example_Upload(Window main, String param) {
- main.addComponent(new MyUploader());
- }
-
- void example_Link(Window main, String param) {
-
- /* Create a link that opens the popup window. */
- final Link alink = new Link();
-
- /* Set the resource to be opened in the window. */
- alink.setResource(new ExternalResource("http://www.itmill.com/"));
-
- main.addComponent(alink);
-
- final ClassResource mydocument = new ClassResource("mydocument.pdf",
- this);
- main.addComponent(new Link("The document (pdf)", mydocument));
- main.addComponent(new Link("link to a resource", new ExternalResource(
- "http://www.itmill.com/")));
- }
-
- void example_Button(Window main, String param) {
- if (param != null) {
- if (param.equals("buttons")) {
- main.addComponent(new TheButton());
- }
- return;
- }
-
- // butts1 = new TheButton ();
- // main.addComponent(butts1);
-
- // butts2 = new TheButtons (main);
- // butts3 = new TheButtons2 (main);
-
- // Button checkbox = new Button ("This is a checkbox");
-
- // main.addComponent(checkbox);
- final Button button = new Button("My Button");
- main.addComponent(button);
- }
-
- void example_CheckBox(Window main, String param) {
- /* A check box with default state (not checked, i.e., false). */
- final CheckBox checkbox1 = new CheckBox("My CheckBox");
- checkbox1.addStyleName("mybox");
- main.addComponent(checkbox1);
-
- /* Another check box with explicitly set checked state. */
- final CheckBox checkbox2 = new CheckBox("Checked CheckBox");
- /*
- * @TODO: Build fails here, why? checkbox2.setValue(true);
- */
- main.addComponent(checkbox2);
-
- /*
- * Make some application logic. We use anynymous listener classes here.
- * The above references were defined as "final" to allow accessing them
- * from inside anonymous classes.
- */
- checkbox1.addListener(new ValueChangeListener() {
- public void valueChange(ValueChangeEvent event) {
- /* Copy the value to the other checkbox. */
- checkbox2.setValue(checkbox1.getValue());
- }
- });
- checkbox2.addListener(new ValueChangeListener() {
- public void valueChange(ValueChangeEvent event) {
- /* Copy the value to the other checkbox. */
- checkbox1.setValue(checkbox2.getValue());
- }
- });
- }
-
- void example_Panel(Window main, String param) {
- // Create a panel with a caption.
- final Panel panel = new Panel("Contact Information");
-
- // Create a layout inside the panel
- final FormLayout form = new FormLayout();
-
- // Set the layout as the root layout of the panel
- panel.setLayout(form);
-
- // Add some components
- form.addComponent(new TextField("Name"));
- form.addComponent(new TextField("Email"));
-
- // Add the panel to the main window
- final ClassResource icon = new ClassResource("smiley.jpg", main
- .getApplication());
- form.addComponent(new Embedded("Image", icon));
- panel.setIcon(icon);
- panel.addComponent(form);
- main.addComponent(panel);
- }
-
- void example_GridLayout(Window main, String param) {
- if (param.equals("embedded")) {
- final GridLayout grid = new GridLayout(3, 3);
- for (int i = 0; i < 3 * 3; i++) {
- ClassResource img = new ClassResource("smiley.jpg", main
- .getApplication());
- Embedded embedded = new Embedded("", img);
- grid.addComponent(embedded);
- }
- main.addComponent(grid);
- return;
- }
- /* Create a 4 by 4 grid layout. */
- final GridLayout grid = new GridLayout(4, 4);
- grid.addStyleName("example-gridlayout");
-
- /* Fill out the first row using the cursor. */
- grid.addComponent(new Button("R/C 1"));
- for (int i = 0; i < 3; i++) {
- grid.addComponent(new Button("Col " + (grid.getCursorX() + 1)));
- }
-
- /* Fill out the first column using coordinates. */
- for (int i = 1; i < 4; i++) {
- grid.addComponent(new Button("Row " + i), 0, i);
- }
-
- /* Add some components of various shapes. */
- grid.addComponent(new Button("3x1 button"), 1, 1, 3, 1);
- grid.addComponent(new Label("1x2 cell"), 1, 2, 1, 3);
- final InlineDateField date = new InlineDateField("A 2x2 date field");
- date.setResolution(DateField.RESOLUTION_DAY);
- grid.addComponent(date, 2, 2, 3, 3);
-
- main.addComponent(grid);
- }
-
- void example_Alignment(Window main, String param) {
- if (param.equals("grid")) {
- /* Create a 3 by 3 grid layout. */
- final GridLayout layout = new GridLayout(3, 3);
- // OrderedLayout layout = new
- // OrderedLayout(OrderedLayout.ORIENTATION_VERTICAL);
- main.setLayout(layout);
- layout.addStyleName("example-alignment");
-
- layout.setWidth(400, Sizeable.UNITS_PIXELS);
- layout.setHeight(400, Sizeable.UNITS_PIXELS);
-
- /* Define cells and their layouts to create. */
-
- Object cells[][] = {
- { new Button("Top Left"),
- new Integer(AlignmentHandler.ALIGNMENT_LEFT),
- new Integer(AlignmentHandler.ALIGNMENT_TOP) },
- {
- new Label("Top Center"),
- new Integer(
- AlignmentHandler.ALIGNMENT_HORIZONTAL_CENTER),
- new Integer(AlignmentHandler.ALIGNMENT_TOP) },
- { new Label("Top Right"),
- new Integer(AlignmentHandler.ALIGNMENT_RIGHT),
- new Integer(AlignmentHandler.ALIGNMENT_TOP) },
- {
- new Button("Center Left"),
- new Integer(AlignmentHandler.ALIGNMENT_LEFT),
- new Integer(
- AlignmentHandler.ALIGNMENT_VERTICAL_CENTER) },
- {
- new Button("Center Center"),
- new Integer(
- AlignmentHandler.ALIGNMENT_HORIZONTAL_CENTER),
- new Integer(
- AlignmentHandler.ALIGNMENT_VERTICAL_CENTER) },
- {
- new Button("Center Right"),
- new Integer(AlignmentHandler.ALIGNMENT_RIGHT),
- new Integer(
- AlignmentHandler.ALIGNMENT_VERTICAL_CENTER) },
- { new Button("Bottom Left"),
- new Integer(AlignmentHandler.ALIGNMENT_LEFT),
- new Integer(AlignmentHandler.ALIGNMENT_BOTTOM) },
- {
- new Button("Bottom Center"),
- new Integer(
- AlignmentHandler.ALIGNMENT_HORIZONTAL_CENTER),
- new Integer(AlignmentHandler.ALIGNMENT_BOTTOM) },
- { new Button("Bottom Right"),
- new Integer(AlignmentHandler.ALIGNMENT_RIGHT),
- new Integer(AlignmentHandler.ALIGNMENT_BOTTOM) } };
-
- for (int i = 0; i < 9; i++) {
- HorizontalLayout celllayout = new HorizontalLayout();
- celllayout.addComponent((Component) cells[i][0]);
- if (i == 0) {
- celllayout.setExpandRatio((Component) cells[i][0], 1);
- }
-
- celllayout.setComponentAlignment((Component) cells[i][0],
- ((Integer) cells[i][1]).intValue(),
- ((Integer) cells[i][2]).intValue());
- layout.addComponent(celllayout);
- // layout.setComponentAlignment((Component)cells[i][0],
- // ((Integer)cells[i][1]).intValue(),
- // ((Integer)cells[i][2]).intValue());
- }
- } else {
- final Panel panel = new Panel("A Panel with a Layout");
- main.addComponent(panel);
-
- // panel.addComponent(new )
- }
- }
-
- void example_OrderedLayout(Window main, String param) {
- final VerticalLayout layout = new VerticalLayout();
- layout.addComponent(new TextField("Name"));
- layout.addComponent(new TextField("Street address"));
- layout.addComponent(new TextField("Postal code"));
- main.addComponent(layout);
- }
-
- void example_FormLayout(Window main, String param) {
- final FormLayout layout = new FormLayout();
- layout.addComponent(new TextField("Text Field"));
- layout.addComponent(new CheckBox("Check Box"));
- layout.addComponent(new Select("Select"));
- main.addComponent(layout);
- }
-
- void example_Form(Window main, String param) {
- if (param != null && param.equals("simple")) {
- main.addComponent(new FormExample2());
- } else if (param != null && param.equals("layout")) {
- Form form = new Form();
- form.setCaption("Form Caption");
- form
- .setDescription("This is a description of the Form that is "
- + "displayed in the upper part of the form. You normally enter some "
- + "descriptive text about the form and its use here.");
-
- // Add a field directly to the layout. This field will not be bound
- // to
- // the data source Item of the form.
- form.getLayout().addComponent(new TextField("A Field"));
-
- // Add a field and bind it to an named item property.
- form.addField("another", new TextField("Another Field"));
-
- form.setComponentError(new UserError(
- "This is the error indicator of the Form."));
-
- // Set the footer layout and add some text.
- form.setFooter(new VerticalLayout());
- form
- .getFooter()
- .addComponent(
- new Label(
- "This is the footer area of the Form. "
- + "You can use any layout here. This is nice for buttons."));
-
- // Add an Ok (commit), Reset (discard), and Cancel buttons for the
- // form.
- HorizontalLayout okbar = new HorizontalLayout();
- okbar.setHeight("25px");
- Button okbutton = new Button("OK", form, "commit");
- okbar.addComponent(okbutton);
- okbar.setExpandRatio(okbutton, 1);
- okbar.setComponentAlignment(okbutton,
- AlignmentHandler.ALIGNMENT_RIGHT,
- AlignmentHandler.ALIGNMENT_TOP);
- okbar.addComponent(new Button("Reset", form, "discard"));
- okbar.addComponent(new Button("Cancel"));
- form.getFooter().addComponent(okbar);
-
- main.addComponent(form);
- } else {
- main.addComponent(new FormExample());
- }
- }
-
- void example_ExpandLayout(Window main, String param) {
- if (param != null && param.equals("centered")) {
- Label widget = new Label("Here is text");
-
- HorizontalLayout layout = new HorizontalLayout();
- layout.addComponent(widget);
- layout.setExpandRatio(widget, 1);
- layout.setComponentAlignment(widget,
- AlignmentHandler.ALIGNMENT_HORIZONTAL_CENTER,
- AlignmentHandler.ALIGNMENT_VERTICAL_CENTER);
- layout.setWidth(100, Sizeable.UNITS_PERCENTAGE);
- layout.setHeight(100, Sizeable.UNITS_PERCENTAGE);
-
- main.setLayout(layout);
-
- return;
- } else if (param != null && param.equals("window")) {
- Window window = new Window("Progress");
- window.setHeight(100, Sizeable.UNITS_PIXELS);
- window.setWidth(200, Sizeable.UNITS_PIXELS);
- main.addWindow(window);
-
- ProgressIndicator progress = new ProgressIndicator(new Float(0.4));
- progress.addStyleName("fullwidth");
- progress.setPollingInterval(1000000);
- progress.setIndeterminate(false);
-
- HorizontalLayout layout = new HorizontalLayout();
- layout.setHeight(100, Sizeable.UNITS_PERCENTAGE);
- layout.setComponentAlignment(progress,
- HorizontalLayout.ALIGNMENT_HORIZONTAL_CENTER,
- HorizontalLayout.ALIGNMENT_VERTICAL_CENTER);
- window.setLayout(layout);
- window.addComponent(progress);
-
- return;
- } else if (param != null && param.equals("root")) {
- final Window mainwin = main;
-
- // Layout to switch to
- final VerticalLayout expand2 = new VerticalLayout();
- expand2.addComponent(new Label("I am layout too."));
-
- // Original layout
- final VerticalLayout expand1 = new VerticalLayout();
- Button switchButton = new Button("Switch to other layout");
- switchButton.addListener(new Button.ClickListener() {
- public void buttonClick(ClickEvent event) {
- mainwin.setLayout(null);
- mainwin.setLayout(expand2);
- }
- });
- expand1.addComponent(switchButton);
- main.setLayout(expand1);
-
- return;
- } else if (param != null && param.equals("size")) {
- VerticalLayout layout = new VerticalLayout();
- layout.setSizeFull();
- main.setLayout(layout);
-
- Button button = new Button("This is a button in middle of nowhere");
- layout.addComponent(button);
- layout.setComponentAlignment(button,
- VerticalLayout.ALIGNMENT_HORIZONTAL_CENTER,
- VerticalLayout.ALIGNMENT_VERTICAL_CENTER);
- layout.setExpandRatio(button, 1.0f);
- return;
- }
-
- for (int w = 0; w < 2; w++) {
- final VerticalLayout layout = new VerticalLayout();
-
- /* Set the expanding layout as the root layout of a child window. */
- final Window window = new Window("A Child Window", layout);
- main.addWindow(window);
-
- /* Add some component above the expanding one. */
- layout.addComponent(new Label("Here be some component."));
-
- /* Create the expanding component. */
- final Table table = new Table("My Ever-Expanding Table");
- /*
- * FIXME Java 5 -> 1.4 for (int i=0; i<5; i++)
- * table.addContainerProperty("col "+(i+1), Integer.class, 0); for
- * (int j=0; j<20; j++) table.addItem(new Object[]{1j,2j,3j,4j,5j},
- * j);
- */
- layout.addComponent(table);
-
- /* Designate the table to be the expanding component. */
- layout.setExpandRatio(table, 1.0f);
-
- /* Set it to use all available area. */
- table.setSizeFull();
-
- /* Add some component below the expanding one. */
- final Button button2 = new Button("Ok");
- layout.addComponent(button2);
- layout.setComponentAlignment(button2,
- AlignmentHandler.ALIGNMENT_RIGHT, 0);
- }
- }
-
- void example_TabSheet(Window main, String param) {
- if (param.equals("icon")) {
- final TabSheet tabsheet = new TabSheet();
-
- tabsheet.addTab(new Label("Contents of the first tab"),
- "First Tab", new ClassResource("images/Mercury_small.png",
- main.getApplication()));
- tabsheet.addTab(new Label("Contents of the second tab"),
- "Second Tab", new ClassResource("images/Venus_small.png",
- this));
- tabsheet.addTab(new Label("Contents of the third tab"),
- "Third tab", new ClassResource("images/Earth_small.png",
- this));
-
- main.addComponent(tabsheet);
- // main.addComponent(new Embedded("Emb", new ClassResource
- // ("images/Mercury_small.png", this)));
- } else if (param.equals("expanding")) {
- // Create the layout
- VerticalLayout expanding = new VerticalLayout();
-
- // It is important to set the expanding layout as the root layout
- // of the containing window, in this case the main window, and not
- // use addComponent(), which would place the layout inside the
- // default root layout.
- main.setLayout(expanding);
-
- // Create a tab sheet that fills the expanding layout
- final TabSheet tabsheet = new TabSheet();
- tabsheet.addTab(new Label("Contents of the first tab"),
- "First Tab", null);
- tabsheet.addTab(new Label("Contents of the second tab"),
- "Second Tab", null);
- tabsheet.addTab(new Label("Contents of the third tab"),
- "Third tab", null);
-
- // Set the tabsheet to scale to full size inside its container
- tabsheet.setWidth(100, Sizeable.UNITS_PERCENTAGE);
- tabsheet.setHeight(100, Sizeable.UNITS_PERCENTAGE);
-
- // Add the tab sheet to the layout as usual
- expanding.addComponent(tabsheet);
-
- // Set the tab sheet to be the expanding component
- expanding.setExpandRatio(tabsheet, 1);
- } else if (param.equals("ordered")) {
- // Create the layout
- VerticalLayout layout = new VerticalLayout();
-
- // It is important to set the expanding layout as the root layout
- // of the containing window, in this case the main window, and not
- // use addComponent(), which would place the layout inside the
- // default root layout.
- main.setLayout(layout);
-
- // Create a tab sheet that fills the expanding layout
- final TabSheet tabsheet = new TabSheet();
- tabsheet.addTab(new Label("Contents of the first tab"),
- "First Tab", null);
- tabsheet.addTab(new Label("Contents of the second tab"),
- "Second Tab", null);
- tabsheet.addTab(new Label("Contents of the third tab"),
- "Third tab", null);
-
- // Set the tabsheet to scale to full size inside its container
- tabsheet.setWidth(100, Sizeable.UNITS_PERCENTAGE);
- // tabsheet().setHeight(100, Sizeable.UNITS_PERCENTAGE);
-
- // Add the tab sheet to the layout as usual
- layout.addComponent(tabsheet);
- } else {
- main.addComponent(new TabSheetExample());
- }
- }
-
- void example_Embedded(Window main, String param) {
- final Embedded image = new Embedded("", new ClassResource("smiley.jpg",
- this));
- image.addStyleName("omaimage");
- main.addComponent(image);
-
- final EmbeddedButton button = new EmbeddedButton(new ClassResource(
- "smiley.jpg", this));
- main.addComponent(button);
- }
-
- void example_Window(Window main, String param) {
- if (param != null) {
- if (param.equals("opener")) {
- main.addComponent(new WindowOpener("Window Opener", main));
- } else if (param.equals("multiple")) {
- /* Create a new window. */
- final Window mywindow = new Window("Second Window");
- mywindow.setName("mywindow");
- mywindow.addComponent(new Label("This is a second window."));
-
- /* Add the window to the application. */
- main.getApplication().addWindow(mywindow);
-
- /* Add link to the second window in the main window. */
- main.addComponent(new Label("Second window: <a href='"
- + mywindow.getURL() + "'>middle-click to open</a>",
- Label.CONTENT_XHTML));
- main.addComponent(new Label(
- "The second window can be accessed through URL: "
- + mywindow.getURL()));
- }
- return;
- }
-
- /* Create a new window. */
- final Window mywindow = new Window("My Window");
- mywindow.setName("mywindow");
-
- /* Add some components in the window. */
- mywindow.addComponent(new Label("A text label in the window."));
- final Button okbutton = new Button("OK");
- mywindow.addComponent(okbutton);
-
- /* Set window size. */
- mywindow.setHeight("200px");
- mywindow.setWidth("400px");
-
- /* Set window position. */
- mywindow.setPositionX(200);
- mywindow.setPositionY(50);
-
- /* Add the window to the Application object. */
- main.addWindow(mywindow);
-
- }
-
- void example_ClassResource(Window main, String param) {
- final DateField df = new DateField();
- main.addComponent(df);
- df.setIcon(new ClassResource("smiley.jpg", main.getApplication()));
- main.addComponent(new Embedded("This is Embedded", new ClassResource(
- "smiley.jpg", main.getApplication())));
- }
-
- void example_ProgressIndicator(final Window main, String param) {
- if (param != null) {
- if (param.equals("thread")) {
-
- // Create the indicator
- final ProgressIndicator indicator = new ProgressIndicator(
- new Float(0.0));
- main.addComponent(indicator);
-
- // Set polling frequency to 0.5 seconds.
- indicator.setPollingInterval(1000);
-
- // indicator.addStyleName("invisible");
- final Label text = new Label("-- Not running --");
- main.addComponent(text);
-
- // Add a button to start the progress
- final Button button = new Button("Click to start");
- main.addComponent(button);
-
- // Another thread to do some work
- class WorkThread extends Thread {
- public void run() {
- double current = 0.0;
- while (true) {
- // Do some "heavy work"
- try {
- sleep(50); // Sleep for 50 milliseconds
- } catch (InterruptedException e) {
- }
-
- // Grow the progress value until it reaches 1.0.
- current += 0.01;
- if (current > 1.0) {
- indicator.setValue(new Float(1.0));
- } else {
- indicator.setValue(new Float(current));
- }
-
- // After the progress is full for a while, stop.
- if (current > 1.2) {
- // Restore the state to initial.
- indicator.setValue(new Float(0.0));
- button.setVisible(true);
- break;
- }
- }
- }
- }
-
- // Clicking the button creates and runs a work thread
- button.addListener(new Button.ClickListener() {
- public void buttonClick(ClickEvent event) {
- final WorkThread thread = new WorkThread();
- thread.start();
-
- // The button hides until the work is done.
- button.setVisible(false);
- }
- });
- } else if (param.equals("window")) {
- // Create a table in the main window to hold items added in the
- // second window
- final Table table = new Table();
- table.setPageLength(5);
- table.setWidth(100, Sizeable.UNITS_PERCENTAGE);
- table.addContainerProperty("Name", String.class, "");
- main.addComponent(table);
-
- // Create the second window
- final Window adderWindow = new Window("Add Items");
- adderWindow.setName("win-adder");
- main.getApplication().addWindow(adderWindow);
-
- // Create selection component to add items to the table
- final NativeSelect select = new NativeSelect(
- "Select item to add");
- select.setImmediate(true);
- adderWindow.addComponent(select);
-
- // Add some items to the selection
- String items[] = new String[] { "-- Select --", "Mercury",
- "Venus", "Earth", "Mars", "Jupiter", "Saturn",
- "Uranus", "Neptune" };
- for (int i = 0; i < items.length; i++) {
- select.addItem(items[i]);
- }
- select.setNullSelectionItemId(items[0]);
-
- // When an item is selected in the second window, add
- // table in the main window
- select.addListener(new ValueChangeListener() {
- public void valueChange(ValueChangeEvent event) {
- // If the selected value is something else but null
- // selection item.
- if (select.getValue() != null) {
- // Add the selected item to the table in the main
- // window
- table.addItem(new Object[] { select.getValue() },
- new Integer(table.size()));
- }
- }
- });
-
- // Link to open the selection window
- Link link = new Link("Click to open second window",
- new ExternalResource(adderWindow.getURL()), "_new", 50,
- 200, Link.TARGET_BORDER_DEFAULT);
- main.addComponent(link);
-
- // Enable polling to update the main window
- ProgressIndicator poller = new ProgressIndicator();
- poller.addStyleName("invisible");
- main.addComponent(poller);
- } else if (param.equals("centered")) {
- /*
- * GridLayout grid = new GridLayout(3,3); main.setLayout(grid);
- * grid().setWidth(100, Sizeable.UNITS_PERCENTAGE);
- *
- * ExpandLayout layout2 = new
- * ExpandLayout(OrderedLayout.ORIENTATION_HORIZONTAL);
- * layout2().setWidth(50, Sizeable.UNITS_PERCENTAGE);
- *
- * ProgressIndicator poller = new ProgressIndicator(new
- * Float(0.4)); poller.setPollingInterval(1000000);
- * poller.setIndeterminate(false); layout2.addComponent(poller);
- *
- * grid.addComponent(layout2, 1, 1);
- */
-
- // ExpandLayout layout2 = new
- // ExpandLayout(OrderedLayout.ORIENTATION_HORIZONTAL);
- /*
- * ProgressIndicator poller = new ProgressIndicator(new
- * Float(0.4)); poller.setPollingInterval(1000000);
- * poller.setIndeterminate(false);
- */
- /*
- * layout2.addComponent(poller); layout2().setWidth(50,
- * Sizeable.UNITS_PERCENTAGE);
- */
-
- // layout.setComponentAlignment(poller,
- // AlignmentHandler.ALIGNMENT_HORIZONTAL_CENTER,
- // AlignmentHandler.ALIGNMENT_VERTICAL_CENTER);
- /*
- * GridLayout grid = new GridLayout(1,1);
- * grid.addComponent(layout2, 0, 0); grid().setWidth(100,
- * Sizeable.UNITS_PERCENTAGE);
- */
-
- /*
- * GridLayout layout = new GridLayout(1,1);
- * //OrderedLayout.ORIENTATION_HORIZONTAL);
- * layout.addComponent(poller); //layout.expand(poller);
- * layout.setComponentAlignment(poller,
- * AlignmentHandler.ALIGNMENT_HORIZONTAL_CENTER,
- * AlignmentHandler.ALIGNMENT_VERTICAL_CENTER);
- * layout().setWidth(100, Sizeable.UNITS_PERCENTAGE);
- * layout().setHeight(100, Sizeable.UNITS_PERCENTAGE);
- */
-
- }
- } else {
- ProgressIndicator poller = new ProgressIndicator(new Float(0.0));
- poller.setPollingInterval(1000000);
- poller.setIndeterminate(true);
- main.addComponent(poller);
- }
- }
-
- void example_CustomLayout(final Window main, String param) {
- Window sub = new Window("Login");
- sub.setModal(true);
- main.addWindow(sub);
-
- // Create the custom layout and set it as the root layout of
- // the containing window.
- final CustomLayout custom = new CustomLayout("layoutname");
- sub.setLayout(custom);
-
- // Create components and bind them to the location tags
- // in the custom layout.
- TextField username = new TextField();
- custom.addComponent(username, "username");
-
- TextField password = new TextField();
- custom.addComponent(password, "password");
-
- final Button ok = new Button("Login");
- custom.addComponent(ok, "okbutton");
-
- final Button deny = new Button("No can do!");
-
- Button.ClickListener listener = new Button.ClickListener() {
- public void buttonClick(ClickEvent event) {
- // Switch between ok and deny
- if (custom.getComponent("okbutton") == ok) {
- System.out.println("Changing to deny button.");
- custom.addComponent(deny, "okbutton");
- } else {
- System.out.println("Changing to ok button.");
- custom.addComponent(ok, "okbutton");
- }
- }
- };
-
- ok.addListener(listener);
- deny.addListener(listener);
- }
-
- void example_Spacing(final Window main, String param) {
- VerticalLayout containinglayout = new VerticalLayout();
- main.setLayout(containinglayout);
-
- GridLayout grid = new GridLayout(4, 3);
- grid.addStyleName("spacingexample");
- containinglayout.addComponent(grid);
- grid.addComponent(new Label(""), 0, 0);
- grid.addComponent(new Label(""), 1, 0);
-
- grid.addComponent(new Label("No spacing:"), 0, 1);
- HorizontalLayout layout1 = new HorizontalLayout();
- grid.addComponent(layout1, 1, 1);
- layout1.addStyleName("spacingexample");
- layout1.addComponent(new Button("Component 1"));
- layout1.addComponent(new Button("Component 2"));
- layout1.addComponent(new Button("Component 3"));
-
- grid.addComponent(new Label("Horizontal spacing:"), 0, 2);
- HorizontalLayout layout2 = new HorizontalLayout();
- grid.addComponent(layout2, 1, 2);
- layout2.addStyleName("spacingexample");
- layout2.setSpacing(true);
- layout2.addComponent(new Button("Component 1"));
- layout2.addComponent(new Button("Component 2"));
- layout2.addComponent(new Button("Component 3"));
-
- grid.addComponent(new Label("No spacing:"), 2, 0);
- VerticalLayout layout3 = new VerticalLayout();
- grid.addComponent(layout3, 2, 1, 2, 2);
- layout3.addStyleName("spacingexample");
- layout3.addComponent(new Button("Component 1"));
- layout3.addComponent(new Button("Component 2"));
- layout3.addComponent(new Button("Component 3"));
-
- grid.addComponent(new Label("Vertical spacing:"), 3, 0);
- VerticalLayout layout4 = new VerticalLayout();
- grid.addComponent(layout4, 3, 1, 3, 2);
- layout4.addStyleName("spacingexample");
- layout4.setSpacing(true);
- layout4.addComponent(new Button("Component 1"));
- layout4.addComponent(new Button("Component 2"));
- layout4.addComponent(new Button("Component 3"));
- }
-
- void example_Margin(final Window main, String param) {
- HorizontalLayout hor = new HorizontalLayout();
- main.setLayout(hor);
-
- VerticalLayout containinglayout = new VerticalLayout();
- hor.addComponent(containinglayout);
-
- VerticalLayout layout1 = new VerticalLayout();
- containinglayout.addComponent(new Label("Regular layout margins:"));
- containinglayout.addComponent(layout1);
- layout1.addStyleName("marginexample1");
- layout1.addComponent(new Button("Component 1"));
- layout1.addComponent(new Button("Component 2"));
- layout1.addComponent(new Button("Component 3"));
-
- // Create a layout
- VerticalLayout layout2 = new VerticalLayout();
- containinglayout.addComponent(new Label(
- "Layout with a special margin element:"));
- containinglayout.addComponent(layout2);
-
- // Set style name for the layout to allow styling it
- layout2.addStyleName("marginexample2");
-
- // Have margin on all sides around the layout
- layout2.setMargin(true);
-
- // Put something inside the layout
- layout2.addComponent(new Button("Component 1"));
- layout2.addComponent(new Button("Component 2"));
- layout2.addComponent(new Button("Component 3"));
- }
-
- void example_ClientInfo(final Window main, String param) {
- // Get the client identification string
- WebApplicationContext context2 = (WebApplicationContext) getContext();
- String browserApplication = context2.getBrowser()
- .getBrowserApplication();
-
- // Add a browser-dependent style name for the main window
- if (browserApplication.indexOf("Firefox/2") != -1) {
- main.addStyleName("firefox2");
- }
-
- // Display the client identification string
- main.addComponent(new Label(browserApplication));
- }
-
- void example_FillInForm(final Window main, String param) {
- if (param.equals("templates")) {
- // Create a custom layout from the fill-in-form.html template.
- CustomLayout fillinlayout = new CustomLayout("fill-in-form");
-
- // The style will set the display to be "inline".
- fillinlayout.addStyleName("fillinlayout");
-
- // Create the fields that occur in the text.
- TextField field1 = new TextField();
- TextField field2 = new TextField();
- fillinlayout.addComponent(field1, "q1");
- fillinlayout.addComponent(field2, "q2");
-
- main.addComponent(fillinlayout);
- } else {
- String fillintext = "The <q1> is mightier than <q2>.";
- int pos = 0;
- while (pos < fillintext.length()) {
- int nexttag = fillintext.indexOf("<", pos);
- if (nexttag == -1) {
-
- }
- }
- }
- }
-
- void example_Notification(final Window main, String param) {
- //final Window sub1 = new Window("");
- //main.addWindow(sub1);
- if (param.equals("example")) {
- main.showNotification("This is the caption",
- "This is the description");
- return;
- } else if (param.equals("type")) {
- main.showNotification("This is a warning",
- "<br/>This is the <i>last</i> warning",
- Window.Notification.TYPE_WARNING_MESSAGE);
- return;
- } else if (param.equals("pos")) {
- // Create a notification with the default settings for a warning.
- Window.Notification notif = new Window.Notification(
- "Be warned!", "This message lurks in the top-left corner!",
- Window.Notification.TYPE_WARNING_MESSAGE);
-
- // Set the position.
- notif.setPosition(Window.Notification.POSITION_TOP_LEFT);
-
- // Let it stay there until the user clicks it
- notif.setDelayMsec(-1);
-
- // Show it in the main window.
- main.showNotification(notif);
- return;
- }
-
- main.setLayout(new HorizontalLayout());
-
- final Integer type_humanized = Window.Notification.TYPE_HUMANIZED_MESSAGE;
- final Integer type_warning = Window.Notification.TYPE_WARNING_MESSAGE;
- final Integer type_error = Window.Notification.TYPE_ERROR_MESSAGE;
- final Integer type_tray = Window.Notification.TYPE_TRAY_NOTIFICATION;
- final NativeSelect types = new NativeSelect();
- main.addComponent(types);
- types.addItem(type_humanized);
- types.addItem(type_warning);
- types.addItem(type_error);
- types.addItem(type_tray);
- types.setItemCaption(type_humanized, "Humanized");
- types.setItemCaption(type_warning, "Warning");
- types.setItemCaption(type_error, "Error");
- types.setItemCaption(type_tray, "Tray");
-
- Button show = new Button("Show Notification");
- main.addComponent(show);
-
- show.addListener(new Button.ClickListener() {
- public void buttonClick(ClickEvent event) {
- String caption = "";
- String description = "";
- switch(((Integer)types.getValue()).intValue()) {
- case Window.Notification.TYPE_HUMANIZED_MESSAGE:
- caption = "Humanized message";
- description = "<br/>For minimal annoyance";
- break;
- case Window.Notification.TYPE_WARNING_MESSAGE:
- caption = "Warning message";
- description = "<br/>For notifications of medium importance";
- break;
- case Window.Notification.TYPE_ERROR_MESSAGE:
- caption = "Error message";
- description = "<br/>For important notifications";
- break;
- case Window.Notification.TYPE_TRAY_NOTIFICATION:
- caption = "Tray notification";
- description = "<br/>Stays up longer - but away";
- }
- // main.showNotification("The default notification");
- Window.Notification notif = new Window.Notification(
- caption, description, (Integer)types.getValue());
- //notif.setPosition(Window.Notification.POSITION_TOP_LEFT);
- notif.setDelayMsec(-1);
- main.showNotification(notif);
- }
- });
-
- // Notification notif = new Notification("Title");
- }
-
- void example_Print(final Window main, String param) {
- if (param != null && param.equals("simple")) {
- main
- .addComponent(new Label(
- "<input type='button' onClick='print()' value='Click to Print'/>",
- Label.CONTENT_XHTML));
- return;
- }
-
- // A button to open the printer-friendly page.
- Button printButton = new Button("Click to Print");
- main.addComponent(printButton);
- printButton.addListener(new Button.ClickListener() {
- public void buttonClick(ClickEvent event) {
- // Create a window that contains stuff you want to print.
- Window printWindow = new Window("Window to Print");
-
- // Have some content to print.
- printWindow.addComponent(new Label(
- "Here's some dynamic content."));
-
- // To execute the print() JavaScript, we need to run it
- // from a custom layout.
- CustomLayout scriptLayout = new CustomLayout("printpage");
- printWindow.addComponent(scriptLayout);
-
- // Add the printing window as an application-level window.
- main.getApplication().addWindow(printWindow);
-
- // Open the printing window as a new browser window
- main.open(new ExternalResource(printWindow.getURL()), "_new");
- }
- });
-
- // main.addComponent(new
- // Label("<p>Print this!</p>\n<script type='text/javascript'>print();</script>",
- // Label.CONTENT_XHTML));
- }
-
- void example_RichTextArea(final Window main, String param) {
- main.setLayout(new HorizontalLayout());
-
- // Create a rich text area
- final RichTextArea rtarea = new RichTextArea();
- rtarea.addStyleName("richtextexample");
- // rtarea.setCaption("My Rich Text Area");
-
- // Set initial content as HTML
- rtarea
- .setValue("<h1>Hello</h1>\n<p>This rich text area contains some text.</p>");
-
- // Show the text edited in the rich text area as HTML.
- final Button show = new Button("Show HTML");
- final Label html = new Label((String) rtarea.getValue());
- show.addListener(new Button.ClickListener() {
- public void buttonClick(ClickEvent event) {
- html.setValue(rtarea.getValue());
- }
- });
-
- Panel rtPanel = new Panel("Rich Text Area");
- rtPanel.addComponent(rtarea);
- rtPanel.addComponent(show);
-
- Panel valuePanel = new Panel("Value");
- valuePanel.addComponent(html);
-
- main.addComponent(rtPanel);
- main.addComponent(valuePanel);
- }
-
- void example_QueryContainer(final Window main, String param) {
- try {
- // Create a database connection
- Class.forName("org.hsqldb.jdbcDriver");
- final Connection connection = DriverManager.getConnection(
- "jdbc:hsqldb:mem:qcexample", "sa", "");
-
- // Create an example table and put some data in it.
- Statement st = connection.createStatement();
- st
- .executeQuery("CREATE TABLE Prisoners (id INTEGER, name VARCHAR)");
- st.close();
- for (int i = 0; i < 100; i++) {
- st = connection.createStatement();
- st.executeQuery("INSERT INTO Prisoners (id, name) VALUES (" + i
- + ",'I am number " + (i + 1) + "')");
- st.close();
- }
-
- // Query the database
- final QueryContainer qc = new QueryContainer(
- "SELECT id,name FROM Prisoners", connection);
-
- // Create a component for selecting a query result item.
- Select select = new Select("Select an item");
-
- // The items shown in the selection component are obtained from the
- // query.
- select.setContainerDataSource(qc);
-
- // The item captions are obtained from a field in the query result.
- select.setItemCaptionMode(Select.ITEM_CAPTION_MODE_PROPERTY);
-
- // Set the name of the field from which the item captions are
- // obtained.
- select.setItemCaptionPropertyId("name");
-
- // When selection changes, display the selected item.
- select.setImmediate(true);
- final Label selection = new Label("Currently selected: -");
- select.addListener(new ValueChangeListener() {
- public void valueChange(ValueChangeEvent event) {
- // Get the item id of the currently selected item
- Integer itemId = (Integer) event.getProperty().getValue();
-
- // Use the item ID to get the actual row from the query
- // result.
- Item qrItem = qc.getItem(itemId);
-
- // Display the item ID
- selection.setValue("Currently selected: result row "
- + itemId.intValue() + " (id="
- + qrItem.getItemProperty("id") + ", " + "name="
- + qrItem.getItemProperty("name") + ")");
- }
- });
-
- main.addComponent(select);
- main.addComponent(selection);
- } catch (SQLException e) {
- e.printStackTrace();
- } catch (ClassNotFoundException e) {
- e.printStackTrace();
- }
- }
-
- void example_MenuBar(final Window main, String param) {
- // Create a menu bar
- final MenuBar menubar = new MenuBar();
- main.addComponent(menubar);
-
- // A feedback component
- final Label selection = new Label("");
- main.addComponent(selection);
-
- // Define a common menu command for all the menu items.
- MenuBar.Command mycommand = new MenuBar.Command() {
- public void menuSelected(MenuItem selectedItem) {
- selection.setValue("Ordered a " + selectedItem.getText()
- + " from menu.");
- }
- };
-
- // Put some items in the menu hierarchically
- MenuBar.MenuItem beverages = menubar.addItem("Beverages", null, null);
- MenuBar.MenuItem hot_beverages = beverages.addItem("Hot", null, null);
- hot_beverages.addItem("Tea", null, mycommand);
- hot_beverages.addItem("Coffee", null, mycommand);
- MenuBar.MenuItem cold_beverages = beverages.addItem("Cold", null, null);
- cold_beverages.addItem("Milk", null, mycommand);
-
- // Another top-level item
- MenuBar.MenuItem snacks = menubar.addItem("Snacks", null, null);
- snacks.addItem("Weisswurst", null, mycommand);
- snacks.addItem("Salami", null, mycommand);
-
- // Yet another top-level item
- MenuBar.MenuItem services = menubar.addItem("Services", null, null);
- services.addItem("Car Service", null, mycommand);
- }
+ Window main = new Window("Application window");
+
+ TheButton butts1;
+ TheButtons butts2;
+ TheButtons2 butts3;
+
+ Label mylabel1;
+ Label mylabel2;
+ Label mylabel3;
+
+ StreamResource strres;
+ VerticalLayout ol;
+ int getwincount = 0;
+
+ @Override
+ public void init() {
+ setTheme("tests-book");
+
+ setMainWindow(main);
+
+ // Demo the use of parameter and URI handlers
+ main.addParameterHandler(new MyParameterHandler());
+ main.addURIHandler(new MyURIHandler());
+
+ MyDynamicResource myresource = new MyDynamicResource();
+ main.addParameterHandler(myresource);
+ main.addURIHandler(myresource);
+
+ main.addURIHandler(new BookTestURIHandler());
+ }
+
+ class MyParameterHandler implements ParameterHandler {
+ public void handleParameters(Map parameters) {
+ // Print out the parameters to standard output
+ for (Iterator it = parameters.keySet().iterator(); it.hasNext();) {
+ String key = (String) it.next();
+ String value = ((String[]) parameters.get(key))[0];
+ System.out.println("Key: " + key + ", value: " + value);
+ }
+ }
+ }
+
+ class MyURIHandler implements URIHandler {
+ public DownloadStream handleURI(URL context, String relativeUri) {
+ System.out.println("Context: " + context.toString()
+ + ", relative: " + relativeUri);
+ return null; // Let the Application provide the response
+ }
+ }
+
+ class BookTestURIHandler implements URIHandler {
+ public DownloadStream handleURI(URL context, String relativeUri) {
+ String example;
+ String param = null;
+
+ final int slashPos = relativeUri.indexOf("/");
+ if (slashPos > 0) {
+ example = relativeUri.substring(0, slashPos);
+ param = relativeUri.substring(slashPos + 1);
+ } else {
+ example = relativeUri;
+ }
+
+ /* Remove existing components and windows. */
+ main.removeAllComponents();
+ final Set childwindows = main.getChildWindows();
+ for (final Iterator cwi = childwindows.iterator(); cwi.hasNext();) {
+ final Window child = (Window) cwi.next();
+ main.removeWindow(child);
+ }
+
+ // The index is listed inside a grid layout
+ main.setLayout(new VerticalLayout());
+ GridLayout grid = new GridLayout(4, 4);
+ grid.addStyleName("index");
+ main.addComponent(grid);
+
+ if (example.equals("index")) {
+ final String examples[] = { "defaultbutton", "label",
+ "labelcontent", "tree", "embedded", "textfield",
+ "textfieldvalidation", "datefield", "button",
+ "select/select", "select/native", "select/optiongroup",
+ "select/twincol", "filterselect", "validator", "table",
+ "table/select", "table/component", "table/paging",
+ "table/editable", "upload", "link", "gridlayout",
+ "orderedlayout", "formlayout", "form", "form/simple",
+ "form/layout", "panel", "expandlayout",
+ "expandlayout/root", "tabsheet", "alignment",
+ "alignment/grid", "window", "window/opener",
+ "window/multiple", "classresource", "usererror",
+ "progress/window", "progress/thread", "progress",
+ "customlayout", "spacing", "margin", "clientinfo",
+ "fillinform/templates", "notification", "print",
+ "richtextfield", "querycontainer", "menubar" };
+ for (int i = 0; i < examples.length; i++) {
+ grid.addComponent(new Label("<a href='"
+ + context.toString() + examples[i] + "'>"
+ + examples[i] + "</a>", Label.CONTENT_XHTML));
+ }
+ return null;
+ }
+
+ if (example.equals("defaultbutton")) {
+ example_defaultButton(main, param);
+ } else if (example.equals("label")) {
+ example_Label(main, param);
+ } else if (example.equals("labelcontent")) {
+ example_LabelContent(main, param);
+ } else if (example.equals("tree")) {
+ example_Tree(main, param);
+ } else if (example.equals("embedded")) {
+ example_Embedded(main, param);
+ } else if (example.equals("textfield")) {
+ example_TextField(main, param);
+ } else if (example.equals("textfieldvalidation")) {
+ example_TextFieldValidation(main, param);
+ } else if (example.equals("usererror")) {
+ example_UserError(main, param);
+ } else if (example.equals("datefield")) {
+ example_DateField(main, param);
+ } else if (example.equals("button")) {
+ example_Button(main, param);
+ } else if (example.equals("checkbox")) {
+ example_CheckBox(main, param);
+ } else if (example.equals("select")) {
+ example_Select(main, param);
+ } else if (example.equals("filterselect")) {
+ example_FilterSelect(main, param);
+ } else if (example.equals("validator")) {
+ example_Validator(main, param);
+ } else if (example.equals("table")) {
+ example_Table(main, param);
+ } else if (example.equals("upload")) {
+ example_Upload(main, param);
+ } else if (example.equals("link")) {
+ example_Link(main, param);
+ } else if (example.equals("gridlayout")) {
+ example_GridLayout(main, param);
+ } else if (example.equals("orderedlayout")) {
+ example_OrderedLayout(main, param);
+ } else if (example.equals("formlayout")) {
+ example_FormLayout(main, param);
+ } else if (example.equals("form")) {
+ example_Form(main, param);
+ } else if (example.equals("tabsheet")) {
+ example_TabSheet(main, param);
+ } else if (example.equals("panel")) {
+ example_Panel(main, param);
+ } else if (example.equals("expandlayout")) {
+ example_ExpandLayout(main, param);
+ } else if (example.equals("alignment")) {
+ example_Alignment(main, param);
+ } else if (example.equals("window")) {
+ example_Window(main, param);
+ } else if (example.equals("classresource")) {
+ example_ClassResource(main, param);
+ } else if (example.equals("progress")) {
+ example_ProgressIndicator(main, param);
+ } else if (example.equals("customlayout")) {
+ example_CustomLayout(main, param);
+ } else if (example.equals("spacing")) {
+ example_Spacing(main, param);
+ } else if (example.equals("margin")) {
+ example_Margin(main, param);
+ } else if (example.equals("clientinfo")) {
+ example_ClientInfo(main, param);
+ } else if (example.equals("fillinform")) {
+ example_FillInForm(main, param);
+ } else if (example.equals("notification")) {
+ example_Notification(main, param);
+ } else if (example.equals("print")) {
+ example_Print(main, param);
+ } else if (example.equals("richtextfield")) {
+ example_RichTextArea(main, param);
+ } else if (example.equals("querycontainer")) {
+ example_QueryContainer(main, param);
+ } else if (example.equals("menubar")) {
+ example_MenuBar(main, param);
+ } else {
+ ; // main.addComponent(new
+ // Label("Unknown test '"+example+"'."));
+ }
+
+ return null;
+ }
+ }
+
+ /*
+ * public Window getWindow(String name) { Window superwin =
+ * super.getWindow(name); if (superwin != null) return superwin;
+ *
+ * main.addComponent(new Label("Request 2 for window '"+name+"'.")); if
+ * (name.equals("panel")) { Window window = new Window("Other Window " +
+ * getwincount++); example_Panel(window, null); return window; } return
+ * null; }
+ */
+ public void handleButton(Button.ClickEvent event) {
+ ol.addStyleName("myLayout2");
+ }
+
+ void example_defaultButton(Window main, String param) {
+ main.addComponent(new DefaultButtonExample());
+ }
+
+ void example_Label(Window main, String param) {
+ /* Some container for the Label. */
+ final Panel panel = new Panel("Panel Containing a Label");
+ main.addComponent(panel);
+
+ panel.addComponent(new Label(
+ "This is a Label inside a Panel. There is enough "
+ + "text in the label to make the text wrap if it "
+ + "exceeds the width of the panel."));
+ }
+
+ void example_LabelContent(Window main, String param) {
+ final GridLayout labelgrid = new GridLayout(2, 1);
+ labelgrid.addStyleName("labelgrid");
+ labelgrid.addComponent(new Label("CONTENT_DEFAULT"));
+ labelgrid.addComponent(new Label(
+ "This is a label in default mode: <plain text>",
+ Label.CONTENT_DEFAULT));
+ labelgrid.addComponent(new Label("CONTENT_PREFORMATTED"));
+ labelgrid
+ .addComponent(new Label(
+ "This is a preformatted label.\nThe newline character \\n breaks the line.",
+ Label.CONTENT_PREFORMATTED));
+ labelgrid.addComponent(new Label("CONTENT_RAW"));
+ labelgrid
+ .addComponent(new Label(
+ "This is a label in raw mode.<br>It can contain, for example, unbalanced markup.",
+ Label.CONTENT_RAW));
+ labelgrid.addComponent(new Label("CONTENT_TEXT"));
+ labelgrid.addComponent(new Label(
+ "This is a label in (plain) text mode", Label.CONTENT_TEXT));
+ labelgrid.addComponent(new Label("CONTENT_XHTML"));
+ labelgrid.addComponent(new Label(
+ "<i>This</i> is an <b>XHTML<b> formatted label",
+ Label.CONTENT_XHTML));
+ labelgrid.addComponent(new Label("CONTENT_XML"));
+ labelgrid.addComponent(new Label(
+ "This is an <myelement>XML</myelement> formatted label",
+ Label.CONTENT_XML));
+ main.addComponent(labelgrid);
+
+ final ClassResource labelimage = new ClassResource("smiley.jpg", this);
+ main.addComponent(new Label("Here we have an image <img src=\""
+ + getRelativeLocation(labelimage) + "\"/> within some text.",
+ Label.CONTENT_XHTML));
+ }
+
+ void example_Tree(Window main, String param) {
+ final Object[][] planets = new Object[][] {
+ new Object[] { "Mercury" },
+ new Object[] { "Venus" },
+ new Object[] { "Earth", "The Moon" },
+ new Object[] { "Mars", "Phobos", "Deimos" },
+ new Object[] { "Jupiter", "Io", "Europa", "Ganymedes",
+ "Callisto" },
+ new Object[] { "Saturn", "Titan", "Tethys", "Dione", "Rhea",
+ "Iapetus" },
+ new Object[] { "Uranus", "Miranda", "Ariel", "Umbriel",
+ "Titania", "Oberon" },
+ new Object[] { "Neptune", "Triton", "Proteus", "Nereid",
+ "Larissa" } };
+
+ final Tree tree = new Tree();
+
+ // Add planets as root items in the tree.
+ for (int i = 0; i < planets.length; i++) {
+ final String planet = (String) (planets[i][0]);
+ tree.addItem(planet);
+
+ if (planets[i].length == 1) {
+ // The planet has no moons so make it a leaf.
+ tree.setChildrenAllowed(planet, false);
+ } else {
+ // Add children (moons) under the planets.
+ for (int j = 1; j < planets[i].length; j++) {
+ final String moon = (String) planets[i][j];
+
+ // Add the item as a regular item.
+ tree.addItem(moon);
+
+ // Set it to be a child.
+ tree.setParent(moon, planet);
+
+ // Make the moons look like leaves.
+ tree.setChildrenAllowed(moon, false);
+ }
+
+ // Expand the subtree.
+ tree.expandItemsRecursively(planet);
+ }
+ }
+
+ // Horizontal layout with the tree on the left and a details panel on
+ // the right.
+ final HorizontalLayout horlayout = new HorizontalLayout();
+ horlayout.addStyleName("treeexample");
+ horlayout.setSizeFull();
+
+ final Panel treepanel = new Panel("The Planets and Major Moons");
+ treepanel.addComponent(tree);
+ horlayout.addComponent(treepanel);
+
+ final Panel detailspanel = new Panel("Details");
+ horlayout.addComponent(detailspanel);
+ horlayout.setExpandRatio(detailspanel, 1);
+
+ final VerticalLayout detailslayout = new VerticalLayout();
+ detailspanel.setLayout(detailslayout);
+
+ // Allow null selection - this is the default actually.
+ tree.setNullSelectionAllowed(true);
+
+ // When a tree item (planet or moon) is clicked, open the item in
+ // Details view.
+ tree.setImmediate(true);
+ tree.addListener(new ValueChangeListener() {
+ String lastselected = null;
+
+ public void valueChange(ValueChangeEvent event) {
+ String planet = (String) tree.getValue();
+
+ // Reselect a selected item if it is unselected by clicking it.
+ if (planet == null) {
+ planet = lastselected;
+ tree.setValue(planet);
+ }
+ lastselected = planet;
+
+ detailspanel.setCaption("Details on " + planet);
+ detailslayout.removeAllComponents();
+
+ // Put some stuff in the Details view.
+ detailslayout.addComponent(new Label("Where is the cat?"));
+ detailslayout.addComponent(new Label("The cat is in " + planet
+ + "."));
+
+ }
+ });
+
+ main.setLayout(horlayout);
+ }
+
+ void example_Select(Window main, String param) {
+ final HorizontalLayout layout = new HorizontalLayout();
+ layout.addStyleName("aligntop");
+
+ if (param.equals("twincol")) {
+ final SelectExample select1 = new SelectExample(this, param,
+ "Select some items", true);
+ layout.addComponent(select1);
+ } else if (param.equals("filter")) {
+ final SelectExample select1 = new SelectExample(this, param,
+ "Enter containing substring", false);
+ layout.addComponent(select1);
+ } else {
+ final SelectExample select1 = new SelectExample(this, param,
+ "Single Selection Mode", false);
+ final SelectExample select2 = new SelectExample(this, param,
+ "Multiple Selection Mode", true);
+ layout.addComponent(select1);
+ layout.addComponent(select2);
+ }
+ main.addComponent(layout);
+ }
+
+ void example_FilterSelect(Window main, String param) {
+ final Select select = new Select("Enter containing substring");
+ main.addComponent(select);
+
+ select
+ .setFilteringMode(AbstractSelect.Filtering.FILTERINGMODE_CONTAINS);
+
+ /* Fill the component with some items. */
+ final String[] planets = new String[] { "Mercury", "Venus", "Earth",
+ "Mars", "Jupiter", "Saturn", "Uranus", "Neptune" };
+
+ for (int i = 0; i < planets.length; i++) {
+ for (int j = 0; j < planets.length; j++) {
+ select.addItem(planets[j] + " to " + planets[i]);
+ }
+ }
+ }
+
+ void example_TextField(Window main, String param) {
+ /* Add a single-line text field. */
+ final TextField subject = new TextField("Subject");
+ subject.setColumns(40);
+ main.addComponent(subject);
+
+ /* Add a multi-line text field. */
+ final TextField message = new TextField("Message");
+ message.setRows(7);
+ message.setColumns(40);
+ main.addComponent(message);
+ }
+
+ void example_TextFieldValidation(Window main, String param) {
+ // Create a text field with a label
+ final TextField username = new TextField("Username");
+ main.addComponent(username);
+
+ // Set visible length to 16 characters
+ username.setColumns(16);
+
+ // Set content length to minimum of 6 and maximum of 16 characters.
+ // The string also may not be null.
+ username.addValidator(new StringLengthValidator(
+ "Must be 6 to 16 characters long", 6, 16, false));
+
+ // Setting component immediate causes a ValueChangeEvent to occur
+ // when the TextField loses focus.
+ username.setImmediate(true);
+
+ // Listen for ValueChangeEvents and handle them
+ username.addListener(new ValueChangeListener() {
+ public void valueChange(ValueChangeEvent event) {
+ // Get the source of the event
+ final TextField username = (TextField) (event.getProperty());
+
+ try {
+ // Validate the field value.
+ username.validate();
+ } catch (final Validator.InvalidValueException e) {
+ // The value was not ok. The error was set.
+ }
+ }
+ });
+ }
+
+ void example_UserError(final Window main, String param) {
+ if (param != null) {
+ if (param.equals("form")) {
+
+ final FormLayout layout = new FormLayout();
+ main.addComponent(layout);
+
+ final TextField textfield = new TextField("Enter code");
+ layout.addComponent(textfield);
+ textfield.setComponentError(null);
+
+ final Button button = new Button("Ok!");
+ layout.addComponent(button);
+
+ button.addListener(new Button.ClickListener() {
+ public void buttonClick(ClickEvent event) {
+ if (((String) textfield.getValue()).length() == 0) {
+ textfield.setComponentError(new UserError(
+ "Must be letters and numbers."));
+ } else {
+ textfield.setComponentError(null);
+ }
+ }
+ });
+ }
+ } else {
+ main.setLayout(new HorizontalLayout());
+
+ // Create a field.
+ final TextField textfield = new TextField("Enter code");
+ main.addComponent(textfield);
+
+ // Let the component error be initially clear. (It actually is by
+ // default.)
+ textfield.setComponentError(null);
+
+ // Have a button right of the field (and align it properly).
+ final Button button = new Button("Ok!");
+ main.addComponent(button);
+ ((HorizontalLayout) main.getLayout()).setComponentAlignment(button,
+ HorizontalLayout.ALIGNMENT_LEFT,
+ HorizontalLayout.ALIGNMENT_BOTTOM);
+
+ // Handle button clicks
+ button.addListener(new Button.ClickListener() {
+ public void buttonClick(ClickEvent event) {
+ // If the field value is bad, set its error.
+ // (Here the content must be only alphanumeric characters.)
+ if (!((String) textfield.getValue()).matches("^\\w*$")) {
+ // Put the component in error state and set the error
+ // message.
+ textfield.setComponentError(new UserError(
+ "Must be letters and numbers"));
+ } else {
+ // Otherwise clear it.
+ textfield.setComponentError(null);
+ }
+ }
+ });
+ }
+ }
+
+ void example_DateField(Window main, String param) {
+ HorizontalLayout layout = new HorizontalLayout();
+
+ /* Create a DateField with the calendar style. */
+ final DateField popupdate = new PopupDateField("Popup calendar field");
+
+ /* Set resolution of the date/time display. */
+ popupdate.setResolution(DateField.RESOLUTION_MIN);
+
+ /* Set the date and time to present. */
+ popupdate.setValue(new java.util.Date());
+
+ /* Create a DateField with the calendar style. */
+ final DateField inlinedate = new InlineDateField(
+ "Inline calendar field");
+
+ /* Set locale of the DateField to American English. */
+ inlinedate.setLocale(new Locale("en", "US"));
+
+ /* Set the date and time to present. */
+ inlinedate.setValue(new java.util.Date());
+
+ /* Set resolution of the date/time display. */
+ inlinedate.setResolution(DateField.RESOLUTION_MIN);
+
+ layout.addComponent(popupdate);
+ layout.addComponent(inlinedate);
+ layout.setSpacing(true);
+ main.addComponent(layout);
+ }
+
+ void example_Validator(Window main, String param) {
+ if (param != null && param.equals("required")) {
+ Form form = new Form();
+ form.setCaption("My Form");
+ form.setRequired(true);
+ main.addComponent(form);
+
+ TextField text = new TextField("This is a required text field");
+ text.setRequired(true);
+ text.setImmediate(true);
+ form.getLayout().addComponent(text);
+ return;
+ }
+ main.addComponent(new SSNField());
+ }
+
+ class PagingTable extends Table {
+ @Override
+ public String getTag() {
+ return "pagingtable";
+ }
+ }
+
+ void example_Table(Window main, String param) {
+ if (param != null) {
+ if (param.equals("select")) {
+ main.addComponent(new TableExample2());
+ } else if (param.equals("component")) {
+ main.addComponent(new TableExample3());
+ } else if (param.equals("editable")) {
+ main.addComponent(new TableEditable());
+ } else if (param.equals("bean")) {
+ main.addComponent(new TableEditableBean());
+ } else if (param.equals("long")) {
+ main.addComponent(new TableExample());
+ } else if (param.equals("cellstyle")) {
+ main.addComponent(new TableCellStyle());
+ } else if (param.equals("huge")) {
+ main.addComponent(new TableHuge());
+ } else if (param.equals("paging")) {
+ PagingTable table = new PagingTable();
+ table.addContainerProperty("Column 1", String.class, null);
+ for (int i = 0; i < 100; i++) {
+ table.addItem(new Object[] { "Item " + i }, new Integer(i));
+ }
+ main.addComponent(table);
+ }
+ } else {
+ main.addComponent(new TableExample1());
+ }
+ }
+
+ void example_Upload(Window main, String param) {
+ main.addComponent(new MyUploader());
+ }
+
+ void example_Link(Window main, String param) {
+
+ /* Create a link that opens the popup window. */
+ final Link alink = new Link();
+
+ /* Set the resource to be opened in the window. */
+ alink.setResource(new ExternalResource("http://www.itmill.com/"));
+
+ main.addComponent(alink);
+
+ final ClassResource mydocument = new ClassResource("mydocument.pdf",
+ this);
+ main.addComponent(new Link("The document (pdf)", mydocument));
+ main.addComponent(new Link("link to a resource", new ExternalResource(
+ "http://www.itmill.com/")));
+ }
+
+ void example_Button(Window main, String param) {
+ if (param != null) {
+ if (param.equals("buttons")) {
+ main.addComponent(new TheButton());
+ }
+ return;
+ }
+
+ // butts1 = new TheButton ();
+ // main.addComponent(butts1);
+
+ // butts2 = new TheButtons (main);
+ // butts3 = new TheButtons2 (main);
+
+ // Button checkbox = new Button ("This is a checkbox");
+
+ // main.addComponent(checkbox);
+ final Button button = new Button("My Button");
+ main.addComponent(button);
+ }
+
+ void example_CheckBox(Window main, String param) {
+ /* A check box with default state (not checked, i.e., false). */
+ final CheckBox checkbox1 = new CheckBox("My CheckBox");
+ checkbox1.addStyleName("mybox");
+ main.addComponent(checkbox1);
+
+ /* Another check box with explicitly set checked state. */
+ final CheckBox checkbox2 = new CheckBox("Checked CheckBox");
+ /*
+ * @TODO: Build fails here, why? checkbox2.setValue(true);
+ */
+ main.addComponent(checkbox2);
+
+ /*
+ * Make some application logic. We use anynymous listener classes here.
+ * The above references were defined as "final" to allow accessing them
+ * from inside anonymous classes.
+ */
+ checkbox1.addListener(new ValueChangeListener() {
+ public void valueChange(ValueChangeEvent event) {
+ /* Copy the value to the other checkbox. */
+ checkbox2.setValue(checkbox1.getValue());
+ }
+ });
+ checkbox2.addListener(new ValueChangeListener() {
+ public void valueChange(ValueChangeEvent event) {
+ /* Copy the value to the other checkbox. */
+ checkbox1.setValue(checkbox2.getValue());
+ }
+ });
+ }
+
+ void example_Panel(Window main, String param) {
+ // Create a panel with a caption.
+ final Panel panel = new Panel("Contact Information");
+
+ // Create a layout inside the panel
+ final FormLayout form = new FormLayout();
+
+ // Set the layout as the root layout of the panel
+ panel.setLayout(form);
+
+ // Add some components
+ form.addComponent(new TextField("Name"));
+ form.addComponent(new TextField("Email"));
+
+ // Add the panel to the main window
+ final ClassResource icon = new ClassResource("smiley.jpg", main
+ .getApplication());
+ form.addComponent(new Embedded("Image", icon));
+ panel.setIcon(icon);
+ panel.addComponent(form);
+ main.addComponent(panel);
+ }
+
+ void example_GridLayout(Window main, String param) {
+ if (param.equals("embedded")) {
+ final GridLayout grid = new GridLayout(3, 3);
+ for (int i = 0; i < 3 * 3; i++) {
+ ClassResource img = new ClassResource("smiley.jpg", main
+ .getApplication());
+ Embedded embedded = new Embedded("", img);
+ grid.addComponent(embedded);
+ }
+ main.addComponent(grid);
+ return;
+ }
+ /* Create a 4 by 4 grid layout. */
+ final GridLayout grid = new GridLayout(4, 4);
+ grid.addStyleName("example-gridlayout");
+
+ /* Fill out the first row using the cursor. */
+ grid.addComponent(new Button("R/C 1"));
+ for (int i = 0; i < 3; i++) {
+ grid.addComponent(new Button("Col " + (grid.getCursorX() + 1)));
+ }
+
+ /* Fill out the first column using coordinates. */
+ for (int i = 1; i < 4; i++) {
+ grid.addComponent(new Button("Row " + i), 0, i);
+ }
+
+ /* Add some components of various shapes. */
+ grid.addComponent(new Button("3x1 button"), 1, 1, 3, 1);
+ grid.addComponent(new Label("1x2 cell"), 1, 2, 1, 3);
+ final InlineDateField date = new InlineDateField("A 2x2 date field");
+ date.setResolution(DateField.RESOLUTION_DAY);
+ grid.addComponent(date, 2, 2, 3, 3);
+
+ main.addComponent(grid);
+ }
+
+ void example_Alignment(Window main, String param) {
+ if (param.equals("grid")) {
+ /* Create a 3 by 3 grid layout. */
+ final GridLayout layout = new GridLayout(3, 3);
+ // OrderedLayout layout = new
+ // OrderedLayout(OrderedLayout.ORIENTATION_VERTICAL);
+ main.setLayout(layout);
+ layout.addStyleName("example-alignment");
+
+ layout.setWidth(400, Sizeable.UNITS_PIXELS);
+ layout.setHeight(400, Sizeable.UNITS_PIXELS);
+
+ /* Define cells and their layouts to create. */
+
+ Object cells[][] = {
+ { new Button("Top Left"),
+ new Integer(AlignmentHandler.ALIGNMENT_LEFT),
+ new Integer(AlignmentHandler.ALIGNMENT_TOP) },
+ {
+ new Label("Top Center"),
+ new Integer(
+ AlignmentHandler.ALIGNMENT_HORIZONTAL_CENTER),
+ new Integer(AlignmentHandler.ALIGNMENT_TOP) },
+ { new Label("Top Right"),
+ new Integer(AlignmentHandler.ALIGNMENT_RIGHT),
+ new Integer(AlignmentHandler.ALIGNMENT_TOP) },
+ {
+ new Button("Center Left"),
+ new Integer(AlignmentHandler.ALIGNMENT_LEFT),
+ new Integer(
+ AlignmentHandler.ALIGNMENT_VERTICAL_CENTER) },
+ {
+ new Button("Center Center"),
+ new Integer(
+ AlignmentHandler.ALIGNMENT_HORIZONTAL_CENTER),
+ new Integer(
+ AlignmentHandler.ALIGNMENT_VERTICAL_CENTER) },
+ {
+ new Button("Center Right"),
+ new Integer(AlignmentHandler.ALIGNMENT_RIGHT),
+ new Integer(
+ AlignmentHandler.ALIGNMENT_VERTICAL_CENTER) },
+ { new Button("Bottom Left"),
+ new Integer(AlignmentHandler.ALIGNMENT_LEFT),
+ new Integer(AlignmentHandler.ALIGNMENT_BOTTOM) },
+ {
+ new Button("Bottom Center"),
+ new Integer(
+ AlignmentHandler.ALIGNMENT_HORIZONTAL_CENTER),
+ new Integer(AlignmentHandler.ALIGNMENT_BOTTOM) },
+ { new Button("Bottom Right"),
+ new Integer(AlignmentHandler.ALIGNMENT_RIGHT),
+ new Integer(AlignmentHandler.ALIGNMENT_BOTTOM) } };
+
+ for (int i = 0; i < 9; i++) {
+ HorizontalLayout celllayout = new HorizontalLayout();
+ celllayout.addComponent((Component) cells[i][0]);
+ if (i == 0) {
+ celllayout.setExpandRatio((Component) cells[i][0], 1);
+ }
+
+ celllayout.setComponentAlignment((Component) cells[i][0],
+ ((Integer) cells[i][1]).intValue(),
+ ((Integer) cells[i][2]).intValue());
+ layout.addComponent(celllayout);
+ // layout.setComponentAlignment((Component)cells[i][0],
+ // ((Integer)cells[i][1]).intValue(),
+ // ((Integer)cells[i][2]).intValue());
+ }
+ } else {
+ final Panel panel = new Panel("A Panel with a Layout");
+ main.addComponent(panel);
+
+ // panel.addComponent(new )
+ }
+ }
+
+ void example_OrderedLayout(Window main, String param) {
+ final VerticalLayout layout = new VerticalLayout();
+ layout.addComponent(new TextField("Name"));
+ layout.addComponent(new TextField("Street address"));
+ layout.addComponent(new TextField("Postal code"));
+ main.addComponent(layout);
+ }
+
+ void example_FormLayout(Window main, String param) {
+ final FormLayout layout = new FormLayout();
+ layout.addComponent(new TextField("Text Field"));
+ layout.addComponent(new CheckBox("Check Box"));
+ layout.addComponent(new Select("Select"));
+ main.addComponent(layout);
+ }
+
+ void example_Form(Window main, String param) {
+ if (param != null && param.equals("simple")) {
+ main.addComponent(new FormExample2());
+ } else if (param != null && param.equals("layout")) {
+ Form form = new Form();
+ form.setCaption("Form Caption");
+ form
+ .setDescription("This is a description of the Form that is "
+ + "displayed in the upper part of the form. You normally enter some "
+ + "descriptive text about the form and its use here.");
+
+ // Add a field directly to the layout. This field will not be bound
+ // to
+ // the data source Item of the form.
+ form.getLayout().addComponent(new TextField("A Field"));
+
+ // Add a field and bind it to an named item property.
+ form.addField("another", new TextField("Another Field"));
+
+ form.setComponentError(new UserError(
+ "This is the error indicator of the Form."));
+
+ // Set the footer layout and add some text.
+ form.setFooter(new VerticalLayout());
+ form
+ .getFooter()
+ .addComponent(
+ new Label(
+ "This is the footer area of the Form. "
+ + "You can use any layout here. This is nice for buttons."));
+
+ // Add an Ok (commit), Reset (discard), and Cancel buttons for the
+ // form.
+ HorizontalLayout okbar = new HorizontalLayout();
+ okbar.setHeight("25px");
+ Button okbutton = new Button("OK", form, "commit");
+ okbar.addComponent(okbutton);
+ okbar.setExpandRatio(okbutton, 1);
+ okbar.setComponentAlignment(okbutton,
+ AlignmentHandler.ALIGNMENT_RIGHT,
+ AlignmentHandler.ALIGNMENT_TOP);
+ okbar.addComponent(new Button("Reset", form, "discard"));
+ okbar.addComponent(new Button("Cancel"));
+ form.getFooter().addComponent(okbar);
+
+ main.addComponent(form);
+ } else {
+ main.addComponent(new FormExample());
+ }
+ }
+
+ void example_ExpandLayout(Window main, String param) {
+ if (param != null && param.equals("centered")) {
+ Label widget = new Label("Here is text");
+
+ HorizontalLayout layout = new HorizontalLayout();
+ layout.addComponent(widget);
+ layout.setExpandRatio(widget, 1);
+ layout.setComponentAlignment(widget,
+ AlignmentHandler.ALIGNMENT_HORIZONTAL_CENTER,
+ AlignmentHandler.ALIGNMENT_VERTICAL_CENTER);
+ layout.setWidth(100, Sizeable.UNITS_PERCENTAGE);
+ layout.setHeight(100, Sizeable.UNITS_PERCENTAGE);
+
+ main.setLayout(layout);
+
+ return;
+ } else if (param != null && param.equals("window")) {
+ Window window = new Window("Progress");
+ window.setHeight(100, Sizeable.UNITS_PIXELS);
+ window.setWidth(200, Sizeable.UNITS_PIXELS);
+ main.addWindow(window);
+
+ ProgressIndicator progress = new ProgressIndicator(new Float(0.4));
+ progress.addStyleName("fullwidth");
+ progress.setPollingInterval(1000000);
+ progress.setIndeterminate(false);
+
+ HorizontalLayout layout = new HorizontalLayout();
+ layout.setHeight(100, Sizeable.UNITS_PERCENTAGE);
+ layout.setComponentAlignment(progress,
+ HorizontalLayout.ALIGNMENT_HORIZONTAL_CENTER,
+ HorizontalLayout.ALIGNMENT_VERTICAL_CENTER);
+ window.setLayout(layout);
+ window.addComponent(progress);
+
+ return;
+ } else if (param != null && param.equals("root")) {
+ final Window mainwin = main;
+
+ // Layout to switch to
+ final VerticalLayout expand2 = new VerticalLayout();
+ expand2.addComponent(new Label("I am layout too."));
+
+ // Original layout
+ final VerticalLayout expand1 = new VerticalLayout();
+ Button switchButton = new Button("Switch to other layout");
+ switchButton.addListener(new Button.ClickListener() {
+ public void buttonClick(ClickEvent event) {
+ mainwin.setLayout(null);
+ mainwin.setLayout(expand2);
+ }
+ });
+ expand1.addComponent(switchButton);
+ main.setLayout(expand1);
+
+ return;
+ } else if (param != null && param.equals("size")) {
+ VerticalLayout layout = new VerticalLayout();
+ layout.setSizeFull();
+ main.setLayout(layout);
+
+ Button button = new Button("This is a button in middle of nowhere");
+ layout.addComponent(button);
+ layout.setComponentAlignment(button,
+ VerticalLayout.ALIGNMENT_HORIZONTAL_CENTER,
+ VerticalLayout.ALIGNMENT_VERTICAL_CENTER);
+ layout.setExpandRatio(button, 1.0f);
+ return;
+ }
+
+ for (int w = 0; w < 2; w++) {
+ final VerticalLayout layout = new VerticalLayout();
+
+ /* Set the expanding layout as the root layout of a child window. */
+ final Window window = new Window("A Child Window", layout);
+ main.addWindow(window);
+
+ /* Add some component above the expanding one. */
+ layout.addComponent(new Label("Here be some component."));
+
+ /* Create the expanding component. */
+ final Table table = new Table("My Ever-Expanding Table");
+ /*
+ * FIXME Java 5 -> 1.4 for (int i=0; i<5; i++)
+ * table.addContainerProperty("col "+(i+1), Integer.class, 0); for
+ * (int j=0; j<20; j++) table.addItem(new Object[]{1j,2j,3j,4j,5j},
+ * j);
+ */
+ layout.addComponent(table);
+
+ /* Designate the table to be the expanding component. */
+ layout.setExpandRatio(table, 1.0f);
+
+ /* Set it to use all available area. */
+ table.setSizeFull();
+
+ /* Add some component below the expanding one. */
+ final Button button2 = new Button("Ok");
+ layout.addComponent(button2);
+ layout.setComponentAlignment(button2,
+ AlignmentHandler.ALIGNMENT_RIGHT, 0);
+ }
+ }
+
+ void example_TabSheet(Window main, String param) {
+ if (param.equals("icon")) {
+ final TabSheet tabsheet = new TabSheet();
+
+ tabsheet.addTab(new Label("Contents of the first tab"),
+ "First Tab", new ClassResource("images/Mercury_small.png",
+ main.getApplication()));
+ tabsheet.addTab(new Label("Contents of the second tab"),
+ "Second Tab", new ClassResource("images/Venus_small.png",
+ this));
+ tabsheet.addTab(new Label("Contents of the third tab"),
+ "Third tab", new ClassResource("images/Earth_small.png",
+ this));
+
+ main.addComponent(tabsheet);
+ // main.addComponent(new Embedded("Emb", new ClassResource
+ // ("images/Mercury_small.png", this)));
+ } else if (param.equals("expanding")) {
+ // Create the layout
+ VerticalLayout expanding = new VerticalLayout();
+
+ // It is important to set the expanding layout as the root layout
+ // of the containing window, in this case the main window, and not
+ // use addComponent(), which would place the layout inside the
+ // default root layout.
+ main.setLayout(expanding);
+
+ // Create a tab sheet that fills the expanding layout
+ final TabSheet tabsheet = new TabSheet();
+ tabsheet.addTab(new Label("Contents of the first tab"),
+ "First Tab", null);
+ tabsheet.addTab(new Label("Contents of the second tab"),
+ "Second Tab", null);
+ tabsheet.addTab(new Label("Contents of the third tab"),
+ "Third tab", null);
+
+ // Set the tabsheet to scale to full size inside its container
+ tabsheet.setWidth(100, Sizeable.UNITS_PERCENTAGE);
+ tabsheet.setHeight(100, Sizeable.UNITS_PERCENTAGE);
+
+ // Add the tab sheet to the layout as usual
+ expanding.addComponent(tabsheet);
+
+ // Set the tab sheet to be the expanding component
+ expanding.setExpandRatio(tabsheet, 1);
+ } else if (param.equals("ordered")) {
+ // Create the layout
+ VerticalLayout layout = new VerticalLayout();
+
+ // It is important to set the expanding layout as the root layout
+ // of the containing window, in this case the main window, and not
+ // use addComponent(), which would place the layout inside the
+ // default root layout.
+ main.setLayout(layout);
+
+ // Create a tab sheet that fills the expanding layout
+ final TabSheet tabsheet = new TabSheet();
+ tabsheet.addTab(new Label("Contents of the first tab"),
+ "First Tab", null);
+ tabsheet.addTab(new Label("Contents of the second tab"),
+ "Second Tab", null);
+ tabsheet.addTab(new Label("Contents of the third tab"),
+ "Third tab", null);
+
+ // Set the tabsheet to scale to full size inside its container
+ tabsheet.setWidth(100, Sizeable.UNITS_PERCENTAGE);
+ // tabsheet().setHeight(100, Sizeable.UNITS_PERCENTAGE);
+
+ // Add the tab sheet to the layout as usual
+ layout.addComponent(tabsheet);
+ } else {
+ main.addComponent(new TabSheetExample());
+ }
+ }
+
+ void example_Embedded(Window main, String param) {
+ final Embedded image = new Embedded("", new ClassResource("smiley.jpg",
+ this));
+ image.addStyleName("omaimage");
+ main.addComponent(image);
+
+ final EmbeddedButton button = new EmbeddedButton(new ClassResource(
+ "smiley.jpg", this));
+ main.addComponent(button);
+ }
+
+ void example_Window(Window main, String param) {
+ if (param != null) {
+ if (param.equals("opener")) {
+ main.addComponent(new WindowOpener("Window Opener", main));
+ } else if (param.equals("multiple")) {
+ /* Create a new window. */
+ final Window mywindow = new Window("Second Window");
+ mywindow.setName("mywindow");
+ mywindow.addComponent(new Label("This is a second window."));
+
+ /* Add the window to the application. */
+ main.getApplication().addWindow(mywindow);
+
+ /* Add link to the second window in the main window. */
+ main.addComponent(new Label("Second window: <a href='"
+ + mywindow.getURL() + "'>middle-click to open</a>",
+ Label.CONTENT_XHTML));
+ main.addComponent(new Label(
+ "The second window can be accessed through URL: "
+ + mywindow.getURL()));
+ }
+ return;
+ }
+
+ /* Create a new window. */
+ final Window mywindow = new Window("My Window");
+ mywindow.setName("mywindow");
+
+ /* Add some components in the window. */
+ mywindow.addComponent(new Label("A text label in the window."));
+ final Button okbutton = new Button("OK");
+ mywindow.addComponent(okbutton);
+
+ /* Set window size. */
+ mywindow.setHeight("200px");
+ mywindow.setWidth("400px");
+
+ /* Set window position. */
+ mywindow.setPositionX(200);
+ mywindow.setPositionY(50);
+
+ /* Add the window to the Application object. */
+ main.addWindow(mywindow);
+
+ }
+
+ void example_ClassResource(Window main, String param) {
+ final DateField df = new DateField();
+ main.addComponent(df);
+ df.setIcon(new ClassResource("smiley.jpg", main.getApplication()));
+ main.addComponent(new Embedded("This is Embedded", new ClassResource(
+ "smiley.jpg", main.getApplication())));
+ }
+
+ void example_ProgressIndicator(final Window main, String param) {
+ if (param != null) {
+ if (param.equals("thread")) {
+
+ // Create the indicator
+ final ProgressIndicator indicator = new ProgressIndicator(
+ new Float(0.0));
+ main.addComponent(indicator);
+
+ // Set polling frequency to 0.5 seconds.
+ indicator.setPollingInterval(1000);
+
+ // indicator.addStyleName("invisible");
+ final Label text = new Label("-- Not running --");
+ main.addComponent(text);
+
+ // Add a button to start the progress
+ final Button button = new Button("Click to start");
+ main.addComponent(button);
+
+ // Another thread to do some work
+ class WorkThread extends Thread {
+ @Override
+ public void run() {
+ double current = 0.0;
+ while (true) {
+ // Do some "heavy work"
+ try {
+ sleep(50); // Sleep for 50 milliseconds
+ } catch (InterruptedException e) {
+ }
+
+ // Grow the progress value until it reaches 1.0.
+ current += 0.01;
+ if (current > 1.0) {
+ indicator.setValue(new Float(1.0));
+ } else {
+ indicator.setValue(new Float(current));
+ }
+
+ // After the progress is full for a while, stop.
+ if (current > 1.2) {
+ // Restore the state to initial.
+ indicator.setValue(new Float(0.0));
+ button.setVisible(true);
+ break;
+ }
+ }
+ }
+ }
+
+ // Clicking the button creates and runs a work thread
+ button.addListener(new Button.ClickListener() {
+ public void buttonClick(ClickEvent event) {
+ final WorkThread thread = new WorkThread();
+ thread.start();
+
+ // The button hides until the work is done.
+ button.setVisible(false);
+ }
+ });
+ } else if (param.equals("window")) {
+ // Create a table in the main window to hold items added in the
+ // second window
+ final Table table = new Table();
+ table.setPageLength(5);
+ table.setWidth(100, Sizeable.UNITS_PERCENTAGE);
+ table.addContainerProperty("Name", String.class, "");
+ main.addComponent(table);
+
+ // Create the second window
+ final Window adderWindow = new Window("Add Items");
+ adderWindow.setName("win-adder");
+ main.getApplication().addWindow(adderWindow);
+
+ // Create selection component to add items to the table
+ final NativeSelect select = new NativeSelect(
+ "Select item to add");
+ select.setImmediate(true);
+ adderWindow.addComponent(select);
+
+ // Add some items to the selection
+ String items[] = new String[] { "-- Select --", "Mercury",
+ "Venus", "Earth", "Mars", "Jupiter", "Saturn",
+ "Uranus", "Neptune" };
+ for (int i = 0; i < items.length; i++) {
+ select.addItem(items[i]);
+ }
+ select.setNullSelectionItemId(items[0]);
+
+ // When an item is selected in the second window, add
+ // table in the main window
+ select.addListener(new ValueChangeListener() {
+ public void valueChange(ValueChangeEvent event) {
+ // If the selected value is something else but null
+ // selection item.
+ if (select.getValue() != null) {
+ // Add the selected item to the table in the main
+ // window
+ table.addItem(new Object[] { select.getValue() },
+ new Integer(table.size()));
+ }
+ }
+ });
+
+ // Link to open the selection window
+ Link link = new Link("Click to open second window",
+ new ExternalResource(adderWindow.getURL()), "_new", 50,
+ 200, Link.TARGET_BORDER_DEFAULT);
+ main.addComponent(link);
+
+ // Enable polling to update the main window
+ ProgressIndicator poller = new ProgressIndicator();
+ poller.addStyleName("invisible");
+ main.addComponent(poller);
+ } else if (param.equals("centered")) {
+ /*
+ * GridLayout grid = new GridLayout(3,3); main.setLayout(grid);
+ * grid().setWidth(100, Sizeable.UNITS_PERCENTAGE);
+ *
+ * ExpandLayout layout2 = new
+ * ExpandLayout(OrderedLayout.ORIENTATION_HORIZONTAL);
+ * layout2().setWidth(50, Sizeable.UNITS_PERCENTAGE);
+ *
+ * ProgressIndicator poller = new ProgressIndicator(new
+ * Float(0.4)); poller.setPollingInterval(1000000);
+ * poller.setIndeterminate(false); layout2.addComponent(poller);
+ *
+ * grid.addComponent(layout2, 1, 1);
+ */
+
+ // ExpandLayout layout2 = new
+ // ExpandLayout(OrderedLayout.ORIENTATION_HORIZONTAL);
+ /*
+ * ProgressIndicator poller = new ProgressIndicator(new
+ * Float(0.4)); poller.setPollingInterval(1000000);
+ * poller.setIndeterminate(false);
+ */
+ /*
+ * layout2.addComponent(poller); layout2().setWidth(50,
+ * Sizeable.UNITS_PERCENTAGE);
+ */
+
+ // layout.setComponentAlignment(poller,
+ // AlignmentHandler.ALIGNMENT_HORIZONTAL_CENTER,
+ // AlignmentHandler.ALIGNMENT_VERTICAL_CENTER);
+ /*
+ * GridLayout grid = new GridLayout(1,1);
+ * grid.addComponent(layout2, 0, 0); grid().setWidth(100,
+ * Sizeable.UNITS_PERCENTAGE);
+ */
+
+ /*
+ * GridLayout layout = new GridLayout(1,1);
+ * //OrderedLayout.ORIENTATION_HORIZONTAL);
+ * layout.addComponent(poller); //layout.expand(poller);
+ * layout.setComponentAlignment(poller,
+ * AlignmentHandler.ALIGNMENT_HORIZONTAL_CENTER,
+ * AlignmentHandler.ALIGNMENT_VERTICAL_CENTER);
+ * layout().setWidth(100, Sizeable.UNITS_PERCENTAGE);
+ * layout().setHeight(100, Sizeable.UNITS_PERCENTAGE);
+ */
+
+ }
+ } else {
+ ProgressIndicator poller = new ProgressIndicator(new Float(0.0));
+ poller.setPollingInterval(1000000);
+ poller.setIndeterminate(true);
+ main.addComponent(poller);
+ }
+ }
+
+ void example_CustomLayout(final Window main, String param) {
+ Window sub = new Window("Login");
+ sub.setModal(true);
+ main.addWindow(sub);
+
+ // Create the custom layout and set it as the root layout of
+ // the containing window.
+ final CustomLayout custom = new CustomLayout("layoutname");
+ sub.setLayout(custom);
+
+ // Create components and bind them to the location tags
+ // in the custom layout.
+ TextField username = new TextField();
+ custom.addComponent(username, "username");
+
+ TextField password = new TextField();
+ custom.addComponent(password, "password");
+
+ final Button ok = new Button("Login");
+ custom.addComponent(ok, "okbutton");
+
+ final Button deny = new Button("No can do!");
+
+ Button.ClickListener listener = new Button.ClickListener() {
+ public void buttonClick(ClickEvent event) {
+ // Switch between ok and deny
+ if (custom.getComponent("okbutton") == ok) {
+ System.out.println("Changing to deny button.");
+ custom.addComponent(deny, "okbutton");
+ } else {
+ System.out.println("Changing to ok button.");
+ custom.addComponent(ok, "okbutton");
+ }
+ }
+ };
+
+ ok.addListener(listener);
+ deny.addListener(listener);
+ }
+
+ void example_Spacing(final Window main, String param) {
+ VerticalLayout containinglayout = new VerticalLayout();
+ main.setLayout(containinglayout);
+
+ GridLayout grid = new GridLayout(4, 3);
+ grid.addStyleName("spacingexample");
+ containinglayout.addComponent(grid);
+ grid.addComponent(new Label(""), 0, 0);
+ grid.addComponent(new Label(""), 1, 0);
+
+ grid.addComponent(new Label("No spacing:"), 0, 1);
+ HorizontalLayout layout1 = new HorizontalLayout();
+ grid.addComponent(layout1, 1, 1);
+ layout1.addStyleName("spacingexample");
+ layout1.addComponent(new Button("Component 1"));
+ layout1.addComponent(new Button("Component 2"));
+ layout1.addComponent(new Button("Component 3"));
+
+ grid.addComponent(new Label("Horizontal spacing:"), 0, 2);
+ HorizontalLayout layout2 = new HorizontalLayout();
+ grid.addComponent(layout2, 1, 2);
+ layout2.addStyleName("spacingexample");
+ layout2.setSpacing(true);
+ layout2.addComponent(new Button("Component 1"));
+ layout2.addComponent(new Button("Component 2"));
+ layout2.addComponent(new Button("Component 3"));
+
+ grid.addComponent(new Label("No spacing:"), 2, 0);
+ VerticalLayout layout3 = new VerticalLayout();
+ grid.addComponent(layout3, 2, 1, 2, 2);
+ layout3.addStyleName("spacingexample");
+ layout3.addComponent(new Button("Component 1"));
+ layout3.addComponent(new Button("Component 2"));
+ layout3.addComponent(new Button("Component 3"));
+
+ grid.addComponent(new Label("Vertical spacing:"), 3, 0);
+ VerticalLayout layout4 = new VerticalLayout();
+ grid.addComponent(layout4, 3, 1, 3, 2);
+ layout4.addStyleName("spacingexample");
+ layout4.setSpacing(true);
+ layout4.addComponent(new Button("Component 1"));
+ layout4.addComponent(new Button("Component 2"));
+ layout4.addComponent(new Button("Component 3"));
+ }
+
+ void example_Margin(final Window main, String param) {
+ HorizontalLayout hor = new HorizontalLayout();
+ main.setLayout(hor);
+
+ VerticalLayout containinglayout = new VerticalLayout();
+ hor.addComponent(containinglayout);
+
+ VerticalLayout layout1 = new VerticalLayout();
+ containinglayout.addComponent(new Label("Regular layout margins:"));
+ containinglayout.addComponent(layout1);
+ layout1.addStyleName("marginexample1");
+ layout1.addComponent(new Button("Component 1"));
+ layout1.addComponent(new Button("Component 2"));
+ layout1.addComponent(new Button("Component 3"));
+
+ // Create a layout
+ VerticalLayout layout2 = new VerticalLayout();
+ containinglayout.addComponent(new Label(
+ "Layout with a special margin element:"));
+ containinglayout.addComponent(layout2);
+
+ // Set style name for the layout to allow styling it
+ layout2.addStyleName("marginexample2");
+
+ // Have margin on all sides around the layout
+ layout2.setMargin(true);
+
+ // Put something inside the layout
+ layout2.addComponent(new Button("Component 1"));
+ layout2.addComponent(new Button("Component 2"));
+ layout2.addComponent(new Button("Component 3"));
+ }
+
+ void example_ClientInfo(final Window main, String param) {
+ // Get the client identification string
+ WebApplicationContext context2 = (WebApplicationContext) getContext();
+ String browserApplication = context2.getBrowser()
+ .getBrowserApplication();
+
+ // Add a browser-dependent style name for the main window
+ if (browserApplication.indexOf("Firefox/2") != -1) {
+ main.addStyleName("firefox2");
+ }
+
+ // Display the client identification string
+ main.addComponent(new Label(browserApplication));
+ }
+
+ void example_FillInForm(final Window main, String param) {
+ if (param.equals("templates")) {
+ // Create a custom layout from the fill-in-form.html template.
+ CustomLayout fillinlayout = new CustomLayout("fill-in-form");
+
+ // The style will set the display to be "inline".
+ fillinlayout.addStyleName("fillinlayout");
+
+ // Create the fields that occur in the text.
+ TextField field1 = new TextField();
+ TextField field2 = new TextField();
+ fillinlayout.addComponent(field1, "q1");
+ fillinlayout.addComponent(field2, "q2");
+
+ main.addComponent(fillinlayout);
+ } else {
+ String fillintext = "The <q1> is mightier than <q2>.";
+ int pos = 0;
+ while (pos < fillintext.length()) {
+ int nexttag = fillintext.indexOf("<", pos);
+ if (nexttag == -1) {
+
+ }
+ }
+ }
+ }
+
+ void example_Notification(final Window main, String param) {
+ // final Window sub1 = new Window("");
+ // main.addWindow(sub1);
+ if (param.equals("example")) {
+ main.showNotification("This is the caption",
+ "This is the description");
+ return;
+ } else if (param.equals("type")) {
+ main.showNotification("This is a warning",
+ "<br/>This is the <i>last</i> warning",
+ Window.Notification.TYPE_WARNING_MESSAGE);
+ return;
+ } else if (param.equals("pos")) {
+ // Create a notification with the default settings for a warning.
+ Window.Notification notif = new Window.Notification("Be warned!",
+ "This message lurks in the top-left corner!",
+ Window.Notification.TYPE_WARNING_MESSAGE);
+
+ // Set the position.
+ notif.setPosition(Window.Notification.POSITION_TOP_LEFT);
+
+ // Let it stay there until the user clicks it
+ notif.setDelayMsec(-1);
+
+ // Show it in the main window.
+ main.showNotification(notif);
+ return;
+ }
+
+ main.setLayout(new HorizontalLayout());
+
+ final Integer type_humanized = Window.Notification.TYPE_HUMANIZED_MESSAGE;
+ final Integer type_warning = Window.Notification.TYPE_WARNING_MESSAGE;
+ final Integer type_error = Window.Notification.TYPE_ERROR_MESSAGE;
+ final Integer type_tray = Window.Notification.TYPE_TRAY_NOTIFICATION;
+ final NativeSelect types = new NativeSelect();
+ main.addComponent(types);
+ types.addItem(type_humanized);
+ types.addItem(type_warning);
+ types.addItem(type_error);
+ types.addItem(type_tray);
+ types.setItemCaption(type_humanized, "Humanized");
+ types.setItemCaption(type_warning, "Warning");
+ types.setItemCaption(type_error, "Error");
+ types.setItemCaption(type_tray, "Tray");
+
+ Button show = new Button("Show Notification");
+ main.addComponent(show);
+
+ show.addListener(new Button.ClickListener() {
+ public void buttonClick(ClickEvent event) {
+ String caption = "";
+ String description = "";
+ switch (((Integer) types.getValue()).intValue()) {
+ case Window.Notification.TYPE_HUMANIZED_MESSAGE:
+ caption = "Humanized message";
+ description = "<br/>For minimal annoyance";
+ break;
+ case Window.Notification.TYPE_WARNING_MESSAGE:
+ caption = "Warning message";
+ description = "<br/>For notifications of medium importance";
+ break;
+ case Window.Notification.TYPE_ERROR_MESSAGE:
+ caption = "Error message";
+ description = "<br/>For important notifications";
+ break;
+ case Window.Notification.TYPE_TRAY_NOTIFICATION:
+ caption = "Tray notification";
+ description = "<br/>Stays up longer - but away";
+ }
+ // main.showNotification("The default notification");
+ Window.Notification notif = new Window.Notification(caption,
+ description, (Integer) types.getValue());
+ // notif.setPosition(Window.Notification.POSITION_TOP_LEFT);
+ notif.setDelayMsec(-1);
+ main.showNotification(notif);
+ }
+ });
+
+ // Notification notif = new Notification("Title");
+ }
+
+ void example_Print(final Window main, String param) {
+ if (param != null && param.equals("simple")) {
+ main
+ .addComponent(new Label(
+ "<input type='button' onClick='print()' value='Click to Print'/>",
+ Label.CONTENT_XHTML));
+ return;
+ }
+
+ // A button to open the printer-friendly page.
+ Button printButton = new Button("Click to Print");
+ main.addComponent(printButton);
+ printButton.addListener(new Button.ClickListener() {
+ public void buttonClick(ClickEvent event) {
+ // Create a window that contains stuff you want to print.
+ Window printWindow = new Window("Window to Print");
+
+ // Have some content to print.
+ printWindow.addComponent(new Label(
+ "Here's some dynamic content."));
+
+ // To execute the print() JavaScript, we need to run it
+ // from a custom layout.
+ CustomLayout scriptLayout = new CustomLayout("printpage");
+ printWindow.addComponent(scriptLayout);
+
+ // Add the printing window as an application-level window.
+ main.getApplication().addWindow(printWindow);
+
+ // Open the printing window as a new browser window
+ main.open(new ExternalResource(printWindow.getURL()), "_new");
+ }
+ });
+
+ // main.addComponent(new
+ // Label("<p>Print this!</p>\n<script type='text/javascript'>print();</script>",
+ // Label.CONTENT_XHTML));
+ }
+
+ void example_RichTextArea(final Window main, String param) {
+ main.setLayout(new HorizontalLayout());
+
+ // Create a rich text area
+ final RichTextArea rtarea = new RichTextArea();
+ rtarea.addStyleName("richtextexample");
+ // rtarea.setCaption("My Rich Text Area");
+
+ // Set initial content as HTML
+ rtarea
+ .setValue("<h1>Hello</h1>\n<p>This rich text area contains some text.</p>");
+
+ // Show the text edited in the rich text area as HTML.
+ final Button show = new Button("Show HTML");
+ final Label html = new Label((String) rtarea.getValue());
+ show.addListener(new Button.ClickListener() {
+ public void buttonClick(ClickEvent event) {
+ html.setValue(rtarea.getValue());
+ }
+ });
+
+ Panel rtPanel = new Panel("Rich Text Area");
+ rtPanel.addComponent(rtarea);
+ rtPanel.addComponent(show);
+
+ Panel valuePanel = new Panel("Value");
+ valuePanel.addComponent(html);
+
+ main.addComponent(rtPanel);
+ main.addComponent(valuePanel);
+ }
+
+ void example_QueryContainer(final Window main, String param) {
+ try {
+ // Create a database connection
+ Class.forName("org.hsqldb.jdbcDriver");
+ final Connection connection = DriverManager.getConnection(
+ "jdbc:hsqldb:mem:qcexample", "sa", "");
+
+ // Create an example table and put some data in it.
+ Statement st = connection.createStatement();
+ st
+ .executeQuery("CREATE TABLE Prisoners (id INTEGER, name VARCHAR)");
+ st.close();
+ for (int i = 0; i < 100; i++) {
+ st = connection.createStatement();
+ st.executeQuery("INSERT INTO Prisoners (id, name) VALUES (" + i
+ + ",'I am number " + (i + 1) + "')");
+ st.close();
+ }
+
+ // Query the database
+ final QueryContainer qc = new QueryContainer(
+ "SELECT id,name FROM Prisoners", connection);
+
+ // Create a component for selecting a query result item.
+ Select select = new Select("Select an item");
+
+ // The items shown in the selection component are obtained from the
+ // query.
+ select.setContainerDataSource(qc);
+
+ // The item captions are obtained from a field in the query result.
+ select.setItemCaptionMode(Select.ITEM_CAPTION_MODE_PROPERTY);
+
+ // Set the name of the field from which the item captions are
+ // obtained.
+ select.setItemCaptionPropertyId("name");
+
+ // When selection changes, display the selected item.
+ select.setImmediate(true);
+ final Label selection = new Label("Currently selected: -");
+ select.addListener(new ValueChangeListener() {
+ public void valueChange(ValueChangeEvent event) {
+ // Get the item id of the currently selected item
+ Integer itemId = (Integer) event.getProperty().getValue();
+
+ // Use the item ID to get the actual row from the query
+ // result.
+ Item qrItem = qc.getItem(itemId);
+
+ // Display the item ID
+ selection.setValue("Currently selected: result row "
+ + itemId.intValue() + " (id="
+ + qrItem.getItemProperty("id") + ", " + "name="
+ + qrItem.getItemProperty("name") + ")");
+ }
+ });
+
+ main.addComponent(select);
+ main.addComponent(selection);
+ } catch (SQLException e) {
+ e.printStackTrace();
+ } catch (ClassNotFoundException e) {
+ e.printStackTrace();
+ }
+ }
+
+ void example_MenuBar(final Window main, String param) {
+ // Create a menu bar
+ final MenuBar menubar = new MenuBar();
+ main.addComponent(menubar);
+
+ // A feedback component
+ final Label selection = new Label("");
+ main.addComponent(selection);
+
+ // Define a common menu command for all the menu items.
+ MenuBar.Command mycommand = new MenuBar.Command() {
+ public void menuSelected(MenuItem selectedItem) {
+ selection.setValue("Ordered a " + selectedItem.getText()
+ + " from menu.");
+ }
+ };
+
+ // Put some items in the menu hierarchically
+ MenuBar.MenuItem beverages = menubar.addItem("Beverages", null, null);
+ MenuBar.MenuItem hot_beverages = beverages.addItem("Hot", null, null);
+ hot_beverages.addItem("Tea", null, mycommand);
+ hot_beverages.addItem("Coffee", null, mycommand);
+ MenuBar.MenuItem cold_beverages = beverages.addItem("Cold", null, null);
+ cold_beverages.addItem("Milk", null, mycommand);
+
+ // Another top-level item
+ MenuBar.MenuItem snacks = menubar.addItem("Snacks", null, null);
+ snacks.addItem("Weisswurst", null, mycommand);
+ snacks.addItem("Salami", null, mycommand);
+
+ // Yet another top-level item
+ MenuBar.MenuItem services = menubar.addItem("Services", null, null);
+ services.addItem("Car Service", null, mycommand);
+ }
}
diff --git a/src/com/itmill/toolkit/tests/book/DefaultButtonExample.java b/src/com/itmill/toolkit/tests/book/DefaultButtonExample.java
index 012070d277..1f340ce4d5 100644
--- a/src/com/itmill/toolkit/tests/book/DefaultButtonExample.java
+++ b/src/com/itmill/toolkit/tests/book/DefaultButtonExample.java
@@ -10,94 +10,85 @@ import com.itmill.toolkit.event.Action.Handler;
import com.itmill.toolkit.ui.Button;
import com.itmill.toolkit.ui.CustomComponent;
import com.itmill.toolkit.ui.FormLayout;
+import com.itmill.toolkit.ui.HorizontalLayout;
import com.itmill.toolkit.ui.Label;
-import com.itmill.toolkit.ui.OrderedLayout;
import com.itmill.toolkit.ui.Panel;
import com.itmill.toolkit.ui.TextField;
-import com.itmill.toolkit.ui.Window;
public class DefaultButtonExample extends CustomComponent implements Handler {
- // Define and create user interface components
- Panel panel = new Panel("Login");
- OrderedLayout formlayout = new FormLayout();
- TextField username = new TextField("Username");
- TextField password = new TextField("Password");
- OrderedLayout buttons = new FormLayout();
+ // Define and create user interface components
+ Panel panel = new Panel("Login");
+ FormLayout formlayout = new FormLayout();
+ TextField username = new TextField("Username");
+ TextField password = new TextField("Password");
+ HorizontalLayout buttons = new HorizontalLayout();
- // Create buttons and define their listener methods. Here we use
- // parameterless
- // methods so that we can use same methods for both click events and
- // keyboard actions.
- Button ok = new Button("OK", this, "okHandler");
- Button cancel = new Button("Cancel", this, "cancelHandler");
+ // Create buttons and define their listener methods.
+ Button ok = new Button("OK", this, "okHandler");
+ Button cancel = new Button("Cancel", this, "cancelHandler");
- // Have the unmodified Enter key cause an event
- Action action_ok = new ShortcutAction("Default key",
- ShortcutAction.KeyCode.ENTER, null);
+ // Have the unmodified Enter key cause an event
+ Action action_ok = new ShortcutAction("Default key",
+ ShortcutAction.KeyCode.ENTER, null);
- // Have the C key modified with Alt cause an event
- Action action_cancel = new ShortcutAction("Alt+C",
- ShortcutAction.KeyCode.C,
- new int[] { ShortcutAction.ModifierKey.ALT });
+ // Have the C key modified with Alt cause an event
+ Action action_cancel = new ShortcutAction("Alt+C",
+ ShortcutAction.KeyCode.C,
+ new int[] { ShortcutAction.ModifierKey.ALT });
- Window window = null;
+ public DefaultButtonExample() {
+ // Set up the user interface
+ setCompositionRoot(panel);
+ panel.addComponent(formlayout);
+ formlayout.addComponent(username);
+ formlayout.addComponent(password);
+ formlayout.addComponent(buttons);
+ buttons.addComponent(ok);
+ buttons.addComponent(cancel);
- public DefaultButtonExample(Window win) {
- // Set up the user interface
- setCompositionRoot(panel);
- panel.addComponent(formlayout);
- formlayout.setOrientation(OrderedLayout.ORIENTATION_VERTICAL);
- formlayout.addComponent(username);
- formlayout.addComponent(password);
- formlayout.addComponent(buttons);
- buttons.setOrientation(OrderedLayout.ORIENTATION_HORIZONTAL);
- buttons.addComponent(ok);
- buttons.addComponent(cancel);
+ // Set focus to username
+ username.focus();
- // Set focus to username
- username.focus();
+ // Set this object as the action handler
+ System.out.println("adding ah");
+ panel.addActionHandler(this);
- // Set this object as the action handler
- System.out.println("adding ah");
- win.addActionHandler(this);
- window = win;
+ System.out.println("start done.");
+ }
- System.out.println("start done.");
- }
+ /**
+ * Retrieve actions for a specific component. This method will be called for
+ * each object that has a handler; in this example just for login panel. The
+ * returned action list might as well be static list.
+ */
+ public Action[] getActions(Object target, Object sender) {
+ System.out.println("getActions()");
+ return new Action[] { action_ok, action_cancel };
+ }
- /**
- * Retrieve actions for a specific component. This method will be called for
- * each object that has a handler; in this example the Ok and Cancel
- * buttons.
- */
- public Action[] getActions(Object target, Object sender) {
- System.out.println("getActions()");
- return new Action[] { action_ok, action_cancel };
- }
+ /**
+ * Handle actions received from keyboard. This simply directs the actions to
+ * the same listener methods that are called with ButtonClick events.
+ */
+ public void handleAction(Action action, Object sender, Object target) {
+ if (action == action_ok) {
+ okHandler();
+ }
+ if (action == action_cancel) {
+ cancelHandler();
+ }
+ }
- /**
- * Handle actions received from keyboard. This simply directs the actions to
- * the same listener methods that are called with ButtonClick events.
- */
- public void handleAction(Action action, Object sender, Object target) {
- if (action == action_ok) {
- okHandler();
- }
- if (action == action_cancel) {
- cancelHandler();
- }
- }
+ public void okHandler() {
+ // Do something: report the click
+ formlayout.addComponent(new Label("OK clicked. " + "User="
+ + username.getValue() + ", password=" + password.getValue()));
+ //
+ }
- public void okHandler() {
- // Do something: report the click
- formlayout.addComponent(new Label("OK clicked. " + "User="
- + username.getValue() + ", password=" + password.getValue()));
- //
- }
-
- public void cancelHandler() {
- // Do something: report the click
- formlayout.addComponent(new Label("Cancel clicked. User="
- + username.getValue() + ", password=" + password.getValue()));
- }
+ public void cancelHandler() {
+ // Do something: report the click
+ formlayout.addComponent(new Label("Cancel clicked. User="
+ + username.getValue() + ", password=" + password.getValue()));
+ }
}
diff --git a/src/com/itmill/toolkit/ui/ProgressIndicator.java b/src/com/itmill/toolkit/ui/ProgressIndicator.java
index ea788ac0b2..fc5b308b64 100644
--- a/src/com/itmill/toolkit/ui/ProgressIndicator.java
+++ b/src/com/itmill/toolkit/ui/ProgressIndicator.java
@@ -133,7 +133,7 @@ public class ProgressIndicator extends AbstractField implements Property,
@Override
public Object getValue() {
if (dataSource == null) {
- throw new IllegalStateException("Datasource must be se");
+ throw new IllegalStateException("Datasource must be set");
}
return dataSource.getValue();
}
@@ -149,7 +149,7 @@ public class ProgressIndicator extends AbstractField implements Property,
@Override
public void setValue(Object newValue) {
if (dataSource == null) {
- throw new IllegalStateException("Datasource must be se");
+ throw new IllegalStateException("Datasource must be set");
}
dataSource.setValue(newValue);
}
@@ -160,7 +160,7 @@ public class ProgressIndicator extends AbstractField implements Property,
@Override
public String toString() {
if (dataSource == null) {
- throw new IllegalStateException("Datasource must be se");
+ throw new IllegalStateException("Datasource must be set");
}
return dataSource.toString();
}
@@ -171,7 +171,7 @@ public class ProgressIndicator extends AbstractField implements Property,
@Override
public Class getType() {
if (dataSource == null) {
- throw new IllegalStateException("Datasource must be se");
+ throw new IllegalStateException("Datasource must be set");
}
return dataSource.getType();
}
diff --git a/src/com/itmill/toolkit/ui/Slider.java b/src/com/itmill/toolkit/ui/Slider.java
index aaefc21163..0fb3496404 100644
--- a/src/com/itmill/toolkit/ui/Slider.java
+++ b/src/com/itmill/toolkit/ui/Slider.java
@@ -10,7 +10,9 @@ import com.itmill.toolkit.terminal.PaintException;
import com.itmill.toolkit.terminal.PaintTarget;
/**
- * TODO comment
+ * A component for selecting a numerical value within a range. A Slider
+ * can have the appearance of a scroll bar or e.g. look like an Adobe Photoshop
+ * style of a slider.
*
* Example code: <code>
* class MyPlayer extends CustomComponent implements ValueChangeListener {
@@ -42,6 +44,7 @@ import com.itmill.toolkit.terminal.PaintTarget;
*
* </code>
*
+ * @author IT Mill Ltd.
*/
public class Slider extends AbstractField {