diff options
Diffstat (limited to 'java-vaadin')
-rw-r--r-- | java-vaadin/HOWTO | 22 | ||||
-rw-r--r-- | java-vaadin/build.properties | 10 | ||||
-rw-r--r-- | java-vaadin/build.xml | 535 | ||||
-rw-r--r-- | java-vaadin/build.xml.orig | 515 | ||||
-rw-r--r-- | java-vaadin/src/Application.properties | 2 | ||||
-rw-r--r-- | java-vaadin/src/ch/asynk/helloworld/Context.java | 55 | ||||
-rw-r--r-- | java-vaadin/src/ch/asynk/helloworld/DataMappingLayout.java | 170 | ||||
-rw-r--r-- | java-vaadin/src/ch/asynk/helloworld/EndLayout.java | 31 | ||||
-rw-r--r-- | java-vaadin/src/ch/asynk/helloworld/HelloWorldApp.java | 42 | ||||
-rw-r--r-- | java-vaadin/src/ch/asynk/helloworld/LayoutLayout.java | 109 | ||||
-rw-r--r-- | java-vaadin/src/ch/asynk/helloworld/MainLayout.java | 75 | ||||
-rw-r--r-- | java-vaadin/src/ch/asynk/helloworld/Resources.java | 9 | ||||
-rw-r--r-- | java-vaadin/web/META-INF/MANIFEST.MF | 3 | ||||
-rw-r--r-- | java-vaadin/web/VAADIN/themes/asynk/icons/clock.png | bin | 0 -> 2053 bytes | |||
-rw-r--r-- | java-vaadin/web/VAADIN/themes/asynk/styles.css | 16 | ||||
-rw-r--r-- | java-vaadin/web/WEB-INF/web.xml | 166 |
16 files changed, 1760 insertions, 0 deletions
diff --git a/java-vaadin/HOWTO b/java-vaadin/HOWTO new file mode 100644 index 0000000..1dcc806 --- /dev/null +++ b/java-vaadin/HOWTO @@ -0,0 +1,22 @@ +WAR format (http://tomcat.apache.org/tomcat-7.0-doc/appdev/deployment.html#Standard_Directory_Layout + +*.html, *.jsp, *.js, *.css, *.png, etc. + The HTML and JSP pages, along with other files that must be visible to the client browser for your application. + In larger applications you may choose to divide these files into a subdirectory hierarchy, + but for smaller apps, it is generally much simpler to maintain only a single directory for these files. + +/WEB-INF/web.xml + The Web Application Deployment Descriptor for your application. + This is an XML file describing the servlets and other components that make up your application, + along with any initialization parameters and container-managed security constraints that you want the server to enforce for you. + This file is discussed in more detail in the following subsection. + +/WEB-INF/classes/ + This directory contains any Java class files (and associated resources) required for your application, + including both servlet and non-servlet classes, that are not combined into JAR files. + If your classes are organized into Java packages, you must reflect this in the directory hierarchy under /WEB-INF/classes/. + +/WEB-INF/lib/ + This directory contains JAR files that contain Java class files (and associated resources) required for your application, + such as third party class libraries or JDBC drivers. + diff --git a/java-vaadin/build.properties b/java-vaadin/build.properties new file mode 100644 index 0000000..dbf322a --- /dev/null +++ b/java-vaadin/build.properties @@ -0,0 +1,10 @@ +# Context path to install this application on +app.path=/hello + +# Tomcat 7 installation directory +catalina.home=/usr/share/tomcat7 + +# Manager webapp username and password +manager.username=manager +manager.password=none + diff --git a/java-vaadin/build.xml b/java-vaadin/build.xml new file mode 100644 index 0000000..fe108a1 --- /dev/null +++ b/java-vaadin/build.xml @@ -0,0 +1,535 @@ +<!-- + Licensed to the Apache Software Foundation (ASF) under one or more + contributor license agreements. See the NOTICE file distributed with + this work for additional information regarding copyright ownership. + The ASF licenses this file to You under the Apache License, Version 2.0 + (the "License"); you may not use this file except in compliance with + the License. You may obtain a copy of the License at + + http://www.apache.org/licenses/LICENSE-2.0 + + Unless required by applicable law or agreed to in writing, software + distributed under the License is distributed on an "AS IS" BASIS, + WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + See the License for the specific language governing permissions and + limitations under the License. +--> + +<!-- + General purpose build script for web applications and web services, + including enhanced support for deploying directly to a Tomcat + based server. + + This build script assumes that the source code of your web application + is organized into the following subdirectories underneath the source + code directory from which you execute the build script: + + docs Static documentation files to be copied to + the "docs" subdirectory of your distribution. + + src Java source code (and associated resource files) + to be compiled to the "WEB-INF/classes" + subdirectory of your web application. + + web Static HTML, JSP, and other content (such as + image files), including the WEB-INF subdirectory + and its configuration file contents. + + $Id: build.xml.txt 1060015 2011-01-17 17:31:45Z markt $ +--> + + +<!-- A "project" describes a set of targets that may be requested + when Ant is executed. The "default" attribute defines the + target which is executed if no specific target is requested, + and the "basedir" attribute defines the current working directory + from which Ant executes the requested task. This is normally + set to the current working directory. +--> + +<project name="My Project" default="compile" basedir="."> + + + +<!-- ===================== Property Definitions =========================== --> + + +<!-- + + Each of the following properties are used in the build script. + Values for these properties are set by the first place they are + defined, from the following list: + + * Definitions on the "ant" command line (ant -Dfoo=bar compile). + + * Definitions from a "build.properties" file in the top level + source directory of this application. + + * Definitions from a "build.properties" file in the developer's + home directory. + + * Default definitions in this build.xml file. + + You will note below that property values can be composed based on the + contents of previously defined properties. This is a powerful technique + that helps you minimize the number of changes required when your development + environment is modified. Note that property composition is allowed within + "build.properties" files as well as in the "build.xml" script. + +--> + + <property file="build.properties"/> + <property file="${user.home}/build.properties"/> + + +<!-- ==================== File and Directory Names ======================== --> + + +<!-- + + These properties generally define file and directory names (or paths) that + affect where the build process stores its outputs. + + app.name Base name of this application, used to + construct filenames and directories. + Defaults to "myapp". + + app.path Context path to which this application should be + deployed (defaults to "/" plus the value of the + "app.name" property). + + app.version Version number of this iteration of the application. + + build.home The directory into which the "prepare" and + "compile" targets will generate their output. + Defaults to "build". + + catalina.home The directory in which you have installed + a binary distribution of Tomcat. This will + be used by the "deploy" target. + + dist.home The name of the base directory in which + distribution files are created. + Defaults to "dist". + + manager.password The login password of a user that is assigned the + "manager-script" role (so that he or she can execute + commands via the "/manager" web application) + + manager.url The URL of the "/manager" web application on the + Tomcat installation to which we will deploy web + applications and web services. + + manager.username The login username of a user that is assigned the + "manager-script" role (so that he or she can execute + commands via the "/manager" web application) + +--> + + <property name="app.name" value="myapp"/> + <property name="app.path" value="/${app.name}"/> + <property name="app.version" value="0.1-dev"/> + <property name="build.home" value="${basedir}/build"/> + <property name="catalina.home" value="/usr/share/tomcat7"/> <!-- UPDATE THIS! --> + <property name="dist.home" value="${basedir}/dist"/> + <property name="docs.home" value="${basedir}/docs"/> + <property name="manager.url" value="http://localhost:8080/manager/text"/> + <property name="src.home" value="${basedir}/src"/> + <property name="web.home" value="${basedir}/web"/> + <property name="tmp.home" value="/tmp/${app.name}"/> + + +<!-- ==================== External Dependencies =========================== --> + + +<!-- + + Use property values to define the locations of external JAR files on which + your application will depend. In general, these values will be used for + two purposes: + * Inclusion on the classpath that is passed to the Javac compiler + * Being copied into the "/WEB-INF/lib" directory during execution + of the "deploy" target. + + Because we will automatically include all of the Java classes that Tomcat + exposes to web applications, we will not need to explicitly list any of those + dependencies. You only need to worry about external dependencies for JAR + files that you are going to include inside your "/WEB-INF/lib" directory. + +--> + +<!-- Dummy external dependency --> + <!--property name="vaadin.jar" value="/opt/vaadin/WebContent/vaadin-6.6.6.jar"/--> + + +<!-- ==================== Compilation Classpath =========================== --> + +<!-- + + Rather than relying on the CLASSPATH environment variable, Ant includes + features that makes it easy to dynamically construct the classpath you + need for each compilation. The example below constructs the compile + classpath to include the servlet.jar file, as well as the other components + that Tomcat makes available to web applications automatically, plus anything + that you explicitly added. + +--> + + <path id="compile.classpath"> + + <!-- Include all JAR files that will be included in /WEB-INF/lib --> + <fileset dir="${web.home}/WEB-INF/lib"> + <include name="*.jar"/> + </fileset> + <pathelement location="${vaadin.jar}"/> + + <!-- Include all elements that Tomcat exposes to applications --> + <fileset dir="${catalina.home}/bin"> + <include name="*.jar"/> + </fileset> + <pathelement location="${catalina.home}/lib"/> + <fileset dir="${catalina.home}/lib"> + <include name="*.jar"/> + </fileset> + + </path> + + + +<!-- ================== Custom Ant Task Definitions ======================= --> + + +<!-- + + These properties define custom tasks for the Ant build tool that interact + with the "/manager" web application installed with Tomcat. Before they + can be successfully utilized, you must perform the following steps: + + - Copy the file "lib/catalina-ant.jar" from your Tomcat + installation into the "lib" directory of your Ant installation. + + - Create a "build.properties" file in your application's top-level + source directory (or your user login home directory) that defines + appropriate values for the "manager.password", "manager.url", and + "manager.username" properties described above. + + For more information about the Manager web application, and the functionality + of these tasks, see <http://localhost:8080/tomcat-docs/manager-howto.html>. + +--> + + <taskdef resource="org/apache/catalina/ant/catalina.tasks" + classpathref="compile.classpath"/> + + +<!-- ==================== Compilation Control Options ==================== --> + +<!-- + + These properties control option settings on the Javac compiler when it + is invoked using the <javac> task. + + compile.debug Should compilation include the debug option? + + compile.deprecation Should compilation include the deprecation option? + + compile.optimize Should compilation include the optimize option? + +--> + + <property name="compile.debug" value="true"/> + <property name="compile.deprecation" value="false"/> + <property name="compile.optimize" value="true"/> + + + +<!-- ==================== All Target ====================================== --> + +<!-- + + The "all" target is a shortcut for running the "clean" target followed + by the "compile" target, to force a complete recompile. + +--> + + <target name="all" depends="clean,compile" + description="Clean build and dist directories, then compile"/> + + + +<!-- ==================== Clean Target ==================================== --> + +<!-- + + The "clean" target deletes any previous "build" and "dist" directory, + so that you can be ensured the application can be built from scratch. + +--> + + <target name="clean" + description="Delete old build and dist directories"> + <delete dir="${build.home}"/> + <delete dir="${dist.home}"/> + </target> + + + +<!-- ==================== Compile Target ================================== --> + +<!-- + + The "compile" target transforms source files (from your "src" directory) + into object files in the appropriate location in the build directory. + This example assumes that you will be including your classes in an + unpacked directory hierarchy under "/WEB-INF/classes". + +--> + + <target name="compile" depends="prepare" + description="Compile Java sources"> + + <!-- Compile Java classes as necessary --> + <mkdir dir="${build.home}/WEB-INF/classes"/> + <javac srcdir="${src.home}" + destdir="${build.home}/WEB-INF/classes" + debug="${compile.debug}" + deprecation="${compile.deprecation}" + optimize="${compile.optimize}" +includeantruntime="false"> + <classpath refid="compile.classpath"/> + <compilerarg value="-Xlint"/> + </javac> + + <!-- Copy application resources --> + <copy todir="${build.home}/WEB-INF/classes"> + <fileset dir="${src.home}" excludes="**/*.java"/> + </copy> + + </target> + + + +<!-- ==================== Dist Target ===================================== --> + + +<!-- + + The "dist" target creates a binary distribution of your application + in a directory structure ready to be archived in a tar.gz or zip file. + Note that this target depends on two others: + + * "compile" so that the entire web application (including external + dependencies) will have been assembled + + * "javadoc" so that the application Javadocs will have been created + +--> + + <target name="dist" depends="compile,javadoc" + description="Create binary distribution"> + + <!-- Copy documentation subdirectories --> + <mkdir dir="${dist.home}/docs"/> + <copy todir="${dist.home}/docs"> + <fileset dir="${docs.home}"/> + </copy> + + <!-- Create application JAR file --> + <jar jarfile="${dist.home}/${app.name}-${app.version}.war" + basedir="${build.home}"/> + + <!-- Copy additional files to ${dist.home} as necessary --> + + </target> + +<!-- ==================== Install Target ================================== --> + +<!-- + + The "install" target tells the specified Tomcat installation to dynamically + install this web application and make it available for execution. It does + *not* cause the existence of this web application to be remembered across + Tomcat restarts; if you restart the server, you will need to re-install all + this web application. + + If you have already installed this application, and simply want Tomcat to + recognize that you have updated Java classes (or the web.xml file), use the + "reload" target instead. + + NOTE: This target will only succeed if it is run from the same server that + Tomcat is running on. + + NOTE: This is the logical opposite of the "remove" target. + +--> + + <target name="install" depends="compile" + description="Install application to servlet container"> + + <delete dir="${tmp.home}"/> + <mkdir dir="${tmp.home}"/> + <copy todir="${tmp.home}"> + <fileset dir="${build.home}" /> + </copy> + + <deploy url="${manager.url}" + username="${manager.username}" + password="${manager.password}" + path="${app.path}" + localWar="file://${tmp.home}"/> + + </target> + + +<!-- ==================== Javadoc Target ================================== --> + +<!-- + + The "javadoc" target creates Javadoc API documentation for the Java + classes included in your application. Normally, this is only required + when preparing a distribution release, but is available as a separate + target in case the developer wants to create Javadocs independently. + +--> + + <target name="javadoc" depends="compile" + description="Create Javadoc API documentation"> + + <mkdir dir="${dist.home}/docs/api"/> + <javadoc sourcepath="${src.home}" + destdir="${dist.home}/docs/api" + packagenames="*"> + <classpath refid="compile.classpath"/> + </javadoc> + + </target> + + + +<!-- ====================== List Target =================================== --> + +<!-- + + The "list" target asks the specified Tomcat installation to list the + currently running web applications, either loaded at startup time or + installed dynamically. It is useful to determine whether or not the + application you are currently developing has been installed. + +--> + + <target name="list" + description="List installed applications on servlet container"> + + <list url="${manager.url}" + username="${manager.username}" + password="${manager.password}"/> + + </target> + + +<!-- ==================== Prepare Target ================================== --> + +<!-- + + The "prepare" target is used to create the "build" destination directory, + and copy the static contents of your web application to it. If you need + to copy static files from external dependencies, you can customize the + contents of this task. + + Normally, this task is executed indirectly when needed. + +--> + + <target name="prepare"> + + <!-- Create build directories as needed --> + <mkdir dir="${build.home}"/> + <mkdir dir="${build.home}/WEB-INF"/> + <mkdir dir="${build.home}/WEB-INF/classes"/> + + + <!-- Copy static content of this web application --> + <copy todir="${build.home}"> + <fileset dir="${web.home}"/> + </copy> + + <!-- Copy external dependencies as required --> + <!-- *** CUSTOMIZE HERE AS REQUIRED BY YOUR APPLICATION *** --> + <mkdir dir="${build.home}/WEB-INF/lib"/> +<!-- + <copy todir="${build.home}/WEB-INF/lib" file="${foo.jar}"/> +--> + + <!-- Copy static files from external dependencies as needed --> + <!-- *** CUSTOMIZE HERE AS REQUIRED BY YOUR APPLICATION *** --> + + </target> + + +<!-- ==================== Reload Target =================================== --> + +<!-- + + The "reload" signals the specified application Tomcat to shut itself down + and reload. This can be useful when the web application context is not + reloadable and you have updated classes or property files in the + /WEB-INF/classes directory or when you have added or updated jar files in the + /WEB-INF/lib directory. + + NOTE: The /WEB-INF/web.xml web application configuration file is not reread + on a reload. If you have made changes to your web.xml file you must stop + then start the web application. + +--> + + <target name="reload" depends="compile" + description="Reload application on servlet container"> + + <reload url="${manager.url}" + username="${manager.username}" + password="${manager.password}" + path="${app.path}"/> + + </target> + + +<!-- ==================== Remove Target =================================== --> + +<!-- + + The "remove" target tells the specified Tomcat installation to dynamically + remove this web application from service. + + NOTE: This is the logical opposite of the "install" target. + +--> + + <target name="remove" + description="Remove application on servlet container"> + + <undeploy url="${manager.url}" + username="${manager.username}" + password="${manager.password}" + path="${app.path}"/> + + </target> + + +<!-- ==================== Update Target =================================== --> + +<!-- + + The "update" target tells the specified Tomcat installation to dynamically + update this web application from service. + +--> + + <target name="update" depends="compile" + description="Update application on servlet container"> + + <antcall target="remove"/> + <antcall target="install"/> + + </target> + +</project> diff --git a/java-vaadin/build.xml.orig b/java-vaadin/build.xml.orig new file mode 100644 index 0000000..a8e1bce --- /dev/null +++ b/java-vaadin/build.xml.orig @@ -0,0 +1,515 @@ +<!-- + Licensed to the Apache Software Foundation (ASF) under one or more + contributor license agreements. See the NOTICE file distributed with + this work for additional information regarding copyright ownership. + The ASF licenses this file to You under the Apache License, Version 2.0 + (the "License"); you may not use this file except in compliance with + the License. You may obtain a copy of the License at + + http://www.apache.org/licenses/LICENSE-2.0 + + Unless required by applicable law or agreed to in writing, software + distributed under the License is distributed on an "AS IS" BASIS, + WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + See the License for the specific language governing permissions and + limitations under the License. +--> + +<!-- + General purpose build script for web applications and web services, + including enhanced support for deploying directly to a Tomcat 6 + based server. + + This build script assumes that the source code of your web application + is organized into the following subdirectories underneath the source + code directory from which you execute the build script: + + docs Static documentation files to be copied to + the "docs" subdirectory of your distribution. + + src Java source code (and associated resource files) + to be compiled to the "WEB-INF/classes" + subdirectory of your web application. + + web Static HTML, JSP, and other content (such as + image files), including the WEB-INF subdirectory + and its configuration file contents. + + $Id: build.xml.txt 1060015 2011-01-17 17:31:45Z markt $ +--> + + +<!-- A "project" describes a set of targets that may be requested + when Ant is executed. The "default" attribute defines the + target which is executed if no specific target is requested, + and the "basedir" attribute defines the current working directory + from which Ant executes the requested task. This is normally + set to the current working directory. +--> + +<project name="My Project" default="compile" basedir="."> + + + +<!-- ===================== Property Definitions =========================== --> + + +<!-- + + Each of the following properties are used in the build script. + Values for these properties are set by the first place they are + defined, from the following list: + + * Definitions on the "ant" command line (ant -Dfoo=bar compile). + + * Definitions from a "build.properties" file in the top level + source directory of this application. + + * Definitions from a "build.properties" file in the developer's + home directory. + + * Default definitions in this build.xml file. + + You will note below that property values can be composed based on the + contents of previously defined properties. This is a powerful technique + that helps you minimize the number of changes required when your development + environment is modified. Note that property composition is allowed within + "build.properties" files as well as in the "build.xml" script. + +--> + + <property file="build.properties"/> + <property file="${user.home}/build.properties"/> + + +<!-- ==================== File and Directory Names ======================== --> + + +<!-- + + These properties generally define file and directory names (or paths) that + affect where the build process stores its outputs. + + app.name Base name of this application, used to + construct filenames and directories. + Defaults to "myapp". + + app.path Context path to which this application should be + deployed (defaults to "/" plus the value of the + "app.name" property). + + app.version Version number of this iteration of the application. + + build.home The directory into which the "prepare" and + "compile" targets will generate their output. + Defaults to "build". + + catalina.home The directory in which you have installed + a binary distribution of Tomcat 6. This will + be used by the "deploy" target. + + dist.home The name of the base directory in which + distribution files are created. + Defaults to "dist". + + manager.password The login password of a user that is assigned the + "manager-script" role (so that he or she can execute + commands via the "/manager" web application) + + manager.url The URL of the "/manager" web application on the + Tomcat installation to which we will deploy web + applications and web services. + + manager.username The login username of a user that is assigned the + "manager-script" role (so that he or she can execute + commands via the "/manager" web application) + +--> + + <property name="app.name" value="myapp"/> + <property name="app.path" value="/${app.name}"/> + <property name="app.version" value="0.1-dev"/> + <property name="build.home" value="${basedir}/build"/> + <property name="catalina.home" value="../../../.."/> <!-- UPDATE THIS! --> + <property name="dist.home" value="${basedir}/dist"/> + <property name="docs.home" value="${basedir}/docs"/> + <property name="manager.url" value="http://localhost:8080/manager/text"/> + <property name="src.home" value="${basedir}/src"/> + <property name="web.home" value="${basedir}/web"/> + + +<!-- ==================== External Dependencies =========================== --> + + +<!-- + + Use property values to define the locations of external JAR files on which + your application will depend. In general, these values will be used for + two purposes: + * Inclusion on the classpath that is passed to the Javac compiler + * Being copied into the "/WEB-INF/lib" directory during execution + of the "deploy" target. + + Because we will automatically include all of the Java classes that Tomcat 6 + exposes to web applications, we will not need to explicitly list any of those + dependencies. You only need to worry about external dependencies for JAR + files that you are going to include inside your "/WEB-INF/lib" directory. + +--> + +<!-- Dummy external dependency --> +<!-- + <property name="foo.jar" + value="/path/to/foo.jar"/> +--> + + +<!-- ==================== Compilation Classpath =========================== --> + +<!-- + + Rather than relying on the CLASSPATH environment variable, Ant includes + features that makes it easy to dynamically construct the classpath you + need for each compilation. The example below constructs the compile + classpath to include the servlet.jar file, as well as the other components + that Tomcat makes available to web applications automatically, plus anything + that you explicitly added. + +--> + + <path id="compile.classpath"> + + <!-- Include all JAR files that will be included in /WEB-INF/lib --> + <!-- *** CUSTOMIZE HERE AS REQUIRED BY YOUR APPLICATION *** --> +<!-- + <pathelement location="${foo.jar}"/> +--> + + <!-- Include all elements that Tomcat exposes to applications --> + <fileset dir="${catalina.home}/bin"> + <include name="*.jar"/> + </fileset> + <pathelement location="${catalina.home}/lib"/> + <fileset dir="${catalina.home}/lib"> + <include name="*.jar"/> + </fileset> + + </path> + + + +<!-- ================== Custom Ant Task Definitions ======================= --> + + +<!-- + + These properties define custom tasks for the Ant build tool that interact + with the "/manager" web application installed with Tomcat 6. Before they + can be successfully utilized, you must perform the following steps: + + - Copy the file "lib/catalina-ant.jar" from your Tomcat 6 + installation into the "lib" directory of your Ant installation. + + - Create a "build.properties" file in your application's top-level + source directory (or your user login home directory) that defines + appropriate values for the "manager.password", "manager.url", and + "manager.username" properties described above. + + For more information about the Manager web application, and the functionality + of these tasks, see <http://localhost:8080/tomcat-docs/manager-howto.html>. + +--> + + <taskdef resource="org/apache/catalina/ant/catalina.tasks" + classpathref="compile.classpath"/> + + +<!-- ==================== Compilation Control Options ==================== --> + +<!-- + + These properties control option settings on the Javac compiler when it + is invoked using the <javac> task. + + compile.debug Should compilation include the debug option? + + compile.deprecation Should compilation include the deprecation option? + + compile.optimize Should compilation include the optimize option? + +--> + + <property name="compile.debug" value="true"/> + <property name="compile.deprecation" value="false"/> + <property name="compile.optimize" value="true"/> + + + +<!-- ==================== All Target ====================================== --> + +<!-- + + The "all" target is a shortcut for running the "clean" target followed + by the "compile" target, to force a complete recompile. + +--> + + <target name="all" depends="clean,compile" + description="Clean build and dist directories, then compile"/> + + + +<!-- ==================== Clean Target ==================================== --> + +<!-- + + The "clean" target deletes any previous "build" and "dist" directory, + so that you can be ensured the application can be built from scratch. + +--> + + <target name="clean" + description="Delete old build and dist directories"> + <delete dir="${build.home}"/> + <delete dir="${dist.home}"/> + </target> + + + +<!-- ==================== Compile Target ================================== --> + +<!-- + + The "compile" target transforms source files (from your "src" directory) + into object files in the appropriate location in the build directory. + This example assumes that you will be including your classes in an + unpacked directory hierarchy under "/WEB-INF/classes". + +--> + + <target name="compile" depends="prepare" + description="Compile Java sources"> + + <!-- Compile Java classes as necessary --> + <mkdir dir="${build.home}/WEB-INF/classes"/> + <javac srcdir="${src.home}" + destdir="${build.home}/WEB-INF/classes" + debug="${compile.debug}" + deprecation="${compile.deprecation}" + optimize="${compile.optimize}" +includeantruntime="false"> + <classpath refid="compile.classpath"/> + </javac> + + <!-- Copy application resources --> + <copy todir="${build.home}/WEB-INF/classes"> + <fileset dir="${src.home}" excludes="**/*.java"/> + </copy> + + </target> + + + +<!-- ==================== Dist Target ===================================== --> + + +<!-- + + The "dist" target creates a binary distribution of your application + in a directory structure ready to be archived in a tar.gz or zip file. + Note that this target depends on two others: + + * "compile" so that the entire web application (including external + dependencies) will have been assembled + + * "javadoc" so that the application Javadocs will have been created + +--> + + <target name="dist" depends="compile,javadoc" + description="Create binary distribution"> + + <!-- Copy documentation subdirectories --> + <mkdir dir="${dist.home}/docs"/> + <copy todir="${dist.home}/docs"> + <fileset dir="${docs.home}"/> + </copy> + + <!-- Create application JAR file --> + <jar jarfile="${dist.home}/${app.name}-${app.version}.war" + basedir="${build.home}"/> + + <!-- Copy additional files to ${dist.home} as necessary --> + + </target> + + + +<!-- ==================== Install Target ================================== --> + +<!-- + + The "install" target tells the specified Tomcat 6 installation to dynamically + install this web application and make it available for execution. It does + *not* cause the existence of this web application to be remembered across + Tomcat restarts; if you restart the server, you will need to re-install all + this web application. + + If you have already installed this application, and simply want Tomcat to + recognize that you have updated Java classes (or the web.xml file), use the + "reload" target instead. + + NOTE: This target will only succeed if it is run from the same server that + Tomcat is running on. + + NOTE: This is the logical opposite of the "remove" target. + +--> + + <target name="install" depends="compile" + description="Install application to servlet container"> + + <deploy url="${manager.url}" + username="${manager.username}" + password="${manager.password}" + path="${app.path}" + localWar="file://${build.home}"/> + + </target> + + +<!-- ==================== Javadoc Target ================================== --> + +<!-- + + The "javadoc" target creates Javadoc API documentation for the Java + classes included in your application. Normally, this is only required + when preparing a distribution release, but is available as a separate + target in case the developer wants to create Javadocs independently. + +--> + + <target name="javadoc" depends="compile" + description="Create Javadoc API documentation"> + + <mkdir dir="${dist.home}/docs/api"/> + <javadoc sourcepath="${src.home}" + destdir="${dist.home}/docs/api" + packagenames="*"> + <classpath refid="compile.classpath"/> + </javadoc> + + </target> + + + +<!-- ====================== List Target =================================== --> + +<!-- + + The "list" target asks the specified Tomcat 6 installation to list the + currently running web applications, either loaded at startup time or + installed dynamically. It is useful to determine whether or not the + application you are currently developing has been installed. + +--> + + <target name="list" + description="List installed applications on servlet container"> + + <list url="${manager.url}" + username="${manager.username}" + password="${manager.password}"/> + + </target> + + +<!-- ==================== Prepare Target ================================== --> + +<!-- + + The "prepare" target is used to create the "build" destination directory, + and copy the static contents of your web application to it. If you need + to copy static files from external dependencies, you can customize the + contents of this task. + + Normally, this task is executed indirectly when needed. + +--> + + <target name="prepare"> + + <!-- Create build directories as needed --> + <mkdir dir="${build.home}"/> + <mkdir dir="${build.home}/WEB-INF"/> + <mkdir dir="${build.home}/WEB-INF/classes"/> + + + <!-- Copy static content of this web application --> + <copy todir="${build.home}"> + <fileset dir="${web.home}"/> + </copy> + + <!-- Copy external dependencies as required --> + <!-- *** CUSTOMIZE HERE AS REQUIRED BY YOUR APPLICATION *** --> + <mkdir dir="${build.home}/WEB-INF/lib"/> +<!-- + <copy todir="${build.home}/WEB-INF/lib" file="${foo.jar}"/> +--> + + <!-- Copy static files from external dependencies as needed --> + <!-- *** CUSTOMIZE HERE AS REQUIRED BY YOUR APPLICATION *** --> + + </target> + + +<!-- ==================== Reload Target =================================== --> + +<!-- + + The "reload" signals the specified application Tomcat 6 to shut itself down + and reload. This can be useful when the web application context is not + reloadable and you have updated classes or property files in the + /WEB-INF/classes directory or when you have added or updated jar files in the + /WEB-INF/lib directory. + + NOTE: The /WEB-INF/web.xml web application configuration file is not reread + on a reload. If you have made changes to your web.xml file you must stop + then start the web application. + +--> + + <target name="reload" depends="compile" + description="Reload application on servlet container"> + + <reload url="${manager.url}" + username="${manager.username}" + password="${manager.password}" + path="${app.path}"/> + + </target> + + +<!-- ==================== Remove Target =================================== --> + +<!-- + + The "remove" target tells the specified Tomcat 6 installation to dynamically + remove this web application from service. + + NOTE: This is the logical opposite of the "install" target. + +--> + + <target name="remove" + description="Remove application on servlet container"> + + <undeploy url="${manager.url}" + username="${manager.username}" + password="${manager.password}" + path="${app.path}"/> + + </target> + + +</project> diff --git a/java-vaadin/src/Application.properties b/java-vaadin/src/Application.properties new file mode 100644 index 0000000..e5b8c95 --- /dev/null +++ b/java-vaadin/src/Application.properties @@ -0,0 +1,2 @@ +hello.next=Ô +hello.world=WoRlD diff --git a/java-vaadin/src/ch/asynk/helloworld/Context.java b/java-vaadin/src/ch/asynk/helloworld/Context.java new file mode 100644 index 0000000..c59016d --- /dev/null +++ b/java-vaadin/src/ch/asynk/helloworld/Context.java @@ -0,0 +1,55 @@ +package ch.asynk.helloworld; + +import java.util.Properties; +import java.util.logging.Level; +import java.util.logging.Logger; + +public class Context { + // + private static final long serialVersionUID = 1L; + // + private Logger log = Logger.getLogger("ch.asynk"); + public Logger getLogger() { + return log; + } + // + private Properties props = null; + public Properties getProps() { + return props; + } + // + private HelloWorldApp app = null; + public HelloWorldApp getApp() { + return app; + } + // + public Context(HelloWorldApp application) { + app = application; + initProps(); + } + // + private void initProps() { + props = new Properties(); + // + String properties_file = "Application.properties"; + log.info("doing stuff : "); + java.io.InputStream is = null; + try { + is = HelloWorldApp.class.getClassLoader().getResourceAsStream(properties_file); + } + catch(java.lang.Exception x) { + log.log(Level.SEVERE,"Error loading "+properties_file+"' properties",x); + return; + } + if (is!=null) { + try { + props.load(is); + } + catch (java.io.IOException e) { + log.log(Level.SEVERE,"Error reading properties '"+properties_file+"' ",e); + } + } else { + log.warning("'"+properties_file+"' file not found"); + } + } +} diff --git a/java-vaadin/src/ch/asynk/helloworld/DataMappingLayout.java b/java-vaadin/src/ch/asynk/helloworld/DataMappingLayout.java new file mode 100644 index 0000000..42801d8 --- /dev/null +++ b/java-vaadin/src/ch/asynk/helloworld/DataMappingLayout.java @@ -0,0 +1,170 @@ +package ch.asynk.helloworld; + +import com.vaadin.terminal.UserError; +import com.vaadin.data.Property; +import com.vaadin.data.Property.ValueChangeEvent; +import com.vaadin.data.util.ObjectProperty; +import com.vaadin.data.Validator; +import com.vaadin.data.validator.DoubleValidator; +import com.vaadin.ui.Alignment; +import com.vaadin.ui.AbstractComponent; +import com.vaadin.ui.VerticalLayout; +import com.vaadin.ui.FormLayout; +import com.vaadin.ui.Panel; +import com.vaadin.ui.Label; +import com.vaadin.ui.Button; +import com.vaadin.ui.Button.ClickEvent; +import com.vaadin.ui.TextField; + +public class DataMappingLayout extends VerticalLayout { + // + private static final long serialVersionUID = 1L; + // + private Context ctx = null; + + public DataMappingLayout(Context context) { + ctx = context; + // + final AbstractComponent pa = buildPanel(); + pa.setWidth(600,UNITS_PIXELS); + pa.setHeight(400,UNITS_PIXELS); + addComponent(pa); + setComponentAlignment(pa, Alignment.MIDDLE_CENTER); + // + } + // + private AbstractComponent buildPanel() { + Panel panel = new Panel("Data Mapping Layout"); + FormLayout layout = new FormLayout(); + panel.setContent(layout); + // + final TextField tf1 = new TextField("Property.ValueChangeListener"); + tf1.setImmediate(true); + layout.addComponent(tf1); + final Label lb1 = new Label(); + lb1.setCaption("The Value"); + layout.addComponent(lb1); + tf1.addListener( new Property.ValueChangeListener() { + private static final long serialVersionUID = 1L; + @Override + public void valueChange(ValueChangeEvent event) { + String value = (String) tf1.getValue(); + lb1.setValue(value); + } + }); + // + Double trouble = 66.6; + final ObjectProperty<Double> property = new ObjectProperty<Double>(trouble); + final TextField tf2 = new TextField("ObjectProperty + Validator", property); + tf2.setImmediate(true); + tf2.addValidator( new DoubleValidator("It should be a double") ); + //tf2.setValidationVisible(false); // nothing will happen + layout.addComponent(tf2); + final Label lb2 = new Label(property); + lb2.setCaption("The Value"); + layout.addComponent(lb2); + // + final TextField tf3 = new TextField("No spaces"); + layout.addComponent(tf3); + tf3.setComponentError(null); // (actually the default) + final Button b1 = new Button("Ok!"); + layout.addComponent(b1); + b1.addListener(new Button.ClickListener() { + private static final long serialVersionUID = 1L; + @Override + public void buttonClick(ClickEvent event) { + if (! ((String) tf3.getValue()).matches("^\\w*$")) { + tf3.setComponentError(new UserError("Must be letters and numbers")); + } else { + tf3.setComponentError(null); + } + } + }); + // + // final Validator intValidator = new Validator() { ... } + class MyIntValidator implements Validator { + private static final long serialVersionUID = 1L; + public boolean isValid(Object value) { + if (value == null || !(value instanceof String)) { + return false; + } + return ((String) value).matches("[1-9][0-9]{4}"); + } + public void validate(Object value) throws InvalidValueException { + if (!isValid(value)) { + if (value != null && value.toString().startsWith("0")) { + throw new InvalidValueException("Must not start with a zero."); + } else { + throw new InvalidValueException("Must be a number 10000-99999."); + } + } + } + }; + final TextField tf5 = new TextField("MyIntValidator"); + tf5.addValidator(new MyIntValidator()); + tf5.setImmediate(true); + layout.addComponent(tf5); + // + class IntegerObjectProperty implements Property { + private static final long serialVersionUID = 1L; + Integer data = 0; + boolean readOnly = false; + public Class<?> getType() { + return Integer.class; + } + public Object getValue() { + return data; + } + public boolean isReadOnly() { + return readOnly; + } + public void setReadOnly(boolean newStatus) { + readOnly = newStatus; + } + public void setValue(Object newValue) throws ReadOnlyException, ConversionException { + if (readOnly) + throw new ReadOnlyException(); + if (newValue instanceof Integer) + data = (Integer) newValue; + else if (newValue instanceof String) + try { + data = Integer.parseInt((String) newValue, 16); + } catch (NumberFormatException e) { + throw new ConversionException("Must be an integer (from property)"); + } + else + throw new ConversionException("Unknown entry type (from property)"); + } + @Override + public String toString() { + return Integer.toHexString(data)+" (hex)"; + } + }; + final IntegerObjectProperty intProperty = new IntegerObjectProperty(); + intProperty.setValue(666); + final TextField tf4 = new TextField("MyObjectProperty",intProperty); + tf4.setImmediate(true); + tf4.setErrorHandler(new ComponentErrorHandler() { + private static final long serialVersionUID = 1L; + @Override + public boolean handleComponentError(ComponentErrorEvent event) { + tf4.setComponentError(new UserError("Must be an integer (from handler)")); + return true; + } + }); + layout.addComponent(tf4); + // + Button nextButton = new Button("next layout"); + nextButton.setDescription("Go to next layout"); + layout.addComponent(nextButton ); + nextButton.addListener( new Button.ClickListener() { + private static final long serialVersionUID = 1L; + @Override + public void buttonClick(ClickEvent event) { + getApplication().getMainWindow().setContent( new LayoutLayout(ctx) ); + } + }); + // + return panel; + } +} diff --git a/java-vaadin/src/ch/asynk/helloworld/EndLayout.java b/java-vaadin/src/ch/asynk/helloworld/EndLayout.java new file mode 100644 index 0000000..2b5c15f --- /dev/null +++ b/java-vaadin/src/ch/asynk/helloworld/EndLayout.java @@ -0,0 +1,31 @@ +package ch.asynk.helloworld; + +import com.vaadin.ui.VerticalLayout; +import com.vaadin.ui.Label; +import com.vaadin.ui.Button; +import com.vaadin.ui.Button.ClickEvent; + +public class EndLayout extends VerticalLayout { + // + private static final long serialVersionUID = 1L; + // + private Context ctx = null; + + public EndLayout(Context context) { + ctx = context; + // + final Label lb1 = new Label(); + lb1.setCaption("That's all folks"); + addComponent(lb1); + // + Button closeButton = new Button("close the application"); + closeButton.setDescription("This will close the application"); + addComponent(closeButton ); + closeButton.addListener( new Button.ClickListener() { + @Override + public void buttonClick(ClickEvent event) { + getApplication().getMainWindow().getApplication().close(); + } + }); + } +}; diff --git a/java-vaadin/src/ch/asynk/helloworld/HelloWorldApp.java b/java-vaadin/src/ch/asynk/helloworld/HelloWorldApp.java new file mode 100644 index 0000000..d5e3091 --- /dev/null +++ b/java-vaadin/src/ch/asynk/helloworld/HelloWorldApp.java @@ -0,0 +1,42 @@ +package ch.asynk.helloworld; + +import com.vaadin.Application; +import com.vaadin.terminal.Terminal; +import com.vaadin.terminal.Sizeable; +import com.vaadin.ui.Window; + +public class HelloWorldApp extends Application { + // + private static final long serialVersionUID = 1L; + // + private Context ctx = null; + public Context getCtx() { + return ctx; + } + // + @Override + public void init() { + ctx = new Context(this); + setTheme("asynk"); + final Window mainWindow = new Window("Hello World Application"); + mainWindow.setWidth(900,Sizeable.UNITS_PIXELS); + setMainWindow(mainWindow); + mainWindow.setContent( new MainLayout(ctx) ); + setLogoutURL("http://asynk.ch"); + ctx.getLogger().warning("hell : "+ctx.getProps().getProperty("hello.next")+" "+ctx.getProps().getProperty("hello.world")); + } + + public void notifyError(String title, String msg){ + getMainWindow().showNotification(title,msg,Window.Notification.TYPE_ERROR_MESSAGE); + } + + @Override + public void terminalError(Terminal.ErrorEvent event) { + // Call the default implementation. + super.terminalError(event); + // Some custom behaviour. + if (getMainWindow() != null) { + getMainWindow().showNotification("An unchecked exception occured!", event.getThrowable().toString(), Window.Notification.TYPE_ERROR_MESSAGE); + } + } +} diff --git a/java-vaadin/src/ch/asynk/helloworld/LayoutLayout.java b/java-vaadin/src/ch/asynk/helloworld/LayoutLayout.java new file mode 100644 index 0000000..6ebb1e3 --- /dev/null +++ b/java-vaadin/src/ch/asynk/helloworld/LayoutLayout.java @@ -0,0 +1,109 @@ +package ch.asynk.helloworld; + +import com.vaadin.ui.Alignment; +import com.vaadin.ui.GridLayout; +import com.vaadin.ui.VerticalLayout; +import com.vaadin.ui.AbstractComponent; +import com.vaadin.ui.Panel; +import com.vaadin.ui.Label; +import com.vaadin.ui.Button; +import com.vaadin.ui.Button.ClickEvent; +import com.vaadin.ui.ListSelect; + +public class LayoutLayout extends VerticalLayout { + // + private static final long serialVersionUID = 1L; + // + private Context ctx = null; + + public LayoutLayout(Context context) { + ctx = context; + // + final AbstractComponent topComponent = buildTopComponent(); + topComponent.setWidth(500,UNITS_PIXELS); + topComponent.setHeight(400,UNITS_PIXELS); + addComponent(topComponent); + setComponentAlignment(topComponent, Alignment.MIDDLE_CENTER); + // + final AbstractComponent grid = buildGrid(); + grid.setSizeFull(); + addComponent(grid); + // + Button nextButton = new Button("next layout"); + nextButton.setDescription("Go to next layout"); + addComponent(nextButton ); + nextButton.addListener( new Button.ClickListener() { + @Override + public void buttonClick(ClickEvent event) { + getApplication().getMainWindow().setContent( new EndLayout(ctx) ); + } + }); + } + + private AbstractComponent buildTopComponent() { + + Panel panel = new Panel("Panel 1"); + VerticalLayout layout = (VerticalLayout) panel.getContent(); + layout.setMargin(true); + layout.setSpacing(true); + layout.setHeight(100,UNITS_PERCENTAGE); + // + float width = 90; + float height = 100; + // + ListSelect receptionList = new ListSelect("List 1"); + receptionList.setWidth(width, UNITS_PERCENTAGE); + receptionList.setHeight(height, UNITS_PERCENTAGE); + layout.addComponent(receptionList); + // + ListSelect splitList = new ListSelect("List 2"); + splitList.setWidth(width, UNITS_PERCENTAGE); + splitList.setHeight(height, UNITS_PERCENTAGE); + layout.addComponent(splitList); + // + ListSelect ctrlList = new ListSelect("Liste 3"); + ctrlList.setWidth(width, UNITS_PERCENTAGE); + ctrlList.setHeight(height, UNITS_PERCENTAGE); + layout.addComponent(ctrlList); + // + Button goButton = new Button("Select"); + goButton.setHeight(height, UNITS_PERCENTAGE); + layout.addComponent(goButton); + // + layout.setExpandRatio(receptionList,3.0f); + layout.setExpandRatio(splitList,3.0f); + layout.setExpandRatio(ctrlList,3.0f); + layout.setExpandRatio(goButton,1.0f); + layout.setComponentAlignment(goButton, Alignment.MIDDLE_CENTER); + // + return panel; + } + + private AbstractComponent buildGrid() { + Panel panel = new Panel("Grid Panel"); + VerticalLayout layout = (VerticalLayout) panel.getContent(); + layout.setMargin(true); + layout.setSpacing(true); + layout.setHeight(100,UNITS_PERCENTAGE); + // + GridLayout grid = new GridLayout(3, 3); + grid.setSizeFull(); + grid.addStyleName("mygrid"); + // excess space usage + //grid.setColumnExpandRatio(1, 1); + //grid.setColumnExpandRatio(2, 5); + //grid.setRowExpandRatio(1, 1); + Button b0 = new Button("[0;0] [0;2]"); + b0.setSizeFull(); + grid.addComponent(b0,0,0,0,2); + final Panel p2 = new Panel("Panel 2"); + p2.setSizeFull(); + grid.addComponent(p2,1,0,2,1); + Button b1 = new Button("[1;2] [2;2]"); + b1.setSizeFull(); + grid.addComponent(b1,1,2,2,2); + panel.setContent(grid); + // + return panel; + } +} diff --git a/java-vaadin/src/ch/asynk/helloworld/MainLayout.java b/java-vaadin/src/ch/asynk/helloworld/MainLayout.java new file mode 100644 index 0000000..d4481c1 --- /dev/null +++ b/java-vaadin/src/ch/asynk/helloworld/MainLayout.java @@ -0,0 +1,75 @@ +package ch.asynk.helloworld; + +import java.util.Date; + +import com.vaadin.terminal.UserError; +import com.vaadin.ui.Alignment; +import com.vaadin.ui.AbstractComponent; +import com.vaadin.ui.VerticalLayout; +import com.vaadin.ui.Panel; +import com.vaadin.ui.Label; +import com.vaadin.ui.Button; +import com.vaadin.ui.Button.ClickEvent; +import com.vaadin.ui.Window.Notification; + +public class MainLayout extends VerticalLayout { + // + private static final long serialVersionUID = 1L; + // + private Context ctx = null; + + public MainLayout(Context context) { + ctx = context; + // + final AbstractComponent pa = buildPanel(); + pa.setWidth(250,UNITS_PIXELS); + pa.setHeight(300,UNITS_PIXELS); + addComponent(pa); + setComponentAlignment(pa, Alignment.MIDDLE_CENTER); + // + } + + private AbstractComponent buildPanel() { + Panel panel = new Panel("Main Layout"); + VerticalLayout layout = (VerticalLayout) panel.getContent(); + layout.setMargin(true); + layout.setSpacing(true); + layout.setHeight(100,UNITS_PERCENTAGE); + // + Label label = new Label("Hello world"); + layout.addComponent(label); + // + Button clockBtn = new Button("What is the time?"); + layout.addComponent( clockBtn ); + clockBtn.setIcon(Resources.clockIcon); + clockBtn.addListener( new Button.ClickListener() { + private static final long serialVersionUID = 1L; + @Override + public void buttonClick(ClickEvent event) { + ctx.getApp().notifyError("The time is " + new Date(), "<i>italic</i> <b>bold</b> description"); + event.getButton().setComponentError( new UserError("Stop pressing this button !!") ); + } + }); + /// + layout.addComponent( new Button("throw an exception", new Button.ClickListener() { + private static final long serialVersionUID = 1L; + @Override + public void buttonClick(ClickEvent event) { + throw new RuntimeException("Wahou !! : exception"); + } + })); + // + Button nextButton = new Button("next layout"); + nextButton.setDescription("Go to next layout"); + layout.addComponent(nextButton ); + nextButton.addListener( new Button.ClickListener() { + private static final long serialVersionUID = 1L; + @Override + public void buttonClick(ClickEvent event) { + ctx.getApp().getMainWindow().setContent( new DataMappingLayout(ctx) ); + } + }); + // + return panel; + } +} diff --git a/java-vaadin/src/ch/asynk/helloworld/Resources.java b/java-vaadin/src/ch/asynk/helloworld/Resources.java new file mode 100644 index 0000000..dcf0449 --- /dev/null +++ b/java-vaadin/src/ch/asynk/helloworld/Resources.java @@ -0,0 +1,9 @@ +package ch.asynk.helloworld; + +import com.vaadin.terminal.ThemeResource; + +public class Resources { + + private static final long serialVersionUID = 1L; + public static final ThemeResource clockIcon = new ThemeResource("icons/clock.png"); +} diff --git a/java-vaadin/web/META-INF/MANIFEST.MF b/java-vaadin/web/META-INF/MANIFEST.MF new file mode 100644 index 0000000..5e94951 --- /dev/null +++ b/java-vaadin/web/META-INF/MANIFEST.MF @@ -0,0 +1,3 @@ +Manifest-Version: 1.0
+Class-Path:
+
diff --git a/java-vaadin/web/VAADIN/themes/asynk/icons/clock.png b/java-vaadin/web/VAADIN/themes/asynk/icons/clock.png Binary files differnew file mode 100644 index 0000000..af9fbba --- /dev/null +++ b/java-vaadin/web/VAADIN/themes/asynk/icons/clock.png diff --git a/java-vaadin/web/VAADIN/themes/asynk/styles.css b/java-vaadin/web/VAADIN/themes/asynk/styles.css new file mode 100644 index 0000000..f309f42 --- /dev/null +++ b/java-vaadin/web/VAADIN/themes/asynk/styles.css @@ -0,0 +1,16 @@ + +@import url("../runo/styles.css"); + +.v-gridlayout-mygrid .v-gridlayout-spacing-on { + /* adjust spacing size */ + padding: 1px; +} + +/* visualize the grid cells */ +.v-gridlayout-mygrid div { + background-color: #f0f; +} + +.v-gridlayout-mygrid div div div { + background-color: #e0e; +} diff --git a/java-vaadin/web/WEB-INF/web.xml b/java-vaadin/web/WEB-INF/web.xml new file mode 100644 index 0000000..fca5609 --- /dev/null +++ b/java-vaadin/web/WEB-INF/web.xml @@ -0,0 +1,166 @@ +<?xml version="1.0" encoding="ISO-8859-1"?> +<!-- + Licensed to the Apache Software Foundation (ASF) under one or more + contributor license agreements. See the NOTICE file distributed with + this work for additional information regarding copyright ownership. + The ASF licenses this file to You under the Apache License, Version 2.0 + (the "License"); you may not use this file except in compliance with + the License. You may obtain a copy of the License at + + http://www.apache.org/licenses/LICENSE-2.0 + + Unless required by applicable law or agreed to in writing, software + distributed under the License is distributed on an "AS IS" BASIS, + WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + See the License for the specific language governing permissions and + limitations under the License. +--> + +<!DOCTYPE web-app + PUBLIC "-//Sun Microsystems, Inc.//DTD Web Application 2.3//EN" + "http://java.sun.com/dtd/web-app_2_3.dtd"> + +<web-app> + + + <!-- General description of your web application --> + + <display-name>My Web Application</display-name> + <description> + This is version X.X of a vaadin web application. + </description> + + + <!-- Context initialization parameters that define shared + String constants used within your application, which + can be customized by the system administrator who is + installing your application. The values actually + assigned to these parameters can be retrieved in a + servlet or JSP page by calling: + + String value = + getServletContext().getInitParameter("name"); + + where "name" matches the <param-name> element of + one of these initialization parameters. + + You can define any number of context initialization + parameters, including zero. + --> + + <context-param> + <param-name>admin</param-name> + <param-value>jeremy@asynk.ch</param-value> + <description> + The EMAIL address of the administrator to whom questions + and comments about this application should be addressed. + </description> + </context-param> + + <context-param> + <description> + Vaadin production mode</description> + <param-name>productionMode</param-name> + <param-value>false</param-value> + </context-param> + + + <!-- Servlet definitions for the servlets that make up + your web application, including initialization + parameters. With Tomcat, you can also send requests + to servlets not listed here with a request like this: + + http://localhost:8080/{context-path}/servlet/{classname} + + but this usage is not guaranteed to be portable. It also + makes relative references to images and other resources + required by your servlet more complicated, so defining + all of your servlets (and defining a mapping to them with + a servlet-mapping element) is recommended. + + Servlet initialization parameters can be retrieved in a + servlet or JSP page by calling: + + String value = + getServletConfig().getInitParameter("name"); + + where "name" matches the <param-name> element of + one of these initialization parameters. + + You can define any number of servlets, including zero. + --> + + <servlet> + <servlet-name>My Application</servlet-name> + <description> + This servlet plays the "controller" role in the MVC architecture + used in this application. It is generally mapped to the ".do" + filename extension with a servlet-mapping element, and all form + submits in the app will be submitted to a request URI like + "saveCustomer.do", which will therefore be mapped to this servlet. + + The initialization parameter names for this servlet are the + "servlet path" that will be received by this servlet (after the + filename extension is removed). The corresponding value is the + name of the action class that will be used to process this request. + </description> + <servlet-class>com.vaadin.terminal.gwt.server.ApplicationServlet</servlet-class> + <init-param> + <description> + Vaadin application class to start</description> + <param-name>application</param-name> + <param-value>ch.asynk.helloworld.HelloWorldApp</param-value> + </init-param> + <!-- Load this servlet at server startup time --> + <load-on-startup>5</load-on-startup> + </servlet> + + <!--servlet> + <servlet-name>graph</servlet-name> + <description> + This servlet produces GIF images that are dynamically generated + graphs, based on the input parameters included on the request. + It is generally mapped to a specific request URI like "/graph". + </description> + </servlet--> + + + <!-- Define mappings that are used by the servlet container to + translate a particular request URI (context-relative) to a + particular servlet. The examples below correspond to the + servlet descriptions above. Thus, a request URI like: + + http://localhost:8080/{contextpath}/graph + + will be mapped to the "graph" servlet, while a request like: + + http://localhost:8080/{contextpath}/saveCustomer.do + + will be mapped to the "controller" servlet. + + You may define any number of servlet mappings, including zero. + It is also legal to define more than one mapping for the same + servlet, if you wish to. + --> + <servlet-mapping> + <servlet-name>My Application</servlet-name> + <url-pattern>/*</url-pattern> + </servlet-mapping> + + <!--servlet-mapping> + <servlet-name>graph</servlet-name> + <url-pattern>/graph</url-pattern> + </servlet-mapping--> + + + <!-- Define the default session timeout for your application, + in minutes. From a servlet or JSP page, you can modify + the timeout for a particular session dynamically by using + HttpSession.getMaxInactiveInterval(). --> + + <session-config> + <session-timeout>30</session-timeout> <!-- 30 minutes --> + </session-config> + + +</web-app> |