diff options
author | Jouni Koivuviita <jouni@vaadin.com> | 2012-08-07 16:05:49 +0300 |
---|---|---|
committer | Jouni Koivuviita <jouni@vaadin.com> | 2012-08-07 16:05:49 +0300 |
commit | 8356465b3897fa16233064cfd586b4557f33e8e4 (patch) | |
tree | aa14a1e52e85935486e7a4aec453247939a228fc | |
parent | 9a83722fde94af949b45d4c091399ba9e1f6ba29 (diff) | |
parent | 5813e0e9e5af4f946e5ea9c73d426e95d93b7bc4 (diff) | |
download | vaadin-framework-8356465b3897fa16233064cfd586b4557f33e8e4.tar.gz vaadin-framework-8356465b3897fa16233064cfd586b4557f33e8e4.zip |
merge master
1146 files changed, 13814 insertions, 2920 deletions
diff --git a/WebContent/VAADIN/themes/base/table/table.css b/WebContent/VAADIN/themes/base/table/table.css index 653063ccb5..55728e3264 100644 --- a/WebContent/VAADIN/themes/base/table/table.css +++ b/WebContent/VAADIN/themes/base/table/table.css @@ -241,6 +241,11 @@ .v-off { color: #ddd; } + +.v-table .v-checkbox { + display: inline-block; +} + /************************************* * Drag'n'drop styles *************************************/ diff --git a/WebContent/VAADIN/themes/base/textfield/richtext.css b/WebContent/VAADIN/themes/base/textfield/richtext.css index a304fa2a57..6a236886cc 100644 --- a/WebContent/VAADIN/themes/base/textfield/richtext.css +++ b/WebContent/VAADIN/themes/base/textfield/richtext.css @@ -6,7 +6,9 @@ background: #fff; border: none; } - +.v-richtextarea .gwt-HTML { + height: 100%; +} .v-richtextarea .gwt-RichTextToolbar { white-space: nowrap; background: #959595 url(img/richtext-toolbar-bg.png) repeat-x 0 -42px; diff --git a/WebContent/VAADIN/themes/base/treetable/treetable.css b/WebContent/VAADIN/themes/base/treetable/treetable.css index de505ba774..4d9ad5031b 100644 --- a/WebContent/VAADIN/themes/base/treetable/treetable.css +++ b/WebContent/VAADIN/themes/base/treetable/treetable.css @@ -4,14 +4,17 @@ height: 10px; /* defines the amount of indent per level */ width: 18px; + position: absolute; + left: 0; + top: 5px; } .v-treetable-node-closed { - background: url(../treetable/img/arrow-right.png) right center no-repeat; + background: url(../treetable/img/arrow-right.png) right top no-repeat; } .v-treetable-node-open { - background: url(../treetable/img/arrow-down.png) right center no-repeat; + background: url(../treetable/img/arrow-down.png) right top no-repeat; } .v-treetable .v-checkbox { @@ -25,6 +28,10 @@ z-index: 10; } +.v-treetable .v-table-cell-wrapper { + position: relative; +} + .v-treetable .v-table-body .v-table-table .v-table-row-animating { zoom:1; z-index:1; diff --git a/WebContent/VAADIN/themes/reindeer/table/table.css b/WebContent/VAADIN/themes/reindeer/table/table.css index 9b78d86e34..5d67cfe564 100644 --- a/WebContent/VAADIN/themes/reindeer/table/table.css +++ b/WebContent/VAADIN/themes/reindeer/table/table.css @@ -112,9 +112,9 @@ text-shadow: #f3f5f8 0 1px 0; line-height: normal; } -.v-table-generated-row .v-table-cell-content { - padding-top: 1px; - padding-bottom: 2px; +.v-table-generated-row .v-table-cell-wrapper { + padding-top: 4px; + padding-bottom: 5px; } .v-table-cell-content:last-child { border-right-color: transparent; diff --git a/WebContent/release-notes.html b/WebContent/release-notes.html index 6f2eb8c2cc..1e4016db90 100644 --- a/WebContent/release-notes.html +++ b/WebContent/release-notes.html @@ -71,47 +71,50 @@ <h2 id="enhancements">Enhancements in Vaadin @version-minor@</h2> <p> - @version-minor@ is the second development release of the upcoming Version 7 of the - Vaadin Framework. It introduces the second set of new features in Vaadin 7, for the + @version-minor@ is the third development release of the upcoming Version 7 of the + Vaadin Framework. It introduces the third set of new features in Vaadin 7, for the purpose of receiving feedback about the changes. </p> - <p>The major changes in this second alpha phase are:</p> + <p>The major changes in this third alpha phase are:</p> <ul> - <li>Complete overhaul of the client-server communication architecture + <li>GWT is now built into Vaadin Framework <ul> - <li>All add-on components that have widgets need to be ported to Vaadin 7</li> - <li>Integration of a GWT widget is done in a <i>connector</i> class</li> - <li>Component-to-widget mapping now defined on the client-side, in the connector</li> - <li>No more <b style="text-decoration: line-through">Paintable</b> or <b style="text-decoration: line-through">VariableOwner</b> - <li>Server-side component and client-side widget can have a <emphasis>shared state</emphasis> object which is automatically synchronized</li> - <li>Both client-side and server-side can make RPC calls to the other side - <ul> - <li>Communicated in the next request/response</li> - <li>No return values - <li>Typically for communicating events</li> - </ul> - </li> - <li>UIDL is deprecated</li> - <li>Compatibility layer for Vaadin 6 included for easy migration</li> + <li>New SuperDevMode allows debugging client-side Java code in the browser without any plugins</li> </ul> </li> - <li>Get computed style of a component from the browser</li> - <li>Support for border, padding, and margin in core layout components</li> + <li>Support for JavaScript components - GWT integration code not required</li> + <li>Handle JavaScript callbacks on the server-side</li> + <li>Component and root extensions</li> + <li>Navigation API for view navigation + <ul> + <li>View navigation with bookmarking/linking with URI fragments and browser history support</li> + <li>Access control for views, view change confirmation</li> + </ul> + </li> + <li>Resource loading (JS/CSS) by the framework</li> </ul> - + <p> - The enchancements are described in more detail in the <a + The enhancements are described in more detail in the <a href="https://vaadin.com/wiki/-/wiki/Main/Vaadin+7">mini-tutorials</a> in the Vaadin Wiki. </p> + <p> + Please see the release notes for <a + href="http://vaadin.com/download/prerelease/7.0/7.0.0/7.0.0.alpha1/release-notes.html">alpha1</a> + and <a + href="http://vaadin.com/download/prerelease/7.0/7.0.0/7.0.0.alpha2/release-notes.html">alpha2</a> + for a complete list of major enhancements for Vaadin 7 so far. + </p> + <h3 id="changelog">ChangeLog</h3> <p> For a complete list of changes in this release, please see the <a - href="http://dev.vaadin.com/query?status=closed&group=resolution&milestone=Vaadin+7.0.0.alpha2">list + href="http://dev.vaadin.com/query?status=closed&group=resolution&milestone=Vaadin+7.0.0.alpha3">list of closed tickets</a>. </p> @@ -142,18 +145,6 @@ <h2 id="dependencies">Vaadin @version@ Dependencies</h2> - <h3>Google Web Toolkit (GWT)</h3> - - <p> - Vaadin uses GWT @gwt-version@ for widget set compilation. GWT can be downloaded - from <a - href="http://code.google.com/webtoolkit/">http://code.google.com/webtoolkit/</a>. - GWT can also be automatically downloaded by the Vaadin Plug-in for Eclipse. Please - note that GWT @gwt-version@ requires the <i>validation-api-1.0.0.GA.jar</i> and - <i>validation-api-1.0.0.GA-sources.jar</i> files in addition to <i>gwt-dev.jar</i> - and <i>gwt-user.jar</i> for widget set compilation. - </p> - <h3>Bean Validation</h3> <p> @@ -307,9 +298,8 @@ <h2 id="supportedversions">Supported Technologies</h2> <p> - Vaadin 7 is compatible with <b>Java 5</b> and it is also compatible with most other - operating system supporting Java 5 or newer. However, using Java 6 is recommended, - as it is required by widget set compilation. + Vaadin 7 is compatible with <b>Java 6</b> and it is also compatible with most other + operating system supporting Java 6 or newer. </p> <p> diff --git a/WebContent/statictestfiles/LoginFormIframe.html b/WebContent/statictestfiles/LoginFormIframe.html new file mode 100644 index 0000000000..0d6ee9d86b --- /dev/null +++ b/WebContent/statictestfiles/LoginFormIframe.html @@ -0,0 +1,14 @@ +<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd"> +<html xmlns="http://www.w3.org/1999/xhtml"> +<head> +<meta http-equiv="Content-Type" content="text/html; charset=utf-8"/> +<title>LoginForm</title> +<script type="text/javascript"> + window.name="LoginForm"; +</script> +</head> +<body> +<p>Tests that LoginForm can be submitted even when the Application is embedded inside an iframe</p> +<iframe src="/run/com.vaadin.tests.components.loginform.LoginFormTest?restartApplication" name="LoginForm" height="500px" width="500px"></iframe> +</body> +</html>
\ No newline at end of file diff --git a/WebContent/statictestfiles/jsconnector.js b/WebContent/statictestfiles/jsconnector.js deleted file mode 100644 index d7f697dbf5..0000000000 --- a/WebContent/statictestfiles/jsconnector.js +++ /dev/null @@ -1,13 +0,0 @@ -window.com_vaadin_tests_components_javascriptcomponent_BasicJavaScriptComponent_ExampleWidget = function() { - var connector = this; - - var rootElement = connector.getWidgetElement(); - rootElement.innerHTML = 'Hello world!'; - rootElement.onclick = function() { - connector.getRpcProxy().onClick("message"); - connector.onclick("another message"); - } - connector.onStateChange = function() { - console.log('state change:', this.getState()); - } -}
\ No newline at end of file diff --git a/build/GWT-VERSION.properties b/build/GWT-VERSION.properties index 028ad8b4de..e5bb635e01 100644 --- a/build/GWT-VERSION.properties +++ b/build/GWT-VERSION.properties @@ -1,2 +1,2 @@ -gwt-version=2.4.0 +gwt-version=2.5.0 gwt-version-dependencies=validation-api-1.0.0.GA.jar, validation-api-1.0.0.GA-sources.jar diff --git a/build/build.properties b/build/build.properties index a1b285c952..0260cc54a9 100644 --- a/build/build.properties +++ b/build/build.properties @@ -4,6 +4,7 @@ product-file=vaadin product-name=Vaadin vaadin-package=com/vaadin gwt-dir=lib/core/gwt +required.java.version=1.6 # repository into which Maven snapshots should be published snapshot.repository.url=http://oss.sonatype.org/content/repositories/vaadin-snapshots diff --git a/build/build.xml b/build/build.xml index 97f7c1c274..f7d910e4b0 100644 --- a/build/build.xml +++ b/build/build.xml @@ -34,16 +34,69 @@ <path id="additional.jar.path"> <fileset dir="build" includes="lib/**/*.jar" ></fileset> </path> + + <!-- Default location for GWT check-out: trunk and tools in a directory next to Vaadin project --> + <property name="gwt.root" value="${basedir}/../trunk"/> + + <property name="gwt.build.dir" value="${gwt.root}/build"/> + <property name="gwt.tools" value="${gwt.root}/../tools"/> + <property name="gwt.tools.lib" value="${gwt.tools}/lib"/> + <property name="gwt.lib.dir" value="${gwt.build.dir}/lib"/> + + <property name="gwt.user.jar" value="${gwt.lib.dir}/gwt-user.jar"/> + <property name="gwt.dev.jar" value="${gwt.lib.dir}/gwt-dev.jar"/> + <property name="gwt.codeserver.jar" value="${gwt.lib.dir}/gwt-codeserver.jar"/> + <property name="gwt.elemental.jar" value="${gwt.lib.dir}/gwt-elemental.jar"/> + + <property name="gwt.user.dir" value="${gwt.root}/user"/> + <property name="gwt.user.bin" value="${gwt.build.dir}/out/user/bin"/> + + <property name="jarjar-jar" value="${gwt.tools.lib}/tonicsystems/jarjar-1.0rc8.jar"/> + <path id="compile.classpath.server-side"> <path refid="additional.jar.path" /> + + <!-- GWT --> + <pathelement location="${gwt.user.jar}" /> + <pathelement location="${gwt.dev.jar}" /> + + <!-- GWT dependencies - included in gwt-user.jar --> + <!-- + <pathelement location="${gwt.tools.lib}/w3c/sac/sac-1.3.jar" /> + <pathelement location="${gwt.tools.lib}/w3c/flute/flute-1.3-gg2.jar" /> + --> + <path refid="ivy.compile.classpath.server-side" /> </path> <path id="compile.classpath.client-side"> - <path refid="additional.jar.path" /> - <path refid="ivy.compile.classpath.client-side" /> + <path refid="additional.jar.path" /> + + <!-- GWT user --> + <!-- + <pathelement path="${gwt.user.dir}/src" /> + <pathelement path="${gwt.user.dir}/super" /> + <pathelement path="${gwt.user.dir}/out/user/bin"/> + --> + <!-- GWT --> + <pathelement location="${gwt.user.jar}" /> + <pathelement location="${gwt.dev.jar}" /> + + <!-- GWT dependencies - included in gwt-user.jar --> + <!-- + <pathelement location="${gwt.tools.lib}/w3c/sac/sac-1.3.jar" /> + <pathelement location="${gwt.tools.lib}/w3c/flute/flute-1.3-gg2.jar" /> + --> + + <path refid="ivy.compile.classpath.client-side" /> </path> <path id="compile.classpath.server-side-tests"> <path refid="additional.jar.path" /> + + <!-- GWT --> + <pathelement location="${gwt.user.jar}" /> + <!-- needed at least for Apache Commons --> + <pathelement location="${gwt.dev.jar}" /> + <path refid="ivy.compile.classpath.server-side-tests" /> </path> </target> @@ -68,6 +121,7 @@ <property name="result-classes-core" value="${result-path}/classes/core"/> <property name="result-classes-junit" value="${result-path}/classes/junit"/> <property name="result-classes-testbench" value="${result-path}/classes/testbench"/> + <property name="result-precompiled-widgetsets" value="${result-path}/classes/widgetsets"/> <!-- Folder where Emma instrumented classes are placed (if Emma is used)--> <property name="result-classes-core-for-emma-war" value="${result-path}/classes/emma-war"/> <property name="result-classes-core-for-emma-junit" value="${result-path}/classes/emma-junit"/> @@ -77,6 +131,7 @@ <path refid="compile.classpath.client-side" /> <pathelement location="${result-classes-core}" /> <pathelement location="${result-src-core}" /> + <pathelement location="${result-precompiled-widgetsets}" /> </path> </target> <target name="clean-all" depends="clean-result"> @@ -85,6 +140,7 @@ <include name="*.png" /> </fileset> </delete> + <delete failonerror="false" dir="WebContent/VAADIN/gwt-unitCache" /> </target> <!-- ================================================================== --> @@ -95,11 +151,11 @@ <target name="check-java-version"> <condition property="java.version.matches"> <or> - <equals arg1="${ant.java.version}" arg2="1.5"/> + <equals arg1="${ant.java.version}" arg2="${required.java.version}"/> <isset property="ignoreversion"/> </or> </condition> - <fail unless="java.version.matches" message="Java version is ${ant.java.version}, but Vaadin must be compiled with genuine Java 1.5 compiler. Use -Dignoreversion=1 for ant to ignore the version check."/> + <fail unless="java.version.matches" message="Java version is ${ant.java.version}, but Vaadin must be compiled with genuine Java ${required.java.version} compiler. Use -Dignoreversion=1 for ant to ignore the version check."/> <echo>Java version is ${ant.java.version} as required.</echo> </target> @@ -107,7 +163,7 @@ <!-- Initialization - - - - - - - - - - - - - - - - - - - - - - - - - - --> <!-- ================================================================== --> - <target name="init" depends="init-deps, build.properties"> + <target name="init" depends="init-deps, build.properties, check-java-version"> <!-- Current timestamp in different formats. --> <tstamp> <format property="build.date" pattern="yyyy-MM-dd"/> @@ -265,7 +321,7 @@ description="Build package required files, without packing them."> </target> - <target name="compile-server-side" depends="compile-core, webcontent"/> + <target name="compile-server-side" depends="compile-gwt, compile-core, webcontent"/> <!-- Copy and preprocess sources for packaging NOTE: Replaces <version></version> tags with build version tag for some "textual" files @@ -348,10 +404,6 @@ </fileset> </copy> - <!-- Unify mix usage of mac/Linux/Win characters --> - <echo>Unifying mix usage of Mac/Linux/Win linefeeds for java/html/css/xml files.</echo> - <fixcrlf srcdir="${result-path}/src" eol="crlf" tablength="4" tab="asis" includes="**/*.java **/*.html **/*.css **/*.xml" /> - <!-- Add other files such as images, these are not filtered or processed by fixcrlf task --> <echo>Copying non java/html/css/xml files such as images.</echo> <copy todir="${result-src-core}"> @@ -439,7 +491,7 @@ <echo>Compiling src (server-side)</echo> <!-- Compile core sources first as the other sources depend on these --> <mkdir dir="${result-classes-core}" /> - <javac source="1.5" target="1.5" classpathref="compile.classpath.server-side" destdir="${result-classes-core}" debug="true" encoding="UTF-8" includeantruntime="false"> + <javac source="${required.java.version}" target="${required.java.version}" classpathref="compile.classpath.server-side" destdir="${result-classes-core}" debug="true" encoding="UTF-8" includeantruntime="false"> <src path="${result-src-core}"/> </javac> </target> @@ -448,7 +500,7 @@ <echo>Compiling src (Server and client side JUnit tests)</echo> <!-- Compile server and client side JUnit tests --> <mkdir dir="${result-classes-junit}" /> - <javac source="1.5" target="1.5" classpathref="compile.classpath.server-side-tests" destdir="${result-classes-junit}" debug="true" encoding="UTF-8" includeantruntime="false"> + <javac source="${required.java.version}" target="${required.java.version}" classpathref="compile.classpath.server-side-tests" destdir="${result-classes-junit}" debug="true" encoding="UTF-8" includeantruntime="false"> <classpath path="${result-classes-core}"></classpath> <src path="${result-src-junit}"/> </javac> @@ -456,7 +508,7 @@ <echo>Compiling src (TestBench tests)</echo> <!-- Compile TestBench tests --> <mkdir dir="${result-classes-testbench}" /> - <javac source="1.5" target="1.5" classpathref="compile.classpath.server-side" destdir="${result-classes-testbench}" debug="true" encoding="UTF-8" includeantruntime="false"> + <javac source="${required.java.version}" target="${required.java.version}" classpathref="compile.classpath.server-side" destdir="${result-classes-testbench}" debug="true" encoding="UTF-8" includeantruntime="false"> <classpath path="${result-classes-junit}"></classpath> <classpath path="${result-classes-core}"></classpath> <src path="${result-src-testbench}"/> @@ -467,7 +519,7 @@ <target name="compile-helpers" depends="init"> <mkdir dir="${buildhelpers-classes}" /> <ivy:cachepath pathid="buildhelpers.dependencies" resolveId="buildhelpers" conf="compile" file="build/ivy/buildhelpers-ivy.xml"/> - <javac source="1.5" target="1.5" includeantruntime="false" srcdir="${buildhelpers-src}" + <javac source="${required.java.version}" target="${required.java.version}" includeantruntime="false" srcdir="${buildhelpers-src}" classpathref="buildhelpers.dependencies" destdir="${buildhelpers-classes}" debug="true" encoding="UTF-8" /> </target> @@ -520,6 +572,22 @@ <property name="widgetset-extraParams" value="" /> <echo>Compiling widgetset ${widgetset}. Output directory: ${widgetsets-output-dir}</echo> <mkdir dir="${widgetsets-output-dir}"/> + + <!-- Disabled to reduce JAR size: precompile the widgetset to a .gwtar file --> + <!-- + <java classname="com.google.gwt.dev.CompileModule" classpathref="compile.classpath.widgetset" failonerror="yes" fork="yes" maxmemory="512m"> + <arg value="-out" /> + <arg value="${result-precompiled-widgetsets}" /> + <arg value="-strict" /> + <arg value="${widgetset}" /> + + <jvmarg value="-Xss8M"/> + <jvmarg value="-XX:MaxPermSize=256M"/> + <jvmarg value="-Djava.awt.headless=true"/> + </java> + --> + + <!-- compile the widgetset --> <java classname="com.google.gwt.dev.Compiler" classpathref="compile.classpath.widgetset" failonerror="yes" fork="yes" maxmemory="512m"> <arg value="-war" /> <arg value="${widgetsets-output-dir}" /> @@ -528,13 +596,16 @@ <arg value="-strict" /> <arg value="-localWorkers" /> <arg value="${widgetset-localWorkers}" /> - <arg line="${widgetset-extraParams}" /> + <arg line="${widgetset-extraParams}" /> <arg value="${widgetset}" /> + + <sysproperty key="vFailIfNotSerializable" value="true" /> <jvmarg value="-Xss8M"/> <jvmarg value="-XX:MaxPermSize=256M"/> <jvmarg value="-Djava.awt.headless=true"/> </java> + <antcall target="remove-widgetset-gwt-tmp"/> <echo>Compiled ${widgetset}</echo> @@ -570,7 +641,7 @@ <!-- Compiles all widgetsets. --> <!-- This is called when building packages and when compiling all --> <!-- widgetsets, but not when compiling individual widgetsets. --> - <target name="compile-client-side" depends="compile-server-side, compile-tests"> + <target name="compile-client-side" depends="compile-gwt, compile-server-side, compile-tests"> <echo>Compiling widget sets in parallel.</echo> <parallel threadsperprocessor="1"> <antcall inheritrefs="true" target="compile-widgetset-default"/> @@ -592,14 +663,31 @@ <target name="widgetsets" depends="init-nonpackage, init, compile-widgetset-generator, compile-client-side"/> <!-- Build each widgetset locally, i.e., not for an installation package. --> - <target name="widgetset-default" depends="init-nonpackage, init, compile-widgetset-generator, compile-widgetset-default" description="Compile the DefaultWidgetSet"/> - <target name="widgetset-testing" depends="init-nonpackage, init, compile-tests, compile-widgetset-generator, compile-widgetset-testing"/> - <target name="widgetset-portal-default" depends="init-nonpackage, init, compile-widgetset-generator, compile-widgetset-portal-default"/> + <target name="widgetset-default" depends="init-nonpackage, init, compile-gwt, compile-widgetset-generator, compile-widgetset-default" description="Compile the DefaultWidgetSet"/> + <target name="widgetset-testing" depends="init-nonpackage, init, compile-gwt, compile-tests, compile-widgetset-generator, compile-widgetset-testing"/> + <target name="widgetset-portal-default" depends="init-nonpackage, init, compile-gwt, compile-widgetset-generator, compile-widgetset-portal-default"/> <!-- ================================================================== --> <!-- Libraries and Tests --> <!-- ================================================================== --> + <target name="compile-gwt" depends="init" unless="use.precompiled.gwt"> + <!-- skipped based on a parameter, use pre-compiled JARs from elsewhere --> + <!-- Compile GWT in a directory defined by properties --> + <ant antfile="${gwt.root}/build.xml" target="user" dir="${gwt.root}" inheritall="false" inheritrefs="false"> + <property name="gwt.root" value="${gwt.root}"/> + </ant> + <ant antfile="${gwt.root}/build.xml" target="dev" dir="${gwt.root}" inheritall="false" inheritrefs="false"> + <property name="gwt.root" value="${gwt.root}"/> + </ant> + <ant antfile="${gwt.root}/build.xml" target="codeserver" dir="${gwt.root}" inheritall="false" inheritrefs="false"> + <property name="gwt.root" value="${gwt.root}"/> + </ant> + <ant antfile="${gwt.root}/build.xml" target="elemental" dir="${gwt.root}" inheritall="false" inheritrefs="false"> + <property name="gwt.root" value="${gwt.root}"/> + </ant> + </target> + <!-- Compile the Vaadin library JAR. --> <!-- Need only the default widgetset for this, but can't depend --> <!-- specifically on it, because dependence does not see compiled --> @@ -610,7 +698,6 @@ <!-- Create Vaadin JAR --> <mkdir dir="${output-dir}/META-INF"/> <echo file="${output-dir}/META-INF/VERSION">${version.full}</echo> - <echo file="${output-dir}/META-INF/GWT-VERSION">${gwt-version}</echo> <emma enabled="${emma.enabled}" > <instr instrpath="${result-classes-core}" @@ -622,10 +709,13 @@ <filter includes="com.vaadin.*" /> <filter excludes="com.vaadin.terminal.gwt.*" /> </instr> - </emma> + </emma> - <jar jarfile="${output-dir}/WebContent/WEB-INF/lib/${lib-jar-name}" - compress="true" manifest="build/package/META-INF/MANIFEST.MF" duplicate="preserve"> + <taskdef name="jarjar" classname="com.tonicsystems.jarjar.JarJarTask" + classpath="${jarjar-jar}"/> + + <jarjar jarfile="${output-dir}/WebContent/WEB-INF/lib/${lib-jar-name}" + compress="true" manifest="build/package/META-INF/MANIFEST.MF" duplicate="preserve" index="true"> <metainf dir="${output-dir}/META-INF"/> <manifest> <attribute name="Vaadin-Package-Version" value="1" /> @@ -633,7 +723,8 @@ <attribute name="Implementation-Vendor" value="Vaadin Ltd" /> <attribute name="Implementation-URL" value="http://vaadin.com" /> <attribute name="Implementation-Version" value="${version.full}" /> - <attribute name="GWT-Version" value="${gwt-version}" /> + <!-- No separate GWT-Version attribute or file --> + <!-- <attribute name="GWT-Version" value="${gwt-version}" /> --> <attribute name="GWT-Version-Dependencies" value="${gwt-version-dependencies}" /> <attribute name="Bundle-Version" value="${version.full}" /> </manifest> @@ -658,7 +749,91 @@ <include name="img/**" /> </patternset> </fileset> - </jar> + + <!-- Precompiled widgetset (.gwtar file) not included to limit JAR size --> + <!-- <fileset dir="${result-precompiled-widgetsets}" includes="com/vaadin/terminal.gwt.DefaultWidgetSet.gwtar" /> --> + + <!-- TODO GWT related license files etc. should be in subdirectories --> + + <!-- GWT --> + <!-- Precompiled GWT modules (.gwtar file) not included to limit JAR size --> + <zipfileset src="${gwt.user.jar}" excludes="META-INF/**,javax/servlet/**,**/*.gwtar" /> + + <!-- TODO depends on locally compiled gwt-user --> + <!-- + <fileset dir="${gwt.user.dir}/src" excludes="**/package.html" /> + <fileset dir="${gwt.user.dir}/super" excludes="**/package.html" /> + <fileset dir="${gwt.user.bin}" excludes="**/*.gwtar" /> + + <zipfileset src="${gwt.tools.lib}/w3c/sac/sac-1.3.jar" /> + <zipfileset src="${gwt.tools.lib}/w3c/flute/flute-1.3-gg2.jar" /> + <zipfileset src="${gwt.tools.lib}/streamhtmlparser/streamhtmlparser-jsilver-r10/streamhtmlparser-jsilver-r10-1.5-rebased.jar" /> + --> + + <!-- GWT development JAR contents including many external dependencies --> + <zipfileset src="${gwt.dev.jar}" excludes="javax/servlet/**,javax/xml/**" /> + + <!-- Alternative approach: GWT compiler and its dependencies only from the dev JAR --> + <!-- + <zipfileset src="${gwt.dev.jar}"> + <include name="com/google/gwt/core/client/**"/> + <include name="com/google/gwt/core/shared/**"/> + + <include name="com/google/gwt/core/ext/**"/> + <include name="com/google/gwt/core/linker/**"/> + <include name="com/google/gwt/dev/About.java"/> + <include name="com/google/gwt/dev/GwtVersion.java"/> + <include name="com/google/gwt/dev/Permutation.java"/> + <include name="com/google/gwt/dev/asm/**"/> + <include name="com/google/gwt/dev/cfg/**"/> + <include name="com/google/gwt/dev/javac/**"/> + <include name="com/google/gwt/dev/jdt/**"/> + <include name="com/google/gwt/dev/jjs/**"/> + <include name="com/google/gwt/dev/js/**"/> + <include name="com/google/gwt/dev/json/**"/> + <include name="com/google/gwt/dev/resource/**"/> + <include name="com/google/gwt/dev/util/**"/> + <include name="com/google/gwt/soyc/**"/> + <include name="com/google/gwt/util/**"/> + <include name="org/eclipse/jdt/**"/> + </zipfileset> + <zipfileset src="${gwt.tools.lib}/apache/ant-1.6.5.jar" /> + <zipfileset src="${gwt.tools.lib}/eclipse/jdt-3.4.2_r894.jar" /> + <zipfileset src="${gwt.tools.lib}/tomcat/commons-collections-3.1.jar" /> + <zipfileset src="${gwt.tools.lib}/guava/guava-10.0.1/guava-10.0.1-rebased.jar" /> + <zipfileset src="${gwt.tools.lib}/jscomp/r1649/compiler-rebased.jar" /> + --> + + <!-- GWT SuperDevMode --> + <zipfileset src="${gwt.codeserver.jar}" /> + + <!-- GWT Elemental --> + <zipfileset src="${gwt.elemental.jar}" /> + + <!-- jarjar rules: rebase packages from gwt-dev.jar but not those from gwt-user --> + + <!-- Don't rebase these --> + <!-- xalan is used via reflection --> + <rule pattern="org.apache.xalan.**" result="@0"/> + <rule pattern="org.apache.xml.**" result="@0"/> + <!-- Cannot rebase - used in APIs etc. --> + <!-- <rule pattern="org.mortbay.**" result="@0"/> --> + <!-- <rule pattern="org.xml.**" result="@0"/> --> + + <!-- Rebase these --> + <rule pattern="com.gargoylesoftware.**" result="com.vaadin.external.@0"/> + <rule pattern="com.ibm.**" result="com.vaadin.external.@0"/> + <rule pattern="com.steadystate.**" result="com.vaadin.external.@0"/> + <rule pattern="mx4j.**" result="com.vaadin.external.@0"/> + <rule pattern="net.sourceforge.htmlunit.**" result="com.vaadin.external.@0"/> + <rule pattern="org.apache.**" result="com.vaadin.external.@0"/> + <rule pattern="org.cyberneko.**" result="com.vaadin.external.@0"/> + <rule pattern="org.eclipse.**" result="com.vaadin.external.@0"/> + <!-- looked up based on class name? --> + <rule pattern="org.hibernate.validator.**" result="com.vaadin.external.@0"/> + <rule pattern="org.jdesktop.swingworker.**" result="com.vaadin.external.@0"/> + <rule pattern="org.kohsuke.args4j.**" result="com.vaadin.external.@0"/> + </jarjar> <!-- Generate the Export-Package attribute in the manifest of the JAR --> <java classname="com.vaadin.buildhelpers.GeneratePackageExports" failonerror="true" fork="yes"> @@ -704,7 +879,7 @@ <doctitle>${javadoc.doctitle}</doctitle> <!-- <header><![CDATA[<script type="text/javascript" src=".html-style/style.js"></script>]]></header> --> <bottom>${javadoc.bottom}</bottom> - <link offline="true" href="http://java.sun.com/j2se/1.5.0/docs/api/" packagelistLoc="build/javadoc/j2se-1.5.0" /> + <link offline="true" href="http://docs.oracle.com/javase/6/docs/api/" packagelistLoc="build/javadoc/j2se-1.6.0" /> <link offline="true" href="http://java.sun.com/j2ee/1.4/docs/api/" packagelistLoc="build/javadoc/j2ee-1.4" /> </javadoc> diff --git a/build/buildhelpers/com/vaadin/buildhelpers/GeneratePackageExports.java b/build/buildhelpers/com/vaadin/buildhelpers/GeneratePackageExports.java index 6f477601ed..0deebdc9a1 100644 --- a/build/buildhelpers/com/vaadin/buildhelpers/GeneratePackageExports.java +++ b/build/buildhelpers/com/vaadin/buildhelpers/GeneratePackageExports.java @@ -7,37 +7,40 @@ import java.util.HashSet; import java.util.Iterator; import java.util.Vector; import java.util.jar.Attributes; +import java.util.jar.Attributes.Name; import java.util.jar.JarEntry; import java.util.jar.JarFile; import java.util.jar.Manifest; -import java.util.jar.Attributes.Name; /** * Generates Export-Packages attribute for OSGi compatible manifest. * * Reads the included Java packages in Vaadin JAR, generates a corresponding - * MANIFEST.MF file, and replaces the dummy one in the JAR with the - * generated one. + * MANIFEST.MF file, and replaces the dummy one in the JAR with the generated + * one. * * See #3521 for details. * * @author magi */ public class GeneratePackageExports { + public static final String VAADIN_PACKAGE_PATH_PREFIX = "com/vaadin/"; + public static final String GOOGLE_PACKAGE_PATH_PREFIX = "com/google/"; + public static void main(String[] args) { if (args.length < 1) { - System.err.println("Invalid number of parameters\n"+ - "Usage: java -cp .. GenerateManifest <package.jar>"); + System.err.println("Invalid number of parameters\n" + + "Usage: java -cp .. GenerateManifest <package.jar>"); System.exit(1); } - // Open tje JAR + // Open the JAR String jarFilename = args[0]; JarFile jar = null; try { jar = new JarFile(jarFilename); } catch (IOException e) { - System.err.println("Unable to open JAR '"+jarFilename+"'"); + System.err.println("Unable to open JAR '" + jarFilename + "'"); System.exit(1); } @@ -45,9 +48,12 @@ public class GeneratePackageExports { HashSet<String> packages = new HashSet<String>(); for (Enumeration<JarEntry> it = jar.entries(); it.hasMoreElements();) { JarEntry entry = it.nextElement(); - if (entry.getName().startsWith("com") && entry.getName().endsWith(".class")) { + if ((entry.getName().startsWith(VAADIN_PACKAGE_PATH_PREFIX) || entry + .getName().startsWith(GOOGLE_PACKAGE_PATH_PREFIX)) + && entry.getName().endsWith(".class")) { int lastSlash = entry.getName().lastIndexOf('/'); - String pkg = entry.getName().substring(0, lastSlash).replace('/', '.'); + String pkg = entry.getName().substring(0, lastSlash) + .replace('/', '.'); packages.add(pkg); } } @@ -55,14 +61,16 @@ public class GeneratePackageExports { // List theme packages for (Enumeration<JarEntry> it = jar.entries(); it.hasMoreElements();) { JarEntry entry = it.nextElement(); - if (entry.isDirectory() && entry.getName().startsWith("VAADIN/themes")) { + if (entry.isDirectory() + && entry.getName().startsWith("VAADIN/themes")) { // Strip ending slash int lastSlash = entry.getName().lastIndexOf('/'); - String pkg = entry.getName().substring(0, lastSlash).replace('/', '.'); + String pkg = entry.getName().substring(0, lastSlash) + .replace('/', '.'); packages.add(pkg); } } - + // Replacement for the "Export-Package" attribute in the manifest String exportPackage = ""; @@ -70,13 +78,14 @@ public class GeneratePackageExports { String packageArray[] = new String[packages.size()]; packages.toArray(packageArray); Arrays.sort(packageArray); - for (int i=0; i<packageArray.length; i++) { - if (i == 0) + for (int i = 0; i < packageArray.length; i++) { + if (i == 0) { exportPackage = packageArray[i]; - else + } else { exportPackage += ", " + packageArray[i]; + } } - + // Read old manifest Manifest oldMF = null; try { @@ -84,11 +93,12 @@ public class GeneratePackageExports { } catch (IOException e) { e.printStackTrace(); } - + // Read main attributes Attributes mainAtts = oldMF.getMainAttributes(); Vector<String> keys = new Vector<String>(mainAtts.size()); - for (Iterator<Object> attrit = mainAtts.keySet().iterator(); attrit.hasNext();) { + for (Iterator<Object> attrit = mainAtts.keySet().iterator(); attrit + .hasNext();) { Name name = (Name) attrit.next(); keys.add(name.toString()); } @@ -98,11 +108,11 @@ public class GeneratePackageExports { try { jar.close(); } catch (IOException e) { - System.err.println("Unable to close JAR '"+jarFilename+"'"); + System.err.println("Unable to close JAR '" + jarFilename + "'"); } - + // Put the manifest version as the first line - String orderedKeys[] = new String[keys.size()]; + String orderedKeys[] = new String[keys.size()]; keys.toArray(orderedKeys); Arrays.sort(orderedKeys); // Must sort to be able to search int mvPos = Arrays.binarySearch(orderedKeys, "Manifest-Version"); @@ -110,20 +120,21 @@ public class GeneratePackageExports { orderedKeys[0] = "Manifest-Version"; // This final ordering is just for esthetic reasons and - // in practice unnecessary and will actually be messed up + // in practice unnecessary and will actually be messed up // when the 'jar' command reads the manifest - Arrays.sort(orderedKeys, 1, orderedKeys.length-1); + Arrays.sort(orderedKeys, 1, orderedKeys.length - 1); // Create the modified manifest ManifestWriter manifest = new ManifestWriter(); - for (int i=0; i<orderedKeys.length; i++) { + for (int i = 0; i < orderedKeys.length; i++) { // Skip an existing Export-Package attribute if (orderedKeys[i].equals("Export-Package")) { // Copy the attribute to the modified manifest - manifest.writeAttribute(orderedKeys[i], mainAtts.getValue(orderedKeys[i])); + manifest.writeAttribute(orderedKeys[i], + mainAtts.getValue(orderedKeys[i])); } } - + // Add the Export-Package attribute at the end of the manifest. // The alternative would be replacing an existing attribute in // the loop above, but it's not guaranteed that it exists. @@ -133,8 +144,9 @@ public class GeneratePackageExports { // before this is done. int status = manifest.updateJar(jarFilename); - if (status != 0) + if (status != 0) { System.exit(status); + } } - + } diff --git a/build/ivy/ivy.xml b/build/ivy/ivy.xml index ffcf7b19c8..fb94277434 100644 --- a/build/ivy/ivy.xml +++ b/build/ivy/ivy.xml @@ -12,6 +12,9 @@ <publications /> <dependencies defaultconf="ss.compile" defaultconfmapping="ss.compile->master"> + <!--Servlet API version 2.5 --> + <dependency org="javax.servlet" name="servlet-api" rev="2.5" /> + <!-- Liferay Portal Service --> <dependency org="com.liferay.portal" name="portal-service" rev="6.0.2" /> <!--Portlet API version 2.0 (JSR-286) --> @@ -19,17 +22,21 @@ <!-- Google App Engine --> <dependency org="com.google.appengine" name="appengine-api-1.0-sdk" rev="1.2.1" /> - <!-- GWT user with dependencies (validation-api) --> - <dependency org="com.google.gwt" name="gwt-user" rev="2.4.0" conf="cs.compile->master" /> + <!-- GWT dependencies (validation-api) --> <dependency org="javax.validation" name="validation-api" rev="1.0.0.GA" conf="cs.compile->master,sources" /> - <!-- GWT dev (incl. servlet-api 2.4 classes) --> - <dependency org="com.google.gwt" name="gwt-dev" rev="2.4.0" conf="cs.compile->master" /> <!-- Test frameworks & related --> <dependency org="junit" name="junit" rev="4.5" conf="ss.test.compile -> master"/> <dependency org="org.easymock" name="easymock" rev="3.0" conf="ss.test.compile -> master, runtime(*)"/> <dependency org="org.hsqldb" name="hsqldb" rev="2.2.6" conf="ss.test.compile -> master, runtime(*)"/> - + + <!-- Additional libraries used by tests - also included from GWT --> + <dependency org="org.mortbay.jetty" name="jetty" rev="6.1.26" conf="ss.test.compile -> master"/> + <dependency org="org.mortbay.jetty" name="jetty-util" rev="6.1.26" conf="ss.test.compile -> master"/> + <dependency org="commons-lang" name="commons-lang" rev="2.6" conf="ss.test.compile -> master"/> + <dependency org="commons-io" name="commons-io" rev="2.3" conf="ss.test.compile -> master"/> + <dependency org="commons-codec" name="commons-codec" rev="1.6" conf="ss.test.compile -> master"/> + <!-- Ant tasks --> <dependency org="ant-contrib" name="ant-contrib" rev="1.0b3" conf="taskdefs ->master"/> <dependency org="org.apache.maven" name="maven-ant-tasks" rev="2.0.10" conf="taskdefs ->master"/> diff --git a/build/javadoc/j2se-1.5.0/package-list b/build/javadoc/j2se-1.6.0/package-list index 48783362ea..42c9b950ef 100644 --- a/build/javadoc/j2se-1.5.0/package-list +++ b/build/javadoc/j2se-1.6.0/package-list @@ -39,6 +39,7 @@ java.security.interfaces java.security.spec java.sql java.text +java.text.spi java.util java.util.concurrent java.util.concurrent.atomic @@ -47,9 +48,13 @@ java.util.jar java.util.logging java.util.prefs java.util.regex +java.util.spi java.util.zip javax.accessibility +javax.activation javax.activity +javax.annotation +javax.annotation.processing javax.crypto javax.crypto.interfaces javax.crypto.spec @@ -60,6 +65,12 @@ javax.imageio.plugins.bmp javax.imageio.plugins.jpeg javax.imageio.spi javax.imageio.stream +javax.jws +javax.jws.soap +javax.lang.model +javax.lang.model.element +javax.lang.model.type +javax.lang.model.util javax.management javax.management.loading javax.management.modelmbean @@ -83,6 +94,7 @@ javax.print.event javax.rmi javax.rmi.CORBA javax.rmi.ssl +javax.script javax.security.auth javax.security.auth.callback javax.security.auth.kerberos @@ -116,17 +128,42 @@ javax.swing.text.html.parser javax.swing.text.rtf javax.swing.tree javax.swing.undo +javax.tools javax.transaction javax.transaction.xa javax.xml +javax.xml.bind +javax.xml.bind.annotation +javax.xml.bind.annotation.adapters +javax.xml.bind.attachment +javax.xml.bind.helpers +javax.xml.bind.util +javax.xml.crypto +javax.xml.crypto.dom +javax.xml.crypto.dsig +javax.xml.crypto.dsig.dom +javax.xml.crypto.dsig.keyinfo +javax.xml.crypto.dsig.spec javax.xml.datatype javax.xml.namespace javax.xml.parsers +javax.xml.soap +javax.xml.stream +javax.xml.stream.events +javax.xml.stream.util javax.xml.transform javax.xml.transform.dom javax.xml.transform.sax +javax.xml.transform.stax javax.xml.transform.stream javax.xml.validation +javax.xml.ws +javax.xml.ws.handler +javax.xml.ws.handler.soap +javax.xml.ws.http +javax.xml.ws.soap +javax.xml.ws.spi +javax.xml.ws.wsaddressing javax.xml.xpath org.ietf.jgss org.omg.CORBA @@ -163,4 +200,4 @@ org.w3c.dom.events org.w3c.dom.ls org.xml.sax org.xml.sax.ext -org.xml.sax.helpers +org.xml.sax.helpers
\ No newline at end of file diff --git a/scripts/merge-check.sh b/scripts/merge-check.sh new file mode 100755 index 0000000000..ef52cd44f4 --- /dev/null +++ b/scripts/merge-check.sh @@ -0,0 +1,31 @@ +#!/bin/bash +SINCE=$1 +UNTIL=$2 + +if [ "$SINCE" = "" ] || [ "$UNTIL" = "" ] +then + echo "Usage: $0 <since> <until>" + exit 3 +fi + +testname="merge check for `pwd|sed "s/.*\///"`" +echo "##teamcity[testStarted name='$testname' captureStandardOutput='true']" + +command="git --no-pager log --no-color $SINCE..$UNTIL" +# TODO Why do I get whitespace in the beginning of the wc output? +change_count=`$command --oneline|wc -l|tr -d ' '` + +if [ "$change_count" = "0" ] +then + echo "No unmerged commits" +else + command="$command --format=short" + message="There are $change_count commits that have not been merged from $UNTIL to $SINCE" + echo $message + echo "" + $command + details=`$command|perl -p -e 's/\n/|n/' | sed "s/['\|\[\]]/|\&/g"` + echo "##teamcity[testFailed name='$testname' message='$message' details='|n$details']" +fi + +echo "##teamcity[testFinished name='$testname']" diff --git a/src/com/vaadin/Application.java b/src/com/vaadin/Application.java index 84a8df5053..086caa5509 100644 --- a/src/com/vaadin/Application.java +++ b/src/com/vaadin/Application.java @@ -1066,6 +1066,7 @@ public class Application implements Terminal.ErrorListener, Serializable { * @see com.vaadin.terminal.Terminal.ErrorListener#terminalError(com.vaadin.terminal.Terminal.ErrorEvent) */ + @Override public void terminalError(Terminal.ErrorEvent event) { final Throwable t = event.getThrowable(); if (t instanceof SocketException) { @@ -1810,6 +1811,7 @@ public class Application implements Terminal.ErrorListener, Serializable { this.throwable = throwable; } + @Override public Throwable getThrowable() { return throwable; } @@ -2373,4 +2375,18 @@ public class Application implements Terminal.ErrorListener, Serializable { private static final Logger getLogger() { return Logger.getLogger(Application.class.getName()); } + + /** + * Returns a Root with the given id. + * <p> + * This is meant for framework internal use. + * </p> + * + * @param rootId + * The root id + * @return The root with the given id or null if not found + */ + public Root getRootById(int rootId) { + return roots.get(rootId); + } } diff --git a/src/com/vaadin/Vaadin.gwt.xml b/src/com/vaadin/Vaadin.gwt.xml new file mode 100644 index 0000000000..07d7c941e6 --- /dev/null +++ b/src/com/vaadin/Vaadin.gwt.xml @@ -0,0 +1,85 @@ +<module> + <!-- This GWT module inherits all Vaadin client side functionality modules. + This is the module you want to inherit in your client side project to be + able to use com.vaadin.* classes. --> + + <!-- Hint for WidgetSetBuilder not to automatically update the file --> + <!-- WS Compiler: manually edited --> + + <inherits name="com.google.gwt.user.User" /> + + <inherits name="com.google.gwt.http.HTTP" /> + + <inherits name="com.google.gwt.json.JSON" /> + + <inherits name="com.vaadin.terminal.gwt.VaadinBrowserSpecificOverrides" /> + + <source path="terminal/gwt/client" /> + <source path="shared" /> + + <!-- Use own Scheduler implementation to be able to track if commands are + running --> + <replace-with class="com.vaadin.terminal.gwt.client.VSchedulerImpl"> + <when-type-is class="com.google.gwt.core.client.impl.SchedulerImpl" /> + </replace-with> + + <!-- Generators for serializators for classes used in communication between + server and client --> + <generate-with + class="com.vaadin.terminal.gwt.widgetsetutils.SerializerMapGenerator"> + <when-type-is + class="com.vaadin.terminal.gwt.client.communication.SerializerMap" /> + </generate-with> + + <replace-with class="com.vaadin.terminal.gwt.client.VDebugConsole"> + <when-type-is class="com.vaadin.terminal.gwt.client.Console" /> + </replace-with> + + <generate-with + class="com.vaadin.terminal.gwt.widgetsetutils.EagerWidgetMapGenerator"> + <when-type-is class="com.vaadin.terminal.gwt.client.WidgetMap" /> + </generate-with> + + <generate-with + class="com.vaadin.terminal.gwt.widgetsetutils.AcceptCriteriaFactoryGenerator"> + <when-type-is + class="com.vaadin.terminal.gwt.client.ui.dd.VAcceptCriterionFactory" /> + </generate-with> + + <!-- Generate client side proxies for client to server RPC interfaces --> + <generate-with + class="com.vaadin.terminal.gwt.widgetsetutils.RpcProxyGenerator"> + <when-type-assignable + class="com.vaadin.shared.communication.ServerRpc" /> + </generate-with> + + <!-- Generate client side proxies for client to server RPC interfaces --> + <generate-with + class="com.vaadin.terminal.gwt.widgetsetutils.RpcProxyCreatorGenerator"> + <when-type-assignable + class="com.vaadin.terminal.gwt.client.communication.RpcProxy.RpcProxyCreator" /> + </generate-with> + + <!-- Generate client side RPC manager for server to client RPC --> + <generate-with + class="com.vaadin.terminal.gwt.widgetsetutils.GeneratedRpcMethodProviderGenerator"> + <when-type-assignable + class="com.vaadin.terminal.gwt.client.communication.GeneratedRpcMethodProvider" /> + </generate-with> + + <generate-with + class="com.vaadin.terminal.gwt.widgetsetutils.ConnectorWidgetFactoryGenerator"> + <when-type-assignable + class="com.vaadin.terminal.gwt.client.ui.ConnectorWidgetFactory" /> + </generate-with> + + <generate-with + class="com.vaadin.terminal.gwt.widgetsetutils.ConnectorStateFactoryGenerator"> + <when-type-assignable + class="com.vaadin.terminal.gwt.client.ui.ConnectorStateFactory" /> + </generate-with> + + <!-- Use the new cross site linker to get a nocache.js without document.write --> + <add-linker name="xsiframe" /> + +</module> diff --git a/src/com/vaadin/annotations/JavaScript.java b/src/com/vaadin/annotations/JavaScript.java new file mode 100644 index 0000000000..f97457c1cd --- /dev/null +++ b/src/com/vaadin/annotations/JavaScript.java @@ -0,0 +1,42 @@ +/* +@VaadinApache2LicenseForJavaFiles@ + */ + +package com.vaadin.annotations; + +import java.lang.annotation.ElementType; +import java.lang.annotation.Retention; +import java.lang.annotation.RetentionPolicy; +import java.lang.annotation.Target; + +import com.vaadin.terminal.gwt.server.ClientConnector; + +/** + * If this annotation is present on a {@link ClientConnector} class, the + * framework ensures the referenced JavaScript files are loaded before the init + * method for the corresponding client-side connector is invoked. + * <p> + * Absolute URLs including protocol and host are used as is on the client-side. + * Relative urls are mapped to APP/CONNECTOR/[url] which are by default served + * from the classpath relative to the class where the annotation is defined. + * <p> + * Example: {@code @JavaScript( "http://host.com/file1.js", "file2.js"})} on + * the class com.example.MyConnector would load the file + * http://host.com/file1.js as is and file2.js from /com/example/file2.js on the + * server's classpath using the ClassLoader that was used to load + * com.example.MyConnector. + * + * @author Vaadin Ltd + * @version @VERSION@ + * @since 7.0.0 + */ +@Retention(RetentionPolicy.RUNTIME) +@Target(ElementType.TYPE) +public @interface JavaScript { + /** + * JavaScript files to load before initializing the client-side connector. + * + * @return an array of JavaScript file urls + */ + public String[] value(); +} diff --git a/src/com/vaadin/annotations/LoadScripts.java b/src/com/vaadin/annotations/LoadScripts.java deleted file mode 100644 index 84ac2d2fb7..0000000000 --- a/src/com/vaadin/annotations/LoadScripts.java +++ /dev/null @@ -1,24 +0,0 @@ -/* -@VaadinApache2LicenseForJavaFiles@ - */ -package com.vaadin.annotations; - -import java.lang.annotation.ElementType; -import java.lang.annotation.Retention; -import java.lang.annotation.RetentionPolicy; -import java.lang.annotation.Target; - -/** - * Temporary hack used for ensuring external javascript libraries are included. - * To add a javascript, add this annotation to your Root class. - * - * @deprecated Will be removed in favor of a more robust solution before version - * 7.0.0 - */ -@Retention(RetentionPolicy.RUNTIME) -@Target(ElementType.TYPE) -@Deprecated -public @interface LoadScripts { - public String[] value(); - -} diff --git a/src/com/vaadin/annotations/StyleSheet.java b/src/com/vaadin/annotations/StyleSheet.java new file mode 100644 index 0000000000..d082cb8d30 --- /dev/null +++ b/src/com/vaadin/annotations/StyleSheet.java @@ -0,0 +1,38 @@ +/* +@VaadinApache2LicenseForJavaFiles@ + */ + +package com.vaadin.annotations; + +import java.lang.annotation.ElementType; +import java.lang.annotation.Retention; +import java.lang.annotation.RetentionPolicy; +import java.lang.annotation.Target; + +import com.vaadin.terminal.gwt.server.ClientConnector; + +/** + * If this annotation is present on a {@link ClientConnector} class, the + * framework ensures the referenced style sheets are loaded before the init + * method for the corresponding client-side connector is invoked. + * <p> + * Example: {@code @StyleSheet( "http://host.com/file1.css", "file2.css"})} on + * the class com.example.MyConnector would load the file + * http://host.com/file1.css as is and file2.css from /com/example/file2.css on + * the server's classpath using the ClassLoader that was used to load + * com.example.MyConnector. + * + * @author Vaadin Ltd + * @version @VERSION@ + * @since 7.0.0 + */ +@Retention(RetentionPolicy.RUNTIME) +@Target(ElementType.TYPE) +public @interface StyleSheet { + /** + * Style sheets to load before initializing the client-side connector. + * + * @return an array of style sheet urls + */ + public String[] value(); +} diff --git a/src/com/vaadin/data/Container.java b/src/com/vaadin/data/Container.java index f722e07741..f4c0ed9794 100644 --- a/src/com/vaadin/data/Container.java +++ b/src/com/vaadin/data/Container.java @@ -697,6 +697,7 @@ public interface Container extends Serializable { * @return <code>true</code> if the operation succeeded, * <code>false</code> if not */ + @Override public boolean removeItem(Object itemId) throws UnsupportedOperationException; } diff --git a/src/com/vaadin/data/fieldgroup/DefaultFieldGroupFieldFactory.java b/src/com/vaadin/data/fieldgroup/DefaultFieldGroupFieldFactory.java index 569f643998..be0db328f2 100644 --- a/src/com/vaadin/data/fieldgroup/DefaultFieldGroupFieldFactory.java +++ b/src/com/vaadin/data/fieldgroup/DefaultFieldGroupFieldFactory.java @@ -23,6 +23,7 @@ public class DefaultFieldGroupFieldFactory implements FieldGroupFieldFactory { public static final Object CAPTION_PROPERTY_ID = "Caption"; + @Override public <T extends Field> T createField(Class<?> type, Class<T> fieldType) { if (Enum.class.isAssignableFrom(type)) { return createEnumField(type, fieldType); diff --git a/src/com/vaadin/data/util/AbstractBeanContainer.java b/src/com/vaadin/data/util/AbstractBeanContainer.java index 300f92ea3a..2f428d2cb6 100644 --- a/src/com/vaadin/data/util/AbstractBeanContainer.java +++ b/src/com/vaadin/data/util/AbstractBeanContainer.java @@ -96,6 +96,7 @@ public abstract class AbstractBeanContainer<IDTYPE, BEANTYPE> extends this.propertyId = propertyId; } + @Override @SuppressWarnings("unchecked") public IDTYPE getIdForBean(BEANTYPE bean) throws IllegalArgumentException { @@ -163,6 +164,7 @@ public abstract class AbstractBeanContainer<IDTYPE, BEANTYPE> extends * * @see com.vaadin.data.Container#getType(java.lang.Object) */ + @Override public Class<?> getType(Object propertyId) { return model.get(propertyId).getPropertyType(); } @@ -195,6 +197,7 @@ public abstract class AbstractBeanContainer<IDTYPE, BEANTYPE> extends * * @see com.vaadin.data.Container#getContainerPropertyIds() */ + @Override public Collection<String> getContainerPropertyIds() { return model.keySet(); } @@ -258,6 +261,7 @@ public abstract class AbstractBeanContainer<IDTYPE, BEANTYPE> extends * @see com.vaadin.data.Container#getContainerProperty(java.lang.Object, * java.lang.Object) */ + @Override public Property<?> getContainerProperty(Object itemId, Object propertyId) { Item item = getItem(itemId); if (item == null) { @@ -300,6 +304,7 @@ public abstract class AbstractBeanContainer<IDTYPE, BEANTYPE> extends /** * Re-filter the container when one of the monitored properties changes. */ + @Override public void valueChange(ValueChangeEvent event) { // if a property that is used in a filter is changed, refresh filtering filterAll(); @@ -312,6 +317,7 @@ public abstract class AbstractBeanContainer<IDTYPE, BEANTYPE> extends * com.vaadin.data.Container.Filterable#addContainerFilter(java.lang.Object, * java.lang.String, boolean, boolean) */ + @Override public void addContainerFilter(Object propertyId, String filterString, boolean ignoreCase, boolean onlyMatchPrefix) { try { @@ -328,6 +334,7 @@ public abstract class AbstractBeanContainer<IDTYPE, BEANTYPE> extends * * @see com.vaadin.data.Container.Filterable#removeAllContainerFilters() */ + @Override public void removeAllContainerFilters() { if (!getFilters().isEmpty()) { for (Item item : itemIdToItem.values()) { @@ -344,6 +351,7 @@ public abstract class AbstractBeanContainer<IDTYPE, BEANTYPE> extends * com.vaadin.data.Container.Filterable#removeContainerFilters(java.lang * .Object) */ + @Override public void removeContainerFilters(Object propertyId) { Collection<Filter> removedFilters = super.removeFilters(propertyId); if (!removedFilters.isEmpty()) { @@ -354,11 +362,13 @@ public abstract class AbstractBeanContainer<IDTYPE, BEANTYPE> extends } } + @Override public void addContainerFilter(Filter filter) throws UnsupportedFilterException { addFilter(filter); } + @Override public void removeContainerFilter(Filter filter) { removeFilter(filter); } @@ -416,6 +426,7 @@ public abstract class AbstractBeanContainer<IDTYPE, BEANTYPE> extends * * @see com.vaadin.data.Container.Sortable#getSortableContainerPropertyIds() */ + @Override public Collection<?> getSortableContainerPropertyIds() { return getSortablePropertyIds(); } @@ -426,6 +437,7 @@ public abstract class AbstractBeanContainer<IDTYPE, BEANTYPE> extends * @see com.vaadin.data.Container.Sortable#sort(java.lang.Object[], * boolean[]) */ + @Override public void sort(Object[] propertyId, boolean[] ascending) { sortContainer(propertyId, ascending); } diff --git a/src/com/vaadin/data/util/AbstractContainer.java b/src/com/vaadin/data/util/AbstractContainer.java index 58a3a8687a..7d96c2d757 100644 --- a/src/com/vaadin/data/util/AbstractContainer.java +++ b/src/com/vaadin/data/util/AbstractContainer.java @@ -52,6 +52,7 @@ public abstract class AbstractContainer implements Container { super(source); } + @Override public Container getContainer() { return (Container) getSource(); } @@ -72,6 +73,7 @@ public abstract class AbstractContainer implements Container { super(source); } + @Override public Container getContainer() { return (Container) getSource(); } diff --git a/src/com/vaadin/data/util/AbstractInMemoryContainer.java b/src/com/vaadin/data/util/AbstractInMemoryContainer.java index 795aabb419..b7832756f2 100644 --- a/src/com/vaadin/data/util/AbstractInMemoryContainer.java +++ b/src/com/vaadin/data/util/AbstractInMemoryContainer.java @@ -125,6 +125,7 @@ public abstract class AbstractInMemoryContainer<ITEMIDTYPE, PROPERTYIDCLASS, ITE // Container interface methods with more specific return class // default implementation, can be overridden + @Override public ITEMCLASS getItem(Object itemId) { if (containsId(itemId)) { return getUnfilteredItem(itemId); @@ -152,10 +153,12 @@ public abstract class AbstractInMemoryContainer<ITEMIDTYPE, PROPERTYIDCLASS, ITE // Container interface method implementations + @Override public int size() { return getVisibleItemIds().size(); } + @Override public boolean containsId(Object itemId) { // only look at visible items after filtering if (itemId == null) { @@ -165,12 +168,14 @@ public abstract class AbstractInMemoryContainer<ITEMIDTYPE, PROPERTYIDCLASS, ITE } } + @Override public List<?> getItemIds() { return Collections.unmodifiableList(getVisibleItemIds()); } // Container.Ordered + @Override public ITEMIDTYPE nextItemId(Object itemId) { int index = indexOfId(itemId); if (index >= 0 && index < size() - 1) { @@ -181,6 +186,7 @@ public abstract class AbstractInMemoryContainer<ITEMIDTYPE, PROPERTYIDCLASS, ITE } } + @Override public ITEMIDTYPE prevItemId(Object itemId) { int index = indexOfId(itemId); if (index > 0) { @@ -191,6 +197,7 @@ public abstract class AbstractInMemoryContainer<ITEMIDTYPE, PROPERTYIDCLASS, ITE } } + @Override public ITEMIDTYPE firstItemId() { if (size() > 0) { return getIdByIndex(0); @@ -199,6 +206,7 @@ public abstract class AbstractInMemoryContainer<ITEMIDTYPE, PROPERTYIDCLASS, ITE } } + @Override public ITEMIDTYPE lastItemId() { if (size() > 0) { return getIdByIndex(size() - 1); @@ -207,6 +215,7 @@ public abstract class AbstractInMemoryContainer<ITEMIDTYPE, PROPERTYIDCLASS, ITE } } + @Override public boolean isFirstId(Object itemId) { if (itemId == null) { return false; @@ -214,6 +223,7 @@ public abstract class AbstractInMemoryContainer<ITEMIDTYPE, PROPERTYIDCLASS, ITE return itemId.equals(firstItemId()); } + @Override public boolean isLastId(Object itemId) { if (itemId == null) { return false; @@ -223,66 +233,78 @@ public abstract class AbstractInMemoryContainer<ITEMIDTYPE, PROPERTYIDCLASS, ITE // Container.Indexed + @Override public ITEMIDTYPE getIdByIndex(int index) { return getVisibleItemIds().get(index); } + @Override public int indexOfId(Object itemId) { return getVisibleItemIds().indexOf(itemId); } // methods that are unsupported by default, override to support + @Override public Object addItemAt(int index) throws UnsupportedOperationException { throw new UnsupportedOperationException( "Adding items not supported. Override the relevant addItem*() methods if required as specified in AbstractInMemoryContainer javadoc."); } + @Override public Item addItemAt(int index, Object newItemId) throws UnsupportedOperationException { throw new UnsupportedOperationException( "Adding items not supported. Override the relevant addItem*() methods if required as specified in AbstractInMemoryContainer javadoc."); } + @Override public Object addItemAfter(Object previousItemId) throws UnsupportedOperationException { throw new UnsupportedOperationException( "Adding items not supported. Override the relevant addItem*() methods if required as specified in AbstractInMemoryContainer javadoc."); } + @Override public Item addItemAfter(Object previousItemId, Object newItemId) throws UnsupportedOperationException { throw new UnsupportedOperationException( "Adding items not supported. Override the relevant addItem*() methods if required as specified in AbstractInMemoryContainer javadoc."); } + @Override public Item addItem(Object itemId) throws UnsupportedOperationException { throw new UnsupportedOperationException( "Adding items not supported. Override the relevant addItem*() methods if required as specified in AbstractInMemoryContainer javadoc."); } + @Override public Object addItem() throws UnsupportedOperationException { throw new UnsupportedOperationException( "Adding items not supported. Override the relevant addItem*() methods if required as specified in AbstractInMemoryContainer javadoc."); } + @Override public boolean removeItem(Object itemId) throws UnsupportedOperationException { throw new UnsupportedOperationException( "Removing items not supported. Override the removeItem() method if required as specified in AbstractInMemoryContainer javadoc."); } + @Override public boolean removeAllItems() throws UnsupportedOperationException { throw new UnsupportedOperationException( "Removing items not supported. Override the removeAllItems() method if required as specified in AbstractInMemoryContainer javadoc."); } + @Override public boolean addContainerProperty(Object propertyId, Class<?> type, Object defaultValue) throws UnsupportedOperationException { throw new UnsupportedOperationException( "Adding container properties not supported. Override the addContainerProperty() method if required."); } + @Override public boolean removeContainerProperty(Object propertyId) throws UnsupportedOperationException { throw new UnsupportedOperationException( diff --git a/src/com/vaadin/data/util/AbstractProperty.java b/src/com/vaadin/data/util/AbstractProperty.java index 3b6db3807e..373a8dfd58 100644 --- a/src/com/vaadin/data/util/AbstractProperty.java +++ b/src/com/vaadin/data/util/AbstractProperty.java @@ -42,10 +42,12 @@ public abstract class AbstractProperty<T> implements Property<T>, * Override for additional restrictions on what is considered a read-only * property. */ + @Override public boolean isReadOnly() { return readOnly; } + @Override public void setReadOnly(boolean newStatus) { boolean oldStatus = isReadOnly(); readOnly = newStatus; @@ -93,6 +95,7 @@ public abstract class AbstractProperty<T> implements Property<T>, * * @return source Property of the event. */ + @Override public Property getProperty() { return (Property) getSource(); } @@ -105,6 +108,7 @@ public abstract class AbstractProperty<T> implements Property<T>, * @param listener * the new Listener to be registered. */ + @Override public void addListener(Property.ReadOnlyStatusChangeListener listener) { if (readOnlyStatusChangeListeners == null) { readOnlyStatusChangeListeners = new LinkedList<ReadOnlyStatusChangeListener>(); @@ -118,6 +122,7 @@ public abstract class AbstractProperty<T> implements Property<T>, * @param listener * the listener to be removed. */ + @Override public void removeListener(Property.ReadOnlyStatusChangeListener listener) { if (readOnlyStatusChangeListeners != null) { readOnlyStatusChangeListeners.remove(listener); @@ -161,12 +166,14 @@ public abstract class AbstractProperty<T> implements Property<T>, * * @return source Property of the event. */ + @Override public Property getProperty() { return (Property) getSource(); } } + @Override public void addListener(ValueChangeListener listener) { if (valueChangeListeners == null) { valueChangeListeners = new LinkedList<ValueChangeListener>(); @@ -175,6 +182,7 @@ public abstract class AbstractProperty<T> implements Property<T>, } + @Override public void removeListener(ValueChangeListener listener) { if (valueChangeListeners != null) { valueChangeListeners.remove(listener); diff --git a/src/com/vaadin/data/util/BeanItemContainer.java b/src/com/vaadin/data/util/BeanItemContainer.java index 245a623d5d..dc4deaebdc 100644 --- a/src/com/vaadin/data/util/BeanItemContainer.java +++ b/src/com/vaadin/data/util/BeanItemContainer.java @@ -59,6 +59,7 @@ public class BeanItemContainer<BEANTYPE> extends private static class IdentityBeanIdResolver<BT> implements BeanIdResolver<BT, BT> { + @Override public BT getIdForBean(BT bean) { return bean; } diff --git a/src/com/vaadin/data/util/ContainerHierarchicalWrapper.java b/src/com/vaadin/data/util/ContainerHierarchicalWrapper.java index 9159fa358b..717ce834cf 100644 --- a/src/com/vaadin/data/util/ContainerHierarchicalWrapper.java +++ b/src/com/vaadin/data/util/ContainerHierarchicalWrapper.java @@ -71,6 +71,7 @@ public class ContainerHierarchicalWrapper implements Container.Hierarchical, this.itemIds = itemIds; } + @Override public int compare(Object o1, Object o2) { if (o1.equals(o2)) { return 0; @@ -233,6 +234,7 @@ public class ContainerHierarchicalWrapper implements Container.Hierarchical, * Can the specified Item have any children? Don't add a JavaDoc comment * here, we use the default documentation from implemented interface. */ + @Override public boolean areChildrenAllowed(Object itemId) { // If the wrapped container implements the method directly, use it @@ -253,6 +255,7 @@ public class ContainerHierarchicalWrapper implements Container.Hierarchical, * comment here, we use the default documentation from implemented * interface. */ + @Override public Collection<?> getChildren(Object itemId) { // If the wrapped container implements the method directly, use it @@ -272,6 +275,7 @@ public class ContainerHierarchicalWrapper implements Container.Hierarchical, * comment here, we use the default documentation from implemented * interface. */ + @Override public Object getParent(Object itemId) { // If the wrapped container implements the method directly, use it @@ -287,6 +291,7 @@ public class ContainerHierarchicalWrapper implements Container.Hierarchical, * JavaDoc comment here, we use the default documentation from implemented * interface. */ + @Override public boolean hasChildren(Object itemId) { // If the wrapped container implements the method directly, use it @@ -303,6 +308,7 @@ public class ContainerHierarchicalWrapper implements Container.Hierarchical, * JavaDoc comment here, we use the default documentation from implemented * interface. */ + @Override public boolean isRoot(Object itemId) { // If the wrapped container implements the method directly, use it @@ -322,6 +328,7 @@ public class ContainerHierarchicalWrapper implements Container.Hierarchical, * comment here, we use the default documentation from implemented * interface. */ + @Override public Collection<?> rootItemIds() { // If the wrapped container implements the method directly, use it @@ -351,6 +358,7 @@ public class ContainerHierarchicalWrapper implements Container.Hierarchical, * @return <code>true</code> if the operation succeeded, <code>false</code> * if not */ + @Override public boolean setChildrenAllowed(Object itemId, boolean childrenAllowed) { // If the wrapped container implements the method directly, use it @@ -391,6 +399,7 @@ public class ContainerHierarchicalWrapper implements Container.Hierarchical, * @return <code>true</code> if the operation succeeded, <code>false</code> * if not */ + @Override public boolean setParent(Object itemId, Object newParentId) { // If the wrapped container implements the method directly, use it @@ -483,6 +492,7 @@ public class ContainerHierarchicalWrapper implements Container.Hierarchical, * @throws UnsupportedOperationException * if the addItem is not supported. */ + @Override public Object addItem() throws UnsupportedOperationException { final Object id = container.addItem(); @@ -502,6 +512,7 @@ public class ContainerHierarchicalWrapper implements Container.Hierarchical, * @throws UnsupportedOperationException * if the addItem is not supported. */ + @Override public Item addItem(Object itemId) throws UnsupportedOperationException { // Null ids are not accepted @@ -524,6 +535,7 @@ public class ContainerHierarchicalWrapper implements Container.Hierarchical, * @throws UnsupportedOperationException * if the removeAllItems is not supported. */ + @Override public boolean removeAllItems() throws UnsupportedOperationException { final boolean success = container.removeAllItems(); @@ -548,6 +560,7 @@ public class ContainerHierarchicalWrapper implements Container.Hierarchical, * @throws UnsupportedOperationException * if the removeItem is not supported. */ + @Override public boolean removeItem(Object itemId) throws UnsupportedOperationException { @@ -586,6 +599,7 @@ public class ContainerHierarchicalWrapper implements Container.Hierarchical, * @throws UnsupportedOperationException * if the addContainerProperty is not supported. */ + @Override public boolean addContainerProperty(Object propertyId, Class<?> type, Object defaultValue) throws UnsupportedOperationException { @@ -606,6 +620,7 @@ public class ContainerHierarchicalWrapper implements Container.Hierarchical, * @throws UnsupportedOperationException * if the removeContainerProperty is not supported. */ + @Override public boolean removeContainerProperty(Object propertyId) throws UnsupportedOperationException { return container.removeContainerProperty(propertyId); @@ -616,6 +631,7 @@ public class ContainerHierarchicalWrapper implements Container.Hierarchical, * comment here, we use the default documentation from implemented * interface. */ + @Override public boolean containsId(Object itemId) { return container.containsId(itemId); } @@ -624,6 +640,7 @@ public class ContainerHierarchicalWrapper implements Container.Hierarchical, * Gets the specified Item from the container. Don't add a JavaDoc comment * here, we use the default documentation from implemented interface. */ + @Override public Item getItem(Object itemId) { return container.getItem(itemId); } @@ -633,6 +650,7 @@ public class ContainerHierarchicalWrapper implements Container.Hierarchical, * comment here, we use the default documentation from implemented * interface. */ + @Override public Collection<?> getItemIds() { return container.getItemIds(); } @@ -642,6 +660,7 @@ public class ContainerHierarchicalWrapper implements Container.Hierarchical, * Container Don't add a JavaDoc comment here, we use the default * documentation from implemented interface. */ + @Override public Property<?> getContainerProperty(Object itemId, Object propertyId) { return container.getContainerProperty(itemId, propertyId); } @@ -651,6 +670,7 @@ public class ContainerHierarchicalWrapper implements Container.Hierarchical, * JavaDoc comment here, we use the default documentation from implemented * interface. */ + @Override public Collection<?> getContainerPropertyIds() { return container.getContainerPropertyIds(); } @@ -660,6 +680,7 @@ public class ContainerHierarchicalWrapper implements Container.Hierarchical, * Don't add a JavaDoc comment here, we use the default documentation from * implemented interface. */ + @Override public Class<?> getType(Object propertyId) { return container.getType(propertyId); } @@ -668,6 +689,7 @@ public class ContainerHierarchicalWrapper implements Container.Hierarchical, * Gets the number of Items in the Container. Don't add a JavaDoc comment * here, we use the default documentation from implemented interface. */ + @Override public int size() { return container.size(); } @@ -677,6 +699,7 @@ public class ContainerHierarchicalWrapper implements Container.Hierarchical, * JavaDoc comment here, we use the default documentation from implemented * interface. */ + @Override public void addListener(Container.ItemSetChangeListener listener) { if (container instanceof Container.ItemSetChangeNotifier) { ((Container.ItemSetChangeNotifier) container) @@ -689,6 +712,7 @@ public class ContainerHierarchicalWrapper implements Container.Hierarchical, * comment here, we use the default documentation from implemented * interface. */ + @Override public void removeListener(Container.ItemSetChangeListener listener) { if (container instanceof Container.ItemSetChangeNotifier) { ((Container.ItemSetChangeNotifier) container) @@ -701,6 +725,7 @@ public class ContainerHierarchicalWrapper implements Container.Hierarchical, * add a JavaDoc comment here, we use the default documentation from * implemented interface. */ + @Override public void addListener(Container.PropertySetChangeListener listener) { if (container instanceof Container.PropertySetChangeNotifier) { ((Container.PropertySetChangeNotifier) container) @@ -713,6 +738,7 @@ public class ContainerHierarchicalWrapper implements Container.Hierarchical, * JavaDoc comment here, we use the default documentation from implemented * interface. */ + @Override public void removeListener(Container.PropertySetChangeListener listener) { if (container instanceof Container.PropertySetChangeNotifier) { ((Container.PropertySetChangeNotifier) container) @@ -736,6 +762,7 @@ public class ContainerHierarchicalWrapper implements Container.Hierarchical, listener = realListener; } + @Override public void containerItemSetChange(ItemSetChangeEvent event) { updateHierarchicalWrapper(); ((Container.ItemSetChangeListener) listener) @@ -743,6 +770,7 @@ public class ContainerHierarchicalWrapper implements Container.Hierarchical, } + @Override public void containerPropertySetChange(PropertySetChangeEvent event) { updateHierarchicalWrapper(); ((Container.PropertySetChangeListener) listener) diff --git a/src/com/vaadin/data/util/ContainerOrderedWrapper.java b/src/com/vaadin/data/util/ContainerOrderedWrapper.java index f333edecf4..d3d6f88d3e 100644 --- a/src/com/vaadin/data/util/ContainerOrderedWrapper.java +++ b/src/com/vaadin/data/util/ContainerOrderedWrapper.java @@ -221,6 +221,7 @@ public class ContainerOrderedWrapper implements Container.Ordered, * comment here, we use the default documentation from implemented * interface. */ + @Override public Object firstItemId() { if (ordered) { return ((Container.Ordered) container).firstItemId(); @@ -233,6 +234,7 @@ public class ContainerOrderedWrapper implements Container.Ordered, * JavaDoc comment here, we use the default documentation from implemented * interface. */ + @Override public boolean isFirstId(Object itemId) { if (ordered) { return ((Container.Ordered) container).isFirstId(itemId); @@ -245,6 +247,7 @@ public class ContainerOrderedWrapper implements Container.Ordered, * JavaDoc comment here, we use the default documentation from implemented * interface. */ + @Override public boolean isLastId(Object itemId) { if (ordered) { return ((Container.Ordered) container).isLastId(itemId); @@ -257,6 +260,7 @@ public class ContainerOrderedWrapper implements Container.Ordered, * comment here, we use the default documentation from implemented * interface. */ + @Override public Object lastItemId() { if (ordered) { return ((Container.Ordered) container).lastItemId(); @@ -269,6 +273,7 @@ public class ContainerOrderedWrapper implements Container.Ordered, * comment here, we use the default documentation from implemented * interface. */ + @Override public Object nextItemId(Object itemId) { if (ordered) { return ((Container.Ordered) container).nextItemId(itemId); @@ -284,6 +289,7 @@ public class ContainerOrderedWrapper implements Container.Ordered, * JavaDoc comment here, we use the default documentation from implemented * interface. */ + @Override public Object prevItemId(Object itemId) { if (ordered) { return ((Container.Ordered) container).prevItemId(itemId); @@ -306,6 +312,7 @@ public class ContainerOrderedWrapper implements Container.Ordered, * @return <code>true</code> if the operation succeeded, <code>false</code> * if not */ + @Override public boolean addContainerProperty(Object propertyId, Class<?> type, Object defaultValue) throws UnsupportedOperationException { @@ -321,6 +328,7 @@ public class ContainerOrderedWrapper implements Container.Ordered, * @throws UnsupportedOperationException * if the addItem is not supported. */ + @Override public Object addItem() throws UnsupportedOperationException { final Object id = container.addItem(); @@ -340,6 +348,7 @@ public class ContainerOrderedWrapper implements Container.Ordered, * @throws UnsupportedOperationException * if the addItem is not supported. */ + @Override public Item addItem(Object itemId) throws UnsupportedOperationException { final Item item = container.addItem(itemId); if (!ordered && item != null) { @@ -356,6 +365,7 @@ public class ContainerOrderedWrapper implements Container.Ordered, * @throws UnsupportedOperationException * if the removeAllItems is not supported. */ + @Override public boolean removeAllItems() throws UnsupportedOperationException { final boolean success = container.removeAllItems(); if (!ordered && success) { @@ -377,6 +387,7 @@ public class ContainerOrderedWrapper implements Container.Ordered, * @throws UnsupportedOperationException * if the removeItem is not supported. */ + @Override public boolean removeItem(Object itemId) throws UnsupportedOperationException { @@ -401,6 +412,7 @@ public class ContainerOrderedWrapper implements Container.Ordered, * @throws UnsupportedOperationException * if the removeContainerProperty is not supported. */ + @Override public boolean removeContainerProperty(Object propertyId) throws UnsupportedOperationException { return container.removeContainerProperty(propertyId); @@ -411,6 +423,7 @@ public class ContainerOrderedWrapper implements Container.Ordered, * comment here, we use the default documentation from implemented * interface. */ + @Override public boolean containsId(Object itemId) { return container.containsId(itemId); } @@ -419,6 +432,7 @@ public class ContainerOrderedWrapper implements Container.Ordered, * Gets the specified Item from the container. Don't add a JavaDoc comment * here, we use the default documentation from implemented interface. */ + @Override public Item getItem(Object itemId) { return container.getItem(itemId); } @@ -428,6 +442,7 @@ public class ContainerOrderedWrapper implements Container.Ordered, * comment here, we use the default documentation from implemented * interface. */ + @Override public Collection<?> getItemIds() { return container.getItemIds(); } @@ -437,6 +452,7 @@ public class ContainerOrderedWrapper implements Container.Ordered, * Container Don't add a JavaDoc comment here, we use the default * documentation from implemented interface. */ + @Override public Property<?> getContainerProperty(Object itemId, Object propertyId) { return container.getContainerProperty(itemId, propertyId); } @@ -446,6 +462,7 @@ public class ContainerOrderedWrapper implements Container.Ordered, * JavaDoc comment here, we use the default documentation from implemented * interface. */ + @Override public Collection<?> getContainerPropertyIds() { return container.getContainerPropertyIds(); } @@ -455,6 +472,7 @@ public class ContainerOrderedWrapper implements Container.Ordered, * Don't add a JavaDoc comment here, we use the default documentation from * implemented interface. */ + @Override public Class<?> getType(Object propertyId) { return container.getType(propertyId); } @@ -463,6 +481,7 @@ public class ContainerOrderedWrapper implements Container.Ordered, * Gets the number of Items in the Container. Don't add a JavaDoc comment * here, we use the default documentation from implemented interface. */ + @Override public int size() { int newSize = container.size(); if (lastKnownSize != -1 && newSize != lastKnownSize @@ -480,6 +499,7 @@ public class ContainerOrderedWrapper implements Container.Ordered, * JavaDoc comment here, we use the default documentation from implemented * interface. */ + @Override public void addListener(Container.ItemSetChangeListener listener) { if (container instanceof Container.ItemSetChangeNotifier) { ((Container.ItemSetChangeNotifier) container) @@ -492,6 +512,7 @@ public class ContainerOrderedWrapper implements Container.Ordered, * comment here, we use the default documentation from implemented * interface. */ + @Override public void removeListener(Container.ItemSetChangeListener listener) { if (container instanceof Container.ItemSetChangeNotifier) { ((Container.ItemSetChangeNotifier) container) @@ -504,6 +525,7 @@ public class ContainerOrderedWrapper implements Container.Ordered, * add a JavaDoc comment here, we use the default documentation from * implemented interface. */ + @Override public void addListener(Container.PropertySetChangeListener listener) { if (container instanceof Container.PropertySetChangeNotifier) { ((Container.PropertySetChangeNotifier) container) @@ -516,6 +538,7 @@ public class ContainerOrderedWrapper implements Container.Ordered, * JavaDoc comment here, we use the default documentation from implemented * interface. */ + @Override public void removeListener(Container.PropertySetChangeListener listener) { if (container instanceof Container.PropertySetChangeNotifier) { ((Container.PropertySetChangeNotifier) container) @@ -529,6 +552,7 @@ public class ContainerOrderedWrapper implements Container.Ordered, * @see com.vaadin.data.Container.Ordered#addItemAfter(java.lang.Object, * java.lang.Object) */ + @Override public Item addItemAfter(Object previousItemId, Object newItemId) throws UnsupportedOperationException { @@ -553,6 +577,7 @@ public class ContainerOrderedWrapper implements Container.Ordered, * * @see com.vaadin.data.Container.Ordered#addItemAfter(java.lang.Object) */ + @Override public Object addItemAfter(Object previousItemId) throws UnsupportedOperationException { @@ -588,6 +613,7 @@ public class ContainerOrderedWrapper implements Container.Ordered, listener = realListener; } + @Override public void containerItemSetChange(ItemSetChangeEvent event) { updateOrderWrapper(); ((Container.ItemSetChangeListener) listener) @@ -595,6 +621,7 @@ public class ContainerOrderedWrapper implements Container.Ordered, } + @Override public void containerPropertySetChange(PropertySetChangeEvent event) { updateOrderWrapper(); ((Container.PropertySetChangeListener) listener) diff --git a/src/com/vaadin/data/util/DefaultItemSorter.java b/src/com/vaadin/data/util/DefaultItemSorter.java index 47db5d7507..81b15ebd4f 100644 --- a/src/com/vaadin/data/util/DefaultItemSorter.java +++ b/src/com/vaadin/data/util/DefaultItemSorter.java @@ -61,6 +61,7 @@ public class DefaultItemSorter implements ItemSorter { * @see com.vaadin.data.util.ItemSorter#compare(java.lang.Object, * java.lang.Object) */ + @Override public int compare(Object o1, Object o2) { Item item1 = container.getItem(o1); Item item2 = container.getItem(o2); @@ -147,6 +148,7 @@ public class DefaultItemSorter implements ItemSorter { * com.vaadin.data.util.ItemSorter#setSortProperties(com.vaadin.data.Container * .Sortable, java.lang.Object[], boolean[]) */ + @Override public void setSortProperties(Container.Sortable container, Object[] propertyId, boolean[] ascending) { this.container = container; @@ -181,6 +183,7 @@ public class DefaultItemSorter implements ItemSorter { public static class DefaultPropertyValueComparator implements Comparator<Object>, Serializable { + @Override @SuppressWarnings("unchecked") public int compare(Object o1, Object o2) { int r = 0; diff --git a/src/com/vaadin/data/util/FilesystemContainer.java b/src/com/vaadin/data/util/FilesystemContainer.java index 7100286712..cdfeb57e14 100644 --- a/src/com/vaadin/data/util/FilesystemContainer.java +++ b/src/com/vaadin/data/util/FilesystemContainer.java @@ -187,6 +187,7 @@ public class FilesystemContainer implements Container.Hierarchical { * @return <code>true</code> if the specified Item is a directory, * <code>false</code> otherwise. */ + @Override public boolean areChildrenAllowed(Object itemId) { return itemId instanceof File && ((File) itemId).canRead() && ((File) itemId).isDirectory(); @@ -197,6 +198,7 @@ public class FilesystemContainer implements Container.Hierarchical { * add a JavaDoc comment here, we use the default documentation from * implemented interface. */ + @Override public Collection<File> getChildren(Object itemId) { if (!(itemId instanceof File)) { @@ -223,6 +225,7 @@ public class FilesystemContainer implements Container.Hierarchical { * Gets the parent item of the specified Item. Don't add a JavaDoc comment * here, we use the default documentation from implemented interface. */ + @Override public Object getParent(Object itemId) { if (!(itemId instanceof File)) { @@ -235,6 +238,7 @@ public class FilesystemContainer implements Container.Hierarchical { * Tests if the specified Item has any children. Don't add a JavaDoc comment * here, we use the default documentation from implemented interface. */ + @Override public boolean hasChildren(Object itemId) { if (!(itemId instanceof File)) { @@ -254,6 +258,7 @@ public class FilesystemContainer implements Container.Hierarchical { * JavaDoc comment here, we use the default documentation from implemented * interface. */ + @Override public boolean isRoot(Object itemId) { if (!(itemId instanceof File)) { @@ -272,6 +277,7 @@ public class FilesystemContainer implements Container.Hierarchical { * comment here, we use the default documentation from implemented * interface. */ + @Override public Collection<File> rootItemIds() { File[] f; @@ -311,6 +317,7 @@ public class FilesystemContainer implements Container.Hierarchical { * @throws UnsupportedOperationException * if the setChildrenAllowed is not supported. */ + @Override public boolean setChildrenAllowed(Object itemId, boolean areChildrenAllowed) throws UnsupportedOperationException { @@ -332,6 +339,7 @@ public class FilesystemContainer implements Container.Hierarchical { * @throws UnsupportedOperationException * if the setParent is not supported. */ + @Override public boolean setParent(Object itemId, Object newParentId) throws UnsupportedOperationException { @@ -343,6 +351,7 @@ public class FilesystemContainer implements Container.Hierarchical { * comment here, we use the default documentation from implemented * interface. */ + @Override public boolean containsId(Object itemId) { if (!(itemId instanceof File)) { @@ -371,6 +380,7 @@ public class FilesystemContainer implements Container.Hierarchical { * Gets the specified Item from the filesystem. Don't add a JavaDoc comment * here, we use the default documentation from implemented interface. */ + @Override public Item getItem(Object itemId) { if (!(itemId instanceof File)) { @@ -416,6 +426,7 @@ public class FilesystemContainer implements Container.Hierarchical { * Gets the IDs of Items in the filesystem. Don't add a JavaDoc comment * here, we use the default documentation from implemented interface. */ + @Override public Collection<File> getItemIds() { if (recursive) { @@ -459,6 +470,7 @@ public class FilesystemContainer implements Container.Hierarchical { * the property's ID. * @return the requested property's value, or <code>null</code> */ + @Override public Property<?> getContainerProperty(Object itemId, Object propertyId) { if (!(itemId instanceof File)) { @@ -493,6 +505,7 @@ public class FilesystemContainer implements Container.Hierarchical { * * @return Unmodifiable collection containing all available file properties. */ + @Override public Collection<String> getContainerPropertyIds() { return FILE_PROPERTIES; } @@ -506,6 +519,7 @@ public class FilesystemContainer implements Container.Hierarchical { * the ID of the property whose type is requested. * @return data type of the requested property, or <code>null</code> */ + @Override public Class<?> getType(Object propertyId) { if (propertyId.equals(PROPERTY_NAME)) { @@ -556,6 +570,7 @@ public class FilesystemContainer implements Container.Hierarchical { * * @return Number of Items in the container. */ + @Override public int size() { if (recursive) { @@ -609,6 +624,7 @@ public class FilesystemContainer implements Container.Hierarchical { * Gets the specified property of this file. Don't add a JavaDoc comment * here, we use the default documentation from implemented interface. */ + @Override public Property<?> getItemProperty(Object id) { return getContainerProperty(file, id); } @@ -618,6 +634,7 @@ public class FilesystemContainer implements Container.Hierarchical { * JavaDoc comment here, we use the default documentation from * implemented interface. */ + @Override public Collection<String> getItemPropertyIds() { return getContainerPropertyIds(); } @@ -716,6 +733,7 @@ public class FilesystemContainer implements Container.Hierarchical { * * @see com.vaadin.data.Item#addItemProperty(Object, Property) */ + @Override public boolean addItemProperty(Object id, Property property) throws UnsupportedOperationException { throw new UnsupportedOperationException("Filesystem container " @@ -727,6 +745,7 @@ public class FilesystemContainer implements Container.Hierarchical { * * @see com.vaadin.data.Item#removeItemProperty(Object) */ + @Override public boolean removeItemProperty(Object id) throws UnsupportedOperationException { throw new UnsupportedOperationException( @@ -763,6 +782,7 @@ public class FilesystemContainer implements Container.Hierarchical { * * @see java.io.FilenameFilter#accept(File, String) */ + @Override public boolean accept(File dir, String name) { if (name.endsWith(filter)) { return true; @@ -832,6 +852,7 @@ public class FilesystemContainer implements Container.Hierarchical { * @see com.vaadin.data.Container#addContainerProperty(java.lang.Object, * java.lang.Class, java.lang.Object) */ + @Override public boolean addContainerProperty(Object propertyId, Class<?> type, Object defaultValue) throws UnsupportedOperationException { throw new UnsupportedOperationException( @@ -843,6 +864,7 @@ public class FilesystemContainer implements Container.Hierarchical { * * @see com.vaadin.data.Container#addItem() */ + @Override public Object addItem() throws UnsupportedOperationException { throw new UnsupportedOperationException( "File system container does not support this operation"); @@ -853,6 +875,7 @@ public class FilesystemContainer implements Container.Hierarchical { * * @see com.vaadin.data.Container#addItem(java.lang.Object) */ + @Override public Item addItem(Object itemId) throws UnsupportedOperationException { throw new UnsupportedOperationException( "File system container does not support this operation"); @@ -863,6 +886,7 @@ public class FilesystemContainer implements Container.Hierarchical { * * @see com.vaadin.data.Container#removeAllItems() */ + @Override public boolean removeAllItems() throws UnsupportedOperationException { throw new UnsupportedOperationException( "File system container does not support this operation"); @@ -873,6 +897,7 @@ public class FilesystemContainer implements Container.Hierarchical { * * @see com.vaadin.data.Container#removeItem(java.lang.Object) */ + @Override public boolean removeItem(Object itemId) throws UnsupportedOperationException { throw new UnsupportedOperationException( @@ -884,6 +909,7 @@ public class FilesystemContainer implements Container.Hierarchical { * * @see com.vaadin.data.Container#removeContainerProperty(java.lang.Object ) */ + @Override public boolean removeContainerProperty(Object propertyId) throws UnsupportedOperationException { throw new UnsupportedOperationException( diff --git a/src/com/vaadin/data/util/HierarchicalContainer.java b/src/com/vaadin/data/util/HierarchicalContainer.java index 1291c8fcc4..06ab77c0e7 100644 --- a/src/com/vaadin/data/util/HierarchicalContainer.java +++ b/src/com/vaadin/data/util/HierarchicalContainer.java @@ -77,6 +77,7 @@ public class HierarchicalContainer extends IndexedContainer implements * Can the specified Item have any children? Don't add a JavaDoc comment * here, we use the default documentation from implemented interface. */ + @Override public boolean areChildrenAllowed(Object itemId) { if (noChildrenAllowed.contains(itemId)) { return false; @@ -89,6 +90,7 @@ public class HierarchicalContainer extends IndexedContainer implements * comment here, we use the default documentation from implemented * interface. */ + @Override public Collection<?> getChildren(Object itemId) { LinkedList<Object> c; @@ -109,6 +111,7 @@ public class HierarchicalContainer extends IndexedContainer implements * comment here, we use the default documentation from implemented * interface. */ + @Override public Object getParent(Object itemId) { if (filteredParent != null) { return filteredParent.get(itemId); @@ -121,6 +124,7 @@ public class HierarchicalContainer extends IndexedContainer implements * JavaDoc comment here, we use the default documentation from implemented * interface. */ + @Override public boolean hasChildren(Object itemId) { if (filteredChildren != null) { return filteredChildren.containsKey(itemId); @@ -134,6 +138,7 @@ public class HierarchicalContainer extends IndexedContainer implements * JavaDoc comment here, we use the default documentation from implemented * interface. */ + @Override public boolean isRoot(Object itemId) { // If the container is filtered the itemId must be among filteredRoots // to be a root. @@ -156,6 +161,7 @@ public class HierarchicalContainer extends IndexedContainer implements * comment here, we use the default documentation from implemented * interface. */ + @Override public Collection<?> rootItemIds() { if (filteredRoots != null) { return Collections.unmodifiableCollection(filteredRoots); @@ -183,6 +189,7 @@ public class HierarchicalContainer extends IndexedContainer implements * @return <code>true</code> if the operation succeeded, <code>false</code> * if not */ + @Override public boolean setChildrenAllowed(Object itemId, boolean childrenAllowed) { // Checks that the item is in the container @@ -217,6 +224,7 @@ public class HierarchicalContainer extends IndexedContainer implements * @return <code>true</code> if the operation succeeded, <code>false</code> * if not */ + @Override public boolean setParent(Object itemId, Object newParentId) { // Checks that the item is in the container diff --git a/src/com/vaadin/data/util/HierarchicalContainerOrderedWrapper.java b/src/com/vaadin/data/util/HierarchicalContainerOrderedWrapper.java index b7eac3e378..172dc0dd4f 100644 --- a/src/com/vaadin/data/util/HierarchicalContainerOrderedWrapper.java +++ b/src/com/vaadin/data/util/HierarchicalContainerOrderedWrapper.java @@ -25,35 +25,43 @@ public class HierarchicalContainerOrderedWrapper extends hierarchical = toBeWrapped; } + @Override public boolean areChildrenAllowed(Object itemId) { return hierarchical.areChildrenAllowed(itemId); } + @Override public Collection<?> getChildren(Object itemId) { return hierarchical.getChildren(itemId); } + @Override public Object getParent(Object itemId) { return hierarchical.getParent(itemId); } + @Override public boolean hasChildren(Object itemId) { return hierarchical.hasChildren(itemId); } + @Override public boolean isRoot(Object itemId) { return hierarchical.isRoot(itemId); } + @Override public Collection<?> rootItemIds() { return hierarchical.rootItemIds(); } + @Override public boolean setChildrenAllowed(Object itemId, boolean areChildrenAllowed) throws UnsupportedOperationException { return hierarchical.setChildrenAllowed(itemId, areChildrenAllowed); } + @Override public boolean setParent(Object itemId, Object newParentId) throws UnsupportedOperationException { return hierarchical.setParent(itemId, newParentId); diff --git a/src/com/vaadin/data/util/IndexedContainer.java b/src/com/vaadin/data/util/IndexedContainer.java index bcaa5eda42..b95b2c4de8 100644 --- a/src/com/vaadin/data/util/IndexedContainer.java +++ b/src/com/vaadin/data/util/IndexedContainer.java @@ -128,6 +128,7 @@ public class IndexedContainer extends * * @see com.vaadin.data.Container#getContainerPropertyIds() */ + @Override public Collection<?> getContainerPropertyIds() { return Collections.unmodifiableCollection(propertyIds); } @@ -139,6 +140,7 @@ public class IndexedContainer extends * the ID of the Property. * @return Type of the requested Property */ + @Override public Class<?> getType(Object propertyId) { return types.get(propertyId); } @@ -149,6 +151,7 @@ public class IndexedContainer extends * @see com.vaadin.data.Container#getContainerProperty(java.lang.Object, * java.lang.Object) */ + @Override public Property<?> getContainerProperty(Object itemId, Object propertyId) { if (!containsId(itemId)) { return null; @@ -466,6 +469,7 @@ public class IndexedContainer extends * * @see com.vaadin.data.Property.ValueChangeEvent#getProperty() */ + @Override public Property getProperty() { return (Property) getSource(); } @@ -488,6 +492,7 @@ public class IndexedContainer extends * @see com.vaadin.data.Property.ValueChangeNotifier#addListener(com. * vaadin.data.Property.ValueChangeListener) */ + @Override public void addListener(Property.ValueChangeListener listener) { if (propertyValueChangeListeners == null) { propertyValueChangeListeners = new LinkedList<Property.ValueChangeListener>(); @@ -501,6 +506,7 @@ public class IndexedContainer extends * @see com.vaadin.data.Property.ValueChangeNotifier#removeListener(com * .vaadin.data.Property.ValueChangeListener) */ + @Override public void removeListener(Property.ValueChangeListener listener) { if (propertyValueChangeListeners != null) { propertyValueChangeListeners.remove(listener); @@ -679,10 +685,12 @@ public class IndexedContainer extends * * @see com.vaadin.data.Item#getItemProperty(java.lang.Object) */ + @Override public Property<?> getItemProperty(Object id) { return new IndexedContainerProperty(itemId, id); } + @Override public Collection<?> getItemPropertyIds() { return Collections.unmodifiableCollection(propertyIds); } @@ -753,6 +761,7 @@ public class IndexedContainer extends * * @see com.vaadin.data.Item#addProperty(Object, Property) */ + @Override public boolean addItemProperty(Object id, Property property) throws UnsupportedOperationException { throw new UnsupportedOperationException("Indexed container item " @@ -766,6 +775,7 @@ public class IndexedContainer extends * * @see com.vaadin.data.Item#removeProperty(Object) */ + @Override public boolean removeItemProperty(Object id) throws UnsupportedOperationException { throw new UnsupportedOperationException( @@ -824,6 +834,7 @@ public class IndexedContainer extends * * @see com.vaadin.data.Property#getType() */ + @Override public Class<?> getType() { return types.get(propertyId); } @@ -833,6 +844,7 @@ public class IndexedContainer extends * * @see com.vaadin.data.Property#getValue() */ + @Override public Object getValue() { return items.get(itemId).get(propertyId); } @@ -842,6 +854,7 @@ public class IndexedContainer extends * * @see com.vaadin.data.Property#isReadOnly() */ + @Override public boolean isReadOnly() { return readOnlyProperties.contains(this); } @@ -851,6 +864,7 @@ public class IndexedContainer extends * * @see com.vaadin.data.Property#setReadOnly(boolean) */ + @Override public void setReadOnly(boolean newStatus) { if (newStatus) { readOnlyProperties.add(this); @@ -864,6 +878,7 @@ public class IndexedContainer extends * * @see com.vaadin.data.Property#setValue(java.lang.Object) */ + @Override public void setValue(Object newValue) throws Property.ReadOnlyException { // Gets the Property set final Map<Object, Object> propertySet = items.get(itemId); @@ -946,6 +961,7 @@ public class IndexedContainer extends * @see com.vaadin.data.Property.ValueChangeNotifier#addListener( * com.vaadin.data.Property.ValueChangeListener) */ + @Override public void addListener(Property.ValueChangeListener listener) { addSinglePropertyChangeListener(propertyId, itemId, listener); } @@ -956,6 +972,7 @@ public class IndexedContainer extends * @see com.vaadin.data.Property.ValueChangeNotifier#removeListener * (com.vaadin.data.Property.ValueChangeListener) */ + @Override public void removeListener(Property.ValueChangeListener listener) { removeSinglePropertyChangeListener(propertyId, itemId, listener); } @@ -972,6 +989,7 @@ public class IndexedContainer extends * @see com.vaadin.data.Container.Sortable#sort(java.lang.Object[], * boolean[]) */ + @Override public void sort(Object[] propertyId, boolean[] ascending) { sortContainer(propertyId, ascending); } @@ -982,6 +1000,7 @@ public class IndexedContainer extends * @see com.vaadin.data.Container.Sortable#getSortableContainerPropertyIds * () */ + @Override public Collection<?> getSortableContainerPropertyIds() { return getSortablePropertyIds(); } @@ -1054,6 +1073,7 @@ public class IndexedContainer extends return nc; } + @Override public void addContainerFilter(Object propertyId, String filterString, boolean ignoreCase, boolean onlyMatchPrefix) { try { @@ -1065,19 +1085,23 @@ public class IndexedContainer extends } } + @Override public void removeAllContainerFilters() { removeAllFilters(); } + @Override public void removeContainerFilters(Object propertyId) { removeFilters(propertyId); } + @Override public void addContainerFilter(Filter filter) throws UnsupportedFilterException { addFilter(filter); } + @Override public void removeContainerFilter(Filter filter) { removeFilter(filter); } diff --git a/src/com/vaadin/data/util/ItemSorter.java b/src/com/vaadin/data/util/ItemSorter.java index 7f9e3a3f13..4399dbe292 100644 --- a/src/com/vaadin/data/util/ItemSorter.java +++ b/src/com/vaadin/data/util/ItemSorter.java @@ -51,6 +51,7 @@ public interface ItemSorter extends Comparator<Object>, Cloneable, Serializable * * @see Comparator#compare(Object, Object) */ + @Override int compare(Object itemId1, Object itemId2); } diff --git a/src/com/vaadin/data/util/MethodProperty.java b/src/com/vaadin/data/util/MethodProperty.java index 7df45e04ab..0c64d90481 100644 --- a/src/com/vaadin/data/util/MethodProperty.java +++ b/src/com/vaadin/data/util/MethodProperty.java @@ -568,6 +568,7 @@ public class MethodProperty<T> extends AbstractProperty<T> { * * @return type of the Property */ + @Override public final Class<? extends T> getType() { return type; } @@ -591,6 +592,7 @@ public class MethodProperty<T> extends AbstractProperty<T> { * * @return the value of the Property */ + @Override public T getValue() { try { return (T) getMethod.invoke(instance, getArgs); @@ -638,6 +640,7 @@ public class MethodProperty<T> extends AbstractProperty<T> { * read-only mode. * @see #invokeSetMethod(Object) */ + @Override @SuppressWarnings("unchecked") public void setValue(Object newValue) throws Property.ReadOnlyException { diff --git a/src/com/vaadin/data/util/MethodPropertyDescriptor.java b/src/com/vaadin/data/util/MethodPropertyDescriptor.java index 5fdb982b9e..a2a76ec6cf 100644 --- a/src/com/vaadin/data/util/MethodPropertyDescriptor.java +++ b/src/com/vaadin/data/util/MethodPropertyDescriptor.java @@ -112,14 +112,17 @@ public class MethodPropertyDescriptor<BT> implements } }; + @Override public String getName() { return name; } + @Override public Class<?> getPropertyType() { return propertyType; } + @Override public Property<?> createProperty(Object bean) { return new MethodProperty<Object>(propertyType, bean, readMethod, writeMethod); diff --git a/src/com/vaadin/data/util/NestedMethodProperty.java b/src/com/vaadin/data/util/NestedMethodProperty.java index d7b0f44912..9bff38456d 100644 --- a/src/com/vaadin/data/util/NestedMethodProperty.java +++ b/src/com/vaadin/data/util/NestedMethodProperty.java @@ -165,6 +165,7 @@ public class NestedMethodProperty<T> extends AbstractProperty<T> { this.setMethod = setMethod; } + @Override public Class<? extends T> getType() { return type; } @@ -180,6 +181,7 @@ public class NestedMethodProperty<T> extends AbstractProperty<T> { * * @return the value of the Property */ + @Override public T getValue() { try { Object object = instance; @@ -202,6 +204,7 @@ public class NestedMethodProperty<T> extends AbstractProperty<T> { * read-only mode. * @see #invokeSetMethod(Object) */ + @Override public void setValue(Object newValue) throws ReadOnlyException { // Checks the mode if (isReadOnly()) { diff --git a/src/com/vaadin/data/util/NestedPropertyDescriptor.java b/src/com/vaadin/data/util/NestedPropertyDescriptor.java index 6404f6361d..b67b425d1d 100644 --- a/src/com/vaadin/data/util/NestedPropertyDescriptor.java +++ b/src/com/vaadin/data/util/NestedPropertyDescriptor.java @@ -42,14 +42,17 @@ public class NestedPropertyDescriptor<BT> implements this.propertyType = property.getType(); } + @Override public String getName() { return name; } + @Override public Class<?> getPropertyType() { return propertyType; } + @Override public Property<?> createProperty(BT bean) { return new NestedMethodProperty<Object>(bean, name); } diff --git a/src/com/vaadin/data/util/ObjectProperty.java b/src/com/vaadin/data/util/ObjectProperty.java index 9c60b9146e..cb85b44c2a 100644 --- a/src/com/vaadin/data/util/ObjectProperty.java +++ b/src/com/vaadin/data/util/ObjectProperty.java @@ -91,6 +91,7 @@ public class ObjectProperty<T> extends AbstractProperty<T> { * * @return type of the Property */ + @Override public final Class<T> getType() { return type; } @@ -100,6 +101,7 @@ public class ObjectProperty<T> extends AbstractProperty<T> { * * @return the value stored in the Property */ + @Override public T getValue() { return value; } @@ -115,6 +117,7 @@ public class ObjectProperty<T> extends AbstractProperty<T> { * @throws <code>Property.ReadOnlyException</code> if the object is in * read-only mode */ + @Override @SuppressWarnings("unchecked") public void setValue(Object newValue) throws Property.ReadOnlyException { diff --git a/src/com/vaadin/data/util/PropertyFormatter.java b/src/com/vaadin/data/util/PropertyFormatter.java index a63973535b..3d65726309 100644 --- a/src/com/vaadin/data/util/PropertyFormatter.java +++ b/src/com/vaadin/data/util/PropertyFormatter.java @@ -75,6 +75,7 @@ public abstract class PropertyFormatter<T> extends AbstractProperty<String> * @return the current data source as a Property, or <code>null</code> if * none defined. */ + @Override public Property<T> getPropertyDataSource() { return dataSource; } @@ -91,6 +92,7 @@ public abstract class PropertyFormatter<T> extends AbstractProperty<String> * @param newDataSource * the new data source Property. */ + @Override public void setPropertyDataSource(Property newDataSource) { boolean readOnly = false; @@ -132,6 +134,7 @@ public abstract class PropertyFormatter<T> extends AbstractProperty<String> } /* Documented in the interface */ + @Override public Class<String> getType() { return String.class; } @@ -142,6 +145,7 @@ public abstract class PropertyFormatter<T> extends AbstractProperty<String> * @return If the datasource returns null, this is null. Otherwise this is * String given by format(). */ + @Override public String getValue() { T value = dataSource == null ? null : dataSource.getValue(); if (value == null) { @@ -195,6 +199,7 @@ public abstract class PropertyFormatter<T> extends AbstractProperty<String> } } + @Override public void setValue(Object newValue) throws ReadOnlyException { if (dataSource == null) { return; @@ -221,6 +226,7 @@ public abstract class PropertyFormatter<T> extends AbstractProperty<String> * * This should not be called directly. */ + @Override public void valueChange(com.vaadin.data.Property.ValueChangeEvent event) { fireValueChange(); } @@ -230,6 +236,7 @@ public abstract class PropertyFormatter<T> extends AbstractProperty<String> * * This should not be called directly. */ + @Override public void readOnlyStatusChange( com.vaadin.data.Property.ReadOnlyStatusChangeEvent event) { fireReadOnlyStatusChange(); diff --git a/src/com/vaadin/data/util/PropertysetItem.java b/src/com/vaadin/data/util/PropertysetItem.java index 3270fa31f9..22f2da75b2 100644 --- a/src/com/vaadin/data/util/PropertysetItem.java +++ b/src/com/vaadin/data/util/PropertysetItem.java @@ -57,6 +57,7 @@ public class PropertysetItem implements Item, Item.PropertySetChangeNotifier, * the identifier of the Property to get. * @return the Property with the given ID or <code>null</code> */ + @Override public Property<?> getItemProperty(Object id) { return map.get(id); } @@ -67,6 +68,7 @@ public class PropertysetItem implements Item, Item.PropertySetChangeNotifier, * @return unmodifiable collection containing IDs of the Properties stored * the Item */ + @Override public Collection<?> getItemPropertyIds() { return Collections.unmodifiableCollection(list); } @@ -83,6 +85,7 @@ public class PropertysetItem implements Item, Item.PropertySetChangeNotifier, * @return <code>true</code> if the operation succeeded <code>false</code> * if not */ + @Override public boolean removeItemProperty(Object id) { // Cant remove missing properties @@ -107,6 +110,7 @@ public class PropertysetItem implements Item, Item.PropertySetChangeNotifier, * @return <code>true</code> if the operation succeeded, <code>false</code> * if not */ + @Override public boolean addItemProperty(Object id, Property property) { // Null ids are not accepted @@ -175,6 +179,7 @@ public class PropertysetItem implements Item, Item.PropertySetChangeNotifier, * * @return source object of the event as an <code>Item</code> */ + @Override public Item getItem() { return (Item) getSource(); } @@ -186,6 +191,7 @@ public class PropertysetItem implements Item, Item.PropertySetChangeNotifier, * @param listener * the new Listener to be registered. */ + @Override public void addListener(Item.PropertySetChangeListener listener) { if (propertySetChangeListeners == null) { propertySetChangeListeners = new LinkedList<PropertySetChangeListener>(); @@ -199,6 +205,7 @@ public class PropertysetItem implements Item, Item.PropertySetChangeNotifier, * @param listener * the Listener to be removed. */ + @Override public void removeListener(Item.PropertySetChangeListener listener) { if (propertySetChangeListeners != null) { propertySetChangeListeners.remove(listener); diff --git a/src/com/vaadin/data/util/QueryContainer.java b/src/com/vaadin/data/util/QueryContainer.java index 7fef63e7f1..dc7c883a7e 100644 --- a/src/com/vaadin/data/util/QueryContainer.java +++ b/src/com/vaadin/data/util/QueryContainer.java @@ -188,6 +188,7 @@ public class QueryContainer implements Container, Container.Ordered, * @return Item Id. */ + @Override public Item getItem(Object id) { return new Row(id); } @@ -198,6 +199,7 @@ public class QueryContainer implements Container, Container.Ordered, * @return Collection of Property ID. */ + @Override public Collection<String> getContainerPropertyIds() { return propertyIds; } @@ -207,6 +209,7 @@ public class QueryContainer implements Container, Container.Ordered, * * @return collection of Item IDs */ + @Override public Collection<?> getItemIds() { final Collection<Integer> c = new ArrayList<Integer>(size); for (int i = 1; i <= size; i++) { @@ -229,6 +232,7 @@ public class QueryContainer implements Container, Container.Ordered, * otherwise. */ + @Override public synchronized Property<?> getContainerProperty(Object itemId, Object propertyId) { if (!(itemId instanceof Integer && propertyId instanceof String)) { @@ -256,6 +260,7 @@ public class QueryContainer implements Container, Container.Ordered, * @return data type of the Properties */ + @Override public Class<?> getType(Object id) { return propertyTypes.get(id); } @@ -265,6 +270,7 @@ public class QueryContainer implements Container, Container.Ordered, * * @return the number of items in the container. */ + @Override public int size() { return size; } @@ -277,6 +283,7 @@ public class QueryContainer implements Container, Container.Ordered, * @return <code>true</code> if given id is in the container; * <code>false</code> otherwise. */ + @Override public boolean containsId(Object id) { if (!(id instanceof Integer)) { return false; @@ -302,6 +309,7 @@ public class QueryContainer implements Container, Container.Ordered, * @throws UnsupportedOperationException * if the addItem method is not supported. */ + @Override public Item addItem(Object itemId) throws UnsupportedOperationException { throw new UnsupportedOperationException(); } @@ -313,6 +321,7 @@ public class QueryContainer implements Container, Container.Ordered, * @throws UnsupportedOperationException * if the addItem method is not supported. */ + @Override public Object addItem() throws UnsupportedOperationException { throw new UnsupportedOperationException(); } @@ -327,6 +336,7 @@ public class QueryContainer implements Container, Container.Ordered, * @throws UnsupportedOperationException * if the removeItem method is not supported. */ + @Override public boolean removeItem(Object itemId) throws UnsupportedOperationException { throw new UnsupportedOperationException(); @@ -346,6 +356,7 @@ public class QueryContainer implements Container, Container.Ordered, * @throws UnsupportedOperationException * if the addContainerProperty method is not supported. */ + @Override public boolean addContainerProperty(Object propertyId, Class<?> type, Object defaultValue) throws UnsupportedOperationException { throw new UnsupportedOperationException(); @@ -361,6 +372,7 @@ public class QueryContainer implements Container, Container.Ordered, * @throws UnsupportedOperationException * if the removeContainerProperty method is not supported. */ + @Override public boolean removeContainerProperty(Object propertyId) throws UnsupportedOperationException { throw new UnsupportedOperationException(); @@ -374,6 +386,7 @@ public class QueryContainer implements Container, Container.Ordered, * @throws UnsupportedOperationException * if the removeAllItems method is not supported. */ + @Override public boolean removeAllItems() throws UnsupportedOperationException { throw new UnsupportedOperationException(); } @@ -389,6 +402,7 @@ public class QueryContainer implements Container, Container.Ordered, * @throws UnsupportedOperationException * if the addItemAfter method is not supported. */ + @Override public Item addItemAfter(Object previousItemId, Object newItemId) throws UnsupportedOperationException { throw new UnsupportedOperationException(); @@ -404,6 +418,7 @@ public class QueryContainer implements Container, Container.Ordered, * @throws UnsupportedOperationException * if the addItemAfter method is not supported. */ + @Override public Object addItemAfter(Object previousItemId) throws UnsupportedOperationException { throw new UnsupportedOperationException(); @@ -414,6 +429,7 @@ public class QueryContainer implements Container, Container.Ordered, * * @return ID of the first Item in the list. */ + @Override public Object firstItemId() { if (size < 1) { return null; @@ -427,6 +443,7 @@ public class QueryContainer implements Container, Container.Ordered, * @param id * ID of an Item in the Container. */ + @Override public boolean isFirstId(Object id) { return size > 0 && (id instanceof Integer) && ((Integer) id).intValue() == 1; @@ -439,6 +456,7 @@ public class QueryContainer implements Container, Container.Ordered, * ID of an Item in the Container * */ + @Override public boolean isLastId(Object id) { return size > 0 && (id instanceof Integer) && ((Integer) id).intValue() == size; @@ -449,6 +467,7 @@ public class QueryContainer implements Container, Container.Ordered, * * @return ID of the last Item. */ + @Override public Object lastItemId() { if (size < 1) { return null; @@ -463,6 +482,7 @@ public class QueryContainer implements Container, Container.Ordered, * ID of an Item in the Container. * @return ID of the next Item or null. */ + @Override public Object nextItemId(Object id) { if (size < 1 || !(id instanceof Integer)) { return null; @@ -481,6 +501,7 @@ public class QueryContainer implements Container, Container.Ordered, * ID of an Item in the Container. * @return ID of the previous Item or null. */ + @Override public Object prevItemId(Object id) { if (size < 1 || !(id instanceof Integer)) { return null; @@ -519,6 +540,7 @@ public class QueryContainer implements Container, Container.Ordered, * @throws UnsupportedOperationException * if the addItemProperty method is not supported. */ + @Override public boolean addItemProperty(Object id, Property property) throws UnsupportedOperationException { throw new UnsupportedOperationException(); @@ -532,6 +554,7 @@ public class QueryContainer implements Container, Container.Ordered, * identifier of the Property to get * @return the Property with the given ID or <code>null</code> */ + @Override public Property<?> getItemProperty(Object propertyId) { return getContainerProperty(id, propertyId); } @@ -542,6 +565,7 @@ public class QueryContainer implements Container, Container.Ordered, * @return unmodifiable collection containing IDs of the Properties * stored the Item. */ + @Override public Collection<String> getItemPropertyIds() { return propertyIds; } @@ -556,6 +580,7 @@ public class QueryContainer implements Container, Container.Ordered, * @throws UnsupportedOperationException * if the removeItemProperty is not supported. */ + @Override public boolean removeItemProperty(Object id) throws UnsupportedOperationException { throw new UnsupportedOperationException(); @@ -588,6 +613,7 @@ public class QueryContainer implements Container, Container.Ordered, * @throws UnsupportedOperationException * if the addItemAt is not supported. */ + @Override public Item addItemAt(int index, Object newItemId) throws UnsupportedOperationException { throw new UnsupportedOperationException(); @@ -605,6 +631,7 @@ public class QueryContainer implements Container, Container.Ordered, * if the addItemAt is not supported. */ + @Override public Object addItemAt(int index) throws UnsupportedOperationException { throw new UnsupportedOperationException(); } @@ -616,6 +643,7 @@ public class QueryContainer implements Container, Container.Ordered, * Index Id. * @return ID in the given index. */ + @Override public Object getIdByIndex(int index) { if (size < 1 || index < 0 || index >= size) { return null; @@ -632,6 +660,7 @@ public class QueryContainer implements Container, Container.Ordered, * Item */ + @Override public int indexOfId(Object id) { if (size < 1 || !(id instanceof Integer)) { return -1; diff --git a/src/com/vaadin/data/util/TextFileProperty.java b/src/com/vaadin/data/util/TextFileProperty.java index 5ebba98062..598b721a9c 100644 --- a/src/com/vaadin/data/util/TextFileProperty.java +++ b/src/com/vaadin/data/util/TextFileProperty.java @@ -64,6 +64,7 @@ public class TextFileProperty extends AbstractProperty<String> { * * @see com.vaadin.data.Property#getType() */ + @Override public Class<String> getType() { return String.class; } @@ -73,6 +74,7 @@ public class TextFileProperty extends AbstractProperty<String> { * * @see com.vaadin.data.Property#getValue() */ + @Override public String getValue() { if (file == null) { return null; @@ -114,6 +116,7 @@ public class TextFileProperty extends AbstractProperty<String> { * * @see com.vaadin.data.Property#setValue(java.lang.Object) */ + @Override public void setValue(Object newValue) throws ReadOnlyException { if (isReadOnly()) { throw new ReadOnlyException(); diff --git a/src/com/vaadin/data/util/TransactionalPropertyWrapper.java b/src/com/vaadin/data/util/TransactionalPropertyWrapper.java index 06ec0935c3..d042bfaac2 100644 --- a/src/com/vaadin/data/util/TransactionalPropertyWrapper.java +++ b/src/com/vaadin/data/util/TransactionalPropertyWrapper.java @@ -44,6 +44,7 @@ public class TransactionalPropertyWrapper<T> extends AbstractProperty<T> ((ValueChangeNotifier) wrappedProperty) .addListener(new ValueChangeListener() { + @Override public void valueChange(ValueChangeEvent event) { fireValueChange(); } @@ -51,29 +52,35 @@ public class TransactionalPropertyWrapper<T> extends AbstractProperty<T> } } + @Override public Class getType() { return wrappedProperty.getType(); } + @Override public T getValue() { return wrappedProperty.getValue(); } + @Override public void setValue(Object newValue) throws ReadOnlyException { // Causes a value change to be sent to this listener which in turn fires // a new value change event for this property wrappedProperty.setValue(newValue); } + @Override public void startTransaction() { inTransaction = true; valueBeforeTransaction = getValue(); } + @Override public void commit() { endTransaction(); } + @Override public void rollback() { try { wrappedProperty.setValue(valueBeforeTransaction); diff --git a/src/com/vaadin/data/util/converter/DateToLongConverter.java b/src/com/vaadin/data/util/converter/DateToLongConverter.java index 537800f617..aeba38aa1f 100644 --- a/src/com/vaadin/data/util/converter/DateToLongConverter.java +++ b/src/com/vaadin/data/util/converter/DateToLongConverter.java @@ -24,6 +24,7 @@ public class DateToLongConverter implements Converter<Date, Long> { * com.vaadin.data.util.converter.Converter#convertToModel(java.lang.Object, * java.util.Locale) */ + @Override public Long convertToModel(Date value, Locale locale) { if (value == null) { return null; @@ -39,6 +40,7 @@ public class DateToLongConverter implements Converter<Date, Long> { * com.vaadin.data.util.converter.Converter#convertToPresentation(java.lang * .Object, java.util.Locale) */ + @Override public Date convertToPresentation(Long value, Locale locale) { if (value == null) { return null; @@ -52,6 +54,7 @@ public class DateToLongConverter implements Converter<Date, Long> { * * @see com.vaadin.data.util.converter.Converter#getModelType() */ + @Override public Class<Long> getModelType() { return Long.class; } @@ -61,6 +64,7 @@ public class DateToLongConverter implements Converter<Date, Long> { * * @see com.vaadin.data.util.converter.Converter#getPresentationType() */ + @Override public Class<Date> getPresentationType() { return Date.class; } diff --git a/src/com/vaadin/data/util/converter/DefaultConverterFactory.java b/src/com/vaadin/data/util/converter/DefaultConverterFactory.java index 3ad7b6a85b..afb95d81ed 100644 --- a/src/com/vaadin/data/util/converter/DefaultConverterFactory.java +++ b/src/com/vaadin/data/util/converter/DefaultConverterFactory.java @@ -27,6 +27,7 @@ public class DefaultConverterFactory implements ConverterFactory { private final static Logger log = Logger .getLogger(DefaultConverterFactory.class.getName()); + @Override public <PRESENTATION, MODEL> Converter<PRESENTATION, MODEL> createConverter( Class<PRESENTATION> presentationType, Class<MODEL> modelType) { Converter<PRESENTATION, MODEL> converter = findConverter( diff --git a/src/com/vaadin/data/util/converter/ReverseConverter.java b/src/com/vaadin/data/util/converter/ReverseConverter.java index 1c561f29e8..fa1bb5daf1 100644 --- a/src/com/vaadin/data/util/converter/ReverseConverter.java +++ b/src/com/vaadin/data/util/converter/ReverseConverter.java @@ -42,6 +42,7 @@ public class ReverseConverter<PRESENTATION, MODEL> implements * @see com.vaadin.data.util.converter.Converter#convertToModel(java * .lang.Object, java.util.Locale) */ + @Override public MODEL convertToModel(PRESENTATION value, Locale locale) throws com.vaadin.data.util.converter.Converter.ConversionException { return realConverter.convertToPresentation(value, locale); @@ -54,6 +55,7 @@ public class ReverseConverter<PRESENTATION, MODEL> implements * com.vaadin.data.util.converter.Converter#convertToPresentation(java.lang * .Object, java.util.Locale) */ + @Override public PRESENTATION convertToPresentation(MODEL value, Locale locale) throws com.vaadin.data.util.converter.Converter.ConversionException { return realConverter.convertToModel(value, locale); @@ -64,6 +66,7 @@ public class ReverseConverter<PRESENTATION, MODEL> implements * * @see com.vaadin.data.util.converter.Converter#getSourceType() */ + @Override public Class<MODEL> getModelType() { return realConverter.getPresentationType(); } @@ -73,6 +76,7 @@ public class ReverseConverter<PRESENTATION, MODEL> implements * * @see com.vaadin.data.util.converter.Converter#getTargetType() */ + @Override public Class<PRESENTATION> getPresentationType() { return realConverter.getModelType(); } diff --git a/src/com/vaadin/data/util/converter/StringToBooleanConverter.java b/src/com/vaadin/data/util/converter/StringToBooleanConverter.java index 96a3a3d071..999f575dc4 100644 --- a/src/com/vaadin/data/util/converter/StringToBooleanConverter.java +++ b/src/com/vaadin/data/util/converter/StringToBooleanConverter.java @@ -27,6 +27,7 @@ public class StringToBooleanConverter implements Converter<String, Boolean> { * com.vaadin.data.util.converter.Converter#convertToModel(java.lang.Object, * java.util.Locale) */ + @Override public Boolean convertToModel(String value, Locale locale) throws ConversionException { if (value == null) { @@ -71,6 +72,7 @@ public class StringToBooleanConverter implements Converter<String, Boolean> { * com.vaadin.data.util.converter.Converter#convertToPresentation(java.lang * .Object, java.util.Locale) */ + @Override public String convertToPresentation(Boolean value, Locale locale) throws ConversionException { if (value == null) { @@ -88,6 +90,7 @@ public class StringToBooleanConverter implements Converter<String, Boolean> { * * @see com.vaadin.data.util.converter.Converter#getModelType() */ + @Override public Class<Boolean> getModelType() { return Boolean.class; } @@ -97,6 +100,7 @@ public class StringToBooleanConverter implements Converter<String, Boolean> { * * @see com.vaadin.data.util.converter.Converter#getPresentationType() */ + @Override public Class<String> getPresentationType() { return String.class; } diff --git a/src/com/vaadin/data/util/converter/StringToDateConverter.java b/src/com/vaadin/data/util/converter/StringToDateConverter.java index 6f3c2e47f6..487b02b2aa 100644 --- a/src/com/vaadin/data/util/converter/StringToDateConverter.java +++ b/src/com/vaadin/data/util/converter/StringToDateConverter.java @@ -52,6 +52,7 @@ public class StringToDateConverter implements Converter<String, Date> { * com.vaadin.data.util.converter.Converter#convertToModel(java.lang.Object, * java.util.Locale) */ + @Override public Date convertToModel(String value, Locale locale) throws com.vaadin.data.util.converter.Converter.ConversionException { if (value == null) { @@ -78,6 +79,7 @@ public class StringToDateConverter implements Converter<String, Date> { * com.vaadin.data.util.converter.Converter#convertToPresentation(java.lang * .Object, java.util.Locale) */ + @Override public String convertToPresentation(Date value, Locale locale) throws com.vaadin.data.util.converter.Converter.ConversionException { if (value == null) { @@ -92,6 +94,7 @@ public class StringToDateConverter implements Converter<String, Date> { * * @see com.vaadin.data.util.converter.Converter#getModelType() */ + @Override public Class<Date> getModelType() { return Date.class; } @@ -101,6 +104,7 @@ public class StringToDateConverter implements Converter<String, Date> { * * @see com.vaadin.data.util.converter.Converter#getPresentationType() */ + @Override public Class<String> getPresentationType() { return String.class; } diff --git a/src/com/vaadin/data/util/converter/StringToDoubleConverter.java b/src/com/vaadin/data/util/converter/StringToDoubleConverter.java index 60a38f4127..251f91855b 100644 --- a/src/com/vaadin/data/util/converter/StringToDoubleConverter.java +++ b/src/com/vaadin/data/util/converter/StringToDoubleConverter.java @@ -49,6 +49,7 @@ public class StringToDoubleConverter implements Converter<String, Double> { * com.vaadin.data.util.converter.Converter#convertToModel(java.lang.Object, * java.util.Locale) */ + @Override public Double convertToModel(String value, Locale locale) throws ConversionException { if (value == null) { @@ -74,6 +75,7 @@ public class StringToDoubleConverter implements Converter<String, Double> { * com.vaadin.data.util.converter.Converter#convertToPresentation(java.lang * .Object, java.util.Locale) */ + @Override public String convertToPresentation(Double value, Locale locale) throws ConversionException { if (value == null) { @@ -88,6 +90,7 @@ public class StringToDoubleConverter implements Converter<String, Double> { * * @see com.vaadin.data.util.converter.Converter#getModelType() */ + @Override public Class<Double> getModelType() { return Double.class; } @@ -97,6 +100,7 @@ public class StringToDoubleConverter implements Converter<String, Double> { * * @see com.vaadin.data.util.converter.Converter#getPresentationType() */ + @Override public Class<String> getPresentationType() { return String.class; } diff --git a/src/com/vaadin/data/util/converter/StringToIntegerConverter.java b/src/com/vaadin/data/util/converter/StringToIntegerConverter.java index e55feec3b6..950f01c6ab 100644 --- a/src/com/vaadin/data/util/converter/StringToIntegerConverter.java +++ b/src/com/vaadin/data/util/converter/StringToIntegerConverter.java @@ -39,6 +39,7 @@ public class StringToIntegerConverter implements Converter<String, Integer> { return NumberFormat.getIntegerInstance(locale); } + @Override public Integer convertToModel(String value, Locale locale) throws ConversionException { if (value == null) { @@ -64,6 +65,7 @@ public class StringToIntegerConverter implements Converter<String, Integer> { return parsedValue.intValue(); } + @Override public String convertToPresentation(Integer value, Locale locale) throws ConversionException { if (value == null) { @@ -73,10 +75,12 @@ public class StringToIntegerConverter implements Converter<String, Integer> { return getFormat(locale).format(value); } + @Override public Class<Integer> getModelType() { return Integer.class; } + @Override public Class<String> getPresentationType() { return String.class; } diff --git a/src/com/vaadin/data/util/converter/StringToNumberConverter.java b/src/com/vaadin/data/util/converter/StringToNumberConverter.java index d1816007e7..42699a326a 100644 --- a/src/com/vaadin/data/util/converter/StringToNumberConverter.java +++ b/src/com/vaadin/data/util/converter/StringToNumberConverter.java @@ -45,6 +45,7 @@ public class StringToNumberConverter implements Converter<String, Number> { * com.vaadin.data.util.converter.Converter#convertToModel(java.lang.Object, * java.util.Locale) */ + @Override public Number convertToModel(String value, Locale locale) throws ConversionException { if (value == null) { @@ -77,6 +78,7 @@ public class StringToNumberConverter implements Converter<String, Number> { * com.vaadin.data.util.converter.Converter#convertToPresentation(java.lang * .Object, java.util.Locale) */ + @Override public String convertToPresentation(Number value, Locale locale) throws ConversionException { if (value == null) { @@ -91,6 +93,7 @@ public class StringToNumberConverter implements Converter<String, Number> { * * @see com.vaadin.data.util.converter.Converter#getModelType() */ + @Override public Class<Number> getModelType() { return Number.class; } @@ -100,6 +103,7 @@ public class StringToNumberConverter implements Converter<String, Number> { * * @see com.vaadin.data.util.converter.Converter#getPresentationType() */ + @Override public Class<String> getPresentationType() { return String.class; } diff --git a/src/com/vaadin/data/util/filter/AbstractJunctionFilter.java b/src/com/vaadin/data/util/filter/AbstractJunctionFilter.java index 0f20e28586..482b10120c 100644 --- a/src/com/vaadin/data/util/filter/AbstractJunctionFilter.java +++ b/src/com/vaadin/data/util/filter/AbstractJunctionFilter.java @@ -45,6 +45,7 @@ public abstract class AbstractJunctionFilter implements Filter { * If there are no sub-filters, false is returned - override in subclasses * to change this behavior. */ + @Override public boolean appliesToProperty(Object propertyId) { for (Filter filter : getFilters()) { if (filter.appliesToProperty(propertyId)) { diff --git a/src/com/vaadin/data/util/filter/And.java b/src/com/vaadin/data/util/filter/And.java index 08182794a8..ca6c35aba7 100644 --- a/src/com/vaadin/data/util/filter/And.java +++ b/src/com/vaadin/data/util/filter/And.java @@ -30,6 +30,7 @@ public final class And extends AbstractJunctionFilter { super(filters); } + @Override public boolean passesFilter(Object itemId, Item item) throws UnsupportedFilterException { for (Filter filter : getFilters()) { diff --git a/src/com/vaadin/data/util/filter/Between.java b/src/com/vaadin/data/util/filter/Between.java index dd47d36c7f..b00a74d13d 100644 --- a/src/com/vaadin/data/util/filter/Between.java +++ b/src/com/vaadin/data/util/filter/Between.java @@ -30,6 +30,7 @@ public class Between implements Filter { return endValue; } + @Override public boolean passesFilter(Object itemId, Item item) throws UnsupportedOperationException { Object value = item.getItemProperty(getPropertyId()).getValue(); @@ -41,6 +42,7 @@ public class Between implements Filter { return false; } + @Override public boolean appliesToProperty(Object propertyId) { return getPropertyId() != null && getPropertyId().equals(propertyId); } diff --git a/src/com/vaadin/data/util/filter/Compare.java b/src/com/vaadin/data/util/filter/Compare.java index 111d95f055..4091f5b922 100644 --- a/src/com/vaadin/data/util/filter/Compare.java +++ b/src/com/vaadin/data/util/filter/Compare.java @@ -227,6 +227,7 @@ public abstract class Compare implements Filter { this.operation = operation; } + @Override public boolean passesFilter(Object itemId, Item item) { final Property<?> p = item.getItemProperty(getPropertyId()); if (null == p) { @@ -264,6 +265,7 @@ public abstract class Compare implements Filter { + value1 + ", " + getValue()); } + @Override public boolean appliesToProperty(Object propertyId) { return getPropertyId().equals(propertyId); } diff --git a/src/com/vaadin/data/util/filter/IsNull.java b/src/com/vaadin/data/util/filter/IsNull.java index aad71a7c80..3faf4153ee 100644 --- a/src/com/vaadin/data/util/filter/IsNull.java +++ b/src/com/vaadin/data/util/filter/IsNull.java @@ -33,6 +33,7 @@ public final class IsNull implements Filter { this.propertyId = propertyId; } + @Override public boolean passesFilter(Object itemId, Item item) throws UnsupportedOperationException { final Property<?> p = item.getItemProperty(getPropertyId()); @@ -42,6 +43,7 @@ public final class IsNull implements Filter { return null == p.getValue(); } + @Override public boolean appliesToProperty(Object propertyId) { return getPropertyId().equals(propertyId); } diff --git a/src/com/vaadin/data/util/filter/Like.java b/src/com/vaadin/data/util/filter/Like.java index 723623bb69..3dcc48e809 100644 --- a/src/com/vaadin/data/util/filter/Like.java +++ b/src/com/vaadin/data/util/filter/Like.java @@ -37,6 +37,7 @@ public class Like implements Filter { return caseSensitive; } + @Override public boolean passesFilter(Object itemId, Item item) throws UnsupportedOperationException { if (!item.getItemProperty(getPropertyId()).getType() @@ -54,6 +55,7 @@ public class Like implements Filter { return colValue.toUpperCase().matches(pattern.toUpperCase()); } + @Override public boolean appliesToProperty(Object propertyId) { return getPropertyId() != null && getPropertyId().equals(propertyId); } diff --git a/src/com/vaadin/data/util/filter/Not.java b/src/com/vaadin/data/util/filter/Not.java index 1731dcc2b5..bbfc9ca86a 100644 --- a/src/com/vaadin/data/util/filter/Not.java +++ b/src/com/vaadin/data/util/filter/Not.java @@ -36,6 +36,7 @@ public final class Not implements Filter { return filter; } + @Override public boolean passesFilter(Object itemId, Item item) throws UnsupportedOperationException { return !filter.passesFilter(itemId, item); @@ -48,6 +49,7 @@ public final class Not implements Filter { * * @return boolean */ + @Override public boolean appliesToProperty(Object propertyId) { return filter.appliesToProperty(propertyId); } diff --git a/src/com/vaadin/data/util/filter/Or.java b/src/com/vaadin/data/util/filter/Or.java index 194afbc7da..b60074f7e3 100644 --- a/src/com/vaadin/data/util/filter/Or.java +++ b/src/com/vaadin/data/util/filter/Or.java @@ -30,6 +30,7 @@ public final class Or extends AbstractJunctionFilter { super(filters); } + @Override public boolean passesFilter(Object itemId, Item item) throws UnsupportedFilterException { for (Filter filter : getFilters()) { diff --git a/src/com/vaadin/data/util/filter/SimpleStringFilter.java b/src/com/vaadin/data/util/filter/SimpleStringFilter.java index 6203251045..f98b2c02b4 100644 --- a/src/com/vaadin/data/util/filter/SimpleStringFilter.java +++ b/src/com/vaadin/data/util/filter/SimpleStringFilter.java @@ -39,6 +39,7 @@ public final class SimpleStringFilter implements Filter { this.onlyMatchPrefix = onlyMatchPrefix; } + @Override public boolean passesFilter(Object itemId, Item item) { final Property<?> p = item.getItemProperty(propertyId); if (p == null) { @@ -62,6 +63,7 @@ public final class SimpleStringFilter implements Filter { return true; } + @Override public boolean appliesToProperty(Object propertyId) { return this.propertyId.equals(propertyId); } diff --git a/src/com/vaadin/data/util/sqlcontainer/ColumnProperty.java b/src/com/vaadin/data/util/sqlcontainer/ColumnProperty.java index d84a164bfa..168bce1880 100644 --- a/src/com/vaadin/data/util/sqlcontainer/ColumnProperty.java +++ b/src/com/vaadin/data/util/sqlcontainer/ColumnProperty.java @@ -61,6 +61,7 @@ final public class ColumnProperty implements Property { this.readOnly = readOnly; } + @Override public Object getValue() { if (isModified()) { return changedValue; @@ -68,6 +69,7 @@ final public class ColumnProperty implements Property { return value; } + @Override public void setValue(Object newValue) throws ReadOnlyException { if (newValue == null && !nullable) { throw new NotNullableException( @@ -134,10 +136,12 @@ final public class ColumnProperty implements Property { || newValue.equals(referenceValue); } + @Override public Class<?> getType() { return type; } + @Override public boolean isReadOnly() { return readOnly; } @@ -146,6 +150,7 @@ final public class ColumnProperty implements Property { return allowReadOnlyChange; } + @Override public void setReadOnly(boolean newStatus) { if (allowReadOnlyChange) { readOnly = newStatus; diff --git a/src/com/vaadin/data/util/sqlcontainer/RowItem.java b/src/com/vaadin/data/util/sqlcontainer/RowItem.java index adededb65c..d613a06b63 100644 --- a/src/com/vaadin/data/util/sqlcontainer/RowItem.java +++ b/src/com/vaadin/data/util/sqlcontainer/RowItem.java @@ -48,6 +48,7 @@ public final class RowItem implements Item { this.id = id; } + @Override public Property<?> getItemProperty(Object id) { if (id instanceof String && id != null) { for (ColumnProperty cp : properties) { @@ -59,6 +60,7 @@ public final class RowItem implements Item { return null; } + @Override public Collection<?> getItemPropertyIds() { Collection<String> ids = new ArrayList<String>(properties.size()); for (ColumnProperty cp : properties) { @@ -71,6 +73,7 @@ public final class RowItem implements Item { * Adding properties is not supported. Properties are generated by * SQLContainer. */ + @Override public boolean addItemProperty(Object id, Property property) throws UnsupportedOperationException { throw new UnsupportedOperationException(); @@ -80,6 +83,7 @@ public final class RowItem implements Item { * Removing properties is not supported. Properties are generated by * SQLContainer. */ + @Override public boolean removeItemProperty(Object id) throws UnsupportedOperationException { throw new UnsupportedOperationException(); diff --git a/src/com/vaadin/data/util/sqlcontainer/SQLContainer.java b/src/com/vaadin/data/util/sqlcontainer/SQLContainer.java index e9b5b4fea3..5827390723 100644 --- a/src/com/vaadin/data/util/sqlcontainer/SQLContainer.java +++ b/src/com/vaadin/data/util/sqlcontainer/SQLContainer.java @@ -130,6 +130,7 @@ public class SQLContainer implements Container, Container.Filterable, * {@inheritDoc} */ + @Override public Object addItem() throws UnsupportedOperationException { Object emptyKey[] = new Object[delegate.getPrimaryKeyColumns().size()]; RowId itemId = new TemporaryRowId(emptyKey); @@ -186,6 +187,7 @@ public class SQLContainer implements Container, Container.Filterable, * @see com.vaadin.data.Container#containsId(java.lang.Object) */ + @Override public boolean containsId(Object itemId) { if (itemId == null) { return false; @@ -227,6 +229,7 @@ public class SQLContainer implements Container, Container.Filterable, * java.lang.Object) */ + @Override public Property<?> getContainerProperty(Object itemId, Object propertyId) { Item item = getItem(itemId); if (item == null) { @@ -241,6 +244,7 @@ public class SQLContainer implements Container, Container.Filterable, * @see com.vaadin.data.Container#getContainerPropertyIds() */ + @Override public Collection<?> getContainerPropertyIds() { return Collections.unmodifiableCollection(propertyIds); } @@ -251,6 +255,7 @@ public class SQLContainer implements Container, Container.Filterable, * @see com.vaadin.data.Container#getItem(java.lang.Object) */ + @Override public Item getItem(Object itemId) { if (!cachedItems.containsKey(itemId)) { int index = indexOfId(itemId); @@ -298,6 +303,7 @@ public class SQLContainer implements Container, Container.Filterable, * {@inheritDoc} */ + @Override public Collection<?> getItemIds() { updateCount(); ArrayList<RowId> ids = new ArrayList<RowId>(); @@ -355,6 +361,7 @@ public class SQLContainer implements Container, Container.Filterable, * @see com.vaadin.data.Container#getType(java.lang.Object) */ + @Override public Class<?> getType(Object propertyId) { if (!propertyIds.contains(propertyId)) { return null; @@ -368,6 +375,7 @@ public class SQLContainer implements Container, Container.Filterable, * @see com.vaadin.data.Container#size() */ + @Override public int size() { updateCount(); return size + sizeOfAddedItems() - removedItems.size(); @@ -379,6 +387,7 @@ public class SQLContainer implements Container, Container.Filterable, * @see com.vaadin.data.Container#removeItem(java.lang.Object) */ + @Override public boolean removeItem(Object itemId) throws UnsupportedOperationException { if (!containsId(itemId)) { @@ -447,6 +456,7 @@ public class SQLContainer implements Container, Container.Filterable, * @see com.vaadin.data.Container#removeAllItems() */ + @Override public boolean removeAllItems() throws UnsupportedOperationException { if (autoCommit) { /* Remove and commit instantly. */ @@ -508,6 +518,7 @@ public class SQLContainer implements Container, Container.Filterable, * {@inheritDoc} */ + @Override public void addContainerFilter(Filter filter) throws UnsupportedFilterException { // filter.setCaseSensitive(!ignoreCase); @@ -520,8 +531,10 @@ public class SQLContainer implements Container, Container.Filterable, * {@inheritDoc} */ + @Override public void removeContainerFilter(Filter filter) { filters.remove(filter); + refresh(); } /** @@ -560,6 +573,7 @@ public class SQLContainer implements Container, Container.Filterable, * {@inheritDoc} */ + @Override public void removeAllContainerFilters() { filters.clear(); refresh(); @@ -575,6 +589,7 @@ public class SQLContainer implements Container, Container.Filterable, * @see com.vaadin.data.Container.Indexed#indexOfId(java.lang.Object) */ + @Override public int indexOfId(Object itemId) { // First check if the id is in the added items for (int ix = 0; ix < addedItems.size(); ix++) { @@ -622,6 +637,7 @@ public class SQLContainer implements Container, Container.Filterable, * @see com.vaadin.data.Container.Indexed#getIdByIndex(int) */ + @Override public Object getIdByIndex(int index) { if (index < 0 || index > size() - 1) { return null; @@ -649,6 +665,7 @@ public class SQLContainer implements Container, Container.Filterable, * @see com.vaadin.data.Container.Ordered#nextItemId(java.lang.Object) */ + @Override public Object nextItemId(Object itemId) { return getIdByIndex(indexOfId(itemId) + 1); } @@ -659,6 +676,7 @@ public class SQLContainer implements Container, Container.Filterable, * @see com.vaadin.data.Container.Ordered#prevItemId(java.lang.Object) */ + @Override public Object prevItemId(Object itemId) { return getIdByIndex(indexOfId(itemId) - 1); } @@ -669,6 +687,7 @@ public class SQLContainer implements Container, Container.Filterable, * @see com.vaadin.data.Container.Ordered#firstItemId() */ + @Override public Object firstItemId() { updateCount(); if (size == 0) { @@ -697,6 +716,7 @@ public class SQLContainer implements Container, Container.Filterable, * @see com.vaadin.data.Container.Ordered#lastItemId() */ + @Override public Object lastItemId() { if (addedItems.isEmpty()) { int lastIx = size() - 1; @@ -723,6 +743,7 @@ public class SQLContainer implements Container, Container.Filterable, * @see com.vaadin.data.Container.Ordered#isFirstId(java.lang.Object) */ + @Override public boolean isFirstId(Object itemId) { return firstItemId().equals(itemId); } @@ -733,6 +754,7 @@ public class SQLContainer implements Container, Container.Filterable, * @see com.vaadin.data.Container.Ordered#isLastId(java.lang.Object) */ + @Override public boolean isLastId(Object itemId) { return lastItemId().equals(itemId); } @@ -748,6 +770,7 @@ public class SQLContainer implements Container, Container.Filterable, * boolean[]) */ + @Override public void sort(Object[] propertyId, boolean[] ascending) { sorters.clear(); if (propertyId == null || propertyId.length == 0) { @@ -777,6 +800,7 @@ public class SQLContainer implements Container, Container.Filterable, * @see com.vaadin.data.Container.Sortable#getSortableContainerPropertyIds() */ + @Override public Collection<?> getSortableContainerPropertyIds() { return getContainerPropertyIds(); } @@ -1351,6 +1375,7 @@ public class SQLContainer implements Container, Container.Filterable, * java.lang.Class, java.lang.Object) */ + @Override public boolean addContainerProperty(Object propertyId, Class<?> type, Object defaultValue) throws UnsupportedOperationException { throw new UnsupportedOperationException(); @@ -1362,6 +1387,7 @@ public class SQLContainer implements Container, Container.Filterable, * @see com.vaadin.data.Container#removeContainerProperty(java.lang.Object) */ + @Override public boolean removeContainerProperty(Object propertyId) throws UnsupportedOperationException { throw new UnsupportedOperationException(); @@ -1373,6 +1399,7 @@ public class SQLContainer implements Container, Container.Filterable, * @see com.vaadin.data.Container#addItem(java.lang.Object) */ + @Override public Item addItem(Object itemId) throws UnsupportedOperationException { throw new UnsupportedOperationException(); } @@ -1384,6 +1411,7 @@ public class SQLContainer implements Container, Container.Filterable, * java.lang.Object) */ + @Override public Item addItemAfter(Object previousItemId, Object newItemId) throws UnsupportedOperationException { throw new UnsupportedOperationException(); @@ -1395,6 +1423,7 @@ public class SQLContainer implements Container, Container.Filterable, * @see com.vaadin.data.Container.Indexed#addItemAt(int, java.lang.Object) */ + @Override public Item addItemAt(int index, Object newItemId) throws UnsupportedOperationException { throw new UnsupportedOperationException(); @@ -1406,6 +1435,7 @@ public class SQLContainer implements Container, Container.Filterable, * @see com.vaadin.data.Container.Indexed#addItemAt(int) */ + @Override public Object addItemAt(int index) throws UnsupportedOperationException { throw new UnsupportedOperationException(); } @@ -1416,6 +1446,7 @@ public class SQLContainer implements Container, Container.Filterable, * @see com.vaadin.data.Container.Ordered#addItemAfter(java.lang.Object) */ + @Override public Object addItemAfter(Object previousItemId) throws UnsupportedOperationException { throw new UnsupportedOperationException(); @@ -1433,6 +1464,7 @@ public class SQLContainer implements Container, Container.Filterable, * .data.Container.ItemSetChangeListener) */ + @Override public void addListener(Container.ItemSetChangeListener listener) { if (itemSetChangeListeners == null) { itemSetChangeListeners = new LinkedList<Container.ItemSetChangeListener>(); @@ -1448,6 +1480,7 @@ public class SQLContainer implements Container, Container.Filterable, * .data.Container.ItemSetChangeListener) */ + @Override public void removeListener(Container.ItemSetChangeListener listener) { if (itemSetChangeListeners != null) { itemSetChangeListeners.remove(listener); @@ -1477,6 +1510,7 @@ public class SQLContainer implements Container, Container.Filterable, super(source); } + @Override public Container getContainer() { return (Container) getSource(); } diff --git a/src/com/vaadin/data/util/sqlcontainer/connection/J2EEConnectionPool.java b/src/com/vaadin/data/util/sqlcontainer/connection/J2EEConnectionPool.java index 40d0d0426f..9aa4f7c4be 100644 --- a/src/com/vaadin/data/util/sqlcontainer/connection/J2EEConnectionPool.java +++ b/src/com/vaadin/data/util/sqlcontainer/connection/J2EEConnectionPool.java @@ -26,6 +26,7 @@ public class J2EEConnectionPool implements JDBCConnectionPool { this.dataSourceJndiName = dataSourceJndiName; } + @Override public Connection reserveConnection() throws SQLException { Connection conn = getDataSource().getConnection(); conn.setAutoCommit(false); @@ -51,6 +52,7 @@ public class J2EEConnectionPool implements JDBCConnectionPool { } } + @Override public void releaseConnection(Connection conn) { if (conn != null) { try { @@ -62,6 +64,7 @@ public class J2EEConnectionPool implements JDBCConnectionPool { } } + @Override public void destroy() { dataSource = null; } diff --git a/src/com/vaadin/data/util/sqlcontainer/connection/SimpleJDBCConnectionPool.java b/src/com/vaadin/data/util/sqlcontainer/connection/SimpleJDBCConnectionPool.java index 2a1068e786..21760014b9 100644 --- a/src/com/vaadin/data/util/sqlcontainer/connection/SimpleJDBCConnectionPool.java +++ b/src/com/vaadin/data/util/sqlcontainer/connection/SimpleJDBCConnectionPool.java @@ -81,6 +81,7 @@ public class SimpleJDBCConnectionPool implements JDBCConnectionPool { initialized = true; } + @Override public synchronized Connection reserveConnection() throws SQLException { if (!initialized) { initializeConnections(); @@ -100,6 +101,7 @@ public class SimpleJDBCConnectionPool implements JDBCConnectionPool { return c; } + @Override public synchronized void releaseConnection(Connection conn) { if (conn == null || !initialized) { return; @@ -139,6 +141,7 @@ public class SimpleJDBCConnectionPool implements JDBCConnectionPool { return c; } + @Override public void destroy() { for (Connection c : availableConnections) { try { diff --git a/src/com/vaadin/data/util/sqlcontainer/query/FreeformQuery.java b/src/com/vaadin/data/util/sqlcontainer/query/FreeformQuery.java index 56a8455a16..ec986fab95 100644 --- a/src/com/vaadin/data/util/sqlcontainer/query/FreeformQuery.java +++ b/src/com/vaadin/data/util/sqlcontainer/query/FreeformQuery.java @@ -99,6 +99,7 @@ public class FreeformQuery implements QueryDelegate { * * {@inheritDoc} */ + @Override public int getCount() throws SQLException { // First try the delegate int count = countByDelegate(); @@ -187,6 +188,7 @@ public class FreeformQuery implements QueryDelegate { * * @see FreeformQueryDelegate#getQueryString(int, int) */ + @Override @SuppressWarnings("deprecation") public ResultSet getResults(int offset, int pagelength) throws SQLException { if (activeConnection == null) { @@ -218,6 +220,7 @@ public class FreeformQuery implements QueryDelegate { return rs; } + @Override @SuppressWarnings("deprecation") public boolean implementationRespectsPagingLimits() { if (delegate == null) { @@ -251,6 +254,7 @@ public class FreeformQuery implements QueryDelegate { * com.vaadin.data.util.sqlcontainer.query.QueryDelegate#setFilters(java * .util.List) */ + @Override public void setFilters(List<Filter> filters) throws UnsupportedOperationException { if (delegate != null) { @@ -268,6 +272,7 @@ public class FreeformQuery implements QueryDelegate { * com.vaadin.data.util.sqlcontainer.query.QueryDelegate#setOrderBy(java * .util.List) */ + @Override public void setOrderBy(List<OrderBy> orderBys) throws UnsupportedOperationException { if (delegate != null) { @@ -285,6 +290,7 @@ public class FreeformQuery implements QueryDelegate { * com.vaadin.data.util.sqlcontainer.query.QueryDelegate#storeRow(com.vaadin * .data.util.sqlcontainer.RowItem) */ + @Override public int storeRow(RowItem row) throws SQLException { if (activeConnection == null) { throw new IllegalStateException("No transaction is active!"); @@ -307,6 +313,7 @@ public class FreeformQuery implements QueryDelegate { * com.vaadin.data.util.sqlcontainer.query.QueryDelegate#removeRow(com.vaadin * .data.util.sqlcontainer.RowItem) */ + @Override public boolean removeRow(RowItem row) throws SQLException { if (activeConnection == null) { throw new IllegalStateException("No transaction is active!"); @@ -328,6 +335,7 @@ public class FreeformQuery implements QueryDelegate { * @see * com.vaadin.data.util.sqlcontainer.query.QueryDelegate#beginTransaction() */ + @Override public synchronized void beginTransaction() throws UnsupportedOperationException, SQLException { if (activeConnection != null) { @@ -342,6 +350,7 @@ public class FreeformQuery implements QueryDelegate { * * @see com.vaadin.data.util.sqlcontainer.query.QueryDelegate#commit() */ + @Override public synchronized void commit() throws UnsupportedOperationException, SQLException { if (activeConnection == null) { @@ -359,6 +368,7 @@ public class FreeformQuery implements QueryDelegate { * * @see com.vaadin.data.util.sqlcontainer.query.QueryDelegate#rollback() */ + @Override public synchronized void rollback() throws UnsupportedOperationException, SQLException { if (activeConnection == null) { @@ -376,6 +386,7 @@ public class FreeformQuery implements QueryDelegate { * com.vaadin.data.util.sqlcontainer.query.QueryDelegate#getPrimaryKeyColumns * () */ + @Override public List<String> getPrimaryKeyColumns() { return primaryKeyColumns; } @@ -403,6 +414,7 @@ public class FreeformQuery implements QueryDelegate { * @see FreeformQueryDelegate#getContainsRowQueryString(Object...) * */ + @Override @SuppressWarnings("deprecation") public boolean containsRowWithKey(Object... keys) throws SQLException { String query = null; diff --git a/src/com/vaadin/data/util/sqlcontainer/query/TableQuery.java b/src/com/vaadin/data/util/sqlcontainer/query/TableQuery.java index 22ca30cc32..d0606704f7 100644 --- a/src/com/vaadin/data/util/sqlcontainer/query/TableQuery.java +++ b/src/com/vaadin/data/util/sqlcontainer/query/TableQuery.java @@ -111,6 +111,7 @@ public class TableQuery implements QueryDelegate, * * @see com.vaadin.addon.sqlcontainer.query.QueryDelegate#getCount() */ + @Override public int getCount() throws SQLException { getLogger().log(Level.FINE, "Fetching count..."); StatementHelper sh = sqlGenerator.generateSelectQuery(tableName, @@ -137,6 +138,7 @@ public class TableQuery implements QueryDelegate, * @see com.vaadin.addon.sqlcontainer.query.QueryDelegate#getResults(int, * int) */ + @Override public ResultSet getResults(int offset, int pagelength) throws SQLException { StatementHelper sh; /* @@ -161,6 +163,7 @@ public class TableQuery implements QueryDelegate, * @see com.vaadin.addon.sqlcontainer.query.QueryDelegate# * implementationRespectsPagingLimits() */ + @Override public boolean implementationRespectsPagingLimits() { return true; } @@ -172,6 +175,7 @@ public class TableQuery implements QueryDelegate, * com.vaadin.addon.sqlcontainer.query.QueryDelegate#storeRow(com.vaadin * .addon.sqlcontainer.RowItem) */ + @Override public int storeRow(RowItem row) throws UnsupportedOperationException, SQLException { if (row == null) { @@ -254,6 +258,7 @@ public class TableQuery implements QueryDelegate, * com.vaadin.addon.sqlcontainer.query.QueryDelegate#setFilters(java.util * .List) */ + @Override public void setFilters(List<Filter> filters) throws UnsupportedOperationException { if (filters == null) { @@ -270,6 +275,7 @@ public class TableQuery implements QueryDelegate, * com.vaadin.addon.sqlcontainer.query.QueryDelegate#setOrderBy(java.util * .List) */ + @Override public void setOrderBy(List<OrderBy> orderBys) throws UnsupportedOperationException { if (orderBys == null) { @@ -284,6 +290,7 @@ public class TableQuery implements QueryDelegate, * * @see com.vaadin.addon.sqlcontainer.query.QueryDelegate#beginTransaction() */ + @Override public void beginTransaction() throws UnsupportedOperationException, SQLException { if (transactionOpen && activeConnection != null) { @@ -301,6 +308,7 @@ public class TableQuery implements QueryDelegate, * * @see com.vaadin.addon.sqlcontainer.query.QueryDelegate#commit() */ + @Override public void commit() throws UnsupportedOperationException, SQLException { if (transactionOpen && activeConnection != null) { getLogger().log(Level.FINE, "DB -> commit"); @@ -329,6 +337,7 @@ public class TableQuery implements QueryDelegate, * * @see com.vaadin.addon.sqlcontainer.query.QueryDelegate#rollback() */ + @Override public void rollback() throws UnsupportedOperationException, SQLException { if (transactionOpen && activeConnection != null) { getLogger().log(Level.FINE, "DB -> rollback"); @@ -346,6 +355,7 @@ public class TableQuery implements QueryDelegate, * @see * com.vaadin.addon.sqlcontainer.query.QueryDelegate#getPrimaryKeyColumns() */ + @Override public List<String> getPrimaryKeyColumns() { return Collections.unmodifiableList(primaryKeyColumns); } @@ -581,6 +591,7 @@ public class TableQuery implements QueryDelegate, * com.vaadin.addon.sqlcontainer.query.QueryDelegate#removeRow(com.vaadin * .addon.sqlcontainer.RowItem) */ + @Override public boolean removeRow(RowItem row) throws UnsupportedOperationException, SQLException { getLogger().log(Level.FINE, @@ -604,6 +615,7 @@ public class TableQuery implements QueryDelegate, * com.vaadin.addon.sqlcontainer.query.QueryDelegate#containsRowWithKey( * java.lang.Object[]) */ + @Override public boolean containsRowWithKey(Object... keys) throws SQLException { ArrayList<Filter> filtersAndKeys = new ArrayList<Filter>(); if (filters != null) { @@ -665,10 +677,12 @@ public class TableQuery implements QueryDelegate, this.newId = newId; } + @Override public RowId getNewRowId() { return newId; } + @Override public RowId getOldRowId() { return oldId; } @@ -677,6 +691,7 @@ public class TableQuery implements QueryDelegate, /** * Adds RowIdChangeListener to this query */ + @Override public void addListener(RowIdChangeListener listener) { if (rowIdChangeListeners == null) { rowIdChangeListeners = new LinkedList<QueryDelegate.RowIdChangeListener>(); @@ -687,6 +702,7 @@ public class TableQuery implements QueryDelegate, /** * Removes the given RowIdChangeListener from this query */ + @Override public void removeListener(RowIdChangeListener listener) { if (rowIdChangeListeners != null) { rowIdChangeListeners.remove(listener); diff --git a/src/com/vaadin/data/util/sqlcontainer/query/generator/DefaultSQLGenerator.java b/src/com/vaadin/data/util/sqlcontainer/query/generator/DefaultSQLGenerator.java index 24d283c9ab..6485330541 100644 --- a/src/com/vaadin/data/util/sqlcontainer/query/generator/DefaultSQLGenerator.java +++ b/src/com/vaadin/data/util/sqlcontainer/query/generator/DefaultSQLGenerator.java @@ -24,11 +24,25 @@ import com.vaadin.data.util.sqlcontainer.query.generator.filter.StringDecorator; @SuppressWarnings("serial") public class DefaultSQLGenerator implements SQLGenerator { + private Class<? extends StatementHelper> statementHelperClass = null; + public DefaultSQLGenerator() { } /** + * Create a new DefaultSqlGenerator instance that uses the given + * implementation of {@link StatementHelper} + * + * @param statementHelper + */ + public DefaultSQLGenerator( + Class<? extends StatementHelper> statementHelperClazz) { + this(); + statementHelperClass = statementHelperClazz; + } + + /** * Construct a DefaultSQLGenerator with the specified identifiers for start * and end of quoted strings. The identifiers may be different depending on * the database engine and it's settings. @@ -44,6 +58,20 @@ public class DefaultSQLGenerator implements SQLGenerator { quoteEnd)); } + /** + * Same as {@link #DefaultSQLGenerator(String, String)} but with support for + * custom {@link StatementHelper} implementation. + * + * @param quoteStart + * @param quoteEnd + * @param statementHelperClazz + */ + public DefaultSQLGenerator(String quoteStart, String quoteEnd, + Class<? extends StatementHelper> statementHelperClazz) { + this(quoteStart, quoteEnd); + statementHelperClass = statementHelperClazz; + } + /* * (non-Javadoc) * @@ -51,6 +79,7 @@ public class DefaultSQLGenerator implements SQLGenerator { * generateSelectQuery(java.lang.String, java.util.List, java.util.List, * int, int, java.lang.String) */ + @Override public StatementHelper generateSelectQuery(String tableName, List<Filter> filters, List<OrderBy> orderBys, int offset, int pagelength, String toSelect) { @@ -58,7 +87,7 @@ public class DefaultSQLGenerator implements SQLGenerator { throw new IllegalArgumentException("Table name must be given."); } toSelect = toSelect == null ? "*" : toSelect; - StatementHelper sh = new StatementHelper(); + StatementHelper sh = getStatementHelper(); StringBuffer query = new StringBuffer(); query.append("SELECT " + toSelect + " FROM ").append( SQLUtil.escapeSQL(tableName)); @@ -84,6 +113,7 @@ public class DefaultSQLGenerator implements SQLGenerator { * generateUpdateQuery(java.lang.String, * com.vaadin.addon.sqlcontainer.RowItem) */ + @Override public StatementHelper generateUpdateQuery(String tableName, RowItem item) { if (tableName == null || tableName.trim().equals("")) { throw new IllegalArgumentException("Table name must be given."); @@ -91,7 +121,7 @@ public class DefaultSQLGenerator implements SQLGenerator { if (item == null) { throw new IllegalArgumentException("Updated item must be given."); } - StatementHelper sh = new StatementHelper(); + StatementHelper sh = getStatementHelper(); StringBuffer query = new StringBuffer(); query.append("UPDATE ").append(tableName).append(" SET"); @@ -133,6 +163,7 @@ public class DefaultSQLGenerator implements SQLGenerator { * generateInsertQuery(java.lang.String, * com.vaadin.addon.sqlcontainer.RowItem) */ + @Override public StatementHelper generateInsertQuery(String tableName, RowItem item) { if (tableName == null || tableName.trim().equals("")) { throw new IllegalArgumentException("Table name must be given."); @@ -144,7 +175,7 @@ public class DefaultSQLGenerator implements SQLGenerator { throw new IllegalArgumentException( "Cannot generate an insert query for item already in database."); } - StatementHelper sh = new StatementHelper(); + StatementHelper sh = getStatementHelper(); StringBuffer query = new StringBuffer(); query.append("INSERT INTO ").append(tableName).append(" ("); @@ -184,6 +215,7 @@ public class DefaultSQLGenerator implements SQLGenerator { * generateDeleteQuery(java.lang.String, * com.vaadin.addon.sqlcontainer.RowItem) */ + @Override public StatementHelper generateDeleteQuery(String tableName, List<String> primaryKeyColumns, String versionColumn, RowItem item) { if (tableName == null || tableName.trim().equals("")) { @@ -197,7 +229,7 @@ public class DefaultSQLGenerator implements SQLGenerator { throw new IllegalArgumentException( "Valid keyColumnNames must be provided."); } - StatementHelper sh = new StatementHelper(); + StatementHelper sh = getStatementHelper(); StringBuffer query = new StringBuffer(); query.append("DELETE FROM ").append(tableName).append(" WHERE "); int count = 1; @@ -308,4 +340,28 @@ public class DefaultSQLGenerator implements SQLGenerator { } return rowIdentifiers; } -}
\ No newline at end of file + + /** + * Returns the statement helper for the generator. Override this to handle + * platform specific data types. + * + * @see http://dev.vaadin.com/ticket/9148 + * @return a new instance of the statement helper + */ + protected StatementHelper getStatementHelper() { + if (statementHelperClass == null) { + return new StatementHelper(); + } + + try { + return statementHelperClass.newInstance(); + } catch (InstantiationException e) { + throw new RuntimeException( + "Unable to instantiate custom StatementHelper", e); + } catch (IllegalAccessException e) { + throw new RuntimeException( + "Unable to instantiate custom StatementHelper", e); + } + } + +} diff --git a/src/com/vaadin/data/util/sqlcontainer/query/generator/MSSQLGenerator.java b/src/com/vaadin/data/util/sqlcontainer/query/generator/MSSQLGenerator.java index 52c13feecb..13ef1d0090 100644 --- a/src/com/vaadin/data/util/sqlcontainer/query/generator/MSSQLGenerator.java +++ b/src/com/vaadin/data/util/sqlcontainer/query/generator/MSSQLGenerator.java @@ -50,7 +50,7 @@ public class MSSQLGenerator extends DefaultSQLGenerator { offset = pagelength > 1 ? ++offset : offset; pagelength = pagelength > 1 ? --pagelength : pagelength; toSelect = toSelect == null ? "*" : toSelect; - StatementHelper sh = new StatementHelper(); + StatementHelper sh = getStatementHelper(); StringBuffer query = new StringBuffer(); /* Row count request is handled here */ diff --git a/src/com/vaadin/data/util/sqlcontainer/query/generator/OracleGenerator.java b/src/com/vaadin/data/util/sqlcontainer/query/generator/OracleGenerator.java index 8e33211154..43a562d3a8 100644 --- a/src/com/vaadin/data/util/sqlcontainer/query/generator/OracleGenerator.java +++ b/src/com/vaadin/data/util/sqlcontainer/query/generator/OracleGenerator.java @@ -16,6 +16,10 @@ public class OracleGenerator extends DefaultSQLGenerator { } + public OracleGenerator(Class<? extends StatementHelper> statementHelperClazz) { + super(statementHelperClazz); + } + /** * Construct an OracleSQLGenerator with the specified identifiers for start * and end of quoted strings. The identifiers may be different depending on @@ -31,6 +35,11 @@ public class OracleGenerator extends DefaultSQLGenerator { super(quoteStart, quoteEnd); } + public OracleGenerator(String quoteStart, String quoteEnd, + Class<? extends StatementHelper> statementHelperClazz) { + super(quoteStart, quoteEnd, statementHelperClazz); + } + /* * (non-Javadoc) * @@ -50,7 +59,7 @@ public class OracleGenerator extends DefaultSQLGenerator { offset = pagelength > 1 ? ++offset : offset; pagelength = pagelength > 1 ? --pagelength : pagelength; toSelect = toSelect == null ? "*" : toSelect; - StatementHelper sh = new StatementHelper(); + StatementHelper sh = getStatementHelper(); StringBuffer query = new StringBuffer(); /* Row count request is handled here */ @@ -99,4 +108,5 @@ public class OracleGenerator extends DefaultSQLGenerator { sh.setQueryString(query.toString()); return sh; } + }
\ No newline at end of file diff --git a/src/com/vaadin/data/util/sqlcontainer/query/generator/StatementHelper.java b/src/com/vaadin/data/util/sqlcontainer/query/generator/StatementHelper.java index 3fd92e920d..f9458609c3 100644 --- a/src/com/vaadin/data/util/sqlcontainer/query/generator/StatementHelper.java +++ b/src/com/vaadin/data/util/sqlcontainer/query/generator/StatementHelper.java @@ -128,8 +128,32 @@ public class StatementHelper implements Serializable { } else if (Timestamp.class.equals(dataTypes.get(i))) { pstmt.setTimestamp(i + 1, null); } else { + + if (handleUnrecognizedTypeNullValue(i, pstmt, dataTypes)) { + return; + } + throw new SQLException("Data type not supported by SQLContainer: " + parameters.get(i).getClass().toString()); } } + + /** + * Handle unrecognized null values. Override this to handle null values for + * platform specific data types that are not handled by the default + * implementation of the {@link StatementHelper}. + * + * @param i + * @param pstmt + * @param dataTypes2 + * + * @return true if handled, false otherwise + * + * @see {@link http://dev.vaadin.com/ticket/9148} + */ + protected boolean handleUnrecognizedTypeNullValue(int i, + PreparedStatement pstmt, Map<Integer, Class<?>> dataTypes) + throws SQLException { + return false; + } } diff --git a/src/com/vaadin/data/util/sqlcontainer/query/generator/filter/AndTranslator.java b/src/com/vaadin/data/util/sqlcontainer/query/generator/filter/AndTranslator.java index 02d6671b60..251a543a8a 100644 --- a/src/com/vaadin/data/util/sqlcontainer/query/generator/filter/AndTranslator.java +++ b/src/com/vaadin/data/util/sqlcontainer/query/generator/filter/AndTranslator.java @@ -9,10 +9,12 @@ import com.vaadin.data.util.sqlcontainer.query.generator.StatementHelper; public class AndTranslator implements FilterTranslator { + @Override public boolean translatesFilter(Filter filter) { return filter instanceof And; } + @Override public String getWhereStringForFilter(Filter filter, StatementHelper sh) { return QueryBuilder.group(QueryBuilder.getJoinedFilterString( ((And) filter).getFilters(), "AND", sh)); diff --git a/src/com/vaadin/data/util/sqlcontainer/query/generator/filter/BetweenTranslator.java b/src/com/vaadin/data/util/sqlcontainer/query/generator/filter/BetweenTranslator.java index e8a87a82d8..4fcaf759ea 100644 --- a/src/com/vaadin/data/util/sqlcontainer/query/generator/filter/BetweenTranslator.java +++ b/src/com/vaadin/data/util/sqlcontainer/query/generator/filter/BetweenTranslator.java @@ -9,10 +9,12 @@ import com.vaadin.data.util.sqlcontainer.query.generator.StatementHelper; public class BetweenTranslator implements FilterTranslator { + @Override public boolean translatesFilter(Filter filter) { return filter instanceof Between; } + @Override public String getWhereStringForFilter(Filter filter, StatementHelper sh) { Between between = (Between) filter; sh.addParameterValue(between.getStartValue()); diff --git a/src/com/vaadin/data/util/sqlcontainer/query/generator/filter/CompareTranslator.java b/src/com/vaadin/data/util/sqlcontainer/query/generator/filter/CompareTranslator.java index 72d72dd069..4293e1d630 100644 --- a/src/com/vaadin/data/util/sqlcontainer/query/generator/filter/CompareTranslator.java +++ b/src/com/vaadin/data/util/sqlcontainer/query/generator/filter/CompareTranslator.java @@ -9,10 +9,12 @@ import com.vaadin.data.util.sqlcontainer.query.generator.StatementHelper; public class CompareTranslator implements FilterTranslator { + @Override public boolean translatesFilter(Filter filter) { return filter instanceof Compare; } + @Override public String getWhereStringForFilter(Filter filter, StatementHelper sh) { Compare compare = (Compare) filter; sh.addParameterValue(compare.getValue()); diff --git a/src/com/vaadin/data/util/sqlcontainer/query/generator/filter/IsNullTranslator.java b/src/com/vaadin/data/util/sqlcontainer/query/generator/filter/IsNullTranslator.java index 2593bbae57..a2a6cd2c09 100644 --- a/src/com/vaadin/data/util/sqlcontainer/query/generator/filter/IsNullTranslator.java +++ b/src/com/vaadin/data/util/sqlcontainer/query/generator/filter/IsNullTranslator.java @@ -9,10 +9,12 @@ import com.vaadin.data.util.sqlcontainer.query.generator.StatementHelper; public class IsNullTranslator implements FilterTranslator { + @Override public boolean translatesFilter(Filter filter) { return filter instanceof IsNull; } + @Override public String getWhereStringForFilter(Filter filter, StatementHelper sh) { IsNull in = (IsNull) filter; return QueryBuilder.quote(in.getPropertyId()) + " IS NULL"; diff --git a/src/com/vaadin/data/util/sqlcontainer/query/generator/filter/LikeTranslator.java b/src/com/vaadin/data/util/sqlcontainer/query/generator/filter/LikeTranslator.java index b1c779ae73..25a85caec0 100644 --- a/src/com/vaadin/data/util/sqlcontainer/query/generator/filter/LikeTranslator.java +++ b/src/com/vaadin/data/util/sqlcontainer/query/generator/filter/LikeTranslator.java @@ -9,10 +9,12 @@ import com.vaadin.data.util.sqlcontainer.query.generator.StatementHelper; public class LikeTranslator implements FilterTranslator { + @Override public boolean translatesFilter(Filter filter) { return filter instanceof Like; } + @Override public String getWhereStringForFilter(Filter filter, StatementHelper sh) { Like like = (Like) filter; if (like.isCaseSensitive()) { diff --git a/src/com/vaadin/data/util/sqlcontainer/query/generator/filter/NotTranslator.java b/src/com/vaadin/data/util/sqlcontainer/query/generator/filter/NotTranslator.java index 7c1bba2bb5..5dfbe240e7 100644 --- a/src/com/vaadin/data/util/sqlcontainer/query/generator/filter/NotTranslator.java +++ b/src/com/vaadin/data/util/sqlcontainer/query/generator/filter/NotTranslator.java @@ -10,10 +10,12 @@ import com.vaadin.data.util.sqlcontainer.query.generator.StatementHelper; public class NotTranslator implements FilterTranslator { + @Override public boolean translatesFilter(Filter filter) { return filter instanceof Not; } + @Override public String getWhereStringForFilter(Filter filter, StatementHelper sh) { Not not = (Not) filter; if (not.getFilter() instanceof IsNull) { diff --git a/src/com/vaadin/data/util/sqlcontainer/query/generator/filter/OrTranslator.java b/src/com/vaadin/data/util/sqlcontainer/query/generator/filter/OrTranslator.java index 9724ee7944..2f0ed814e0 100644 --- a/src/com/vaadin/data/util/sqlcontainer/query/generator/filter/OrTranslator.java +++ b/src/com/vaadin/data/util/sqlcontainer/query/generator/filter/OrTranslator.java @@ -9,10 +9,12 @@ import com.vaadin.data.util.sqlcontainer.query.generator.StatementHelper; public class OrTranslator implements FilterTranslator { + @Override public boolean translatesFilter(Filter filter) { return filter instanceof Or; } + @Override public String getWhereStringForFilter(Filter filter, StatementHelper sh) { return QueryBuilder.group(QueryBuilder.getJoinedFilterString( ((Or) filter).getFilters(), "OR", sh)); diff --git a/src/com/vaadin/data/util/sqlcontainer/query/generator/filter/SimpleStringTranslator.java b/src/com/vaadin/data/util/sqlcontainer/query/generator/filter/SimpleStringTranslator.java index 1aae68abc0..f108003535 100644 --- a/src/com/vaadin/data/util/sqlcontainer/query/generator/filter/SimpleStringTranslator.java +++ b/src/com/vaadin/data/util/sqlcontainer/query/generator/filter/SimpleStringTranslator.java @@ -10,10 +10,12 @@ import com.vaadin.data.util.sqlcontainer.query.generator.StatementHelper; public class SimpleStringTranslator implements FilterTranslator { + @Override public boolean translatesFilter(Filter filter) { return filter instanceof SimpleStringFilter; } + @Override public String getWhereStringForFilter(Filter filter, StatementHelper sh) { SimpleStringFilter ssf = (SimpleStringFilter) filter; // Create a Like filter based on the SimpleStringFilter and execute the diff --git a/src/com/vaadin/data/validator/AbstractValidator.java b/src/com/vaadin/data/validator/AbstractValidator.java index 27eaaca485..8febe5338a 100644 --- a/src/com/vaadin/data/validator/AbstractValidator.java +++ b/src/com/vaadin/data/validator/AbstractValidator.java @@ -84,6 +84,7 @@ public abstract class AbstractValidator<T> implements Validator { */ protected abstract boolean isValidValue(T value); + @Override public void validate(Object value) throws InvalidValueException { // isValidType ensures that value can safely be cast to TYPE if (!isValidType(value) || !isValidValue((T) value)) { diff --git a/src/com/vaadin/data/validator/BeanValidator.java b/src/com/vaadin/data/validator/BeanValidator.java index 817df85248..816ff79b83 100644 --- a/src/com/vaadin/data/validator/BeanValidator.java +++ b/src/com/vaadin/data/validator/BeanValidator.java @@ -67,10 +67,12 @@ public class BeanValidator implements Validator { this.descriptor = descriptor; } + @Override public ConstraintDescriptor<?> getConstraintDescriptor() { return descriptor; } + @Override public Object getValidatedValue() { return value; } @@ -96,6 +98,7 @@ public class BeanValidator implements Validator { * * @see com.vaadin.data.Validator#validate(java.lang.Object) */ + @Override public void validate(final Object value) throws InvalidValueException { Set<?> violations = getJavaxBeanValidator().validateValue(beanClass, propertyName, value); diff --git a/src/com/vaadin/data/validator/CompositeValidator.java b/src/com/vaadin/data/validator/CompositeValidator.java index 956d773032..cad31c9d4d 100644 --- a/src/com/vaadin/data/validator/CompositeValidator.java +++ b/src/com/vaadin/data/validator/CompositeValidator.java @@ -101,6 +101,7 @@ public class CompositeValidator implements Validator { * @throws Validator.InvalidValueException * if the value is not valid. */ + @Override public void validate(Object value) throws Validator.InvalidValueException { switch (mode) { case AND: diff --git a/src/com/vaadin/data/validator/NullValidator.java b/src/com/vaadin/data/validator/NullValidator.java index 62b2580d48..551d88c776 100644 --- a/src/com/vaadin/data/validator/NullValidator.java +++ b/src/com/vaadin/data/validator/NullValidator.java @@ -43,6 +43,7 @@ public class NullValidator implements Validator { * @throws Validator.InvalidValueException * if the value was invalid. */ + @Override public void validate(Object value) throws Validator.InvalidValueException { if ((onlyNullAllowed && value != null) || (!onlyNullAllowed && value == null)) { diff --git a/src/com/vaadin/event/ActionManager.java b/src/com/vaadin/event/ActionManager.java index 08e9c85043..64fdeea69b 100644 --- a/src/com/vaadin/event/ActionManager.java +++ b/src/com/vaadin/event/ActionManager.java @@ -75,6 +75,7 @@ public class ActionManager implements Action.Container, Action.Handler, requestRepaint(); // this goes to the new viewer } + @Override public <T extends Action & Action.Listener> void addAction(T action) { if (ownActions == null) { ownActions = new HashSet<Action>(); @@ -84,6 +85,7 @@ public class ActionManager implements Action.Container, Action.Handler, } } + @Override public <T extends Action & Action.Listener> void removeAction(T action) { if (ownActions != null) { if (ownActions.remove(action)) { @@ -92,6 +94,7 @@ public class ActionManager implements Action.Container, Action.Handler, } } + @Override public void addActionHandler(Handler actionHandler) { if (actionHandler == this) { // don't add the actionHandler to itself @@ -109,6 +112,7 @@ public class ActionManager implements Action.Container, Action.Handler, } } + @Override public void removeActionHandler(Action.Handler actionHandler) { if (actionHandlers != null && actionHandlers.contains(actionHandler)) { @@ -206,6 +210,7 @@ public class ActionManager implements Action.Container, Action.Handler, } } + @Override public Action[] getActions(Object target, Object sender) { HashSet<Action> actions = new HashSet<Action>(); if (ownActions != null) { @@ -226,6 +231,7 @@ public class ActionManager implements Action.Container, Action.Handler, return actions.toArray(new Action[actions.size()]); } + @Override public void handleAction(Action action, Object sender, Object target) { if (actionHandlers != null) { Handler[] array = actionHandlers.toArray(new Handler[actionHandlers diff --git a/src/com/vaadin/event/EventRouter.java b/src/com/vaadin/event/EventRouter.java index 49b29de9bb..90c080b860 100644 --- a/src/com/vaadin/event/EventRouter.java +++ b/src/com/vaadin/event/EventRouter.java @@ -35,6 +35,7 @@ public class EventRouter implements MethodEventSource { * events generated by this component. Don't add a JavaDoc comment here, we * use the default documentation from implemented interface. */ + @Override public void addListener(Class<?> eventType, Object object, Method method) { if (listenerList == null) { listenerList = new LinkedHashSet<ListenerMethod>(); @@ -47,6 +48,7 @@ public class EventRouter implements MethodEventSource { * listen events generated by this component. Don't add a JavaDoc comment * here, we use the default documentation from implemented interface. */ + @Override public void addListener(Class<?> eventType, Object object, String methodName) { if (listenerList == null) { listenerList = new LinkedHashSet<ListenerMethod>(); @@ -59,6 +61,7 @@ public class EventRouter implements MethodEventSource { * a JavaDoc comment here, we use the default documentation from implemented * interface. */ + @Override public void removeListener(Class<?> eventType, Object target) { if (listenerList != null) { final Iterator<ListenerMethod> i = listenerList.iterator(); @@ -77,6 +80,7 @@ public class EventRouter implements MethodEventSource { * Don't add a JavaDoc comment here, we use the default documentation from * implemented interface. */ + @Override public void removeListener(Class<?> eventType, Object target, Method method) { if (listenerList != null) { final Iterator<ListenerMethod> i = listenerList.iterator(); @@ -95,6 +99,7 @@ public class EventRouter implements MethodEventSource { * Don't add a JavaDoc comment here, we use the default documentation from * implemented interface. */ + @Override public void removeListener(Class<?> eventType, Object target, String methodName) { diff --git a/src/com/vaadin/event/FieldEvents.java b/src/com/vaadin/event/FieldEvents.java index 20e9fabb36..8f101c1913 100644 --- a/src/com/vaadin/event/FieldEvents.java +++ b/src/com/vaadin/event/FieldEvents.java @@ -7,8 +7,8 @@ package com.vaadin.event; import java.io.Serializable; import java.lang.reflect.Method; -import com.vaadin.terminal.gwt.client.EventId; -import com.vaadin.terminal.gwt.client.communication.FieldRpc.FocusAndBlurServerRpc; +import com.vaadin.shared.EventId; +import com.vaadin.shared.communication.FieldRpc.FocusAndBlurServerRpc; import com.vaadin.tools.ReflectTools; import com.vaadin.ui.Component; import com.vaadin.ui.Component.Event; @@ -261,10 +261,12 @@ public interface FieldEvents { protected abstract void fireEvent(Event event); + @Override public void blur() { fireEvent(new BlurEvent(component)); } + @Override public void focus() { fireEvent(new FocusEvent(component)); } diff --git a/src/com/vaadin/event/ItemClickEvent.java b/src/com/vaadin/event/ItemClickEvent.java index bb41398e8d..0aa0e106c5 100644 --- a/src/com/vaadin/event/ItemClickEvent.java +++ b/src/com/vaadin/event/ItemClickEvent.java @@ -9,7 +9,7 @@ import java.lang.reflect.Method; import com.vaadin.data.Item; import com.vaadin.data.Property; import com.vaadin.event.MouseEvents.ClickEvent; -import com.vaadin.terminal.gwt.client.MouseEventDetails; +import com.vaadin.shared.MouseEventDetails; import com.vaadin.ui.Component; /** diff --git a/src/com/vaadin/event/LayoutEvents.java b/src/com/vaadin/event/LayoutEvents.java index 960fff00c0..602440ea07 100644 --- a/src/com/vaadin/event/LayoutEvents.java +++ b/src/com/vaadin/event/LayoutEvents.java @@ -7,8 +7,8 @@ import java.io.Serializable; import java.lang.reflect.Method; import com.vaadin.event.MouseEvents.ClickEvent; -import com.vaadin.terminal.gwt.client.Connector; -import com.vaadin.terminal.gwt.client.MouseEventDetails; +import com.vaadin.shared.Connector; +import com.vaadin.shared.MouseEventDetails; import com.vaadin.tools.ReflectTools; import com.vaadin.ui.Component; import com.vaadin.ui.ComponentContainer; diff --git a/src/com/vaadin/event/MouseEvents.java b/src/com/vaadin/event/MouseEvents.java index 2327b78f64..fafd44be89 100644 --- a/src/com/vaadin/event/MouseEvents.java +++ b/src/com/vaadin/event/MouseEvents.java @@ -6,7 +6,7 @@ package com.vaadin.event; import java.lang.reflect.Method; -import com.vaadin.terminal.gwt.client.MouseEventDetails; +import com.vaadin.shared.MouseEventDetails; import com.vaadin.tools.ReflectTools; import com.vaadin.ui.Component; diff --git a/src/com/vaadin/event/ShortcutListener.java b/src/com/vaadin/event/ShortcutListener.java index 0656ed0e1f..b760cfabe6 100644 --- a/src/com/vaadin/event/ShortcutListener.java +++ b/src/com/vaadin/event/ShortcutListener.java @@ -28,5 +28,6 @@ public abstract class ShortcutListener extends ShortcutAction implements super(shorthandCaption); } + @Override abstract public void handleAction(Object sender, Object target); } diff --git a/src/com/vaadin/event/TransferableImpl.java b/src/com/vaadin/event/TransferableImpl.java index 621ea95bc1..4c973571f7 100644 --- a/src/com/vaadin/event/TransferableImpl.java +++ b/src/com/vaadin/event/TransferableImpl.java @@ -24,18 +24,22 @@ public class TransferableImpl implements Transferable { this.rawVariables = rawVariables; } + @Override public Component getSourceComponent() { return sourceComponent; } + @Override public Object getData(String dataFlavor) { return rawVariables.get(dataFlavor); } + @Override public void setData(String dataFlavor, Object value) { rawVariables.put(dataFlavor, value); } + @Override public Collection<String> getDataFlavors() { return rawVariables.keySet(); } diff --git a/src/com/vaadin/event/dd/TargetDetailsImpl.java b/src/com/vaadin/event/dd/TargetDetailsImpl.java index 27afc32680..4a459777ed 100644 --- a/src/com/vaadin/event/dd/TargetDetailsImpl.java +++ b/src/com/vaadin/event/dd/TargetDetailsImpl.java @@ -29,6 +29,7 @@ public class TargetDetailsImpl implements TargetDetails { this.dropTarget = dropTarget; } + @Override public Object getData(String key) { return data.get(key); } @@ -37,6 +38,7 @@ public class TargetDetailsImpl implements TargetDetails { return data.put(key, value); } + @Override public DropTarget getTarget() { return dropTarget; } diff --git a/src/com/vaadin/event/dd/acceptcriteria/AcceptAll.java b/src/com/vaadin/event/dd/acceptcriteria/AcceptAll.java index 52ffab9263..1457ea9df3 100644 --- a/src/com/vaadin/event/dd/acceptcriteria/AcceptAll.java +++ b/src/com/vaadin/event/dd/acceptcriteria/AcceptAll.java @@ -29,6 +29,7 @@ public final class AcceptAll extends ClientSideCriterion { return singleton; } + @Override public boolean accept(DragAndDropEvent dragEvent) { return true; } diff --git a/src/com/vaadin/event/dd/acceptcriteria/And.java b/src/com/vaadin/event/dd/acceptcriteria/And.java index a0340a9cdb..4122d67160 100644 --- a/src/com/vaadin/event/dd/acceptcriteria/And.java +++ b/src/com/vaadin/event/dd/acceptcriteria/And.java @@ -41,6 +41,7 @@ public class And extends ClientSideCriterion { } } + @Override public boolean accept(DragAndDropEvent dragEvent) { for (ClientSideCriterion crit : criteria) { if (!crit.accept(dragEvent)) { diff --git a/src/com/vaadin/event/dd/acceptcriteria/ClientSideCriterion.java b/src/com/vaadin/event/dd/acceptcriteria/ClientSideCriterion.java index 0f4ae2990c..7d2c42ecb0 100644 --- a/src/com/vaadin/event/dd/acceptcriteria/ClientSideCriterion.java +++ b/src/com/vaadin/event/dd/acceptcriteria/ClientSideCriterion.java @@ -33,10 +33,12 @@ public abstract class ClientSideCriterion implements Serializable, * com.vaadin.event.dd.acceptCriteria.AcceptCriterion#isClientSideVerifiable * () */ + @Override public final boolean isClientSideVerifiable() { return true; } + @Override public void paint(PaintTarget target) throws PaintException { target.startTag("-ac"); target.addAttribute("name", getIdentifier()); @@ -51,6 +53,7 @@ public abstract class ClientSideCriterion implements Serializable, return getClass().getCanonicalName(); } + @Override public final void paintResponse(PaintTarget target) throws PaintException { // NOP, nothing to do as this is client side verified criterion } diff --git a/src/com/vaadin/event/dd/acceptcriteria/ContainsDataFlavor.java b/src/com/vaadin/event/dd/acceptcriteria/ContainsDataFlavor.java index 7eb04d9647..4c52698a4a 100644 --- a/src/com/vaadin/event/dd/acceptcriteria/ContainsDataFlavor.java +++ b/src/com/vaadin/event/dd/acceptcriteria/ContainsDataFlavor.java @@ -39,6 +39,7 @@ public class ContainsDataFlavor extends ClientSideCriterion { target.addAttribute("p", dataFlavorId); } + @Override public boolean accept(DragAndDropEvent dragEvent) { return dragEvent.getTransferable().getDataFlavors() .contains(dataFlavorId); diff --git a/src/com/vaadin/event/dd/acceptcriteria/Not.java b/src/com/vaadin/event/dd/acceptcriteria/Not.java index 85ff7e9bc9..1ed40a324d 100644 --- a/src/com/vaadin/event/dd/acceptcriteria/Not.java +++ b/src/com/vaadin/event/dd/acceptcriteria/Not.java @@ -31,6 +31,7 @@ public class Not extends ClientSideCriterion { acceptCriterion.paint(target); } + @Override public boolean accept(DragAndDropEvent dragEvent) { return !acceptCriterion.accept(dragEvent); } diff --git a/src/com/vaadin/event/dd/acceptcriteria/Or.java b/src/com/vaadin/event/dd/acceptcriteria/Or.java index 077e9114d8..6ad45c54af 100644 --- a/src/com/vaadin/event/dd/acceptcriteria/Or.java +++ b/src/com/vaadin/event/dd/acceptcriteria/Or.java @@ -39,6 +39,7 @@ public class Or extends ClientSideCriterion { } } + @Override public boolean accept(DragAndDropEvent dragEvent) { for (AcceptCriterion crit : criteria) { if (crit.accept(dragEvent)) { diff --git a/src/com/vaadin/event/dd/acceptcriteria/ServerSideCriterion.java b/src/com/vaadin/event/dd/acceptcriteria/ServerSideCriterion.java index 77840bc94f..47f06d434c 100644 --- a/src/com/vaadin/event/dd/acceptcriteria/ServerSideCriterion.java +++ b/src/com/vaadin/event/dd/acceptcriteria/ServerSideCriterion.java @@ -31,10 +31,12 @@ public abstract class ServerSideCriterion implements Serializable, private static final long serialVersionUID = 2128510128911628902L; + @Override public final boolean isClientSideVerifiable() { return false; } + @Override public void paint(PaintTarget target) throws PaintException { target.startTag("-ac"); target.addAttribute("name", getIdentifier()); @@ -45,6 +47,7 @@ public abstract class ServerSideCriterion implements Serializable, public void paintContent(PaintTarget target) { } + @Override public void paintResponse(PaintTarget target) throws PaintException { } diff --git a/src/com/vaadin/event/dd/acceptcriteria/SourceIs.java b/src/com/vaadin/event/dd/acceptcriteria/SourceIs.java index d7c47dc915..d4fd20c952 100644 --- a/src/com/vaadin/event/dd/acceptcriteria/SourceIs.java +++ b/src/com/vaadin/event/dd/acceptcriteria/SourceIs.java @@ -49,6 +49,7 @@ public class SourceIs extends ClientSideCriterion { target.addAttribute("c", paintedComponents); } + @Override public boolean accept(DragAndDropEvent dragEvent) { if (dragEvent.getTransferable() instanceof TransferableImpl) { Component sourceComponent = ((TransferableImpl) dragEvent diff --git a/src/com/vaadin/event/dd/acceptcriteria/SourceIsTarget.java b/src/com/vaadin/event/dd/acceptcriteria/SourceIsTarget.java index 454159b3da..a644b858e2 100644 --- a/src/com/vaadin/event/dd/acceptcriteria/SourceIsTarget.java +++ b/src/com/vaadin/event/dd/acceptcriteria/SourceIsTarget.java @@ -33,6 +33,7 @@ public class SourceIsTarget extends ClientSideCriterion { private SourceIsTarget() { } + @Override public boolean accept(DragAndDropEvent dragEvent) { if (dragEvent.getTransferable() instanceof TransferableImpl) { Component sourceComponent = ((TransferableImpl) dragEvent diff --git a/src/com/vaadin/event/dd/acceptcriteria/TargetDetailIs.java b/src/com/vaadin/event/dd/acceptcriteria/TargetDetailIs.java index 641fddc3ea..5df8f3f618 100644 --- a/src/com/vaadin/event/dd/acceptcriteria/TargetDetailIs.java +++ b/src/com/vaadin/event/dd/acceptcriteria/TargetDetailIs.java @@ -58,6 +58,7 @@ public class TargetDetailIs extends ClientSideCriterion { } } + @Override public boolean accept(DragAndDropEvent dragEvent) { Object data = dragEvent.getTargetDetails().getData(propertyName); return value.equals(data); diff --git a/src/com/vaadin/external/json/JSONException.java b/src/com/vaadin/external/json/JSONException.java index fecc38974e..895ffcb457 100644 --- a/src/com/vaadin/external/json/JSONException.java +++ b/src/com/vaadin/external/json/JSONException.java @@ -25,6 +25,7 @@ public class JSONException extends Exception { this.cause = cause; } + @Override public Throwable getCause() { return this.cause; } diff --git a/src/com/vaadin/external/json/JSONStringer.java b/src/com/vaadin/external/json/JSONStringer.java index e4ccc8e195..ae905cb15f 100644 --- a/src/com/vaadin/external/json/JSONStringer.java +++ b/src/com/vaadin/external/json/JSONStringer.java @@ -77,6 +77,7 @@ public class JSONStringer extends JSONWriter { * * @return The JSON text. */ + @Override public String toString() { return this.mode == 'd' ? this.writer.toString() : null; } diff --git a/src/com/vaadin/navigator/Navigator.java b/src/com/vaadin/navigator/Navigator.java index 3ff727b504..1813301fe6 100644 --- a/src/com/vaadin/navigator/Navigator.java +++ b/src/com/vaadin/navigator/Navigator.java @@ -14,6 +14,7 @@ import com.vaadin.terminal.Page; import com.vaadin.terminal.Page.FragmentChangedEvent; import com.vaadin.terminal.Page.FragmentChangedListener; import com.vaadin.ui.Component; +import com.vaadin.ui.ComponentContainer; import com.vaadin.ui.CssLayout; import com.vaadin.ui.CustomComponent; @@ -53,6 +54,7 @@ public class Navigator implements Serializable { setHeight("0px"); } + @Override public void navigateTo(String fragmentParameters) { // nothing to do } @@ -87,14 +89,17 @@ public class Navigator implements Serializable { page.addListener(this); } + @Override public String getFragment() { return page.getFragment(); } + @Override public void setFragment(String fragment) { page.setFragment(fragment, false); } + @Override public void fragmentChanged(FragmentChangedEvent event) { UriFragmentManager.this.navigator.navigateTo(getFragment()); } @@ -121,6 +126,7 @@ public class Navigator implements Serializable { setSizeFull(); } + @Override public void showView(View view) { if (view instanceof Component) { setCompositionRoot((Component) view); @@ -132,6 +138,41 @@ public class Navigator implements Serializable { } /** + * View display that replaces the contents of a {@link ComponentContainer} + * with the active {@link View}. + * + * All components of the container are removed before adding the new view to + * it. + * + * This display only supports views that are {@link Component}s themselves. + * Attempting to display a view that is not a component causes an exception + * to be thrown. + */ + public static class ComponentContainerViewDisplay implements ViewDisplay { + + private final ComponentContainer container; + + /** + * Create new {@link ViewDisplay} that updates a + * {@link ComponentContainer} to show the view. + */ + public ComponentContainerViewDisplay(ComponentContainer container) { + this.container = container; + } + + @Override + public void showView(View view) { + if (view instanceof Component) { + container.removeAllComponents(); + container.addComponent((Component) view); + } else { + throw new IllegalArgumentException("View is not a component: " + + view); + } + } + } + + /** * View provider which supports mapping a single view name to a single * pre-initialized view instance. * @@ -155,6 +196,7 @@ public class Navigator implements Serializable { this.view = view; } + @Override public String getViewName(String viewAndParameters) { if (null == viewAndParameters) { return null; @@ -165,6 +207,7 @@ public class Navigator implements Serializable { return null; } + @Override public View getView(String viewName) { if (this.viewName.equals(viewName)) { return view; @@ -215,6 +258,7 @@ public class Navigator implements Serializable { this.viewClass = viewClass; } + @Override public String getViewName(String viewAndParameters) { if (null == viewAndParameters) { return null; @@ -226,6 +270,7 @@ public class Navigator implements Serializable { return null; } + @Override public View getView(String viewName) { if (this.viewName.equals(viewName)) { try { @@ -268,31 +313,56 @@ public class Navigator implements Serializable { private List<ViewProvider> providers = new LinkedList<ViewProvider>(); /** - * Create a navigator that is tracking the active view using URI fragments. - * - * @param page - * whose URI fragments are used - * @param display - * where to display the views + * Create a navigator that is tracking the active view using URI fragments + * of the current {@link Page} and replacing the contents of a + * {@link ComponentContainer} with the active view. + * + * In case the container is not on the current page, use another + * {@link Navigator#Navigator(Page, ViewDisplay)} with an explicitly created + * {@link ComponentContainerViewDisplay}. + * + * All components of the container are removed each time before adding the + * active {@link View}. Views must implement {@link Component} when using + * this constructor. + * + * <p> + * After all {@link View}s and {@link ViewProvider}s have been registered, + * the application should trigger navigation to the current fragment using + * e.g. + * + * <pre> + * navigator.navigateTo(Page.getCurrent().getFragment()); + * </pre> + * + * @param container + * ComponentContainer whose contents should be replaced with the + * active view on view change */ - public Navigator(Page page, ViewDisplay display) { - this.display = display; - fragmentManager = new UriFragmentManager(page, this); - navigateTo(page.getFragment()); + public Navigator(ComponentContainer container) { + display = new ComponentContainerViewDisplay(container); + fragmentManager = new UriFragmentManager(Page.getCurrent(), this); } /** * Create a navigator that is tracking the active view using URI fragments. - * By default, a {@link SimpleViewDisplay} is used and can be obtained using - * {@link #getDisplay()}. + * + * <p> + * After all {@link View}s and {@link ViewProvider}s have been registered, + * the application should trigger navigation to the current fragment using + * e.g. + * + * <pre> + * navigator.navigateTo(Page.getCurrent().getFragment()); + * </pre> * * @param page * whose URI fragments are used + * @param display + * where to display the views */ - public Navigator(Page page) { - display = new SimpleViewDisplay(); + public Navigator(Page page, ViewDisplay display) { + this.display = display; fragmentManager = new UriFragmentManager(page, this); - navigateTo(page.getFragment()); } /** diff --git a/src/com/vaadin/terminal/gwt/client/AbstractFieldState.java b/src/com/vaadin/shared/AbstractFieldState.java index 3a66a01f23..33fc0ff92c 100644 --- a/src/com/vaadin/terminal/gwt/client/AbstractFieldState.java +++ b/src/com/vaadin/shared/AbstractFieldState.java @@ -1,9 +1,9 @@ /* @VaadinApache2LicenseForJavaFiles@ */ -package com.vaadin.terminal.gwt.client; +package com.vaadin.shared; -import com.vaadin.terminal.gwt.client.ui.TabIndexState; +import com.vaadin.shared.ui.TabIndexState; import com.vaadin.ui.AbstractField; /** @@ -121,6 +121,7 @@ public class AbstractFieldState extends ComponentState implements TabIndexState * * @see com.vaadin.terminal.gwt.client.ComponentState#getTabIndex() */ + @Override public int getTabIndex() { return tabIndex; } @@ -130,6 +131,7 @@ public class AbstractFieldState extends ComponentState implements TabIndexState * * @see com.vaadin.terminal.gwt.client.ui.TabIndexState#setTabIndex(int) */ + @Override public void setTabIndex(int tabIndex) { this.tabIndex = tabIndex; } diff --git a/src/com/vaadin/terminal/gwt/client/ComponentState.java b/src/com/vaadin/shared/ComponentState.java index a603368f44..c4269de676 100644 --- a/src/com/vaadin/terminal/gwt/client/ComponentState.java +++ b/src/com/vaadin/shared/ComponentState.java @@ -2,14 +2,14 @@ @VaadinApache2LicenseForJavaFiles@ */ -package com.vaadin.terminal.gwt.client; +package com.vaadin.shared; import java.util.HashSet; import java.util.List; import java.util.Set; -import com.vaadin.terminal.gwt.client.communication.SharedState; -import com.vaadin.terminal.gwt.client.communication.URLReference; +import com.vaadin.shared.communication.SharedState; +import com.vaadin.shared.communication.URLReference; import com.vaadin.ui.Component; /** diff --git a/src/com/vaadin/terminal/gwt/client/Connector.java b/src/com/vaadin/shared/Connector.java index 9b2fcf61f1..e09d4d51b7 100644 --- a/src/com/vaadin/terminal/gwt/client/Connector.java +++ b/src/com/vaadin/shared/Connector.java @@ -1,11 +1,12 @@ /* @VaadinApache2LicenseForJavaFiles@ */ -package com.vaadin.terminal.gwt.client; +package com.vaadin.shared; import java.io.Serializable; -import com.vaadin.terminal.gwt.client.communication.SharedState; +import com.vaadin.shared.communication.SharedState; +import com.vaadin.terminal.gwt.client.ServerConnector; import com.vaadin.terminal.gwt.server.ClientConnector; /** diff --git a/src/com/vaadin/terminal/gwt/client/EventId.java b/src/com/vaadin/shared/EventId.java index d3ef2e4e7e..616d37dcd0 100644 --- a/src/com/vaadin/terminal/gwt/client/EventId.java +++ b/src/com/vaadin/shared/EventId.java @@ -1,7 +1,7 @@ /* @VaadinApache2LicenseForJavaFiles@ */ -package com.vaadin.terminal.gwt.client; +package com.vaadin.shared; public interface EventId { public static final String BLUR = "blur"; diff --git a/src/com/vaadin/shared/JavaScriptConnectorState.java b/src/com/vaadin/shared/JavaScriptConnectorState.java new file mode 100644 index 0000000000..8371623e68 --- /dev/null +++ b/src/com/vaadin/shared/JavaScriptConnectorState.java @@ -0,0 +1,14 @@ +/* +@VaadinApache2LicenseForJavaFiles@ + */ + +package com.vaadin.shared; + +import java.util.Map; +import java.util.Set; + +public interface JavaScriptConnectorState { + public Set<String> getCallbackNames(); + + public Map<String, Set<String>> getRpcInterfaces(); +}
\ No newline at end of file diff --git a/src/com/vaadin/terminal/gwt/client/JavaScriptExtensionState.java b/src/com/vaadin/shared/JavaScriptExtensionState.java index e7bfbc4bb2..35a7213239 100644 --- a/src/com/vaadin/terminal/gwt/client/JavaScriptExtensionState.java +++ b/src/com/vaadin/shared/JavaScriptExtensionState.java @@ -2,15 +2,14 @@ @VaadinApache2LicenseForJavaFiles@ */ -package com.vaadin.terminal.gwt.client; +package com.vaadin.shared; import java.util.HashMap; import java.util.HashSet; import java.util.Map; import java.util.Set; -import com.vaadin.terminal.gwt.client.JavaScriptConnectorHelper.JavaScriptConnectorState; -import com.vaadin.terminal.gwt.client.communication.SharedState; +import com.vaadin.shared.communication.SharedState; public class JavaScriptExtensionState extends SharedState implements JavaScriptConnectorState { @@ -18,6 +17,7 @@ public class JavaScriptExtensionState extends SharedState implements private Set<String> callbackNames = new HashSet<String>(); private Map<String, Set<String>> rpcInterfaces = new HashMap<String, Set<String>>(); + @Override public Set<String> getCallbackNames() { return callbackNames; } @@ -26,6 +26,7 @@ public class JavaScriptExtensionState extends SharedState implements this.callbackNames = callbackNames; } + @Override public Map<String, Set<String>> getRpcInterfaces() { return rpcInterfaces; } diff --git a/src/com/vaadin/terminal/gwt/client/MouseEventDetails.java b/src/com/vaadin/shared/MouseEventDetails.java index f5ff707eed..bc7ede4c60 100644 --- a/src/com/vaadin/terminal/gwt/client/MouseEventDetails.java +++ b/src/com/vaadin/shared/MouseEventDetails.java @@ -1,7 +1,7 @@ /* @VaadinApache2LicenseForJavaFiles@ */ -package com.vaadin.terminal.gwt.client; +package com.vaadin.shared; import java.io.Serializable; diff --git a/src/com/vaadin/terminal/gwt/client/VBrowserDetails.java b/src/com/vaadin/shared/VBrowserDetails.java index 6e0417149c..0cd9fe6436 100644 --- a/src/com/vaadin/terminal/gwt/client/VBrowserDetails.java +++ b/src/com/vaadin/shared/VBrowserDetails.java @@ -1,10 +1,11 @@ /* @VaadinApache2LicenseForJavaFiles@ */ -package com.vaadin.terminal.gwt.client; +package com.vaadin.shared; import java.io.Serializable; +import com.vaadin.terminal.gwt.client.BrowserInfo; import com.vaadin.terminal.gwt.server.WebBrowser; /** diff --git a/src/com/vaadin/terminal/gwt/client/communication/ClientRpc.java b/src/com/vaadin/shared/communication/ClientRpc.java index 45dbe69454..d49bc05260 100644 --- a/src/com/vaadin/terminal/gwt/client/communication/ClientRpc.java +++ b/src/com/vaadin/shared/communication/ClientRpc.java @@ -2,7 +2,7 @@ @VaadinApache2LicenseForJavaFiles@ */ -package com.vaadin.terminal.gwt.client.communication; +package com.vaadin.shared.communication; import java.io.Serializable; diff --git a/src/com/vaadin/terminal/gwt/client/communication/FieldRpc.java b/src/com/vaadin/shared/communication/FieldRpc.java index de464f1fb9..33e6f01028 100644 --- a/src/com/vaadin/terminal/gwt/client/communication/FieldRpc.java +++ b/src/com/vaadin/shared/communication/FieldRpc.java @@ -1,7 +1,7 @@ /* @VaadinApache2LicenseForJavaFiles@ */ -package com.vaadin.terminal.gwt.client.communication; +package com.vaadin.shared.communication; public class FieldRpc { public interface FocusServerRpc extends ServerRpc { diff --git a/src/com/vaadin/terminal/gwt/client/communication/MethodInvocation.java b/src/com/vaadin/shared/communication/MethodInvocation.java index e61775a640..589c7b5d9b 100644 --- a/src/com/vaadin/terminal/gwt/client/communication/MethodInvocation.java +++ b/src/com/vaadin/shared/communication/MethodInvocation.java @@ -2,7 +2,7 @@ @VaadinApache2LicenseForJavaFiles@ */ -package com.vaadin.terminal.gwt.client.communication; +package com.vaadin.shared.communication; import java.io.Serializable; import java.util.Arrays; diff --git a/src/com/vaadin/terminal/gwt/client/communication/ServerRpc.java b/src/com/vaadin/shared/communication/ServerRpc.java index 664c4a391c..5ee42a4bef 100644 --- a/src/com/vaadin/terminal/gwt/client/communication/ServerRpc.java +++ b/src/com/vaadin/shared/communication/ServerRpc.java @@ -2,7 +2,7 @@ @VaadinApache2LicenseForJavaFiles@ */ -package com.vaadin.terminal.gwt.client.communication; +package com.vaadin.shared.communication; import java.io.Serializable; diff --git a/src/com/vaadin/terminal/gwt/client/communication/SharedState.java b/src/com/vaadin/shared/communication/SharedState.java index b087907f9e..2882b1ed07 100644 --- a/src/com/vaadin/terminal/gwt/client/communication/SharedState.java +++ b/src/com/vaadin/shared/communication/SharedState.java @@ -2,11 +2,11 @@ @VaadinApache2LicenseForJavaFiles@ */ -package com.vaadin.terminal.gwt.client.communication; +package com.vaadin.shared.communication; import java.io.Serializable; -import com.vaadin.terminal.gwt.client.Connector; +import com.vaadin.shared.Connector; import com.vaadin.terminal.gwt.client.ServerConnector; import com.vaadin.terminal.gwt.client.ui.AbstractComponentConnector; diff --git a/src/com/vaadin/terminal/gwt/client/communication/URLReference.java b/src/com/vaadin/shared/communication/URLReference.java index 569c4eff47..a4868cdb57 100644 --- a/src/com/vaadin/terminal/gwt/client/communication/URLReference.java +++ b/src/com/vaadin/shared/communication/URLReference.java @@ -1,7 +1,7 @@ /* @VaadinApache2LicenseForJavaFiles@ */ -package com.vaadin.terminal.gwt.client.communication; +package com.vaadin.shared.communication; import java.io.Serializable; diff --git a/src/com/vaadin/terminal/gwt/client/communication/UidlValue.java b/src/com/vaadin/shared/communication/UidlValue.java index 2a21074037..0314488ef3 100644 --- a/src/com/vaadin/terminal/gwt/client/communication/UidlValue.java +++ b/src/com/vaadin/shared/communication/UidlValue.java @@ -2,7 +2,7 @@ @VaadinApache2LicenseForJavaFiles@ */ -package com.vaadin.terminal.gwt.client.communication; +package com.vaadin.shared.communication; import java.io.Serializable; diff --git a/src/com/vaadin/terminal/gwt/client/extensions/javascriptmanager/ExecuteJavaScriptRpc.java b/src/com/vaadin/shared/extension/javascriptmanager/ExecuteJavaScriptRpc.java index f1185586d5..097913c37f 100644 --- a/src/com/vaadin/terminal/gwt/client/extensions/javascriptmanager/ExecuteJavaScriptRpc.java +++ b/src/com/vaadin/shared/extension/javascriptmanager/ExecuteJavaScriptRpc.java @@ -2,9 +2,9 @@ @VaadinApache2LicenseForJavaFiles@ */ -package com.vaadin.terminal.gwt.client.extensions.javascriptmanager; +package com.vaadin.shared.extension.javascriptmanager; -import com.vaadin.terminal.gwt.client.communication.ClientRpc; +import com.vaadin.shared.communication.ClientRpc; public interface ExecuteJavaScriptRpc extends ClientRpc { public void executeJavaScript(String script); diff --git a/src/com/vaadin/terminal/gwt/client/extensions/javascriptmanager/JavaScriptManagerState.java b/src/com/vaadin/shared/extension/javascriptmanager/JavaScriptManagerState.java index fc246aff04..85647d0abd 100644 --- a/src/com/vaadin/terminal/gwt/client/extensions/javascriptmanager/JavaScriptManagerState.java +++ b/src/com/vaadin/shared/extension/javascriptmanager/JavaScriptManagerState.java @@ -2,12 +2,12 @@ @VaadinApache2LicenseForJavaFiles@ */ -package com.vaadin.terminal.gwt.client.extensions.javascriptmanager; +package com.vaadin.shared.extension.javascriptmanager; import java.util.HashSet; import java.util.Set; -import com.vaadin.terminal.gwt.client.communication.SharedState; +import com.vaadin.shared.communication.SharedState; public class JavaScriptManagerState extends SharedState { private Set<String> names = new HashSet<String>(); diff --git a/src/com/vaadin/terminal/gwt/client/ui/AbstractLayoutState.java b/src/com/vaadin/shared/ui/AbstractLayoutState.java index fee5ea746a..9eaa11a9c6 100644 --- a/src/com/vaadin/terminal/gwt/client/ui/AbstractLayoutState.java +++ b/src/com/vaadin/shared/ui/AbstractLayoutState.java @@ -1,9 +1,9 @@ /* @VaadinApache2LicenseForJavaFiles@ */ -package com.vaadin.terminal.gwt.client.ui; +package com.vaadin.shared.ui; -import com.vaadin.terminal.gwt.client.ComponentState; +import com.vaadin.shared.ComponentState; public class AbstractLayoutState extends ComponentState { private int marginsBitmask; diff --git a/src/com/vaadin/terminal/gwt/client/ui/AbstractMediaState.java b/src/com/vaadin/shared/ui/AbstractMediaState.java index 0ab3851671..8cee16575d 100644 --- a/src/com/vaadin/terminal/gwt/client/ui/AbstractMediaState.java +++ b/src/com/vaadin/shared/ui/AbstractMediaState.java @@ -1,13 +1,13 @@ /* @VaadinApache2LicenseForJavaFiles@ */ -package com.vaadin.terminal.gwt.client.ui; +package com.vaadin.shared.ui; import java.util.ArrayList; import java.util.List; -import com.vaadin.terminal.gwt.client.ComponentState; -import com.vaadin.terminal.gwt.client.communication.URLReference; +import com.vaadin.shared.ComponentState; +import com.vaadin.shared.communication.URLReference; public class AbstractMediaState extends ComponentState { private boolean showControls; diff --git a/src/com/vaadin/terminal/gwt/client/ui/AlignmentInfo.java b/src/com/vaadin/shared/ui/AlignmentInfo.java index 041ab6c1ad..ff800de646 100644 --- a/src/com/vaadin/terminal/gwt/client/ui/AlignmentInfo.java +++ b/src/com/vaadin/shared/ui/AlignmentInfo.java @@ -2,7 +2,7 @@ @VaadinApache2LicenseForJavaFiles@ */ -package com.vaadin.terminal.gwt.client.ui; +package com.vaadin.shared.ui; public final class AlignmentInfo { /** Bitmask values for client server communication */ diff --git a/src/com/vaadin/terminal/gwt/client/ui/ClickRpc.java b/src/com/vaadin/shared/ui/ClickRpc.java index 37d6443f55..61bde1a5e9 100644 --- a/src/com/vaadin/terminal/gwt/client/ui/ClickRpc.java +++ b/src/com/vaadin/shared/ui/ClickRpc.java @@ -1,10 +1,10 @@ /* @VaadinApache2LicenseForJavaFiles@ */ -package com.vaadin.terminal.gwt.client.ui; +package com.vaadin.shared.ui; -import com.vaadin.terminal.gwt.client.MouseEventDetails; -import com.vaadin.terminal.gwt.client.communication.ServerRpc; +import com.vaadin.shared.MouseEventDetails; +import com.vaadin.shared.communication.ServerRpc; public interface ClickRpc extends ServerRpc { /** diff --git a/src/com/vaadin/terminal/gwt/client/ui/Connect.java b/src/com/vaadin/shared/ui/Connect.java index 0581bdb99c..aa60096eb9 100644 --- a/src/com/vaadin/terminal/gwt/client/ui/Connect.java +++ b/src/com/vaadin/shared/ui/Connect.java @@ -1,14 +1,14 @@ /* @VaadinApache2LicenseForJavaFiles@ */ -package com.vaadin.terminal.gwt.client.ui; +package com.vaadin.shared.ui; import java.lang.annotation.ElementType; import java.lang.annotation.Retention; import java.lang.annotation.RetentionPolicy; import java.lang.annotation.Target; -import com.vaadin.terminal.gwt.client.Connector; +import com.vaadin.shared.Connector; import com.vaadin.terminal.gwt.server.ClientConnector; import com.vaadin.terminal.gwt.widgetsetutils.CustomWidgetMapGenerator; import com.vaadin.terminal.gwt.widgetsetutils.EagerWidgetMapGenerator; diff --git a/src/com/vaadin/terminal/gwt/client/ui/JavaScriptComponentState.java b/src/com/vaadin/shared/ui/JavaScriptComponentState.java index 6728f85ec9..d20b4701c2 100644 --- a/src/com/vaadin/terminal/gwt/client/ui/JavaScriptComponentState.java +++ b/src/com/vaadin/shared/ui/JavaScriptComponentState.java @@ -2,15 +2,15 @@ @VaadinApache2LicenseForJavaFiles@ */ -package com.vaadin.terminal.gwt.client.ui; +package com.vaadin.shared.ui; import java.util.HashMap; import java.util.HashSet; import java.util.Map; import java.util.Set; -import com.vaadin.terminal.gwt.client.ComponentState; -import com.vaadin.terminal.gwt.client.JavaScriptConnectorHelper.JavaScriptConnectorState; +import com.vaadin.shared.ComponentState; +import com.vaadin.shared.JavaScriptConnectorState; public class JavaScriptComponentState extends ComponentState implements JavaScriptConnectorState { @@ -18,6 +18,7 @@ public class JavaScriptComponentState extends ComponentState implements private Set<String> callbackNames = new HashSet<String>(); private Map<String, Set<String>> rpcInterfaces = new HashMap<String, Set<String>>(); + @Override public Set<String> getCallbackNames() { return callbackNames; } @@ -26,6 +27,7 @@ public class JavaScriptComponentState extends ComponentState implements this.callbackNames = callbackNames; } + @Override public Map<String, Set<String>> getRpcInterfaces() { return rpcInterfaces; } diff --git a/src/com/vaadin/terminal/gwt/client/ui/LayoutClickRpc.java b/src/com/vaadin/shared/ui/LayoutClickRpc.java index 5b76f398a9..48e62083b1 100644 --- a/src/com/vaadin/terminal/gwt/client/ui/LayoutClickRpc.java +++ b/src/com/vaadin/shared/ui/LayoutClickRpc.java @@ -1,11 +1,11 @@ /* @VaadinApache2LicenseForJavaFiles@ */ -package com.vaadin.terminal.gwt.client.ui; +package com.vaadin.shared.ui; -import com.vaadin.terminal.gwt.client.Connector; -import com.vaadin.terminal.gwt.client.MouseEventDetails; -import com.vaadin.terminal.gwt.client.communication.ServerRpc; +import com.vaadin.shared.Connector; +import com.vaadin.shared.MouseEventDetails; +import com.vaadin.shared.communication.ServerRpc; public interface LayoutClickRpc extends ServerRpc { /** diff --git a/src/com/vaadin/shared/ui/MediaControl.java b/src/com/vaadin/shared/ui/MediaControl.java new file mode 100644 index 0000000000..0a608a1685 --- /dev/null +++ b/src/com/vaadin/shared/ui/MediaControl.java @@ -0,0 +1,24 @@ +/* +@VaadinApache2LicenseForJavaFiles@ + */ + +package com.vaadin.shared.ui; + +import com.vaadin.shared.communication.ClientRpc; + +/** + * Server to client RPC interface for controlling playback of the media. + * + * @since 7.0 + */ +public interface MediaControl extends ClientRpc { + /** + * Start playing the media. + */ + public void play(); + + /** + * Pause playback of the media. + */ + public void pause(); +}
\ No newline at end of file diff --git a/src/com/vaadin/terminal/gwt/client/ui/TabIndexState.java b/src/com/vaadin/shared/ui/TabIndexState.java index 7ffb328add..774c9b33a0 100644 --- a/src/com/vaadin/terminal/gwt/client/ui/TabIndexState.java +++ b/src/com/vaadin/shared/ui/TabIndexState.java @@ -1,7 +1,7 @@ /* @VaadinApache2LicenseForJavaFiles@ */ -package com.vaadin.terminal.gwt.client.ui; +package com.vaadin.shared.ui; /** * Interface implemented by state classes that support tab indexes. diff --git a/src/com/vaadin/terminal/gwt/client/ui/VMarginInfo.java b/src/com/vaadin/shared/ui/VMarginInfo.java index 7ba1f4708c..b17a03626f 100644 --- a/src/com/vaadin/terminal/gwt/client/ui/VMarginInfo.java +++ b/src/com/vaadin/shared/ui/VMarginInfo.java @@ -2,7 +2,7 @@ @VaadinApache2LicenseForJavaFiles@ */ -package com.vaadin.terminal.gwt.client.ui; +package com.vaadin.shared.ui; import java.io.Serializable; diff --git a/src/com/vaadin/shared/ui/absolutelayout/AbsoluteLayoutServerRpc.java b/src/com/vaadin/shared/ui/absolutelayout/AbsoluteLayoutServerRpc.java new file mode 100644 index 0000000000..7d1f75f833 --- /dev/null +++ b/src/com/vaadin/shared/ui/absolutelayout/AbsoluteLayoutServerRpc.java @@ -0,0 +1,11 @@ +/* +@VaadinApache2LicenseForJavaFiles@ + */ +package com.vaadin.shared.ui.absolutelayout; + +import com.vaadin.shared.communication.ServerRpc; +import com.vaadin.shared.ui.LayoutClickRpc; + +public interface AbsoluteLayoutServerRpc extends LayoutClickRpc, ServerRpc { + +}
\ No newline at end of file diff --git a/src/com/vaadin/terminal/gwt/client/ui/absolutelayout/AbsoluteLayoutState.java b/src/com/vaadin/shared/ui/absolutelayout/AbsoluteLayoutState.java index 4e1a43dd8b..f57b2c0d67 100644 --- a/src/com/vaadin/terminal/gwt/client/ui/absolutelayout/AbsoluteLayoutState.java +++ b/src/com/vaadin/shared/ui/absolutelayout/AbsoluteLayoutState.java @@ -1,13 +1,13 @@ /* @VaadinApache2LicenseForJavaFiles@ */ -package com.vaadin.terminal.gwt.client.ui.absolutelayout; +package com.vaadin.shared.ui.absolutelayout; import java.util.HashMap; import java.util.Map; -import com.vaadin.terminal.gwt.client.Connector; -import com.vaadin.terminal.gwt.client.ui.AbstractLayoutState; +import com.vaadin.shared.Connector; +import com.vaadin.shared.ui.AbstractLayoutState; public class AbsoluteLayoutState extends AbstractLayoutState { // Maps each component to a position diff --git a/src/com/vaadin/terminal/gwt/client/ui/button/ButtonServerRpc.java b/src/com/vaadin/shared/ui/button/ButtonServerRpc.java index 4a379c9262..0e55b07aea 100644 --- a/src/com/vaadin/terminal/gwt/client/ui/button/ButtonServerRpc.java +++ b/src/com/vaadin/shared/ui/button/ButtonServerRpc.java @@ -1,10 +1,10 @@ /* @VaadinApache2LicenseForJavaFiles@ */ -package com.vaadin.terminal.gwt.client.ui.button; +package com.vaadin.shared.ui.button; -import com.vaadin.terminal.gwt.client.MouseEventDetails; -import com.vaadin.terminal.gwt.client.communication.ServerRpc; +import com.vaadin.shared.MouseEventDetails; +import com.vaadin.shared.communication.ServerRpc; /** * RPC interface for calls from client to server. diff --git a/src/com/vaadin/terminal/gwt/client/ui/button/ButtonState.java b/src/com/vaadin/shared/ui/button/ButtonState.java index 2daceea0e8..c423e18d46 100644 --- a/src/com/vaadin/terminal/gwt/client/ui/button/ButtonState.java +++ b/src/com/vaadin/shared/ui/button/ButtonState.java @@ -2,10 +2,10 @@ @VaadinApache2LicenseForJavaFiles@ */ -package com.vaadin.terminal.gwt.client.ui.button; +package com.vaadin.shared.ui.button; -import com.vaadin.terminal.gwt.client.ComponentState; -import com.vaadin.terminal.gwt.client.ui.TabIndexState; +import com.vaadin.shared.ComponentState; +import com.vaadin.shared.ui.TabIndexState; import com.vaadin.ui.Button; /** @@ -102,6 +102,7 @@ public class ButtonState extends ComponentState implements TabIndexState { * * @see com.vaadin.terminal.gwt.client.ui.TabIndexState#getTabIndex() */ + @Override public int getTabIndex() { return tabIndex; } @@ -111,6 +112,7 @@ public class ButtonState extends ComponentState implements TabIndexState { * * @see com.vaadin.terminal.gwt.client.ui.TabIndexState#setTabIndex(int) */ + @Override public void setTabIndex(int tabIndex) { this.tabIndex = tabIndex; } diff --git a/src/com/vaadin/terminal/gwt/client/ui/checkbox/CheckBoxServerRpc.java b/src/com/vaadin/shared/ui/checkbox/CheckBoxServerRpc.java index 05091ff6ed..fafd9bf2ff 100644 --- a/src/com/vaadin/terminal/gwt/client/ui/checkbox/CheckBoxServerRpc.java +++ b/src/com/vaadin/shared/ui/checkbox/CheckBoxServerRpc.java @@ -1,10 +1,10 @@ /* @VaadinApache2LicenseForJavaFiles@ */ -package com.vaadin.terminal.gwt.client.ui.checkbox; +package com.vaadin.shared.ui.checkbox; -import com.vaadin.terminal.gwt.client.MouseEventDetails; -import com.vaadin.terminal.gwt.client.communication.ServerRpc; +import com.vaadin.shared.MouseEventDetails; +import com.vaadin.shared.communication.ServerRpc; public interface CheckBoxServerRpc extends ServerRpc { public void setChecked(boolean checked, MouseEventDetails mouseEventDetails); diff --git a/src/com/vaadin/terminal/gwt/client/ui/checkbox/CheckBoxState.java b/src/com/vaadin/shared/ui/checkbox/CheckBoxState.java index d6d51cad36..d43959327c 100644 --- a/src/com/vaadin/terminal/gwt/client/ui/checkbox/CheckBoxState.java +++ b/src/com/vaadin/shared/ui/checkbox/CheckBoxState.java @@ -1,9 +1,9 @@ /* @VaadinApache2LicenseForJavaFiles@ */ -package com.vaadin.terminal.gwt.client.ui.checkbox; +package com.vaadin.shared.ui.checkbox; -import com.vaadin.terminal.gwt.client.AbstractFieldState; +import com.vaadin.shared.AbstractFieldState; public class CheckBoxState extends AbstractFieldState { private boolean checked = false; diff --git a/src/com/vaadin/shared/ui/csslayout/CssLayoutServerRpc.java b/src/com/vaadin/shared/ui/csslayout/CssLayoutServerRpc.java new file mode 100644 index 0000000000..0672aa32ce --- /dev/null +++ b/src/com/vaadin/shared/ui/csslayout/CssLayoutServerRpc.java @@ -0,0 +1,11 @@ +/* +@VaadinApache2LicenseForJavaFiles@ + */ +package com.vaadin.shared.ui.csslayout; + +import com.vaadin.shared.communication.ServerRpc; +import com.vaadin.shared.ui.LayoutClickRpc; + +public interface CssLayoutServerRpc extends LayoutClickRpc, ServerRpc { + +}
\ No newline at end of file diff --git a/src/com/vaadin/terminal/gwt/client/ui/csslayout/CssLayoutState.java b/src/com/vaadin/shared/ui/csslayout/CssLayoutState.java index 07a8c1804a..03b4a947f5 100644 --- a/src/com/vaadin/terminal/gwt/client/ui/csslayout/CssLayoutState.java +++ b/src/com/vaadin/shared/ui/csslayout/CssLayoutState.java @@ -1,13 +1,13 @@ /* @VaadinApache2LicenseForJavaFiles@ */ -package com.vaadin.terminal.gwt.client.ui.csslayout; +package com.vaadin.shared.ui.csslayout; import java.util.HashMap; import java.util.Map; -import com.vaadin.terminal.gwt.client.Connector; -import com.vaadin.terminal.gwt.client.ui.AbstractLayoutState; +import com.vaadin.shared.Connector; +import com.vaadin.shared.ui.AbstractLayoutState; public class CssLayoutState extends AbstractLayoutState { private Map<Connector, String> childCss = new HashMap<Connector, String>(); diff --git a/src/com/vaadin/terminal/gwt/client/ui/customlayout/CustomLayoutState.java b/src/com/vaadin/shared/ui/customlayout/CustomLayoutState.java index 6b374a8099..4399e0ece1 100644 --- a/src/com/vaadin/terminal/gwt/client/ui/customlayout/CustomLayoutState.java +++ b/src/com/vaadin/shared/ui/customlayout/CustomLayoutState.java @@ -1,13 +1,13 @@ /* @VaadinApache2LicenseForJavaFiles@ */ -package com.vaadin.terminal.gwt.client.ui.customlayout; +package com.vaadin.shared.ui.customlayout; import java.util.HashMap; import java.util.Map; -import com.vaadin.terminal.gwt.client.Connector; -import com.vaadin.terminal.gwt.client.ui.AbstractLayoutState; +import com.vaadin.shared.Connector; +import com.vaadin.shared.ui.AbstractLayoutState; public class CustomLayoutState extends AbstractLayoutState { Map<Connector, String> childLocations = new HashMap<Connector, String>(); diff --git a/src/com/vaadin/terminal/gwt/client/ui/dd/AcceptCriterion.java b/src/com/vaadin/shared/ui/dd/AcceptCriterion.java index 8a026e4d2e..19c2e5f273 100644 --- a/src/com/vaadin/terminal/gwt/client/ui/dd/AcceptCriterion.java +++ b/src/com/vaadin/shared/ui/dd/AcceptCriterion.java @@ -2,13 +2,15 @@ @VaadinApache2LicenseForJavaFiles@ */ -package com.vaadin.terminal.gwt.client.ui.dd; +package com.vaadin.shared.ui.dd; import java.lang.annotation.ElementType; import java.lang.annotation.Retention; import java.lang.annotation.RetentionPolicy; import java.lang.annotation.Target; +import com.vaadin.terminal.gwt.client.ui.dd.VAcceptCriterion; + /** * An annotation type used to point the server side counterpart for client side * a {@link VAcceptCriterion} class. diff --git a/src/com/vaadin/shared/ui/dd/DragEventType.java b/src/com/vaadin/shared/ui/dd/DragEventType.java new file mode 100644 index 0000000000..e03b347ada --- /dev/null +++ b/src/com/vaadin/shared/ui/dd/DragEventType.java @@ -0,0 +1,9 @@ +/* +@VaadinApache2LicenseForJavaFiles@ + */ + +package com.vaadin.shared.ui.dd; + +public enum DragEventType { + ENTER, LEAVE, OVER, DROP +}
\ No newline at end of file diff --git a/src/com/vaadin/terminal/gwt/client/ui/dd/HorizontalDropLocation.java b/src/com/vaadin/shared/ui/dd/HorizontalDropLocation.java index 5e90acd6f1..065b880953 100644 --- a/src/com/vaadin/terminal/gwt/client/ui/dd/HorizontalDropLocation.java +++ b/src/com/vaadin/shared/ui/dd/HorizontalDropLocation.java @@ -1,7 +1,7 @@ /* @VaadinApache2LicenseForJavaFiles@ */ -package com.vaadin.terminal.gwt.client.ui.dd; +package com.vaadin.shared.ui.dd; public enum HorizontalDropLocation { LEFT, RIGHT, CENTER diff --git a/src/com/vaadin/terminal/gwt/client/ui/dd/VerticalDropLocation.java b/src/com/vaadin/shared/ui/dd/VerticalDropLocation.java index de392a0e98..2658921124 100644 --- a/src/com/vaadin/terminal/gwt/client/ui/dd/VerticalDropLocation.java +++ b/src/com/vaadin/shared/ui/dd/VerticalDropLocation.java @@ -1,7 +1,7 @@ /* @VaadinApache2LicenseForJavaFiles@ */ -package com.vaadin.terminal.gwt.client.ui.dd; +package com.vaadin.shared.ui.dd; public enum VerticalDropLocation { TOP, BOTTOM, MIDDLE diff --git a/src/com/vaadin/shared/ui/embedded/EmbeddedServerRpc.java b/src/com/vaadin/shared/ui/embedded/EmbeddedServerRpc.java new file mode 100644 index 0000000000..27af1623b0 --- /dev/null +++ b/src/com/vaadin/shared/ui/embedded/EmbeddedServerRpc.java @@ -0,0 +1,10 @@ +/* +@VaadinApache2LicenseForJavaFiles@ + */ +package com.vaadin.shared.ui.embedded; + +import com.vaadin.shared.communication.ServerRpc; +import com.vaadin.shared.ui.ClickRpc; + +public interface EmbeddedServerRpc extends ClickRpc, ServerRpc { +}
\ No newline at end of file diff --git a/src/com/vaadin/terminal/gwt/client/ui/form/FormState.java b/src/com/vaadin/shared/ui/form/FormState.java index c1acc0971d..a3035491bf 100644 --- a/src/com/vaadin/terminal/gwt/client/ui/form/FormState.java +++ b/src/com/vaadin/shared/ui/form/FormState.java @@ -1,10 +1,10 @@ /* @VaadinApache2LicenseForJavaFiles@ */ -package com.vaadin.terminal.gwt.client.ui.form; +package com.vaadin.shared.ui.form; -import com.vaadin.terminal.gwt.client.AbstractFieldState; -import com.vaadin.terminal.gwt.client.Connector; +import com.vaadin.shared.AbstractFieldState; +import com.vaadin.shared.Connector; public class FormState extends AbstractFieldState { private Connector layout; diff --git a/src/com/vaadin/shared/ui/gridlayout/GridLayoutServerRpc.java b/src/com/vaadin/shared/ui/gridlayout/GridLayoutServerRpc.java new file mode 100644 index 0000000000..110b9c33f9 --- /dev/null +++ b/src/com/vaadin/shared/ui/gridlayout/GridLayoutServerRpc.java @@ -0,0 +1,11 @@ +/* +@VaadinApache2LicenseForJavaFiles@ + */ +package com.vaadin.shared.ui.gridlayout; + +import com.vaadin.shared.communication.ServerRpc; +import com.vaadin.shared.ui.LayoutClickRpc; + +public interface GridLayoutServerRpc extends LayoutClickRpc, ServerRpc { + +}
\ No newline at end of file diff --git a/src/com/vaadin/terminal/gwt/client/ui/gridlayout/GridLayoutState.java b/src/com/vaadin/shared/ui/gridlayout/GridLayoutState.java index 109dc7dea6..9179a61d27 100644 --- a/src/com/vaadin/terminal/gwt/client/ui/gridlayout/GridLayoutState.java +++ b/src/com/vaadin/shared/ui/gridlayout/GridLayoutState.java @@ -1,9 +1,9 @@ /* @VaadinApache2LicenseForJavaFiles@ */ -package com.vaadin.terminal.gwt.client.ui.gridlayout; +package com.vaadin.shared.ui.gridlayout; -import com.vaadin.terminal.gwt.client.ui.AbstractLayoutState; +import com.vaadin.shared.ui.AbstractLayoutState; public class GridLayoutState extends AbstractLayoutState { private boolean spacing = false; diff --git a/src/com/vaadin/shared/ui/label/ContentMode.java b/src/com/vaadin/shared/ui/label/ContentMode.java new file mode 100644 index 0000000000..a58f2cdebb --- /dev/null +++ b/src/com/vaadin/shared/ui/label/ContentMode.java @@ -0,0 +1,46 @@ +/* +@VaadinApache2LicenseForJavaFiles@ + */ +package com.vaadin.shared.ui.label; + +/** + * Content modes defining how the client should interpret a Label's value. + * + * @since 7.0.0 + */ +public enum ContentMode { + /** + * Content mode, where the label contains only plain text. + */ + TEXT, + + /** + * Content mode, where the label contains pre formatted text. In this mode + * newlines are preserved when rendered on the screen. + */ + PREFORMATTED, + + /** + * Content mode, where the label contains XHTML. Care should be taken to + * ensure + */ + XHTML, + + /** + * Content mode, where the label contains well-formed or well-balanced XML. + * This is handled in the same way as {@link #XHTML}. + * + * @deprecated Use {@link #XHTML} instead + */ + @Deprecated + XML, + + /** + * Legacy content mode, where the label contains RAW output. This is handled + * in exactly the same way as {@link #XHTML}. + * + * @deprecated Use {@link #XHTML} instead + */ + @Deprecated + RAW; +} diff --git a/src/com/vaadin/terminal/gwt/client/ui/label/LabelState.java b/src/com/vaadin/shared/ui/label/LabelState.java index 25bbca3c3d..0298e40179 100644 --- a/src/com/vaadin/terminal/gwt/client/ui/label/LabelState.java +++ b/src/com/vaadin/shared/ui/label/LabelState.java @@ -1,9 +1,9 @@ /* @VaadinApache2LicenseForJavaFiles@ */ -package com.vaadin.terminal.gwt.client.ui.label; +package com.vaadin.shared.ui.label; -import com.vaadin.terminal.gwt.client.ComponentState; +import com.vaadin.shared.ComponentState; public class LabelState extends ComponentState { private ContentMode contentMode = ContentMode.TEXT; diff --git a/src/com/vaadin/shared/ui/orderedlayout/AbstractOrderedLayoutServerRpc.java b/src/com/vaadin/shared/ui/orderedlayout/AbstractOrderedLayoutServerRpc.java new file mode 100644 index 0000000000..3de8ec0220 --- /dev/null +++ b/src/com/vaadin/shared/ui/orderedlayout/AbstractOrderedLayoutServerRpc.java @@ -0,0 +1,12 @@ +/* +@VaadinApache2LicenseForJavaFiles@ + */ +package com.vaadin.shared.ui.orderedlayout; + +import com.vaadin.shared.communication.ServerRpc; +import com.vaadin.shared.ui.LayoutClickRpc; + +public interface AbstractOrderedLayoutServerRpc extends LayoutClickRpc, + ServerRpc { + +}
\ No newline at end of file diff --git a/src/com/vaadin/terminal/gwt/client/ui/orderedlayout/AbstractOrderedLayoutState.java b/src/com/vaadin/shared/ui/orderedlayout/AbstractOrderedLayoutState.java index 1d57358490..c18a128912 100644 --- a/src/com/vaadin/terminal/gwt/client/ui/orderedlayout/AbstractOrderedLayoutState.java +++ b/src/com/vaadin/shared/ui/orderedlayout/AbstractOrderedLayoutState.java @@ -1,14 +1,14 @@ /* @VaadinApache2LicenseForJavaFiles@ */ -package com.vaadin.terminal.gwt.client.ui.orderedlayout; +package com.vaadin.shared.ui.orderedlayout; import java.io.Serializable; import java.util.HashMap; -import com.vaadin.terminal.gwt.client.Connector; -import com.vaadin.terminal.gwt.client.ui.AbstractLayoutState; -import com.vaadin.terminal.gwt.client.ui.AlignmentInfo; +import com.vaadin.shared.Connector; +import com.vaadin.shared.ui.AbstractLayoutState; +import com.vaadin.shared.ui.AlignmentInfo; public class AbstractOrderedLayoutState extends AbstractLayoutState { private boolean spacing = false; diff --git a/src/com/vaadin/shared/ui/panel/PanelServerRpc.java b/src/com/vaadin/shared/ui/panel/PanelServerRpc.java new file mode 100644 index 0000000000..6ed4652070 --- /dev/null +++ b/src/com/vaadin/shared/ui/panel/PanelServerRpc.java @@ -0,0 +1,11 @@ +/* +@VaadinApache2LicenseForJavaFiles@ + */ +package com.vaadin.shared.ui.panel; + +import com.vaadin.shared.communication.ServerRpc; +import com.vaadin.shared.ui.ClickRpc; + +public interface PanelServerRpc extends ClickRpc, ServerRpc { + +}
\ No newline at end of file diff --git a/src/com/vaadin/terminal/gwt/client/ui/panel/PanelState.java b/src/com/vaadin/shared/ui/panel/PanelState.java index fc7921825f..ed31ed1ea3 100644 --- a/src/com/vaadin/terminal/gwt/client/ui/panel/PanelState.java +++ b/src/com/vaadin/shared/ui/panel/PanelState.java @@ -1,9 +1,9 @@ /* @VaadinApache2LicenseForJavaFiles@ */ -package com.vaadin.terminal.gwt.client.ui.panel; +package com.vaadin.shared.ui.panel; -import com.vaadin.terminal.gwt.client.ComponentState; +import com.vaadin.shared.ComponentState; public class PanelState extends ComponentState { private int tabIndex; diff --git a/src/com/vaadin/terminal/gwt/client/ui/root/PageClientRpc.java b/src/com/vaadin/shared/ui/root/PageClientRpc.java index a02ecc8ded..c7d587938d 100644 --- a/src/com/vaadin/terminal/gwt/client/ui/root/PageClientRpc.java +++ b/src/com/vaadin/shared/ui/root/PageClientRpc.java @@ -2,9 +2,9 @@ @VaadinApache2LicenseForJavaFiles@ */ -package com.vaadin.terminal.gwt.client.ui.root; +package com.vaadin.shared.ui.root; -import com.vaadin.terminal.gwt.client.communication.ClientRpc; +import com.vaadin.shared.communication.ClientRpc; public interface PageClientRpc extends ClientRpc { diff --git a/src/com/vaadin/shared/ui/root/RootServerRpc.java b/src/com/vaadin/shared/ui/root/RootServerRpc.java new file mode 100644 index 0000000000..2e670553b8 --- /dev/null +++ b/src/com/vaadin/shared/ui/root/RootServerRpc.java @@ -0,0 +1,11 @@ +/* +@VaadinApache2LicenseForJavaFiles@ + */ +package com.vaadin.shared.ui.root; + +import com.vaadin.shared.communication.ServerRpc; +import com.vaadin.shared.ui.ClickRpc; + +public interface RootServerRpc extends ClickRpc, ServerRpc { + +}
\ No newline at end of file diff --git a/src/com/vaadin/terminal/gwt/client/ui/root/RootState.java b/src/com/vaadin/shared/ui/root/RootState.java index 85d5e45022..26844cba32 100644 --- a/src/com/vaadin/terminal/gwt/client/ui/root/RootState.java +++ b/src/com/vaadin/shared/ui/root/RootState.java @@ -1,10 +1,10 @@ /* @VaadinApache2LicenseForJavaFiles@ */ -package com.vaadin.terminal.gwt.client.ui.root; +package com.vaadin.shared.ui.root; -import com.vaadin.terminal.gwt.client.ComponentState; -import com.vaadin.terminal.gwt.client.Connector; +import com.vaadin.shared.ComponentState; +import com.vaadin.shared.Connector; public class RootState extends ComponentState { private Connector content; diff --git a/src/com/vaadin/terminal/gwt/client/ui/splitpanel/AbstractSplitPanelRpc.java b/src/com/vaadin/shared/ui/splitpanel/AbstractSplitPanelRpc.java index cc043838ff..e2ebcb0de3 100644 --- a/src/com/vaadin/terminal/gwt/client/ui/splitpanel/AbstractSplitPanelRpc.java +++ b/src/com/vaadin/shared/ui/splitpanel/AbstractSplitPanelRpc.java @@ -1,10 +1,10 @@ /* @VaadinApache2LicenseForJavaFiles@ */ -package com.vaadin.terminal.gwt.client.ui.splitpanel; +package com.vaadin.shared.ui.splitpanel; -import com.vaadin.terminal.gwt.client.MouseEventDetails; -import com.vaadin.terminal.gwt.client.communication.ServerRpc; +import com.vaadin.shared.MouseEventDetails; +import com.vaadin.shared.communication.ServerRpc; public interface AbstractSplitPanelRpc extends ServerRpc { diff --git a/src/com/vaadin/terminal/gwt/client/ui/splitpanel/AbstractSplitPanelState.java b/src/com/vaadin/shared/ui/splitpanel/AbstractSplitPanelState.java index db3a39d3a5..d94d5d8608 100644 --- a/src/com/vaadin/terminal/gwt/client/ui/splitpanel/AbstractSplitPanelState.java +++ b/src/com/vaadin/shared/ui/splitpanel/AbstractSplitPanelState.java @@ -1,12 +1,12 @@ /* @VaadinApache2LicenseForJavaFiles@ */ -package com.vaadin.terminal.gwt.client.ui.splitpanel; +package com.vaadin.shared.ui.splitpanel; import java.io.Serializable; -import com.vaadin.terminal.gwt.client.ComponentState; -import com.vaadin.terminal.gwt.client.Connector; +import com.vaadin.shared.ComponentState; +import com.vaadin.shared.Connector; public class AbstractSplitPanelState extends ComponentState { diff --git a/src/com/vaadin/terminal/gwt/client/ui/textarea/TextAreaState.java b/src/com/vaadin/shared/ui/textarea/TextAreaState.java index 71bdd230b7..3b3bd42f87 100644 --- a/src/com/vaadin/terminal/gwt/client/ui/textarea/TextAreaState.java +++ b/src/com/vaadin/shared/ui/textarea/TextAreaState.java @@ -1,9 +1,9 @@ /* @VaadinApache2LicenseForJavaFiles@ */ -package com.vaadin.terminal.gwt.client.ui.textarea; +package com.vaadin.shared.ui.textarea; -import com.vaadin.terminal.gwt.client.ui.textfield.AbstractTextFieldState; +import com.vaadin.shared.ui.textfield.AbstractTextFieldState; public class TextAreaState extends AbstractTextFieldState { diff --git a/src/com/vaadin/terminal/gwt/client/ui/textfield/AbstractTextFieldState.java b/src/com/vaadin/shared/ui/textfield/AbstractTextFieldState.java index d11b049f56..d980eccae2 100644 --- a/src/com/vaadin/terminal/gwt/client/ui/textfield/AbstractTextFieldState.java +++ b/src/com/vaadin/shared/ui/textfield/AbstractTextFieldState.java @@ -1,9 +1,9 @@ /* @VaadinApache2LicenseForJavaFiles@ */ -package com.vaadin.terminal.gwt.client.ui.textfield; +package com.vaadin.shared.ui.textfield; -import com.vaadin.terminal.gwt.client.AbstractFieldState; +import com.vaadin.shared.AbstractFieldState; public class AbstractTextFieldState extends AbstractFieldState { /** diff --git a/src/com/vaadin/terminal/gwt/client/ui/video/VideoState.java b/src/com/vaadin/shared/ui/video/VideoState.java index f59d9ccac1..1dc8d07b7c 100644 --- a/src/com/vaadin/terminal/gwt/client/ui/video/VideoState.java +++ b/src/com/vaadin/shared/ui/video/VideoState.java @@ -1,10 +1,10 @@ /* @VaadinApache2LicenseForJavaFiles@ */ -package com.vaadin.terminal.gwt.client.ui.video; +package com.vaadin.shared.ui.video; -import com.vaadin.terminal.gwt.client.communication.URLReference; -import com.vaadin.terminal.gwt.client.ui.AbstractMediaState; +import com.vaadin.shared.communication.URLReference; +import com.vaadin.shared.ui.AbstractMediaState; public class VideoState extends AbstractMediaState { private URLReference poster; diff --git a/src/com/vaadin/shared/ui/window/WindowServerRpc.java b/src/com/vaadin/shared/ui/window/WindowServerRpc.java new file mode 100644 index 0000000000..11abfae4be --- /dev/null +++ b/src/com/vaadin/shared/ui/window/WindowServerRpc.java @@ -0,0 +1,10 @@ +/* +@VaadinApache2LicenseForJavaFiles@ + */ +package com.vaadin.shared.ui.window; + +import com.vaadin.shared.communication.ServerRpc; +import com.vaadin.shared.ui.ClickRpc; + +public interface WindowServerRpc extends ClickRpc, ServerRpc { +}
\ No newline at end of file diff --git a/src/com/vaadin/terminal/gwt/client/ui/window/WindowState.java b/src/com/vaadin/shared/ui/window/WindowState.java index b057d76b16..428bd75167 100644 --- a/src/com/vaadin/terminal/gwt/client/ui/window/WindowState.java +++ b/src/com/vaadin/shared/ui/window/WindowState.java @@ -1,9 +1,9 @@ /* @VaadinApache2LicenseForJavaFiles@ */ -package com.vaadin.terminal.gwt.client.ui.window; +package com.vaadin.shared.ui.window; -import com.vaadin.terminal.gwt.client.ui.panel.PanelState; +import com.vaadin.shared.ui.panel.PanelState; public class WindowState extends PanelState { private boolean modal = false; diff --git a/src/com/vaadin/terminal/AbstractClientConnector.java b/src/com/vaadin/terminal/AbstractClientConnector.java index 9de444d70e..9c68361382 100644 --- a/src/com/vaadin/terminal/AbstractClientConnector.java +++ b/src/com/vaadin/terminal/AbstractClientConnector.java @@ -19,9 +19,9 @@ import java.util.NoSuchElementException; import java.util.logging.Logger; import com.vaadin.Application; -import com.vaadin.terminal.gwt.client.communication.ClientRpc; -import com.vaadin.terminal.gwt.client.communication.ServerRpc; -import com.vaadin.terminal.gwt.client.communication.SharedState; +import com.vaadin.shared.communication.ClientRpc; +import com.vaadin.shared.communication.ServerRpc; +import com.vaadin.shared.communication.SharedState; import com.vaadin.terminal.gwt.server.ClientConnector; import com.vaadin.terminal.gwt.server.ClientMethodInvocation; import com.vaadin.terminal.gwt.server.RpcManager; @@ -69,6 +69,7 @@ public abstract class AbstractClientConnector implements ClientConnector { private ClientConnector parent; /* Documentation copied from interface */ + @Override public void requestRepaint() { Root root = getRoot(); if (root != null) { @@ -125,6 +126,7 @@ public abstract class AbstractClientConnector implements ClientConnector { registerRpc(implementation, type); } + @Override public SharedState getState() { if (null == sharedState) { sharedState = createState(); @@ -164,6 +166,7 @@ public abstract class AbstractClientConnector implements ClientConnector { * * @see com.vaadin.terminal.gwt.server.ClientConnector#getStateType() */ + @Override public Class<? extends SharedState> getStateType() { try { Method m = getClass().getMethod("getState", (Class[]) null); @@ -214,6 +217,7 @@ public abstract class AbstractClientConnector implements ClientConnector { this.connector = connector; } + @Override public Iterator<ClientConnector> iterator() { CombinedIterator<ClientConnector> iterator = new CombinedIterator<ClientConnector>(); iterator.addIterator(connector.getExtensions().iterator()); @@ -236,6 +240,7 @@ public abstract class AbstractClientConnector implements ClientConnector { rpcInterfaceName = rpcInterface.getName().replaceAll("\\$", "."); } + @Override public Object invoke(Object proxy, Method method, Object[] args) throws Throwable { addMethodInvocationToQueue(rpcInterfaceName, method, args); @@ -274,10 +279,12 @@ public abstract class AbstractClientConnector implements ClientConnector { * * @since 7.0 */ + @Override public RpcManager getRpcManager(Class<?> rpcInterface) { return rpcManagerMap.get(rpcInterface); } + @Override public List<ClientMethodInvocation> retrievePendingRpcCalls() { if (pendingInvocations.isEmpty()) { return Collections.emptyList(); @@ -288,6 +295,7 @@ public abstract class AbstractClientConnector implements ClientConnector { } } + @Override public String getConnectorId() { if (connectorId == null) { if (getApplication() == null) { @@ -322,7 +330,8 @@ public abstract class AbstractClientConnector implements ClientConnector { * @return the Root ancestor of this connector, or <code>null</code> if none * is found. */ - protected Root getRoot() { + @Override + public Root getRoot() { ClientConnector connector = this; while (connector != null) { if (connector instanceof Root) { @@ -337,6 +346,7 @@ public abstract class AbstractClientConnector implements ClientConnector { return Logger.getLogger(AbstractClientConnector.class.getName()); } + @Override public void requestRepaintAll() { requestRepaint(); @@ -354,6 +364,7 @@ public abstract class AbstractClientConnector implements ClientConnector { iterators.add(iterator); } + @Override public boolean hasNext() { for (Iterator<? extends T> i : iterators) { if (i.hasNext()) { @@ -363,6 +374,7 @@ public abstract class AbstractClientConnector implements ClientConnector { return false; } + @Override public T next() { for (Iterator<? extends T> i : iterators) { if (i.hasNext()) { @@ -372,6 +384,7 @@ public abstract class AbstractClientConnector implements ClientConnector { throw new NoSuchElementException(); } + @Override public void remove() { throw new UnsupportedOperationException(); } @@ -390,6 +403,7 @@ public abstract class AbstractClientConnector implements ClientConnector { return new AllChildrenIterable(connector); } + @Override public Collection<Extension> getExtensions() { return Collections.unmodifiableCollection(extensions); } @@ -416,12 +430,14 @@ public abstract class AbstractClientConnector implements ClientConnector { requestRepaint(); } + @Override public void removeExtension(Extension extension) { extension.setParent(null); extensions.remove(extension); requestRepaint(); } + @Override public void setParent(ClientConnector parent) { // If the parent is not changed, don't do anything @@ -448,10 +464,12 @@ public abstract class AbstractClientConnector implements ClientConnector { } } + @Override public ClientConnector getParent() { return parent; } + @Override public void attach() { requestRepaint(); @@ -471,6 +489,7 @@ public abstract class AbstractClientConnector implements ClientConnector { * <code>null</code> after this method is called. * </p> */ + @Override public void detach() { for (ClientConnector connector : getAllChildrenIterable(this)) { connector.detach(); @@ -479,6 +498,7 @@ public abstract class AbstractClientConnector implements ClientConnector { getRoot().getConnectorTracker().unregisterConnector(this); } + @Override public boolean isConnectorEnabled() { if (getParent() == null) { // No parent -> the component cannot receive updates from the client diff --git a/src/com/vaadin/terminal/AbstractErrorMessage.java b/src/com/vaadin/terminal/AbstractErrorMessage.java index 3f526f7339..f7cd0e6aad 100644 --- a/src/com/vaadin/terminal/AbstractErrorMessage.java +++ b/src/com/vaadin/terminal/AbstractErrorMessage.java @@ -68,6 +68,7 @@ public abstract class AbstractErrorMessage implements ErrorMessage { } /* Documented in interface */ + @Override public ErrorLevel getErrorLevel() { return level; } @@ -92,6 +93,7 @@ public abstract class AbstractErrorMessage implements ErrorMessage { causes.add(cause); } + @Override public String getFormattedHtmlMessage() { String result = null; switch (getMode()) { diff --git a/src/com/vaadin/terminal/AbstractJavaScriptExtension.java b/src/com/vaadin/terminal/AbstractJavaScriptExtension.java index bdcd948c74..df44c3edd5 100644 --- a/src/com/vaadin/terminal/AbstractJavaScriptExtension.java +++ b/src/com/vaadin/terminal/AbstractJavaScriptExtension.java @@ -4,7 +4,8 @@ package com.vaadin.terminal; -import com.vaadin.terminal.gwt.client.JavaScriptExtensionState; +import com.vaadin.shared.JavaScriptExtensionState; +import com.vaadin.terminal.gwt.client.ApplicationConnection; import com.vaadin.ui.JavaScriptCallback; /** @@ -34,9 +35,9 @@ import com.vaadin.ui.JavaScriptCallback; * the connector's parent. If <code>connectorId</code> is provided, the id of * the parent of the corresponding connector with the passed id is returned * instead.</li> - * <li><code>getWidgetElement([connectorId])</code> - returns the DOM Element - * that is the root of a connector's widget. <code>null</code> is returned if - * the connector can not be found or if the connector doesn't have a widget. If + * <li><code>getElement([connectorId])</code> - returns the DOM Element that is + * the root of a connector's widget. <code>null</code> is returned if the + * connector can not be found or if the connector doesn't have a widget. If * <code>connectorId</code> is not provided, the connector id of the current * connector will be used.</li> * <li><code>getState()</code> - returns an object corresponding to the shared @@ -63,6 +64,9 @@ import com.vaadin.ui.JavaScriptCallback; * exception when called. The scheme for conversion between Java types in the * RPC interface and the JavaScript values that should be passed to the * functions is described bellow.</li> + * <li><code>translateVaadinUri(uri)</code> - Translates a Vaadin URI to a URL + * that can be used in the browser. This is just way of accessing + * {@link ApplicationConnection#translateVaadinUri(String)}</li> * </ul> * The connector wrapper also supports these special functions: * <ul> @@ -139,8 +143,9 @@ public abstract class AbstractJavaScriptExtension extends AbstractExtension { /** * Invoke a named function that the connector JavaScript has added to the * JavaScript connector wrapper object. The arguments should only contain - * data types that can be represented in JavaScript, including primitive - * boxing types, arrays, String, List, Set, Map, Connector and JavaBeans. + * data types that can be represented in JavaScript including primitives, + * their boxed types, arrays, String, List, Set, Map, Connector and + * JavaBeans. * * @param name * the name of the function diff --git a/src/com/vaadin/terminal/ClassResource.java b/src/com/vaadin/terminal/ClassResource.java index e7419576f1..b74c8e7bb7 100644 --- a/src/com/vaadin/terminal/ClassResource.java +++ b/src/com/vaadin/terminal/ClassResource.java @@ -89,6 +89,7 @@ public class ClassResource implements ApplicationResource, Serializable { * * @see com.vaadin.terminal.Resource#getMIMEType() */ + @Override public String getMIMEType() { return FileTypeResolver.getMIMEType(resourceName); } @@ -98,6 +99,7 @@ public class ClassResource implements ApplicationResource, Serializable { * * @see com.vaadin.terminal.ApplicationResource#getApplication() */ + @Override public Application getApplication() { return application; } @@ -108,6 +110,7 @@ public class ClassResource implements ApplicationResource, Serializable { * @return the file name associated to this resource. * @see com.vaadin.terminal.ApplicationResource#getFilename() */ + @Override public String getFilename() { int index = 0; int next = 0; @@ -123,6 +126,7 @@ public class ClassResource implements ApplicationResource, Serializable { * * @see com.vaadin.terminal.ApplicationResource#getStream() */ + @Override public DownloadStream getStream() { final DownloadStream ds = new DownloadStream( associatedClass.getResourceAsStream(resourceName), @@ -133,6 +137,7 @@ public class ClassResource implements ApplicationResource, Serializable { } /* documented in superclass */ + @Override public int getBufferSize() { return bufferSize; } @@ -148,6 +153,7 @@ public class ClassResource implements ApplicationResource, Serializable { } /* documented in superclass */ + @Override public long getCacheTime() { return cacheTime; } diff --git a/src/com/vaadin/terminal/CombinedRequest.java b/src/com/vaadin/terminal/CombinedRequest.java index abf5e0412a..5b92feb39a 100644 --- a/src/com/vaadin/terminal/CombinedRequest.java +++ b/src/com/vaadin/terminal/CombinedRequest.java @@ -63,6 +63,7 @@ public class CombinedRequest implements WrappedRequest { } + @Override public String getParameter(String parameter) { String[] strings = getParameterMap().get(parameter); if (strings == null || strings.length == 0) { @@ -72,48 +73,60 @@ public class CombinedRequest implements WrappedRequest { } } + @Override public Map<String, String[]> getParameterMap() { return parameterMap; } + @Override public int getContentLength() { return secondRequest.getContentLength(); } + @Override public InputStream getInputStream() throws IOException { return secondRequest.getInputStream(); } + @Override public Object getAttribute(String name) { return secondRequest.getAttribute(name); } + @Override public void setAttribute(String name, Object value) { secondRequest.setAttribute(name, value); } + @Override public String getRequestPathInfo() { return secondRequest.getParameter("initialPath"); } + @Override public int getSessionMaxInactiveInterval() { return secondRequest.getSessionMaxInactiveInterval(); } + @Override public Object getSessionAttribute(String name) { return secondRequest.getSessionAttribute(name); } + @Override public void setSessionAttribute(String name, Object attribute) { secondRequest.setSessionAttribute(name, attribute); } + @Override public String getContentType() { return secondRequest.getContentType(); } + @Override public BrowserDetails getBrowserDetails() { return new BrowserDetails() { + @Override public String getUriFragment() { String fragment = secondRequest.getParameter("fr"); if (fragment == null) { @@ -123,10 +136,12 @@ public class CombinedRequest implements WrappedRequest { } } + @Override public String getWindowName() { return secondRequest.getParameter("wn"); } + @Override public WebBrowser getWebBrowser() { WebApplicationContext context = (WebApplicationContext) Application .getCurrent().getContext(); @@ -145,22 +160,27 @@ public class CombinedRequest implements WrappedRequest { return secondRequest; } + @Override public Locale getLocale() { return secondRequest.getLocale(); } + @Override public String getRemoteAddr() { return secondRequest.getRemoteAddr(); } + @Override public boolean isSecure() { return secondRequest.isSecure(); } + @Override public String getHeader(String name) { return secondRequest.getHeader(name); } + @Override public DeploymentConfiguration getDeploymentConfiguration() { return secondRequest.getDeploymentConfiguration(); } diff --git a/src/com/vaadin/terminal/DeploymentConfiguration.java b/src/com/vaadin/terminal/DeploymentConfiguration.java index 02a3f0200f..ddb42349d8 100644 --- a/src/com/vaadin/terminal/DeploymentConfiguration.java +++ b/src/com/vaadin/terminal/DeploymentConfiguration.java @@ -5,6 +5,10 @@ package com.vaadin.terminal; import java.io.Serializable; +import java.util.Properties; + +import javax.portlet.PortletContext; +import javax.servlet.ServletContext; /** * Provide deployment specific settings that are required outside terminal @@ -83,4 +87,27 @@ public interface DeploymentConfiguration extends Serializable { * @return the class loader to use, or <code>null</code> */ public ClassLoader getClassLoader(); + + /** + * Returns the MIME type of the specified file, or null if the MIME type is + * not known. The MIME type is determined by the configuration of the + * container, and may be specified in a deployment descriptor. Common MIME + * types are "text/html" and "image/gif". + * + * @param resourceName + * a String specifying the name of a file + * @return a String specifying the file's MIME type + * + * @see ServletContext#getMimeType(String) + * @see PortletContext#getMimeType(String) + */ + public String getMimeType(String resourceName); + + /** + * Gets the properties configured for the deployment, e.g. as init + * parameters to the servlet or portlet. + * + * @return properties for the application. + */ + public Properties getInitParameters(); } diff --git a/src/com/vaadin/terminal/ExternalResource.java b/src/com/vaadin/terminal/ExternalResource.java index 0abff91638..84fcc65a44 100644 --- a/src/com/vaadin/terminal/ExternalResource.java +++ b/src/com/vaadin/terminal/ExternalResource.java @@ -100,6 +100,7 @@ public class ExternalResource implements Resource, Serializable { * * @see com.vaadin.terminal.Resource#getMIMEType() */ + @Override public String getMIMEType() { if (mimeType == null) { mimeType = FileTypeResolver.getMIMEType(getURL().toString()); diff --git a/src/com/vaadin/terminal/FileResource.java b/src/com/vaadin/terminal/FileResource.java index 8dc3b00fd0..e3c9f0172a 100644 --- a/src/com/vaadin/terminal/FileResource.java +++ b/src/com/vaadin/terminal/FileResource.java @@ -61,6 +61,7 @@ public class FileResource implements ApplicationResource { * * @see com.vaadin.terminal.ApplicationResource#getStream() */ + @Override public DownloadStream getStream() { try { final DownloadStream ds = new DownloadStream(new FileInputStream( @@ -74,6 +75,7 @@ public class FileResource implements ApplicationResource { // Log the exception using the application error handler getApplication().getErrorHandler().terminalError(new ErrorEvent() { + @Override public Throwable getThrowable() { return e; } @@ -106,6 +108,7 @@ public class FileResource implements ApplicationResource { /** * @see com.vaadin.terminal.ApplicationResource#getApplication() */ + @Override public Application getApplication() { return application; } @@ -113,6 +116,7 @@ public class FileResource implements ApplicationResource { /** * @see com.vaadin.terminal.ApplicationResource#getFilename() */ + @Override public String getFilename() { return sourceFile.getName(); } @@ -120,6 +124,7 @@ public class FileResource implements ApplicationResource { /** * @see com.vaadin.terminal.Resource#getMIMEType() */ + @Override public String getMIMEType() { return FileTypeResolver.getMIMEType(sourceFile); } @@ -132,6 +137,7 @@ public class FileResource implements ApplicationResource { * * @return Cache time in milliseconds. */ + @Override public long getCacheTime() { return cacheTime; } @@ -150,6 +156,7 @@ public class FileResource implements ApplicationResource { } /* documented in superclass */ + @Override public int getBufferSize() { return bufferSize; } diff --git a/src/com/vaadin/terminal/JavaScriptCallbackHelper.java b/src/com/vaadin/terminal/JavaScriptCallbackHelper.java index 01db0267d9..131875a5a4 100644 --- a/src/com/vaadin/terminal/JavaScriptCallbackHelper.java +++ b/src/com/vaadin/terminal/JavaScriptCallbackHelper.java @@ -14,8 +14,8 @@ import java.util.Set; import com.vaadin.external.json.JSONArray; import com.vaadin.external.json.JSONException; +import com.vaadin.shared.JavaScriptConnectorState; import com.vaadin.terminal.gwt.client.JavaScriptConnectorHelper; -import com.vaadin.terminal.gwt.client.JavaScriptConnectorHelper.JavaScriptConnectorState; import com.vaadin.tools.ReflectTools; import com.vaadin.ui.AbstractJavaScriptComponent; import com.vaadin.ui.JavaScript.JavaScriptCallbackRpc; @@ -65,6 +65,7 @@ public class JavaScriptCallbackHelper implements Serializable { private void ensureRpc() { if (javascriptCallbackRpc == null) { javascriptCallbackRpc = new JavaScriptCallbackRpc() { + @Override public void call(String name, JSONArray arguments) { JavaScriptCallback callback = callbacks.get(name); try { diff --git a/src/com/vaadin/terminal/Page.java b/src/com/vaadin/terminal/Page.java index 8ccb243a1e..a068e7573e 100644 --- a/src/com/vaadin/terminal/Page.java +++ b/src/com/vaadin/terminal/Page.java @@ -12,9 +12,9 @@ import java.util.LinkedList; import java.util.List; import com.vaadin.event.EventRouter; +import com.vaadin.shared.ui.root.PageClientRpc; import com.vaadin.terminal.WrappedRequest.BrowserDetails; import com.vaadin.terminal.gwt.client.ui.notification.VNotification; -import com.vaadin.terminal.gwt.client.ui.root.PageClientRpc; import com.vaadin.terminal.gwt.client.ui.root.VRoot; import com.vaadin.terminal.gwt.server.WebApplicationContext; import com.vaadin.terminal.gwt.server.WebBrowser; diff --git a/src/com/vaadin/terminal/StreamResource.java b/src/com/vaadin/terminal/StreamResource.java index 1e13169292..1afd91dc08 100644 --- a/src/com/vaadin/terminal/StreamResource.java +++ b/src/com/vaadin/terminal/StreamResource.java @@ -79,6 +79,7 @@ public class StreamResource implements ApplicationResource { /** * @see com.vaadin.terminal.Resource#getMIMEType() */ + @Override public String getMIMEType() { if (MIMEType != null) { return MIMEType; @@ -123,6 +124,7 @@ public class StreamResource implements ApplicationResource { * * @return the filename. */ + @Override public String getFilename() { return filename; } @@ -140,6 +142,7 @@ public class StreamResource implements ApplicationResource { /** * @see com.vaadin.terminal.ApplicationResource#getApplication() */ + @Override public Application getApplication() { return application; } @@ -147,6 +150,7 @@ public class StreamResource implements ApplicationResource { /** * @see com.vaadin.terminal.ApplicationResource#getStream() */ + @Override public DownloadStream getStream() { final StreamSource ss = getStreamSource(); if (ss == null) { @@ -176,6 +180,7 @@ public class StreamResource implements ApplicationResource { } /* documented in superclass */ + @Override public int getBufferSize() { return bufferSize; } @@ -191,6 +196,7 @@ public class StreamResource implements ApplicationResource { } /* documented in superclass */ + @Override public long getCacheTime() { return cacheTime; } diff --git a/src/com/vaadin/terminal/ThemeResource.java b/src/com/vaadin/terminal/ThemeResource.java index d456047653..41674b2373 100644 --- a/src/com/vaadin/terminal/ThemeResource.java +++ b/src/com/vaadin/terminal/ThemeResource.java @@ -89,6 +89,7 @@ public class ThemeResource implements Resource { /** * @see com.vaadin.terminal.Resource#getMIMEType() */ + @Override public String getMIMEType() { return FileTypeResolver.getMIMEType(getResourceId()); } diff --git a/src/com/vaadin/terminal/gwt/DefaultWidgetSet.gwt.xml b/src/com/vaadin/terminal/gwt/DefaultWidgetSet.gwt.xml index 697bf992e9..278d92f38f 100644 --- a/src/com/vaadin/terminal/gwt/DefaultWidgetSet.gwt.xml +++ b/src/com/vaadin/terminal/gwt/DefaultWidgetSet.gwt.xml @@ -6,93 +6,8 @@ <!-- Hint for WidgetSetBuilder not to automatically update the file --> <!-- WS Compiler: manually edited --> - <inherits name="com.google.gwt.user.User" /> - - <inherits name="com.google.gwt.http.HTTP" /> - - <inherits name="com.google.gwt.json.JSON" /> - - <inherits - name="com.vaadin.terminal.gwt.DefaultWidgetSetBrowserSpecificOverrides" /> - - <source path="client" /> - - <!-- TODO only for development --> - <replace-with class="com.vaadin.terminal.gwt.client.ui.VerticalBoxLayoutConnector"> - <when-type-is class="com.vaadin.terminal.gwt.client.ui.orderedlayout.VerticalLayoutConnector" /> - </replace-with> - <replace-with class="com.vaadin.terminal.gwt.client.ui.HorizontalBoxLayoutConnector"> - <when-type-is class="com.vaadin.terminal.gwt.client.ui.orderedlayout.HorizontalLayoutConnector" /> - </replace-with> - - <!-- Use own Scheduler implementation to be able to track if commands are - running --> - <replace-with class="com.vaadin.terminal.gwt.client.VSchedulerImpl"> - <when-type-is class="com.google.gwt.core.client.impl.SchedulerImpl" /> - </replace-with> - - - <!-- Generators for serializators for classes used in communication between - server and client --> - <generate-with - class="com.vaadin.terminal.gwt.widgetsetutils.SerializerMapGenerator"> - <when-type-is - class="com.vaadin.terminal.gwt.client.communication.SerializerMap" /> - </generate-with> - - <replace-with class="com.vaadin.terminal.gwt.client.VDebugConsole"> - <when-type-is class="com.vaadin.terminal.gwt.client.Console" /> - </replace-with> - - <generate-with - class="com.vaadin.terminal.gwt.widgetsetutils.EagerWidgetMapGenerator"> - <when-type-is class="com.vaadin.terminal.gwt.client.WidgetMap" /> - </generate-with> - - <generate-with - class="com.vaadin.terminal.gwt.widgetsetutils.AcceptCriteriaFactoryGenerator"> - <when-type-is - class="com.vaadin.terminal.gwt.client.ui.dd.VAcceptCriterionFactory" /> - </generate-with> - - <!-- Generate client side proxies for client to server RPC interfaces --> - <generate-with - class="com.vaadin.terminal.gwt.widgetsetutils.RpcProxyGenerator"> - <when-type-assignable - class="com.vaadin.terminal.gwt.client.communication.ServerRpc" /> - </generate-with> - - <!-- Generate client side proxies for client to server RPC interfaces --> - <generate-with - class="com.vaadin.terminal.gwt.widgetsetutils.RpcProxyCreatorGenerator"> - <when-type-assignable - class="com.vaadin.terminal.gwt.client.communication.RpcProxy.RpcProxyCreator" /> - </generate-with> - - <!-- Generate client side RPC manager for server to client RPC --> - <generate-with - class="com.vaadin.terminal.gwt.widgetsetutils.GeneratedRpcMethodProviderGenerator"> - <when-type-assignable - class="com.vaadin.terminal.gwt.client.communication.GeneratedRpcMethodProvider" /> - </generate-with> - - <generate-with - class="com.vaadin.terminal.gwt.widgetsetutils.ConnectorWidgetFactoryGenerator"> - <when-type-assignable - class="com.vaadin.terminal.gwt.client.ui.ConnectorWidgetFactory" /> - </generate-with> - - <generate-with - class="com.vaadin.terminal.gwt.widgetsetutils.ConnectorStateFactoryGenerator"> - <when-type-assignable - class="com.vaadin.terminal.gwt.client.ui.ConnectorStateFactory" /> - </generate-with> + <inherits name="com.vaadin.Vaadin" /> <entry-point class="com.vaadin.terminal.gwt.client.ApplicationConfiguration" /> - <!-- Use the new cross site linker to get a nocache.js without document.write --> - <add-linker name="xsiframe" /> - - <set-configuration-property name="devModeRedirectEnabled" value="true" /> - </module> diff --git a/src/com/vaadin/terminal/gwt/DefaultWidgetSetBrowserSpecificOverrides.gwt.xml b/src/com/vaadin/terminal/gwt/VaadinBrowserSpecificOverrides.gwt.xml index b5ab61df64..b5ab61df64 100644 --- a/src/com/vaadin/terminal/gwt/DefaultWidgetSetBrowserSpecificOverrides.gwt.xml +++ b/src/com/vaadin/terminal/gwt/VaadinBrowserSpecificOverrides.gwt.xml diff --git a/src/com/vaadin/terminal/gwt/client/ApplicationConfiguration.java b/src/com/vaadin/terminal/gwt/client/ApplicationConfiguration.java index 960b0a8b0e..71707e723a 100644 --- a/src/com/vaadin/terminal/gwt/client/ApplicationConfiguration.java +++ b/src/com/vaadin/terminal/gwt/client/ApplicationConfiguration.java @@ -23,6 +23,8 @@ import com.vaadin.terminal.gwt.client.ui.UnknownComponentConnector; public class ApplicationConfiguration implements EntryPoint { + public static final String PORTLET_RESOUCE_URL_BASE = "portletAppURLBase"; + /** * Helper class for reading configuration options from the bootstap * javascript @@ -205,8 +207,6 @@ public class ApplicationConfiguration implements EntryPoint { private ErrorMessage communicationError; private ErrorMessage authorizationError; private boolean useDebugIdInDom = true; - private boolean usePortletURLs = false; - private String portletUidlURLBase; private HashMap<Integer, String> unknownComponents; @@ -218,7 +218,7 @@ public class ApplicationConfiguration implements EntryPoint { static// TODO consider to make this hashmap per application LinkedList<Command> callbacks = new LinkedList<Command>(); - private static int widgetsLoading; + private static int dependenciesLoading; private static ArrayList<ApplicationConnection> runningApplications = new ArrayList<ApplicationConnection>(); @@ -226,11 +226,12 @@ public class ApplicationConfiguration implements EntryPoint { private Map<Integer, String> tagToServerSideClassName = new HashMap<Integer, String>(); public boolean usePortletURLs() { - return usePortletURLs; + return getPortletResourceUrl() != null; } - public String getPortletUidlURLBase() { - return portletUidlURLBase; + public String getPortletResourceUrl() { + return getJsoConfiguration(id) + .getConfigString(PORTLET_RESOUCE_URL_BASE); } public String getRootPanelId() { @@ -319,12 +320,6 @@ public class ApplicationConfiguration implements EntryPoint { useDebugIdInDom = jsoConfiguration.getConfigBoolean("useDebugIdInDom") != Boolean.FALSE; // null -> false - usePortletURLs = jsoConfiguration.getConfigBoolean("usePortletURLs") == Boolean.TRUE; - - portletUidlURLBase = jsoConfiguration - .getConfigString("portletUidlURLBase"); - - // null -> false standalone = jsoConfiguration.getConfigBoolean("standalone") == Boolean.TRUE; communicationError = jsoConfiguration.getConfigError("comErrMsg"); @@ -348,6 +343,7 @@ public class ApplicationConfiguration implements EntryPoint { public static void startApplication(final String applicationId) { Scheduler.get().scheduleDeferred(new ScheduledCommand() { + @Override public void execute() { ApplicationConfiguration appConf = getConfigFromDOM(applicationId); ApplicationConnection a = GWT @@ -454,26 +450,26 @@ public class ApplicationConfiguration implements EntryPoint { * * @param c */ - static void runWhenWidgetsLoaded(Command c) { - if (widgetsLoading == 0) { + static void runWhenDependenciesLoaded(Command c) { + if (dependenciesLoading == 0) { c.execute(); } else { callbacks.add(c); } } - static void startWidgetLoading() { - widgetsLoading++; + static void startDependencyLoading() { + dependenciesLoading++; } - static void endWidgetLoading() { - widgetsLoading--; - if (widgetsLoading == 0 && !callbacks.isEmpty()) { + static void endDependencyLoading() { + dependenciesLoading--; + if (dependenciesLoading == 0 && !callbacks.isEmpty()) { for (Command cmd : callbacks) { cmd.execute(); } callbacks.clear(); - } else if (widgetsLoading == 0 && deferredWidgetLoader != null) { + } else if (dependenciesLoading == 0 && deferredWidgetLoader != null) { deferredWidgetLoader.trigger(); } @@ -534,7 +530,7 @@ public class ApplicationConfiguration implements EntryPoint { } private boolean isBusy() { - if (widgetsLoading > 0) { + if (dependenciesLoading > 0) { communicationFree = 0; return true; } @@ -553,6 +549,7 @@ public class ApplicationConfiguration implements EntryPoint { private static DeferredWidgetLoader deferredWidgetLoader; + @Override public void onModuleLoad() { // Prepare VConsole for debugging @@ -571,6 +568,7 @@ public class ApplicationConfiguration implements EntryPoint { */ GWT.setUncaughtExceptionHandler(new UncaughtExceptionHandler() { + @Override public void onUncaughtException(Throwable e) { /* * Note in case of null console (without ?debug) we eat @@ -581,6 +579,11 @@ public class ApplicationConfiguration implements EntryPoint { } }); + if (SuperDevMode.enableBasedOnParameter()) { + // Do not start any application as super dev mode will refresh the + // page once done compiling + return; + } registerCallback(GWT.getModuleName()); deferredWidgetLoader = new DeferredWidgetLoader(); } diff --git a/src/com/vaadin/terminal/gwt/client/ApplicationConnection.java b/src/com/vaadin/terminal/gwt/client/ApplicationConnection.java index f0470c8ee8..fb7af1404c 100644 --- a/src/com/vaadin/terminal/gwt/client/ApplicationConnection.java +++ b/src/com/vaadin/terminal/gwt/client/ApplicationConnection.java @@ -27,6 +27,7 @@ import com.google.gwt.http.client.RequestBuilder; import com.google.gwt.http.client.RequestCallback; import com.google.gwt.http.client.RequestException; import com.google.gwt.http.client.Response; +import com.google.gwt.http.client.URL; import com.google.gwt.json.client.JSONArray; import com.google.gwt.json.client.JSONObject; import com.google.gwt.json.client.JSONString; @@ -35,21 +36,23 @@ import com.google.gwt.regexp.shared.RegExp; import com.google.gwt.user.client.Command; import com.google.gwt.user.client.DOM; import com.google.gwt.user.client.Element; -import com.google.gwt.user.client.Event; import com.google.gwt.user.client.Timer; import com.google.gwt.user.client.ui.HasWidgets; import com.google.gwt.user.client.ui.Widget; +import com.vaadin.shared.ComponentState; +import com.vaadin.shared.communication.MethodInvocation; +import com.vaadin.shared.communication.SharedState; +import com.vaadin.shared.communication.UidlValue; import com.vaadin.terminal.gwt.client.ApplicationConfiguration.ErrorMessage; +import com.vaadin.terminal.gwt.client.ResourceLoader.ResourceLoadEvent; +import com.vaadin.terminal.gwt.client.ResourceLoader.ResourceLoadListener; import com.vaadin.terminal.gwt.client.communication.HasJavaScriptConnectorHelper; import com.vaadin.terminal.gwt.client.communication.JsonDecoder; import com.vaadin.terminal.gwt.client.communication.JsonEncoder; -import com.vaadin.terminal.gwt.client.communication.MethodInvocation; import com.vaadin.terminal.gwt.client.communication.RpcManager; import com.vaadin.terminal.gwt.client.communication.SerializerMap; -import com.vaadin.terminal.gwt.client.communication.SharedState; import com.vaadin.terminal.gwt.client.communication.StateChangeEvent; import com.vaadin.terminal.gwt.client.communication.Type; -import com.vaadin.terminal.gwt.client.communication.UidlValue; import com.vaadin.terminal.gwt.client.extensions.AbstractExtensionConnector; import com.vaadin.terminal.gwt.client.ui.AbstractComponentConnector; import com.vaadin.terminal.gwt.client.ui.VContextMenu; @@ -75,6 +78,19 @@ import com.vaadin.terminal.gwt.server.AbstractCommunicationManager; * Entry point classes (widgetsets) define <code>onModuleLoad()</code>. */ public class ApplicationConnection { + public static final String APP_REQUEST_PATH = "APP/"; + + public static final String UIDL_REQUEST_PATH = "UIDL/"; + + public static final String APP_PROTOCOL_PREFIX = "app://"; + + public static final String V_RESOURCE_PATH = "v-resourcePath"; + + public static final String CONNECTOR_PROTOCOL_PREFIX = "connector://"; + + public static final String CONNECTOR_RESOURCE_PREFIX = APP_REQUEST_PATH + + "CONNECTOR"; + // This indicates the whole page is generated by us (not embedded) public static final String GENERATED_BODY_CLASSNAME = "v-generated-body"; @@ -131,7 +147,7 @@ public class ApplicationConnection { */ public static final String UIDL_REFRESH_TOKEN = "Vaadin-Refresh"; - private final boolean debugLogging = false; + private final boolean debugLogging = true || false; // will hold the UIDL security key (for XSS protection) once received private String uidlSecurityKey = "init"; @@ -506,12 +522,7 @@ public class ApplicationConnection { final String payload = uidlSecurityKey + VAR_BURST_SEPARATOR + requestData; VConsole.log("Making UIDL Request with params: " + payload); - String uri; - if (configuration.usePortletURLs()) { - uri = configuration.getPortletUidlURLBase(); - } else { - uri = getAppUri() + "UIDL"; - } + String uri = translateVaadinUri(APP_PROTOCOL_PREFIX + UIDL_REQUEST_PATH); if (extraParams != null && extraParams.length() > 0) { uri = addGetParameters(uri, extraParams); @@ -538,11 +549,13 @@ public class ApplicationConnection { final boolean synchronous) { if (!synchronous) { RequestCallback requestCallback = new RequestCallback() { + @Override public void onError(Request request, Throwable exception) { showCommunicationError(exception.getMessage(), -1); endRequest(); } + @Override public void onResponseReceived(Request request, Response response) { VConsole.log("Server visit took " @@ -868,6 +881,7 @@ public class ApplicationConnection { } // deferring to avoid flickering Scheduler.get().scheduleDeferred(new Command() { + @Override public void execute() { if (!hasActiveRequest()) { hideLoadingIndicator(); @@ -1067,6 +1081,14 @@ public class ApplicationConnection { json.getValueMap("typeMappings"), widgetSet); } + VConsole.log("Handling resource dependencies"); + if (json.containsKey("scriptDependencies")) { + loadScriptDependencies(json.getJSStringArray("scriptDependencies")); + } + if (json.containsKey("styleDependencies")) { + loadStyleDependencies(json.getJSStringArray("styleDependencies")); + } + handleUIDLDuration.logDuration( " * Handling type mappings from server completed", 10); /* @@ -1077,6 +1099,7 @@ public class ApplicationConnection { } Command c = new Command() { + @Override public void execute() { handleUIDLDuration.logDuration(" * Loading widgets completed", 10); @@ -1608,7 +1631,72 @@ public class ApplicationConnection { } }; - ApplicationConfiguration.runWhenWidgetsLoaded(c); + ApplicationConfiguration.runWhenDependenciesLoaded(c); + } + + private void loadStyleDependencies(JsArrayString dependencies) { + // Assuming no reason to interpret in a defined order + ResourceLoadListener resourceLoadListener = new ResourceLoadListener() { + @Override + public void onLoad(ResourceLoadEvent event) { + ApplicationConfiguration.endDependencyLoading(); + } + + @Override + public void onError(ResourceLoadEvent event) { + VConsole.error(event.getResourceUrl() + + " could not be loaded, or the load detection failed because the stylesheet is empty."); + // The show must go on + onLoad(event); + } + }; + ResourceLoader loader = ResourceLoader.get(); + for (int i = 0; i < dependencies.length(); i++) { + String url = translateVaadinUri(dependencies.get(i)); + ApplicationConfiguration.startDependencyLoading(); + loader.loadStylesheet(url, resourceLoadListener); + } + } + + private void loadScriptDependencies(final JsArrayString dependencies) { + if (dependencies.length() == 0) { + return; + } + + // Listener that loads the next when one is completed + ResourceLoadListener resourceLoadListener = new ResourceLoadListener() { + @Override + public void onLoad(ResourceLoadEvent event) { + if (dependencies.length() != 0) { + String url = translateVaadinUri(dependencies.shift()); + ApplicationConfiguration.startDependencyLoading(); + // Load next in chain (hopefully already preloaded) + event.getResourceLoader().loadScript(url, this); + } + // Call start for next before calling end for current + ApplicationConfiguration.endDependencyLoading(); + } + + @Override + public void onError(ResourceLoadEvent event) { + VConsole.error(event.getResourceUrl() + " could not be loaded."); + // The show must go on + onLoad(event); + } + }; + + ResourceLoader loader = ResourceLoader.get(); + + // Start chain by loading first + String url = translateVaadinUri(dependencies.shift()); + ApplicationConfiguration.startDependencyLoading(); + loader.loadScript(url, resourceLoadListener); + + // Preload all remaining + for (int i = 0; i < dependencies.length(); i++) { + String preloadUrl = translateVaadinUri(dependencies.get(i)); + loader.preloadResource(preloadUrl, null); + } } // Redirect browser, null reloads current page @@ -1669,6 +1757,7 @@ public class ApplicationConnection { } private final ScheduledCommand sendPendingCommand = new ScheduledCommand() { + @Override public void execute() { deferedSendPending = false; doSendPendingVariableChanges(); @@ -2214,8 +2303,42 @@ public class ApplicationConnection { } uidlUri = themeUri + uidlUri.substring(7); } - if (uidlUri.startsWith("app://")) { - uidlUri = getAppUri() + uidlUri.substring(6); + + if (uidlUri.startsWith(CONNECTOR_PROTOCOL_PREFIX)) { + // getAppUri *should* always end with / + // substring *should* always start with / (connector:///foo.bar + // without connector://) + uidlUri = APP_PROTOCOL_PREFIX + CONNECTOR_RESOURCE_PREFIX + + uidlUri.substring(CONNECTOR_PROTOCOL_PREFIX.length()); + // Let translation of app:// urls take care of the rest + } + if (uidlUri.startsWith(APP_PROTOCOL_PREFIX)) { + String relativeUrl = uidlUri + .substring(APP_PROTOCOL_PREFIX.length()); + if (getConfiguration().usePortletURLs()) { + // Should put path in v-resourcePath parameter and append query + // params to base portlet url + String[] parts = relativeUrl.split("\\?", 2); + String path = parts[0]; + + String url = getConfiguration().getPortletResourceUrl(); + + // If there's a "?" followed by something, append it as a query + // string to the base URL + if (parts.length > 1) { + String appUrlParams = parts[1]; + url = addGetParameters(url, appUrlParams); + } + if (!path.startsWith("/")) { + path = '/' + path; + } + String pathParam = V_RESOURCE_PATH + "=" + + URL.encodeQueryString(path); + url = addGetParameters(url, pathParam); + uidlUri = url; + } else { + uidlUri = getAppUri() + relativeUrl; + } } return uidlUri; } @@ -2242,6 +2365,7 @@ public class ApplicationConnection { this.url = url; } + @Override public void notificationHidden(HideEvent event) { redirect(url); } @@ -2250,57 +2374,8 @@ public class ApplicationConnection { /* Extended title handling */ - /** - * Data showed in tooltips are stored centrilized as it may be needed in - * varios place: caption, layouts, and in owner components themselves. - * - * Updating TooltipInfo is done in updateComponent method. - * - */ - public TooltipInfo getTooltipTitleInfo(ComponentConnector titleOwner, - Object key) { - if (null == titleOwner) { - return null; - } - return connectorMap.getTooltipInfo(titleOwner, key); - } - private final VTooltip tooltip = new VTooltip(this); - /** - * Component may want to delegate Tooltip handling to client. Layouts add - * Tooltip (description, errors) to caption, but some components may want - * them to appear one other elements too. - * - * Events wanted by this handler are same as in Tooltip.TOOLTIP_EVENTS - * - * @param event - * @param owner - */ - public void handleTooltipEvent(Event event, ComponentConnector owner) { - tooltip.handleTooltipEvent(event, owner, null); - - } - - /** - * Component may want to delegate Tooltip handling to client. Layouts add - * Tooltip (description, errors) to caption, but some components may want - * them to appear one other elements too. - * - * Events wanted by this handler are same as in Tooltip.TOOLTIP_EVENTS - * - * @param event - * @param owner - * @param key - * the key for tooltip if this is "additional" tooltip, null for - * components "main tooltip" - */ - public void handleTooltipEvent(Event event, ComponentConnector owner, - Object key) { - tooltip.handleTooltipEvent(event, owner, key); - - } - private ConnectorMap connectorMap = GWT.create(ConnectorMap.class); protected String getUidlSecurityKey() { @@ -2328,34 +2403,6 @@ public class ApplicationConnection { } /** - * If component has several tooltips in addition to the one provided by - * {@link com.vaadin.ui.AbstractComponent}, component can register them with - * this method. - * <p> - * Component must also pipe events to - * {@link #handleTooltipEvent(Event, ComponentConnector, Object)} method. - * <p> - * This method can also be used to deregister tooltips by using null as - * tooltip - * - * @param paintable - * Paintable "owning" this tooltip - * @param key - * key assosiated with given tooltip. Can be any object. For - * example a related dom element. Same key must be given for - * {@link #handleTooltipEvent(Event, ComponentConnector, Object)} - * method. - * - * @param tooltip - * the TooltipInfo object containing details shown in tooltip, - * null if deregistering tooltip - */ - public void registerTooltip(ComponentConnector paintable, Object key, - TooltipInfo tooltip) { - connectorMap.registerTooltip(paintable, key, tooltip); - } - - /** * Gets the {@link ApplicationConfiguration} for the current application. * * @see ApplicationConfiguration @@ -2437,15 +2484,15 @@ public class ApplicationConnection { // connectorMap.unregisterConnector(p); } + /** + * Get VTooltip instance related to application connection + * + * @return VTooltip instance + */ public VTooltip getVTooltip() { return tooltip; } - @Deprecated - public void handleTooltipEvent(Event event, Widget owner, Object key) { - handleTooltipEvent(event, getConnectorMap().getConnector(owner), key); - } - /** * Method provided for backwards compatibility. Duties previously done by * this method is now handled by the state change event handler in @@ -2474,17 +2521,6 @@ public class ApplicationConnection { } @Deprecated - public void handleTooltipEvent(Event event, Widget owner) { - handleTooltipEvent(event, getConnectorMap().getConnector(owner)); - - } - - @Deprecated - public void registerTooltip(Widget owner, Object key, TooltipInfo info) { - registerTooltip(getConnectorMap().getConnector(owner), key, info); - } - - @Deprecated public boolean hasEventListeners(Widget widget, String eventIdentifier) { return hasEventListeners(getConnectorMap().getConnector(widget), eventIdentifier); diff --git a/src/com/vaadin/terminal/gwt/client/BrowserInfo.java b/src/com/vaadin/terminal/gwt/client/BrowserInfo.java index 82cf925ec1..32bb0b8eed 100644 --- a/src/com/vaadin/terminal/gwt/client/BrowserInfo.java +++ b/src/com/vaadin/terminal/gwt/client/BrowserInfo.java @@ -5,6 +5,7 @@ package com.vaadin.terminal.gwt.client; import com.google.gwt.user.client.ui.RootPanel; +import com.vaadin.shared.VBrowserDetails; /** * Class used to query information about web browser. diff --git a/src/com/vaadin/terminal/gwt/client/ComponentConnector.java b/src/com/vaadin/terminal/gwt/client/ComponentConnector.java index 4e6a690a3c..e57a188b47 100644 --- a/src/com/vaadin/terminal/gwt/client/ComponentConnector.java +++ b/src/com/vaadin/terminal/gwt/client/ComponentConnector.java @@ -4,7 +4,9 @@ package com.vaadin.terminal.gwt.client; +import com.google.gwt.dom.client.Element; import com.google.gwt.user.client.ui.Widget; +import com.vaadin.shared.ComponentState; /** * An interface used by client-side widgets or paintable parts to receive @@ -21,6 +23,7 @@ public interface ComponentConnector extends ServerConnector { * * @see com.vaadin.terminal.gwt.client.VPaintable#getState() */ + @Override public ComponentState getState(); /** @@ -104,4 +107,14 @@ public interface ComponentConnector extends ServerConnector { */ public void setWidgetEnabled(boolean widgetEnabled); + /** + * Gets the tooltip info for the given element. + * + * @param element + * The element to lookup a tooltip for + * @return The tooltip for the element or null if no tooltip is defined for + * this element. + */ + public TooltipInfo getTooltipInfo(Element element); + } diff --git a/src/com/vaadin/terminal/gwt/client/ComponentLocator.java b/src/com/vaadin/terminal/gwt/client/ComponentLocator.java index 0e7a0c1d1c..8df9dc41b9 100644 --- a/src/com/vaadin/terminal/gwt/client/ComponentLocator.java +++ b/src/com/vaadin/terminal/gwt/client/ComponentLocator.java @@ -12,7 +12,9 @@ import com.google.gwt.user.client.Element; import com.google.gwt.user.client.ui.HasWidgets; import com.google.gwt.user.client.ui.RootPanel; import com.google.gwt.user.client.ui.Widget; -import com.vaadin.terminal.gwt.client.communication.SharedState; +import com.vaadin.shared.ComponentState; +import com.vaadin.shared.Connector; +import com.vaadin.shared.communication.SharedState; import com.vaadin.terminal.gwt.client.ui.SubPartAware; import com.vaadin.terminal.gwt.client.ui.VBoxLayout; import com.vaadin.terminal.gwt.client.ui.gridlayout.VGridLayout; diff --git a/src/com/vaadin/terminal/gwt/client/ConnectorMap.java b/src/com/vaadin/terminal/gwt/client/ConnectorMap.java index efb50b5e00..8bc4a4aacf 100644 --- a/src/com/vaadin/terminal/gwt/client/ConnectorMap.java +++ b/src/com/vaadin/terminal/gwt/client/ConnectorMap.java @@ -200,49 +200,11 @@ public class ConnectorMap { return idToConnector.size(); } - /** - * FIXME: Should be moved to VAbstractPaintableWidget - * - * @param paintable - * @return - */ - @Deprecated - public TooltipInfo getTooltipInfo(ComponentConnector paintable, Object key) { - ComponentDetail componentDetail = getComponentDetail(paintable); - if (componentDetail == null) { - return null; - } - return componentDetail.getTooltipInfo(key); - } - - @Deprecated - public TooltipInfo getWidgetTooltipInfo(Widget widget, Object key) { - ComponentConnector connector = getConnector(widget); - if (connector == null) { - return null; - } - return getTooltipInfo(connector, key); - } - public Collection<? extends ServerConnector> getConnectors() { return Collections.unmodifiableCollection(idToConnector.values()); } /** - * FIXME: Should not be here - * - * @param componentConnector - * @return - */ - @Deprecated - public void registerTooltip(ComponentConnector componentConnector, - Object key, TooltipInfo tooltip) { - getComponentDetail(componentConnector).putAdditionalTooltip(key, - tooltip); - - } - - /** * Tests if the widget is the root widget of a {@link ComponentConnector}. * * @param widget diff --git a/src/com/vaadin/terminal/gwt/client/EventHelper.java b/src/com/vaadin/terminal/gwt/client/EventHelper.java index 95f5125f1b..208768a0c1 100644 --- a/src/com/vaadin/terminal/gwt/client/EventHelper.java +++ b/src/com/vaadin/terminal/gwt/client/EventHelper.java @@ -3,8 +3,8 @@ */ package com.vaadin.terminal.gwt.client; -import static com.vaadin.terminal.gwt.client.EventId.BLUR; -import static com.vaadin.terminal.gwt.client.EventId.FOCUS; +import static com.vaadin.shared.EventId.BLUR; +import static com.vaadin.shared.EventId.FOCUS; import com.google.gwt.event.dom.client.BlurEvent; import com.google.gwt.event.dom.client.BlurHandler; diff --git a/src/com/vaadin/terminal/gwt/client/JavaScriptConnectorHelper.java b/src/com/vaadin/terminal/gwt/client/JavaScriptConnectorHelper.java index bd62a759cb..69b8e00603 100644 --- a/src/com/vaadin/terminal/gwt/client/JavaScriptConnectorHelper.java +++ b/src/com/vaadin/terminal/gwt/client/JavaScriptConnectorHelper.java @@ -15,18 +15,13 @@ import com.google.gwt.core.client.JavaScriptObject; import com.google.gwt.core.client.JsArray; import com.google.gwt.json.client.JSONArray; import com.google.gwt.user.client.Element; -import com.vaadin.terminal.gwt.client.communication.MethodInvocation; +import com.vaadin.shared.JavaScriptConnectorState; +import com.vaadin.shared.communication.MethodInvocation; import com.vaadin.terminal.gwt.client.communication.StateChangeEvent; import com.vaadin.terminal.gwt.client.communication.StateChangeEvent.StateChangeHandler; public class JavaScriptConnectorHelper { - public interface JavaScriptConnectorState { - public Set<String> getCallbackNames(); - - public Map<String, Set<String>> getRpcInterfaces(); - } - private final ServerConnector connector; private final JavaScriptObject nativeState = JavaScriptObject .createObject(); @@ -49,6 +44,7 @@ public class JavaScriptConnectorHelper { public void init() { connector.addStateChangeHandler(new StateChangeHandler() { + @Override public void onStateChanged(StateChangeEvent stateChangeEvent) { JavaScriptObject wrapper = getConnectorWrapper(); JavaScriptConnectorState state = getConnectorState(); @@ -149,8 +145,9 @@ public class JavaScriptConnectorHelper { private JavaScriptObject getConnectorWrapper() { if (connectorWrapper == null) { - connectorWrapper = createConnectorWrapper(this, nativeState, - rpcMap, connector.getConnectorId(), rpcObjects); + connectorWrapper = createConnectorWrapper(this, + connector.getConnection(), nativeState, rpcMap, + connector.getConnectorId(), rpcObjects); } return connectorWrapper; @@ -165,9 +162,9 @@ public class JavaScriptConnectorHelper { }-*/; private static native JavaScriptObject createConnectorWrapper( - JavaScriptConnectorHelper h, JavaScriptObject nativeState, - JavaScriptObject registeredRpc, String connectorId, - Map<String, JavaScriptObject> rpcObjects) + JavaScriptConnectorHelper h, ApplicationConnection c, + JavaScriptObject nativeState, JavaScriptObject registeredRpc, + String connectorId, Map<String, JavaScriptObject> rpcObjects) /*-{ return { 'getConnectorId': function() { @@ -185,7 +182,7 @@ public class JavaScriptConnectorHelper { } return rpcObjects.@java.util.Map::get(Ljava/lang/Object;)(iface); }), - 'getWidgetElement': $entry(function(connectorId) { + 'getElement': $entry(function(connectorId) { return h.@com.vaadin.terminal.gwt.client.JavaScriptConnectorHelper::getWidgetElement(Ljava/lang/String;)(connectorId); }), 'registerRpc': function(iface, rpcHandler) { @@ -199,6 +196,9 @@ public class JavaScriptConnectorHelper { } registeredRpc[iface].push(rpcHandler); }, + 'translateVaadinUri': $entry(function(uri) { + return c.@com.vaadin.terminal.gwt.client.ApplicationConnection::translateVaadinUri(Ljava/lang/String;)(uri); + }), }; }-*/; @@ -238,8 +238,8 @@ public class JavaScriptConnectorHelper { return connector; } - return ConnectorMap.get(connector.getConnection()) - .getConnector(connectorId); + return ConnectorMap.get(connector.getConnection()).getConnector( + connectorId); } private void fireRpc(String iface, String method, @@ -331,9 +331,9 @@ public class JavaScriptConnectorHelper { invokeCallback(getConnectorWrapper(), callbackName, arguments); } else { JavaScriptObject arguments = parametersJson.getJavaScriptObject(); - invokeJsRpc(rpcMap, iface, method, arguments); + invokeJsRpc(rpcMap, iface, method, arguments, getConnectorWrapper()); // Also invoke wildcard interface - invokeJsRpc(rpcMap, "", method, arguments); + invokeJsRpc(rpcMap, "", method, arguments, getConnectorWrapper()); } } @@ -344,7 +344,8 @@ public class JavaScriptConnectorHelper { }-*/; private static native void invokeJsRpc(JavaScriptObject rpcMap, - String interfaceName, String methodName, JavaScriptObject parameters) + String interfaceName, String methodName, + JavaScriptObject parameters, JavaScriptObject connector) /*-{ var targets = rpcMap[interfaceName]; if (!targets) { @@ -352,7 +353,7 @@ public class JavaScriptConnectorHelper { } for(var i = 0; i < targets.length; i++) { var target = targets[i]; - target[methodName].apply(target, parameters); + target[methodName].apply(connector, parameters); } }-*/; diff --git a/src/com/vaadin/terminal/gwt/client/JavaScriptExtension.java b/src/com/vaadin/terminal/gwt/client/JavaScriptExtension.java index 2a97e4a770..a2170b9ab9 100644 --- a/src/com/vaadin/terminal/gwt/client/JavaScriptExtension.java +++ b/src/com/vaadin/terminal/gwt/client/JavaScriptExtension.java @@ -4,10 +4,11 @@ package com.vaadin.terminal.gwt.client; +import com.vaadin.shared.JavaScriptExtensionState; +import com.vaadin.shared.ui.Connect; import com.vaadin.terminal.AbstractJavaScriptExtension; import com.vaadin.terminal.gwt.client.communication.HasJavaScriptConnectorHelper; import com.vaadin.terminal.gwt.client.extensions.AbstractExtensionConnector; -import com.vaadin.terminal.gwt.client.ui.Connect; @Connect(AbstractJavaScriptExtension.class) public final class JavaScriptExtension extends AbstractExtensionConnector @@ -21,6 +22,7 @@ public final class JavaScriptExtension extends AbstractExtensionConnector helper.init(); } + @Override public JavaScriptConnectorHelper getJavascriptConnectorHelper() { return helper; } diff --git a/src/com/vaadin/terminal/gwt/client/MouseEventDetailsBuilder.java b/src/com/vaadin/terminal/gwt/client/MouseEventDetailsBuilder.java index 58dd488351..d39f98a024 100644 --- a/src/com/vaadin/terminal/gwt/client/MouseEventDetailsBuilder.java +++ b/src/com/vaadin/terminal/gwt/client/MouseEventDetailsBuilder.java @@ -6,6 +6,7 @@ package com.vaadin.terminal.gwt.client; import com.google.gwt.dom.client.Element; import com.google.gwt.dom.client.NativeEvent; import com.google.gwt.user.client.Event; +import com.vaadin.shared.MouseEventDetails; /** * Helper class for constructing a MouseEventDetails object from a diff --git a/src/com/vaadin/terminal/gwt/client/NullConsole.java b/src/com/vaadin/terminal/gwt/client/NullConsole.java index 2d15ffd46c..7db513ca82 100644 --- a/src/com/vaadin/terminal/gwt/client/NullConsole.java +++ b/src/com/vaadin/terminal/gwt/client/NullConsole.java @@ -15,39 +15,48 @@ import com.google.gwt.core.client.GWT; */ public class NullConsole implements Console { + @Override public void dirUIDL(ValueMap u, ApplicationConfiguration cnf) { } + @Override public void error(String msg) { GWT.log(msg); } + @Override public void log(String msg) { GWT.log(msg); } + @Override public void printObject(Object msg) { GWT.log(msg.toString()); } + @Override public void printLayoutProblems(ValueMap meta, ApplicationConnection applicationConnection, Set<ComponentConnector> zeroHeightComponents, Set<ComponentConnector> zeroWidthComponents) { } + @Override public void log(Throwable e) { GWT.log(e.getMessage(), e); } + @Override public void error(Throwable e) { // Borrow exception handling from VDebugConsole VDebugConsole.handleError(e, this); } + @Override public void setQuietMode(boolean quietDebugMode) { } + @Override public void init() { } diff --git a/src/com/vaadin/terminal/gwt/client/ResourceLoader.java b/src/com/vaadin/terminal/gwt/client/ResourceLoader.java new file mode 100644 index 0000000000..21577ce87e --- /dev/null +++ b/src/com/vaadin/terminal/gwt/client/ResourceLoader.java @@ -0,0 +1,540 @@ +/* +@VaadinApache2LicenseForJavaFiles@ + */ + +package com.vaadin.terminal.gwt.client; + +import java.util.Collection; +import java.util.HashMap; +import java.util.HashSet; +import java.util.Map; +import java.util.Set; + +import com.google.gwt.core.client.Duration; +import com.google.gwt.core.client.GWT; +import com.google.gwt.core.client.Scheduler; +import com.google.gwt.core.client.Scheduler.RepeatingCommand; +import com.google.gwt.dom.client.AnchorElement; +import com.google.gwt.dom.client.Document; +import com.google.gwt.dom.client.Element; +import com.google.gwt.dom.client.LinkElement; +import com.google.gwt.dom.client.NodeList; +import com.google.gwt.dom.client.ObjectElement; +import com.google.gwt.dom.client.ScriptElement; +import com.google.gwt.user.client.Timer; + +/** + * ResourceLoader lets you dynamically include external scripts and styles on + * the page and lets you know when the resource has been loaded. + * + * You can also preload resources, allowing them to get cached by the browser + * without being evaluated. This enables downloading multiple resources at once + * while still controlling in which order e.g. scripts are executed. + * + * @author Vaadin Ltd + * @version @VERSION@ + * @since 7.0.0 + */ +public class ResourceLoader { + /** + * Event fired when a resource has been loaded. + */ + public static class ResourceLoadEvent { + private ResourceLoader loader; + private String resourceUrl; + private final boolean preload; + + /** + * Creates a new event. + * + * @param loader + * the resource loader that has loaded the resource + * @param resourceUrl + * the url of the loaded resource + * @param preload + * true if the resource has only been preloaded, false if + * it's fully loaded + */ + public ResourceLoadEvent(ResourceLoader loader, String resourceUrl, + boolean preload) { + this.loader = loader; + this.resourceUrl = resourceUrl; + this.preload = preload; + } + + /** + * Gets the resource loader that has fired this event + * + * @return the resource loader + */ + public ResourceLoader getResourceLoader() { + return loader; + } + + /** + * Gets the absolute url of the loaded resource. + * + * @return the absolute url of the loaded resource + */ + public String getResourceUrl() { + return resourceUrl; + } + + /** + * Returns true if the resource has been preloaded, false if it's fully + * loaded + * + * @see ResourceLoader#preloadResource(String, ResourceLoadListener) + * + * @return true if the resource has been preloaded, false if it's fully + * loaded + */ + public boolean isPreload() { + return preload; + } + } + + /** + * Event listener that gets notified when a resource has been loaded + */ + public interface ResourceLoadListener { + /** + * Notifies this ResourceLoadListener that a resource has been loaded. + * Some browsers do not support any way of detecting load errors. In + * these cases, onLoad will be called regardless of the status. + * + * @see ResourceLoadEvent + * + * @param event + * a resource load event with information about the loaded + * resource + */ + public void onLoad(ResourceLoadEvent event); + + /** + * Notifies this ResourceLoadListener that a resource could not be + * loaded, e.g. because the file could not be found or because the + * server did not respond. Some browsers do not support any way of + * detecting load errors. In these cases, onLoad will be called + * regardless of the status. + * + * @see ResourceLoadEvent + * + * @param event + * a resource load event with information about the resource + * that could not be loaded. + */ + public void onError(ResourceLoadEvent event); + } + + private static final ResourceLoader INSTANCE = GWT + .create(ResourceLoader.class); + + private ApplicationConnection connection; + + private final Set<String> loadedResources = new HashSet<String>(); + private final Set<String> preloadedResources = new HashSet<String>(); + + private final Map<String, Collection<ResourceLoadListener>> loadListeners = new HashMap<String, Collection<ResourceLoadListener>>(); + private final Map<String, Collection<ResourceLoadListener>> preloadListeners = new HashMap<String, Collection<ResourceLoadListener>>(); + + private final Element head; + + /** + * Creates a new resource loader. You should generally not create you own + * resource loader, but instead use {@link ResourceLoader#get()} to get an + * instance. + */ + protected ResourceLoader() { + Document document = Document.get(); + head = document.getElementsByTagName("head").getItem(0); + + // detect already loaded scripts and stylesheets + NodeList<Element> scripts = document.getElementsByTagName("script"); + for (int i = 0; i < scripts.getLength(); i++) { + ScriptElement element = ScriptElement.as(scripts.getItem(i)); + String src = element.getSrc(); + if (src != null && src.length() != 0) { + loadedResources.add(src); + } + } + + NodeList<Element> links = document.getElementsByTagName("link"); + for (int i = 0; i < links.getLength(); i++) { + LinkElement linkElement = LinkElement.as(links.getItem(i)); + String rel = linkElement.getRel(); + String href = linkElement.getHref(); + if ("stylesheet".equalsIgnoreCase(rel) && href != null + && href.length() != 0) { + loadedResources.add(href); + } + } + } + + /** + * Returns the default ResourceLoader + * + * @return the default ResourceLoader + */ + public static ResourceLoader get() { + return INSTANCE; + } + + /** + * Load a script and notify a listener when the script is loaded. Calling + * this method when the script is currently loading or already loaded + * doesn't cause the script to be loaded again, but the listener will still + * be notified when appropriate. + * + * + * @param scriptUrl + * the url of the script to load + * @param resourceLoadListener + * the listener that will get notified when the script is loaded + */ + public void loadScript(final String scriptUrl, + final ResourceLoadListener resourceLoadListener) { + final String url = getAbsoluteUrl(scriptUrl); + ResourceLoadEvent event = new ResourceLoadEvent(this, url, false); + if (loadedResources.contains(url)) { + if (resourceLoadListener != null) { + resourceLoadListener.onLoad(event); + } + return; + } + + if (preloadListeners.containsKey(url)) { + // Preload going on, continue when preloaded + preloadResource(url, new ResourceLoadListener() { + @Override + public void onLoad(ResourceLoadEvent event) { + loadScript(url, resourceLoadListener); + } + + @Override + public void onError(ResourceLoadEvent event) { + // Preload failed -> signal error to own listener + if (resourceLoadListener != null) { + resourceLoadListener.onError(event); + } + } + }); + return; + } + + if (addListener(url, resourceLoadListener, loadListeners)) { + ScriptElement scriptTag = Document.get().createScriptElement(); + scriptTag.setSrc(url); + scriptTag.setType("text/javascript"); + addOnloadHandler(scriptTag, new ResourceLoadListener() { + @Override + public void onLoad(ResourceLoadEvent event) { + fireLoad(event); + } + + @Override + public void onError(ResourceLoadEvent event) { + fireError(event); + } + }, event); + head.appendChild(scriptTag); + } + } + + private static String getAbsoluteUrl(String url) { + AnchorElement a = Document.get().createAnchorElement(); + a.setHref(url); + return a.getHref(); + } + + /** + * Download a resource and notify a listener when the resource is loaded + * without attempting to interpret the resource. When a resource has been + * preloaded, it will be present in the browser's cache (provided the HTTP + * headers allow caching), making a subsequent load operation complete + * without having to wait for the resource to be downloaded again. + * + * Calling this method when the resource is currently loading, currently + * preloading, already preloaded or already loaded doesn't cause the + * resource to be preloaded again, but the listener will still be notified + * when appropriate. + * + * @param url + * the url of the resource to preload + * @param resourceLoadListener + * the listener that will get notified when the resource is + * preloaded + */ + public void preloadResource(String url, + ResourceLoadListener resourceLoadListener) { + url = getAbsoluteUrl(url); + ResourceLoadEvent event = new ResourceLoadEvent(this, url, true); + if (loadedResources.contains(url) || preloadedResources.contains(url)) { + // Already loaded or preloaded -> just fire listener + if (resourceLoadListener != null) { + resourceLoadListener.onLoad(event); + } + return; + } + + if (addListener(url, resourceLoadListener, preloadListeners) + && !loadListeners.containsKey(url)) { + // Inject loader element if this is the first time this is preloaded + // AND the resources isn't already being loaded in the normal way + + Element element = getPreloadElement(url); + addOnloadHandler(element, new ResourceLoadListener() { + @Override + public void onLoad(ResourceLoadEvent event) { + fireLoad(event); + } + + @Override + public void onError(ResourceLoadEvent event) { + fireError(event); + } + }, event); + + // TODO Remove object when loaded (without causing spinner in FF) + Document.get().getBody().appendChild(element); + } + } + + private static Element getPreloadElement(String url) { + if (BrowserInfo.get().isIE()) { + ScriptElement element = Document.get().createScriptElement(); + element.setSrc(url); + element.setType("text/cache"); + return element; + } else { + ObjectElement element = Document.get().createObjectElement(); + element.setData(url); + element.setType("text/plain"); + element.setHeight("0px"); + element.setWidth("0px"); + return element; + } + } + + private native void addOnloadHandler(Element element, + ResourceLoadListener listener, ResourceLoadEvent event) + /*-{ + element.onload = $entry(function() { + element.onload = null; + element.onerror = null; + element.onreadystatechange = null; + listener.@com.vaadin.terminal.gwt.client.ResourceLoader.ResourceLoadListener::onLoad(Lcom/vaadin/terminal/gwt/client/ResourceLoader$ResourceLoadEvent;)(event); + }); + element.onerror = $entry(function() { + element.onload = null; + element.onerror = null; + element.onreadystatechange = null; + listener.@com.vaadin.terminal.gwt.client.ResourceLoader.ResourceLoadListener::onError(Lcom/vaadin/terminal/gwt/client/ResourceLoader$ResourceLoadEvent;)(event); + }); + element.onreadystatechange = function() { + if ("loaded" === element.readyState || "complete" === element.readyState ) { + element.onload(arguments[0]); + } + }; + }-*/; + + /** + * Load a stylesheet and notify a listener when the stylesheet is loaded. + * Calling this method when the stylesheet is currently loading or already + * loaded doesn't cause the stylesheet to be loaded again, but the listener + * will still be notified when appropriate. + * + * @param stylesheetUrl + * the url of the stylesheet to load + * @param resourceLoadListener + * the listener that will get notified when the stylesheet is + * loaded + */ + public void loadStylesheet(final String stylesheetUrl, + final ResourceLoadListener resourceLoadListener) { + final String url = getAbsoluteUrl(stylesheetUrl); + final ResourceLoadEvent event = new ResourceLoadEvent(this, url, false); + if (loadedResources.contains(url)) { + if (resourceLoadListener != null) { + resourceLoadListener.onLoad(event); + } + return; + } + + if (preloadListeners.containsKey(url)) { + // Preload going on, continue when preloaded + preloadResource(url, new ResourceLoadListener() { + @Override + public void onLoad(ResourceLoadEvent event) { + loadStylesheet(url, resourceLoadListener); + } + + @Override + public void onError(ResourceLoadEvent event) { + // Preload failed -> signal error to own listener + if (resourceLoadListener != null) { + resourceLoadListener.onError(event); + } + } + }); + return; + } + + if (addListener(url, resourceLoadListener, loadListeners)) { + LinkElement linkElement = Document.get().createLinkElement(); + linkElement.setRel("stylesheet"); + linkElement.setType("text/css"); + linkElement.setHref(url); + + if (BrowserInfo.get().isSafari()) { + // Safari doesn't fire any events for link elements + // See http://www.phpied.com/when-is-a-stylesheet-really-loaded/ + Scheduler.get().scheduleFixedPeriod(new RepeatingCommand() { + private final Duration duration = new Duration(); + + @Override + public boolean execute() { + int styleSheetLength = getStyleSheetLength(url); + if (getStyleSheetLength(url) > 0) { + fireLoad(event); + return false; // Stop repeating + } else if (styleSheetLength == 0) { + // "Loaded" empty sheet -> most likely 404 error + fireError(event); + return true; + } else if (duration.elapsedMillis() > 60 * 1000) { + fireError(event); + return false; + } else { + return true; // Continue repeating + } + } + }, 10); + } else { + addOnloadHandler(linkElement, new ResourceLoadListener() { + @Override + public void onLoad(ResourceLoadEvent event) { + // Chrome && IE fires load for errors, must check + // stylesheet data + if (BrowserInfo.get().isChrome() + || BrowserInfo.get().isIE()) { + int styleSheetLength = getStyleSheetLength(url); + // Error if there's an empty stylesheet + if (styleSheetLength == 0) { + fireError(event); + return; + } + } + fireLoad(event); + } + + @Override + public void onError(ResourceLoadEvent event) { + fireError(event); + } + }, event); + if (BrowserInfo.get().isOpera()) { + // Opera onerror never fired, assume error if no onload in x + // seconds + new Timer() { + @Override + public void run() { + if (!loadedResources.contains(url)) { + fireError(event); + } + } + }.schedule(5 * 1000); + } + } + + head.appendChild(linkElement); + } + } + + private static native int getStyleSheetLength(String url) + /*-{ + for(var i = 0; i < $doc.styleSheets.length; i++) { + if ($doc.styleSheets[i].href === url) { + var sheet = $doc.styleSheets[i]; + try { + var rules = sheet.cssRules + if (rules === undefined) { + rules = sheet.rules; + } + + if (rules === null) { + // Style sheet loaded, but can't access length because of XSS -> assume there's something there + return 1; + } + + // Return length so we can distinguish 0 (probably 404 error) from normal case. + return rules.length; + } catch (err) { + return 1; + } + } + } + // No matching stylesheet found -> not yet loaded + return -1; + }-*/; + + private static boolean addListener(String url, + ResourceLoadListener listener, + Map<String, Collection<ResourceLoadListener>> listenerMap) { + Collection<ResourceLoadListener> listeners = listenerMap.get(url); + if (listeners == null) { + listeners = new HashSet<ResourceLoader.ResourceLoadListener>(); + listeners.add(listener); + listenerMap.put(url, listeners); + return true; + } else { + listeners.add(listener); + return false; + } + } + + private void fireError(ResourceLoadEvent event) { + String resource = event.getResourceUrl(); + + Collection<ResourceLoadListener> listeners; + if (event.isPreload()) { + // Also fire error for load listeners + fireError(new ResourceLoadEvent(this, resource, false)); + listeners = preloadListeners.remove(resource); + } else { + listeners = loadListeners.remove(resource); + } + if (listeners != null && !listeners.isEmpty()) { + for (ResourceLoadListener listener : listeners) { + if (listener != null) { + listener.onError(event); + } + } + } + } + + private void fireLoad(ResourceLoadEvent event) { + String resource = event.getResourceUrl(); + Collection<ResourceLoadListener> listeners; + if (event.isPreload()) { + preloadedResources.add(resource); + listeners = preloadListeners.remove(resource); + } else { + if (preloadListeners.containsKey(resource)) { + // Also fire preload events for potential listeners + fireLoad(new ResourceLoadEvent(this, resource, true)); + } + preloadedResources.remove(resource); + loadedResources.add(resource); + listeners = loadListeners.remove(resource); + } + if (listeners != null && !listeners.isEmpty()) { + for (ResourceLoadListener listener : listeners) { + if (listener != null) { + listener.onLoad(event); + } + } + } + } + +} diff --git a/src/com/vaadin/terminal/gwt/client/ServerConnector.java b/src/com/vaadin/terminal/gwt/client/ServerConnector.java index fcf5100c8e..a0f08b92b9 100644 --- a/src/com/vaadin/terminal/gwt/client/ServerConnector.java +++ b/src/com/vaadin/terminal/gwt/client/ServerConnector.java @@ -8,7 +8,8 @@ import java.util.List; import com.google.gwt.event.shared.GwtEvent; import com.google.web.bindery.event.shared.HandlerRegistration; -import com.vaadin.terminal.gwt.client.communication.ClientRpc; +import com.vaadin.shared.Connector; +import com.vaadin.shared.communication.ClientRpc; import com.vaadin.terminal.gwt.client.communication.StateChangeEvent.StateChangeHandler; /** @@ -102,6 +103,7 @@ public interface ServerConnector extends Connector { * @return The parent of this connector, as set by * {@link #setParent(ServerConnector)}. */ + @Override public ServerConnector getParent(); /** diff --git a/src/com/vaadin/terminal/gwt/client/SimpleTree.java b/src/com/vaadin/terminal/gwt/client/SimpleTree.java index 350e0d707d..506d990aac 100644 --- a/src/com/vaadin/terminal/gwt/client/SimpleTree.java +++ b/src/com/vaadin/terminal/gwt/client/SimpleTree.java @@ -49,6 +49,7 @@ public class SimpleTree extends ComplexPanel { getElement().appendChild(children); addDomHandler(new ClickHandler() { + @Override public void onClick(ClickEvent event) { if (event.getNativeEvent().getEventTarget().cast() == handle) { if (children.getStyle().getDisplay().intern() == Display.NONE diff --git a/src/com/vaadin/terminal/gwt/client/SuperDevMode.java b/src/com/vaadin/terminal/gwt/client/SuperDevMode.java new file mode 100644 index 0000000000..e435b3c6ed --- /dev/null +++ b/src/com/vaadin/terminal/gwt/client/SuperDevMode.java @@ -0,0 +1,253 @@ +/* +@VaadinApache2LicenseForJavaFiles@ + */ +package com.vaadin.terminal.gwt.client; + +import com.google.gwt.core.client.GWT; +import com.google.gwt.core.client.JavaScriptObject; +import com.google.gwt.http.client.UrlBuilder; +import com.google.gwt.jsonp.client.JsonpRequestBuilder; +import com.google.gwt.storage.client.Storage; +import com.google.gwt.user.client.Window.Location; +import com.google.gwt.user.client.rpc.AsyncCallback; +import com.vaadin.terminal.gwt.client.ui.notification.VNotification; +import com.vaadin.terminal.gwt.client.ui.notification.VNotification.EventListener; +import com.vaadin.terminal.gwt.client.ui.notification.VNotification.HideEvent; + +/** + * Class that enables SuperDevMode using a ?superdevmode parameter in the url. + * + * @author Vaadin Ltd + * @version @VERSION@ + * @since 7.0 + * + */ +public class SuperDevMode { + + private static final int COMPILE_TIMEOUT_IN_SECONDS = 60; + protected static final String SKIP_RECOMPILE = "VaadinSuperDevMode_skip_recompile"; + + public static class RecompileResult extends JavaScriptObject { + protected RecompileResult() { + + } + + public final native boolean ok() + /*-{ + return this.status == "ok"; + }-*/; + } + + private static void recompileWidgetsetAndStartInDevMode( + final String serverUrl) { + VConsole.log("Recompiling widgetset using<br/>" + serverUrl + + "<br/>and then reloading in super dev mode"); + VNotification n = new VNotification(); + n.show("<b>Recompiling widgetset, this should not take too long</b>", + VNotification.CENTERED, VNotification.STYLE_SYSTEM); + + JsonpRequestBuilder b = new JsonpRequestBuilder(); + b.setCallbackParam("_callback"); + b.setTimeout(COMPILE_TIMEOUT_IN_SECONDS * 1000); + b.requestObject(serverUrl + "recompile/" + GWT.getModuleName() + "?" + + getRecompileParameters(GWT.getModuleName()), + new AsyncCallback<RecompileResult>() { + + @Override + public void onSuccess(RecompileResult result) { + VConsole.log("JSONP compile call successful"); + + if (!result.ok()) { + VConsole.log("* result: " + result); + failed(); + return; + } + + setSession( + getSuperDevModeHookKey(), + getSuperDevWidgetSetUrl(GWT.getModuleName(), + serverUrl)); + setSession(SKIP_RECOMPILE, "1"); + + VConsole.log("* result: OK. Reloading"); + Location.reload(); + } + + @Override + public void onFailure(Throwable caught) { + VConsole.error("JSONP compile call failed"); + // Don't log exception as they are shown as + // notifications + VConsole.error(Util.getSimpleName(caught) + ": " + + caught.getMessage()); + failed(); + + } + + private void failed() { + VNotification n = new VNotification(); + n.addEventListener(new EventListener() { + + @Override + public void notificationHidden(HideEvent event) { + recompileWidgetsetAndStartInDevMode(serverUrl); + } + }); + n.show("Recompilation failed.<br/>" + + "Make sure CodeServer is running, " + + "check its output and click to retry", + VNotification.CENTERED, + VNotification.STYLE_SYSTEM); + } + }); + + } + + protected static String getSuperDevWidgetSetUrl(String widgetsetName, + String serverUrl) { + return serverUrl + GWT.getModuleName() + "/" + GWT.getModuleName() + + ".nocache.js"; + } + + private native static String getRecompileParameters(String moduleName) + /*-{ + var prop_map = $wnd.__gwt_activeModules[moduleName].bindings(); + + // convert map to URL parameter string + var props = []; + for (var key in prop_map) { + props.push(encodeURIComponent(key) + '=' + encodeURIComponent(prop_map[key])) + } + + return props.join('&') + '&'; + }-*/; + + private static void setSession(String key, String value) { + Storage.getSessionStorageIfSupported().setItem(key, value); + } + + private static String getSession(String key) { + return Storage.getSessionStorageIfSupported().getItem(key); + } + + private static void removeSession(String key) { + Storage.getSessionStorageIfSupported().removeItem(key); + } + + protected static void disableDevModeAndReload() { + removeSession(getSuperDevModeHookKey()); + redirect(false); + } + + protected static void redirect(boolean devModeOn) { + UrlBuilder createUrlBuilder = Location.createUrlBuilder(); + if (!devModeOn) { + createUrlBuilder.removeParameter("superdevmode"); + } else { + createUrlBuilder.setParameter("superdevmode", ""); + } + + Location.assign(createUrlBuilder.buildString()); + + } + + private static String getSuperDevModeHookKey() { + String widgetsetName = GWT.getModuleName(); + final String superDevModeKey = "__gwtDevModeHook:" + widgetsetName; + return superDevModeKey; + } + + private static boolean hasSession(String key) { + return getSession(key) != null; + } + + /** + * The URL of the code server. The default URL (http://localhost:9876/) will + * be used if this is empty or null. + * + * @param serverUrl + * The url of the code server or null to use the default + * @return true if recompile started, false if we are running in + * SuperDevMode + */ + protected static boolean recompileIfNeeded(String serverUrl) { + if (serverUrl == null || "".equals(serverUrl)) { + serverUrl = "http://localhost:9876/"; + } else { + serverUrl = "http://" + serverUrl + "/"; + } + + if (hasSession(SKIP_RECOMPILE)) { + VConsole.log("Running in SuperDevMode"); + // When we get here, we are running in super dev mode + + // Remove the flag so next reload will recompile + removeSession(SKIP_RECOMPILE); + + // Remove the gwt flag so we will not end up in dev mode if we + // remove the url parameter manually + removeSession(getSuperDevModeHookKey()); + + return false; + } + + recompileWidgetsetAndStartInDevMode(serverUrl); + return true; + } + + protected static boolean isSuperDevModeEnabledInModule() { + String moduleName = GWT.getModuleName(); + return isSuperDevModeEnabledInModule(moduleName); + } + + protected native static boolean isSuperDevModeEnabledInModule( + String moduleName) + /*-{ + if (!$wnd.__gwt_activeModules) + return false; + var mod = $wnd.__gwt_activeModules[moduleName]; + if (!mod) + return false; + + if (mod.superdevmode) { + // Running in super dev mode already, it is supported + return true; + } + + return !!mod.canRedirect; + }-*/; + + /** + * Enables SuperDevMode if the url contains the "superdevmode" parameter. + * <p> + * The caller should not continue initialization of the application if this + * method returns true. The application will be restarted once compilation + * is done and then this method will return false. + * </p> + * + * @return true if a recompile operation has started and the page will be + * reloaded once it is done, false if no recompilation will be done. + */ + public static boolean enableBasedOnParameter() { + String superDevModeParameter = Location.getParameter("superdevmode"); + if (superDevModeParameter != null) { + // Need to check the recompile flag also because if we are running + // in super dev mode, as a result of the recompile, the enabled + // check will fail... + if (!isSuperDevModeEnabledInModule()) { + showError("SuperDevMode is not enabled for this module/widgetset.<br/>" + + "Ensure that your module definition (.gwt.xml) contains <br/>" + + "<add-linker name="xsiframe"/><br/>" + + "<set-configuration-property name="devModeRedirectEnabled" value="true" /><br/>"); + return false; + } + return SuperDevMode.recompileIfNeeded(superDevModeParameter); + } + return false; + } + + private static void showError(String message) { + VNotification n = new VNotification(); + n.show(message, VNotification.CENTERED_TOP, VNotification.STYLE_SYSTEM); + } +} diff --git a/src/com/vaadin/terminal/gwt/client/TooltipInfo.java b/src/com/vaadin/terminal/gwt/client/TooltipInfo.java index fb33a56c56..712d263695 100644 --- a/src/com/vaadin/terminal/gwt/client/TooltipInfo.java +++ b/src/com/vaadin/terminal/gwt/client/TooltipInfo.java @@ -16,6 +16,11 @@ public class TooltipInfo { setTitle(tooltip); } + public TooltipInfo(String tooltip, String errorMessage) { + setTitle(tooltip); + setErrorMessage(errorMessage); + } + public String getTitle() { return title; } @@ -32,4 +37,18 @@ public class TooltipInfo { errorMessageHtml = errorMessage; } + /** + * Checks is a message has been defined for the tooltip. + * + * @return true if title or error message is present, false if both are + * empty + */ + public boolean hasMessage() { + return (title != null && !title.isEmpty()) + || (errorMessageHtml != null && !errorMessageHtml.isEmpty()); + } + + public boolean equals(TooltipInfo other) { + return (other != null && other.title == title && other.errorMessageHtml == errorMessageHtml); + } } diff --git a/src/com/vaadin/terminal/gwt/client/UIDL.java b/src/com/vaadin/terminal/gwt/client/UIDL.java index a523016b60..e662e08b3f 100644 --- a/src/com/vaadin/terminal/gwt/client/UIDL.java +++ b/src/com/vaadin/terminal/gwt/client/UIDL.java @@ -283,10 +283,12 @@ public final class UIDL extends JavaScriptObject { int index = -1; + @Override public void remove() { throw new UnsupportedOperationException(); } + @Override public Object next() { if (hasNext()) { @@ -308,6 +310,7 @@ public final class UIDL extends JavaScriptObject { return null; } + @Override public boolean hasNext() { int count = getChildCount(); return count > index + 1; diff --git a/src/com/vaadin/terminal/gwt/client/Util.java b/src/com/vaadin/terminal/gwt/client/Util.java index d3cb54160d..a27c77fa45 100644 --- a/src/com/vaadin/terminal/gwt/client/Util.java +++ b/src/com/vaadin/terminal/gwt/client/Util.java @@ -27,8 +27,10 @@ import com.google.gwt.user.client.Window; import com.google.gwt.user.client.ui.HasWidgets; import com.google.gwt.user.client.ui.RootPanel; import com.google.gwt.user.client.ui.Widget; +import com.vaadin.shared.ComponentState; +import com.vaadin.shared.communication.MethodInvocation; import com.vaadin.terminal.gwt.client.RenderInformation.FloatSize; -import com.vaadin.terminal.gwt.client.communication.MethodInvocation; +import com.vaadin.terminal.gwt.client.ui.VOverlay; public class Util { @@ -446,6 +448,7 @@ public class Util { elem.getStyle().setProperty("overflow", "hidden"); Scheduler.get().scheduleDeferred(new Command() { + @Override public void execute() { // Dough, Safari scroll auto means actually just a moped elem.getStyle().setProperty("overflow", originalOverflow); @@ -642,34 +645,47 @@ public class Util { */ public static ComponentConnector getConnectorForElement( ApplicationConnection client, Widget parent, Element element) { + + Element browseElement = element; Element rootElement = parent.getElement(); - while (element != null && element != rootElement) { - ComponentConnector paintable = ConnectorMap.get(client) - .getConnector(element); - if (paintable == null) { - String ownerPid = VCaption.getCaptionOwnerPid(element); + + while (browseElement != null && browseElement != rootElement) { + + ComponentConnector connector = ConnectorMap.get(client) + .getConnector(browseElement); + + if (connector == null) { + String ownerPid = VCaption.getCaptionOwnerPid(browseElement); if (ownerPid != null) { - paintable = (ComponentConnector) ConnectorMap.get(client) + connector = (ComponentConnector) ConnectorMap.get(client) .getConnector(ownerPid); } } - if (paintable != null) { + if (connector != null) { // check that inside the rootElement - while (element != null && element != rootElement) { - element = (Element) element.getParentElement(); + while (browseElement != null && browseElement != rootElement) { + browseElement = (Element) browseElement.getParentElement(); } - if (element != rootElement) { + if (browseElement != rootElement) { return null; } else { - return paintable; + return connector; } } - element = (Element) element.getParentElement(); + browseElement = (Element) browseElement.getParentElement(); } - return null; + // No connector found, element is possibly inside a VOverlay + // If the overlay has an owner, try to find the owner's connector + VOverlay overlay = findWidget(element, VOverlay.class); + if (overlay != null && overlay.getOwner() != null) { + return getConnectorForElement(client, RootPanel.get(), overlay + .getOwner().getElement()); + } else { + return null; + } } /** @@ -818,30 +834,29 @@ public class Util { ServerConnector connector = ConnectorMap.get(c).getConnector(id); if (connector != null) { VConsole.log("\t" + id + " (" + connector.getClass() + ") :"); - for (MethodInvocation invocation : invocations) { - Object[] parameters = invocation.getParameters(); - String formattedParams = null; - if (ApplicationConnection.UPDATE_VARIABLE_METHOD - .equals(invocation.getMethodName()) - && parameters.length == 2) { - // name, value - Object value = parameters[1]; - // TODO paintables inside lists/maps get rendered as - // components in the debug console - String formattedValue = value instanceof ServerConnector ? ((ServerConnector) value) - .getConnectorId() : String.valueOf(value); - formattedParams = parameters[0] + " : " + formattedValue; - } - if (null == formattedParams) { - formattedParams = (null != parameters) ? Arrays - .toString(parameters) : null; - } - VConsole.log("\t\t" + invocation.getInterfaceName() + "." - + invocation.getMethodName() + "(" + formattedParams - + ")"); - } } else { - VConsole.log("\t" + id + ": Warning: no corresponding connector!"); + VConsole.log("\t" + id + + ": Warning: no corresponding connector for id " + id); + } + for (MethodInvocation invocation : invocations) { + Object[] parameters = invocation.getParameters(); + String formattedParams = null; + if (ApplicationConnection.UPDATE_VARIABLE_METHOD.equals(invocation + .getMethodName()) && parameters.length == 2) { + // name, value + Object value = parameters[1]; + // TODO paintables inside lists/maps get rendered as + // components in the debug console + String formattedValue = value instanceof ServerConnector ? ((ServerConnector) value) + .getConnectorId() : String.valueOf(value); + formattedParams = parameters[0] + " : " + formattedValue; + } + if (null == formattedParams) { + formattedParams = (null != parameters) ? Arrays + .toString(parameters) : null; + } + VConsole.log("\t\t" + invocation.getInterfaceName() + "." + + invocation.getMethodName() + "(" + formattedParams + ")"); } } @@ -1007,6 +1022,7 @@ public class Util { } Scheduler.get().scheduleDeferred(new ScheduledCommand() { + @Override public void execute() { try { target.dispatchEvent(createMouseDownEvent); diff --git a/src/com/vaadin/terminal/gwt/client/VCaption.java b/src/com/vaadin/terminal/gwt/client/VCaption.java index 6f3fcf2c3a..85acc215b7 100644 --- a/src/com/vaadin/terminal/gwt/client/VCaption.java +++ b/src/com/vaadin/terminal/gwt/client/VCaption.java @@ -8,6 +8,8 @@ import com.google.gwt.user.client.DOM; import com.google.gwt.user.client.Element; import com.google.gwt.user.client.Event; import com.google.gwt.user.client.ui.HTML; +import com.vaadin.shared.AbstractFieldState; +import com.vaadin.shared.ComponentState; import com.vaadin.terminal.gwt.client.ui.AbstractFieldConnector; import com.vaadin.terminal.gwt.client.ui.Icon; @@ -35,6 +37,8 @@ public class VCaption extends HTML { ICON, CAPTION, REQUIRED, ERROR } + private TooltipInfo tooltipInfo = null; + /** * Creates a caption that is not linked to a {@link ComponentConnector}. * @@ -74,8 +78,6 @@ public class VCaption extends HTML { } setStyleName(CLASSNAME); - sinkEvents(VTooltip.TOOLTIP_EVENTS); - } /** @@ -345,9 +347,6 @@ public class VCaption extends HTML { public void onBrowserEvent(Event event) { super.onBrowserEvent(event); final Element target = DOM.eventGetTarget(event); - if (client != null && owner != null && target != getElement()) { - client.handleTooltipEvent(event, owner); - } if (DOM.eventGetType(event) == Event.ONLOAD && icon.getElement() == target) { @@ -555,6 +554,26 @@ public class VCaption extends HTML { } } + /** + * Sets the tooltip that should be shown for the caption + * + * @param tooltipInfo + * The tooltip that should be shown or null if no tooltip should + * be shown + */ + public void setTooltipInfo(TooltipInfo tooltipInfo) { + this.tooltipInfo = tooltipInfo; + } + + /** + * Returns the tooltip that should be shown for the caption + * + * @return The tooltip to show or null if no tooltip should be shown + */ + public TooltipInfo getTooltipInfo() { + return tooltipInfo; + } + protected Element getTextElement() { return captionText; } diff --git a/src/com/vaadin/terminal/gwt/client/VConsole.java b/src/com/vaadin/terminal/gwt/client/VConsole.java index dee8529a84..a221b42d67 100644 --- a/src/com/vaadin/terminal/gwt/client/VConsole.java +++ b/src/com/vaadin/terminal/gwt/client/VConsole.java @@ -57,35 +57,49 @@ public class VConsole { } public static void log(String msg) { - impl.log(msg); + if (impl != null) { + impl.log(msg); + } } public static void log(Throwable e) { - impl.log(e); + if (impl != null) { + impl.log(e); + } } public static void error(Throwable e) { - impl.error(e); + if (impl != null) { + impl.error(e); + } } public static void error(String msg) { - impl.error(msg); + if (impl != null) { + impl.error(msg); + } } public static void printObject(Object msg) { - impl.printObject(msg); + if (impl != null) { + impl.printObject(msg); + } } public static void dirUIDL(ValueMap u, ApplicationConfiguration cnf) { - impl.dirUIDL(u, cnf); + if (impl != null) { + impl.dirUIDL(u, cnf); + } } public static void printLayoutProblems(ValueMap meta, ApplicationConnection applicationConnection, Set<ComponentConnector> zeroHeightComponents, Set<ComponentConnector> zeroWidthComponents) { - impl.printLayoutProblems(meta, applicationConnection, - zeroHeightComponents, zeroWidthComponents); + if (impl != null) { + impl.printLayoutProblems(meta, applicationConnection, + zeroHeightComponents, zeroWidthComponents); + } } } diff --git a/src/com/vaadin/terminal/gwt/client/VDebugConsole.java b/src/com/vaadin/terminal/gwt/client/VDebugConsole.java index 09e939336e..a7bd943912 100644 --- a/src/com/vaadin/terminal/gwt/client/VDebugConsole.java +++ b/src/com/vaadin/terminal/gwt/client/VDebugConsole.java @@ -24,6 +24,8 @@ import com.google.gwt.event.dom.client.ClickHandler; import com.google.gwt.event.dom.client.KeyCodes; import com.google.gwt.event.dom.client.MouseOutEvent; import com.google.gwt.event.dom.client.MouseOutHandler; +import com.google.gwt.event.logical.shared.ValueChangeEvent; +import com.google.gwt.event.logical.shared.ValueChangeHandler; import com.google.gwt.event.shared.HandlerRegistration; import com.google.gwt.event.shared.UmbrellaException; import com.google.gwt.http.client.Request; @@ -33,6 +35,7 @@ import com.google.gwt.http.client.RequestException; import com.google.gwt.http.client.Response; import com.google.gwt.http.client.UrlBuilder; import com.google.gwt.i18n.client.DateTimeFormat; +import com.google.gwt.storage.client.Storage; import com.google.gwt.user.client.Cookies; import com.google.gwt.user.client.DOM; import com.google.gwt.user.client.Element; @@ -81,6 +84,7 @@ public class VDebugConsole extends VOverlay implements Console { this.label = label; } + @Override public void onPreviewNativeEvent(NativePreviewEvent event) { if (event.getTypeInt() == Event.ONKEYDOWN && event.getNativeEvent().getKeyCode() == KeyCodes.KEY_ESCAPE) { @@ -160,7 +164,8 @@ public class VDebugConsole extends VOverlay implements Console { private Button savePosition = new Button("S"); private Button highlight = new Button("H"); private Button connectorStats = new Button("CS"); - private CheckBox hostedMode = new CheckBox("GWT"); + private CheckBox devMode = new CheckBox("Dev"); + private CheckBox superDevMode = new CheckBox("SDev"); private CheckBox autoScroll = new CheckBox("Autoscroll "); private HorizontalPanel actions; private boolean collapsed = false; @@ -195,6 +200,7 @@ public class VDebugConsole extends VOverlay implements Console { private EventPreview dragpreview = new EventPreview() { + @Override public boolean onEventPreview(Event event) { onBrowserEvent(event); return false; @@ -342,6 +348,7 @@ public class VDebugConsole extends VOverlay implements Console { * * @see com.vaadin.terminal.gwt.client.Console#log(java.lang.String) */ + @Override public void log(String msg) { if (msg == null) { msg = "null"; @@ -358,6 +365,7 @@ public class VDebugConsole extends VOverlay implements Console { private List<String> msgQueue = new LinkedList<String>(); private ScheduledCommand doSend = new ScheduledCommand() { + @Override public void execute() { if (!msgQueue.isEmpty()) { RequestBuilder requestBuilder = new RequestBuilder( @@ -371,12 +379,14 @@ public class VDebugConsole extends VOverlay implements Console { requestBuilder.sendRequest(requestData, new RequestCallback() { + @Override public void onResponseReceived(Request request, Response response) { // TODO Auto-generated method stub } + @Override public void onError(Request request, Throwable exception) { // TODO Auto-generated method stub @@ -434,6 +444,7 @@ public class VDebugConsole extends VOverlay implements Console { * * @see com.vaadin.terminal.gwt.client.Console#error(java.lang.String) */ + @Override public void error(String msg) { if (msg == null) { msg = "null"; @@ -462,6 +473,7 @@ public class VDebugConsole extends VOverlay implements Console { * @see com.vaadin.terminal.gwt.client.Console#printObject(java.lang. * Object) */ + @Override public void printObject(Object msg) { String str; if (msg == null) { @@ -479,6 +491,7 @@ public class VDebugConsole extends VOverlay implements Console { * @see com.vaadin.terminal.gwt.client.Console#dirUIDL(com.vaadin * .terminal.gwt.client.UIDL) */ + @Override public void dirUIDL(ValueMap u, ApplicationConfiguration conf) { if (panel.isAttached()) { VUIDLBrowser vuidlBrowser = new VUIDLBrowser(u, conf); @@ -518,6 +531,7 @@ public class VDebugConsole extends VOverlay implements Console { } }-*/; + @Override public void printLayoutProblems(ValueMap meta, ApplicationConnection ac, Set<ComponentConnector> zeroHeightComponents, Set<ComponentConnector> zeroWidthComponents) { @@ -572,6 +586,7 @@ public class VDebugConsole extends VOverlay implements Console { final CheckBox emphasisInUi = new CheckBox( "Emphasize components parent in UI (the actual component is not visible)"); emphasisInUi.addClickHandler(new ClickHandler() { + @Override public void onClick(ClickEvent event) { Element element2 = layout.getElement(); Widget.setStyleName(element2, "invalidlayout", @@ -605,6 +620,7 @@ public class VDebugConsole extends VOverlay implements Console { } final CheckBox emphasisInUi = new CheckBox("Emphasize component in UI"); emphasisInUi.addClickHandler(new ClickHandler() { + @Override public void onClick(ClickEvent event) { if (paintable != null) { Element element2 = paintable.getWidget().getElement(); @@ -630,6 +646,7 @@ public class VDebugConsole extends VOverlay implements Console { root.add(errorNode); } + @Override public void log(Throwable e) { if (e instanceof UmbrellaException) { UmbrellaException ue = (UmbrellaException) e; @@ -642,6 +659,7 @@ public class VDebugConsole extends VOverlay implements Console { GWT.log(e.getMessage(), e); } + @Override public void error(Throwable e) { handleError(e, this); } @@ -673,6 +691,7 @@ public class VDebugConsole extends VOverlay implements Console { } } + @Override public void init() { panel = new FlowPanel(); if (!quietMode) { @@ -717,33 +736,8 @@ public class VDebugConsole extends VOverlay implements Console { savePosition .setTitle("Saves the position and size of debug console to a cookie"); actions.add(autoScroll); - actions.add(hostedMode); - if (Location.getParameter("gwt.codesvr") != null) { - hostedMode.setValue(true); - } - hostedMode.addClickHandler(new ClickHandler() { - public void onClick(ClickEvent event) { - if (hostedMode.getValue()) { - addHMParameter(); - } else { - removeHMParameter(); - } - } - - private void addHMParameter() { - UrlBuilder createUrlBuilder = Location.createUrlBuilder(); - createUrlBuilder.setParameter("gwt.codesvr", - "localhost:9997"); - Location.assign(createUrlBuilder.buildString()); - } - - private void removeHMParameter() { - UrlBuilder createUrlBuilder = Location.createUrlBuilder(); - createUrlBuilder.removeParameter("gwt.codesvr"); - Location.assign(createUrlBuilder.buildString()); - - } - }); + addDevMode(); + addSuperDevMode(); autoScroll .setTitle("Automatically scroll so that new messages are visible"); @@ -753,6 +747,7 @@ public class VDebugConsole extends VOverlay implements Console { panel.add(new HTML("<i>" + help + "</i>")); clear.addClickHandler(new ClickHandler() { + @Override public void onClick(ClickEvent event) { int width = panel.getOffsetWidth(); int height = panel.getOffsetHeight(); @@ -765,6 +760,7 @@ public class VDebugConsole extends VOverlay implements Console { }); restart.addClickHandler(new ClickHandler() { + @Override public void onClick(ClickEvent event) { String queryString = Window.Location.getQueryString(); @@ -792,6 +788,7 @@ public class VDebugConsole extends VOverlay implements Console { }); forceLayout.addClickHandler(new ClickHandler() { + @Override public void onClick(ClickEvent event) { for (ApplicationConnection applicationConnection : ApplicationConfiguration .getRunningApplications()) { @@ -801,6 +798,7 @@ public class VDebugConsole extends VOverlay implements Console { }); analyzeLayout.addClickHandler(new ClickHandler() { + @Override public void onClick(ClickEvent event) { List<ApplicationConnection> runningApplications = ApplicationConfiguration .getRunningApplications(); @@ -816,6 +814,7 @@ public class VDebugConsole extends VOverlay implements Console { + " all non committed variables form client side."); savePosition.addClickHandler(new ClickHandler() { + @Override public void onClick(ClickEvent event) { String pos = getAbsoluteLeft() + "," + getAbsoluteTop() + "," + getOffsetWidth() + "," + getOffsetHeight() @@ -826,6 +825,7 @@ public class VDebugConsole extends VOverlay implements Console { highlight.addClickHandler(new ClickHandler() { + @Override public void onClick(ClickEvent event) { final Label label = new Label("--"); log("<i>Use mouse to select a component or click ESC to exit highlight mode.</i>"); @@ -840,6 +840,7 @@ public class VDebugConsole extends VOverlay implements Console { } connectorStats.addClickHandler(new ClickHandler() { + @Override public void onClick(ClickEvent event) { for (ApplicationConnection a : ApplicationConfiguration .getRunningApplications()) { @@ -861,6 +862,56 @@ public class VDebugConsole extends VOverlay implements Console { } + private void addSuperDevMode() { + final Storage sessionStorage = Storage.getSessionStorageIfSupported(); + if (sessionStorage == null) { + return; + } + actions.add(superDevMode); + if (Location.getParameter("superdevmode") != null) { + superDevMode.setValue(true); + } + superDevMode.addValueChangeHandler(new ValueChangeHandler<Boolean>() { + + @Override + public void onValueChange(ValueChangeEvent<Boolean> event) { + SuperDevMode.redirect(event.getValue()); + } + + }); + + } + + private void addDevMode() { + actions.add(devMode); + if (Location.getParameter("gwt.codesvr") != null) { + devMode.setValue(true); + } + devMode.addClickHandler(new ClickHandler() { + @Override + public void onClick(ClickEvent event) { + if (devMode.getValue()) { + addHMParameter(); + } else { + removeHMParameter(); + } + } + + private void addHMParameter() { + UrlBuilder createUrlBuilder = Location.createUrlBuilder(); + createUrlBuilder.setParameter("gwt.codesvr", "localhost:9997"); + Location.assign(createUrlBuilder.buildString()); + } + + private void removeHMParameter() { + UrlBuilder createUrlBuilder = Location.createUrlBuilder(); + createUrlBuilder.removeParameter("gwt.codesvr"); + Location.assign(createUrlBuilder.buildString()); + + } + }); + } + protected void dumpConnectorInfo(ApplicationConnection a) { RootConnector root = a.getRootConnector(); log("================"); @@ -924,6 +975,7 @@ public class VDebugConsole extends VOverlay implements Console { } }; simpleTree.addDomHandler(new MouseOutHandler() { + @Override public void onMouseOut(MouseOutEvent event) { VUIDLBrowser.deHiglight(); } @@ -945,6 +997,7 @@ public class VDebugConsole extends VOverlay implements Console { return Util.getConnectorString(connector); } + @Override public void setQuietMode(boolean quietDebugMode) { quietMode = quietDebugMode; } diff --git a/src/com/vaadin/terminal/gwt/client/VSchedulerImpl.java b/src/com/vaadin/terminal/gwt/client/VSchedulerImpl.java index 65d5d6a9a2..6f5e5854b2 100644 --- a/src/com/vaadin/terminal/gwt/client/VSchedulerImpl.java +++ b/src/com/vaadin/terminal/gwt/client/VSchedulerImpl.java @@ -19,6 +19,7 @@ public class VSchedulerImpl extends SchedulerImpl { super.scheduleDeferred(cmd); super.scheduleDeferred(new ScheduledCommand() { + @Override public void execute() { deferredCommandTrackers--; } diff --git a/src/com/vaadin/terminal/gwt/client/VTooltip.java b/src/com/vaadin/terminal/gwt/client/VTooltip.java index 70f4a0de0a..a3523c2013 100644 --- a/src/com/vaadin/terminal/gwt/client/VTooltip.java +++ b/src/com/vaadin/terminal/gwt/client/VTooltip.java @@ -3,12 +3,20 @@ */ package com.vaadin.terminal.gwt.client; +import com.google.gwt.event.dom.client.ClickEvent; +import com.google.gwt.event.dom.client.ClickHandler; +import com.google.gwt.event.dom.client.KeyDownEvent; +import com.google.gwt.event.dom.client.KeyDownHandler; +import com.google.gwt.event.dom.client.MouseMoveEvent; +import com.google.gwt.event.dom.client.MouseMoveHandler; import com.google.gwt.user.client.DOM; import com.google.gwt.user.client.Element; import com.google.gwt.user.client.Event; import com.google.gwt.user.client.Timer; import com.google.gwt.user.client.Window; import com.google.gwt.user.client.ui.FlowPanel; +import com.google.gwt.user.client.ui.RootPanel; +import com.google.gwt.user.client.ui.Widget; import com.vaadin.terminal.gwt.client.ui.VOverlay; /** @@ -27,15 +35,12 @@ public class VTooltip extends VOverlay { private static final int QUICK_OPEN_DELAY = 100; VErrorMessage em = new VErrorMessage(); Element description = DOM.createDiv(); - private ComponentConnector tooltipOwner; private boolean closing = false; private boolean opening = false; private ApplicationConnection ac; // Open next tooltip faster. Disabled after 2 sec of showTooltip-silence. private boolean justClosed = false; - // If this is "additional" tooltip, this field contains the key for it - private Object tooltipKey; public VTooltip(ApplicationConnection client) { super(false, false, true); @@ -78,6 +83,7 @@ public class VTooltip extends VOverlay { // first to 0,0 position so that the calculation goes correctly. setPopupPosition(0, 0); setPopupPositionAndShow(new PositionCallback() { + @Override public void setPosition(int offsetWidth, int offsetHeight) { if (offsetWidth > MAX_WIDTH) { @@ -115,51 +121,30 @@ public class VTooltip extends VOverlay { } } - public void showTooltip(ComponentConnector owner, Event event, Object key) { - if (closing && tooltipOwner == owner && tooltipKey == key) { - // return to same tooltip, cancel closing - closeTimer.cancel(); - closing = false; - justClosedTimer.cancel(); - justClosed = false; - return; - } + private void showTooltip() { - if (closing) { + // Close current tooltip + if (isShowing()) { closeNow(); } - updatePosition(event); - - if (opening) { - showTimer.cancel(); - } - tooltipOwner = owner; - tooltipKey = key; - // Schedule timer for showing the tooltip according to if it was // recently closed or not. - if (justClosed) { - showTimer.schedule(QUICK_OPEN_DELAY); - } else { - showTimer.schedule(OPEN_DELAY); - } + int timeout = justClosed ? QUICK_OPEN_DELAY : OPEN_DELAY; + showTimer.schedule(timeout); opening = true; } private void closeNow() { - if (closing) { - hide(); - tooltipOwner = null; - setWidth(""); - closing = false; - } + hide(); + setWidth(""); + closing = false; } private Timer showTimer = new Timer() { @Override public void run() { - TooltipInfo info = ac.getTooltipTitleInfo(tooltipOwner, tooltipKey); + TooltipInfo info = tooltipEventHandler.getTooltipInfo(); if (null != info) { show(info); } @@ -187,7 +172,6 @@ public class VTooltip extends VOverlay { if (opening) { showTimer.cancel(); opening = false; - tooltipOwner = null; } if (!isAttached()) { return; @@ -209,24 +193,6 @@ public class VTooltip extends VOverlay { public void updatePosition(Event event) { tooltipEventMouseX = DOM.eventGetClientX(event); tooltipEventMouseY = DOM.eventGetClientY(event); - - } - - public void handleTooltipEvent(Event event, ComponentConnector owner, - Object key) { - final int type = DOM.eventGetType(event); - if ((VTooltip.TOOLTIP_EVENTS & type) == type) { - if (type == Event.ONMOUSEOVER) { - showTooltip(owner, event, key); - } else if (type == Event.ONMOUSEMOVE) { - updatePosition(event); - } else { - hideTooltip(); - } - } else { - // non-tooltip event, hide tooltip - hideTooltip(); - } } @Override @@ -235,17 +201,152 @@ public class VTooltip extends VOverlay { // cancel closing event if tooltip is mouseovered; the user might want // to scroll of cut&paste - switch (type) { - case Event.ONMOUSEOVER: + if (type == Event.ONMOUSEOVER) { + // Cancel closing so tooltip stays open and user can copy paste the + // tooltip closeTimer.cancel(); closing = false; - break; - case Event.ONMOUSEOUT: + } + } + + /** + * Replace current open tooltip with new content + */ + public void replaceCurrentTooltip() { + if (closing) { + closeTimer.cancel(); + closeNow(); + } + + TooltipInfo info = tooltipEventHandler.getTooltipInfo(); + if (null != info) { + show(info); + } + opening = false; + } + + private class TooltipEventHandler implements MouseMoveHandler, + ClickHandler, KeyDownHandler { + + /** + * Current element hovered + */ + private com.google.gwt.dom.client.Element currentElement = null; + + /** + * Current tooltip active + */ + private TooltipInfo currentTooltipInfo = null; + + /** + * Get current active tooltip information + * + * @return Current active tooltip information or null + */ + public TooltipInfo getTooltipInfo() { + return currentTooltipInfo; + } + + /** + * Locate connector and it's tooltip for given element + * + * @param element + * Element used in search + * @return true if connector and tooltip found + */ + private boolean resolveConnector(Element element) { + + ComponentConnector connector = Util.getConnectorForElement(ac, + RootPanel.get(), element); + + // Try to find first connector with proper tooltip info + TooltipInfo info = null; + while (connector != null) { + + info = connector.getTooltipInfo(element); + + if (info != null && info.hasMessage()) { + break; + } + + if (!(connector.getParent() instanceof ComponentConnector)) { + connector = null; + info = null; + break; + } + connector = (ComponentConnector) connector.getParent(); + } + + if (connector != null && info != null) { + currentTooltipInfo = info; + return true; + } + + return false; + } + + /** + * Handle hide event + * + * @param event + * Event causing hide + */ + private void handleHideEvent() { hideTooltip(); - break; - default: - // NOP + currentTooltipInfo = null; + } + + @Override + public void onMouseMove(MouseMoveEvent mme) { + Event event = Event.as(mme.getNativeEvent()); + com.google.gwt.dom.client.Element element = Element.as(event + .getEventTarget()); + + // We can ignore move event if it's handled by move or over already + if (currentElement == element) { + return; + } + currentElement = element; + + boolean connectorAndTooltipFound = resolveConnector((com.google.gwt.user.client.Element) element); + if (!connectorAndTooltipFound) { + if (isShowing()) { + handleHideEvent(); + } else { + currentTooltipInfo = null; + } + } else { + updatePosition(event); + if (isShowing()) { + replaceCurrentTooltip(); + } else { + showTooltip(); + } + } + } + + @Override + public void onClick(ClickEvent event) { + handleHideEvent(); + } + + @Override + public void onKeyDown(KeyDownEvent event) { + handleHideEvent(); } } + private final TooltipEventHandler tooltipEventHandler = new TooltipEventHandler(); + + /** + * Connects DOM handlers to widget that are needed for tooltip presentation. + * + * @param widget + * Widget which DOM handlers are connected + */ + public void connectHandlersToWidget(Widget widget) { + widget.addDomHandler(tooltipEventHandler, MouseMoveEvent.getType()); + widget.addDomHandler(tooltipEventHandler, ClickEvent.getType()); + widget.addDomHandler(tooltipEventHandler, KeyDownEvent.getType()); + } } diff --git a/src/com/vaadin/terminal/gwt/client/VUIDLBrowser.java b/src/com/vaadin/terminal/gwt/client/VUIDLBrowser.java index 4230eda298..745d66c444 100644 --- a/src/com/vaadin/terminal/gwt/client/VUIDLBrowser.java +++ b/src/com/vaadin/terminal/gwt/client/VUIDLBrowser.java @@ -22,16 +22,29 @@ import com.google.gwt.dom.client.Style.Unit; import com.google.gwt.event.dom.client.ClickEvent; import com.google.gwt.event.dom.client.MouseOutEvent; import com.google.gwt.event.dom.client.MouseOutHandler; +import com.google.gwt.json.client.JSONArray; +import com.google.gwt.json.client.JSONObject; +import com.google.gwt.json.client.JSONValue; +import com.google.gwt.user.client.ui.HTML; import com.google.gwt.user.client.ui.RootPanel; import com.google.gwt.user.client.ui.Widget; import com.vaadin.terminal.gwt.client.ui.UnknownComponentConnector; import com.vaadin.terminal.gwt.client.ui.window.VWindow; +/** + * TODO Rename to something more Vaadin7-ish? + */ public class VUIDLBrowser extends SimpleTree { - private static final String HELP = "Shift click handle to open recursively. Click components to hightlight them on client side. Shift click components to highlight them also on the server side."; + private static final String HELP = "Shift click handle to open recursively. " + + " Click components to highlight them on client side." + + " Shift click components to highlight them also on the server side."; private ApplicationConfiguration conf; private String highlightedPid; + /** + * TODO Should probably take ApplicationConnection instead of + * ApplicationConfiguration + */ public VUIDLBrowser(final UIDL uidl, ApplicationConfiguration conf) { this.conf = conf; final UIDLItem root = new UIDLItem(uidl, conf); @@ -47,9 +60,18 @@ public class VUIDLBrowser extends SimpleTree { Set<String> keySet = u.getKeySet(); for (String key : keySet) { if (key.equals("state")) { - // TODO print updated shared states + + ValueMap stateJson = u.getValueMap(key); + SimpleTree stateChanges = new SimpleTree("Shared state"); + + for (String stateKey : stateJson.getKeySet()) { + stateChanges.add(new SharedStateItem(stateKey, stateJson + .getValueMap(stateKey))); + } + add(stateChanges); + } else if (key.equals("changes")) { - JsArray<UIDL> jsValueMapArray = u.getJSValueMapArray("changes") + JsArray<UIDL> jsValueMapArray = u.getJSValueMapArray(key) .cast(); for (int i = 0; i < jsValueMapArray.length(); i++) { UIDL uidl = jsValueMapArray.get(i); @@ -68,12 +90,107 @@ public class VUIDLBrowser extends SimpleTree { setTitle(HELP); } - class UIDLItem extends SimpleTree { + /** + * A debug view of a server-originated component state change. + */ + abstract class StateChangeItem extends SimpleTree { + + protected StateChangeItem() { + setTitle(HELP); + + addDomHandler(new MouseOutHandler() { + @Override + public void onMouseOut(MouseOutEvent event) { + deHiglight(); + } + }, MouseOutEvent.getType()); + } + + @Override + protected void select(ClickEvent event) { + ComponentConnector connector = getConnector(); + highlight(connector); + if (event != null && event.getNativeEvent().getShiftKey()) { + connector.getConnection().highlightComponent(connector); + } + super.select(event); + } + + /** + * Returns the Connector associated with this state change. + */ + protected ComponentConnector getConnector() { + List<ApplicationConnection> runningApplications = ApplicationConfiguration + .getRunningApplications(); + + // TODO this does not work properly with multiple application on + // same host page + for (ApplicationConnection applicationConnection : runningApplications) { + ServerConnector connector = ConnectorMap.get( + applicationConnection).getConnector(getConnectorId()); + if (connector instanceof ComponentConnector) { + return (ComponentConnector) connector; + } + } + return new UnknownComponentConnector(); + } + + protected abstract String getConnectorId(); + } + + /** + * A debug view of a Vaadin 7 style shared state change. + */ + class SharedStateItem extends StateChangeItem { + + private String connectorId; + + SharedStateItem(String connectorId, ValueMap stateChanges) { + this.connectorId = connectorId; + setText(connectorId); + dir(new JSONObject(stateChanges), this); + } + + @Override + protected String getConnectorId() { + return connectorId; + } + + private void dir(String key, JSONValue value, SimpleTree tree) { + if (value.isObject() != null) { + SimpleTree subtree = new SimpleTree(key + "=object"); + tree.add(subtree); + dir(value.isObject(), subtree); + } else if (value.isArray() != null) { + SimpleTree subtree = new SimpleTree(key + "=array"); + dir(value.isArray(), subtree); + tree.add(subtree); + } else { + tree.add(new HTML(key + "=" + value)); + } + } + + private void dir(JSONObject state, SimpleTree tree) { + for (String key : state.keySet()) { + dir(key, state.get(key), tree); + } + } + + private void dir(JSONArray array, SimpleTree tree) { + for (int i = 0; i < array.size(); ++i) { + dir("" + i, array.get(i), tree); + } + } + } + + /** + * A debug view of a Vaadin 6 style hierarchical component state change. + */ + class UIDLItem extends StateChangeItem { private UIDL uidl; UIDLItem(UIDL uidl, ApplicationConfiguration conf) { - setTitle(HELP); this.uidl = uidl; try { String name = uidl.getTag(); @@ -87,13 +204,11 @@ public class VUIDLBrowser extends SimpleTree { } catch (Exception e) { setText(uidl.toString()); } + } - addDomHandler(new MouseOutHandler() { - public void onMouseOut(MouseOutEvent event) { - deHiglight(); - } - }, MouseOutEvent.getType()); - + @Override + protected String getConnectorId() { + return uidl.getId(); } private String getNodeName(UIDL uidl, ApplicationConfiguration conf, @@ -118,26 +233,6 @@ public class VUIDLBrowser extends SimpleTree { super.open(recursive); } - @Override - protected void select(ClickEvent event) { - List<ApplicationConnection> runningApplications = ApplicationConfiguration - .getRunningApplications(); - - // TODO this does not work properly with multiple application on - // same - // host page - for (ApplicationConnection applicationConnection : runningApplications) { - ComponentConnector paintable = (ComponentConnector) ConnectorMap - .get(applicationConnection).getConnector(uidl.getId()); - highlight(paintable); - if (event != null && event.getNativeEvent().getShiftKey()) { - applicationConnection.highlightComponent(paintable); - } - } - - super.select(event); - } - public void dir() { remove(0); @@ -218,6 +313,7 @@ public class VUIDLBrowser extends SimpleTree { if (highlightedPid != null && highlightedPid.equals(uidl.getId())) { getElement().getStyle().setBackgroundColor("#fdd"); Scheduler.get().scheduleDeferred(new ScheduledCommand() { + @Override public void execute() { getElement().scrollIntoView(); } diff --git a/src/com/vaadin/terminal/gwt/client/WidgetLoader.java b/src/com/vaadin/terminal/gwt/client/WidgetLoader.java index 16e99716a0..749a8343c8 100644 --- a/src/com/vaadin/terminal/gwt/client/WidgetLoader.java +++ b/src/com/vaadin/terminal/gwt/client/WidgetLoader.java @@ -8,13 +8,15 @@ import com.google.gwt.core.client.RunAsyncCallback; /** A helper class used by WidgetMap implementation. Used by the generated code. */ abstract class WidgetLoader implements RunAsyncCallback { + @Override public void onFailure(Throwable reason) { - ApplicationConfiguration.endWidgetLoading(); + ApplicationConfiguration.endDependencyLoading(); } + @Override public void onSuccess() { addInstantiator(); - ApplicationConfiguration.endWidgetLoading(); + ApplicationConfiguration.endDependencyLoading(); } abstract void addInstantiator(); diff --git a/src/com/vaadin/terminal/gwt/client/communication/InitializableServerRpc.java b/src/com/vaadin/terminal/gwt/client/communication/InitializableServerRpc.java index 0270de316e..f1b6b44b7d 100644 --- a/src/com/vaadin/terminal/gwt/client/communication/InitializableServerRpc.java +++ b/src/com/vaadin/terminal/gwt/client/communication/InitializableServerRpc.java @@ -3,6 +3,7 @@ */ package com.vaadin.terminal.gwt.client.communication; +import com.vaadin.shared.communication.ServerRpc; import com.vaadin.terminal.gwt.client.ServerConnector; /** diff --git a/src/com/vaadin/terminal/gwt/client/communication/JsonDecoder.java b/src/com/vaadin/terminal/gwt/client/communication/JsonDecoder.java index 23a2c30cd0..7268acdfc5 100644 --- a/src/com/vaadin/terminal/gwt/client/communication/JsonDecoder.java +++ b/src/com/vaadin/terminal/gwt/client/communication/JsonDecoder.java @@ -16,8 +16,8 @@ import com.google.gwt.json.client.JSONArray; import com.google.gwt.json.client.JSONObject; import com.google.gwt.json.client.JSONString; import com.google.gwt.json.client.JSONValue; +import com.vaadin.shared.Connector; import com.vaadin.terminal.gwt.client.ApplicationConnection; -import com.vaadin.terminal.gwt.client.Connector; import com.vaadin.terminal.gwt.client.ConnectorMap; /** diff --git a/src/com/vaadin/terminal/gwt/client/communication/JsonEncoder.java b/src/com/vaadin/terminal/gwt/client/communication/JsonEncoder.java index 925f0b6272..404f1238e0 100644 --- a/src/com/vaadin/terminal/gwt/client/communication/JsonEncoder.java +++ b/src/com/vaadin/terminal/gwt/client/communication/JsonEncoder.java @@ -17,8 +17,9 @@ import com.google.gwt.json.client.JSONNumber; import com.google.gwt.json.client.JSONObject; import com.google.gwt.json.client.JSONString; import com.google.gwt.json.client.JSONValue; +import com.vaadin.shared.Connector; +import com.vaadin.shared.communication.UidlValue; import com.vaadin.terminal.gwt.client.ApplicationConnection; -import com.vaadin.terminal.gwt.client.Connector; /** * Encoder for converting RPC parameters and other values to JSON for transfer diff --git a/src/com/vaadin/terminal/gwt/client/communication/RpcManager.java b/src/com/vaadin/terminal/gwt/client/communication/RpcManager.java index 07d6292ce2..b1c91fe049 100644 --- a/src/com/vaadin/terminal/gwt/client/communication/RpcManager.java +++ b/src/com/vaadin/terminal/gwt/client/communication/RpcManager.java @@ -11,6 +11,8 @@ import java.util.Map; import com.google.gwt.core.client.GWT; import com.google.gwt.json.client.JSONArray; import com.google.gwt.json.client.JSONString; +import com.vaadin.shared.communication.ClientRpc; +import com.vaadin.shared.communication.MethodInvocation; import com.vaadin.terminal.gwt.client.ApplicationConnection; import com.vaadin.terminal.gwt.client.ConnectorMap; import com.vaadin.terminal.gwt.client.ServerConnector; diff --git a/src/com/vaadin/terminal/gwt/client/communication/RpcMethod.java b/src/com/vaadin/terminal/gwt/client/communication/RpcMethod.java index abdcf73e2c..ce9c5b468b 100644 --- a/src/com/vaadin/terminal/gwt/client/communication/RpcMethod.java +++ b/src/com/vaadin/terminal/gwt/client/communication/RpcMethod.java @@ -3,6 +3,8 @@ */ package com.vaadin.terminal.gwt.client.communication; +import com.vaadin.shared.communication.ClientRpc; + public abstract class RpcMethod { private String interfaceName; private String methodName; diff --git a/src/com/vaadin/terminal/gwt/client/communication/RpcProxy.java b/src/com/vaadin/terminal/gwt/client/communication/RpcProxy.java index 113ec1f1b1..996c148f4f 100644 --- a/src/com/vaadin/terminal/gwt/client/communication/RpcProxy.java +++ b/src/com/vaadin/terminal/gwt/client/communication/RpcProxy.java @@ -4,6 +4,7 @@ package com.vaadin.terminal.gwt.client.communication; import com.google.gwt.core.client.GWT; +import com.vaadin.shared.communication.ServerRpc; import com.vaadin.terminal.gwt.client.ServerConnector; /** diff --git a/src/com/vaadin/terminal/gwt/client/communication/URLReference_Serializer.java b/src/com/vaadin/terminal/gwt/client/communication/URLReference_Serializer.java index bab0f385ed..f39cad1899 100644 --- a/src/com/vaadin/terminal/gwt/client/communication/URLReference_Serializer.java +++ b/src/com/vaadin/terminal/gwt/client/communication/URLReference_Serializer.java @@ -6,6 +6,7 @@ package com.vaadin.terminal.gwt.client.communication; import com.google.gwt.core.client.GWT; import com.google.gwt.json.client.JSONObject; import com.google.gwt.json.client.JSONValue; +import com.vaadin.shared.communication.URLReference; import com.vaadin.terminal.gwt.client.ApplicationConnection; public class URLReference_Serializer implements JSONSerializer<URLReference> { @@ -13,6 +14,7 @@ public class URLReference_Serializer implements JSONSerializer<URLReference> { // setURL() -> uRL as first char becomes lower case... private static final String URL_FIELD = "uRL"; + @Override public URLReference deserialize(Type type, JSONValue jsonValue, ApplicationConnection connection) { URLReference reference = GWT.create(URLReference.class); @@ -27,6 +29,7 @@ public class URLReference_Serializer implements JSONSerializer<URLReference> { return reference; } + @Override public JSONValue serialize(URLReference value, ApplicationConnection connection) { JSONObject json = new JSONObject(); diff --git a/src/com/vaadin/terminal/gwt/client/extensions/javascriptmanager/JavaScriptManagerConnector.java b/src/com/vaadin/terminal/gwt/client/extensions/javascriptmanager/JavaScriptManagerConnector.java index 8656783a86..d5849096fa 100644 --- a/src/com/vaadin/terminal/gwt/client/extensions/javascriptmanager/JavaScriptManagerConnector.java +++ b/src/com/vaadin/terminal/gwt/client/extensions/javascriptmanager/JavaScriptManagerConnector.java @@ -10,10 +10,12 @@ import java.util.Set; import com.google.gwt.core.client.JavaScriptObject; import com.google.gwt.core.client.JsArray; import com.google.gwt.json.client.JSONArray; -import com.vaadin.terminal.gwt.client.communication.MethodInvocation; +import com.vaadin.shared.communication.MethodInvocation; +import com.vaadin.shared.extension.javascriptmanager.ExecuteJavaScriptRpc; +import com.vaadin.shared.extension.javascriptmanager.JavaScriptManagerState; +import com.vaadin.shared.ui.Connect; import com.vaadin.terminal.gwt.client.communication.StateChangeEvent; import com.vaadin.terminal.gwt.client.extensions.AbstractExtensionConnector; -import com.vaadin.terminal.gwt.client.ui.Connect; import com.vaadin.ui.JavaScript; @Connect(JavaScript.class) @@ -23,6 +25,7 @@ public class JavaScriptManagerConnector extends AbstractExtensionConnector { @Override protected void init() { registerRpc(ExecuteJavaScriptRpc.class, new ExecuteJavaScriptRpc() { + @Override public void executeJavaScript(String Script) { eval(Script); } diff --git a/src/com/vaadin/terminal/gwt/client/ui/AbstractClickEventHandler.java b/src/com/vaadin/terminal/gwt/client/ui/AbstractClickEventHandler.java index e0ca798682..9de465e4a5 100644 --- a/src/com/vaadin/terminal/gwt/client/ui/AbstractClickEventHandler.java +++ b/src/com/vaadin/terminal/gwt/client/ui/AbstractClickEventHandler.java @@ -53,6 +53,7 @@ public abstract class AbstractClickEventHandler implements MouseDownHandler, */ private final NativePreviewHandler mouseUpPreviewHandler = new NativePreviewHandler() { + @Override public void onPreviewNativeEvent(NativePreviewEvent event) { if (event.getTypeInt() == Event.ONMOUSEUP) { mouseUpEventPreviewRegistration.removeHandler(); @@ -144,6 +145,7 @@ public abstract class AbstractClickEventHandler implements MouseDownHandler, * popping up if there is a listener for right clicks. */ + @Override public void onContextMenu(ContextMenuEvent event) { if (hasEventListener() && shouldFireEvent(event)) { // Prevent showing the browser's context menu when there is a right @@ -152,6 +154,7 @@ public abstract class AbstractClickEventHandler implements MouseDownHandler, } } + @Override public void onMouseDown(MouseDownEvent event) { /* * When getting a mousedown event, we must detect where the @@ -163,6 +166,7 @@ public abstract class AbstractClickEventHandler implements MouseDownHandler, .addNativePreviewHandler(mouseUpPreviewHandler); } + @Override public void onMouseUp(MouseUpEvent event) { /* * Only fire a click if the mouseup hits the same element as the @@ -208,6 +212,7 @@ public abstract class AbstractClickEventHandler implements MouseDownHandler, * double click will result in two click events and one double click event. */ + @Override public void onDoubleClick(DoubleClickEvent event) { if (hasEventListener() && shouldFireEvent(event)) { fireClick(event.getNativeEvent()); diff --git a/src/com/vaadin/terminal/gwt/client/ui/AbstractComponentConnector.java b/src/com/vaadin/terminal/gwt/client/ui/AbstractComponentConnector.java index a621c488be..ba3a53691a 100644 --- a/src/com/vaadin/terminal/gwt/client/ui/AbstractComponentConnector.java +++ b/src/com/vaadin/terminal/gwt/client/ui/AbstractComponentConnector.java @@ -3,18 +3,20 @@ */ package com.vaadin.terminal.gwt.client.ui; -import java.util.LinkedList; +import java.util.ArrayList; import java.util.List; import java.util.Set; +import com.google.gwt.dom.client.Element; import com.google.gwt.user.client.ui.Focusable; import com.google.gwt.user.client.ui.HasEnabled; import com.google.gwt.user.client.ui.Widget; +import com.vaadin.shared.ComponentState; +import com.vaadin.shared.Connector; +import com.vaadin.shared.ui.TabIndexState; import com.vaadin.terminal.gwt.client.ApplicationConnection; import com.vaadin.terminal.gwt.client.ComponentConnector; import com.vaadin.terminal.gwt.client.ComponentContainerConnector; -import com.vaadin.terminal.gwt.client.ComponentState; -import com.vaadin.terminal.gwt.client.Connector; import com.vaadin.terminal.gwt.client.ConnectorMap; import com.vaadin.terminal.gwt.client.LayoutManager; import com.vaadin.terminal.gwt.client.ServerConnector; @@ -23,6 +25,7 @@ import com.vaadin.terminal.gwt.client.UIDL; import com.vaadin.terminal.gwt.client.Util; import com.vaadin.terminal.gwt.client.VConsole; import com.vaadin.terminal.gwt.client.communication.StateChangeEvent; +import com.vaadin.terminal.gwt.client.ui.datefield.PopupDateFieldConnector; import com.vaadin.terminal.gwt.client.ui.root.RootConnector; public abstract class AbstractComponentConnector extends AbstractConnector @@ -33,7 +36,11 @@ public abstract class AbstractComponentConnector extends AbstractConnector private String lastKnownWidth = ""; private String lastKnownHeight = ""; - List<String> styleNames; + /** + * The style names from getState().getStyles() which are currently applied + * to the widget. + */ + protected List<String> styleNames = new ArrayList<String>(); /** * Default constructor @@ -41,6 +48,16 @@ public abstract class AbstractComponentConnector extends AbstractConnector public AbstractComponentConnector() { } + @Override + protected void init() { + super.init(); + + getConnection().getVTooltip().connectHandlersToWidget(getWidget()); + + // Set v-connector style names for the widget + getWidget().setStyleName("v-connector", true); + } + /** * Creates and returns the widget for this VPaintableWidget. This method * should only be called once when initializing the paintable. @@ -57,6 +74,7 @@ public abstract class AbstractComponentConnector extends AbstractConnector * * @return The widget associated with this paintable */ + @Override public Widget getWidget() { if (widget == null) { widget = createWidget(); @@ -100,19 +118,7 @@ public abstract class AbstractComponentConnector extends AbstractConnector super.onStateChanged(stateChangeEvent); // Style names - // String styleName = getStyleNames(getWidget().getStylePrimaryName()); - // getWidget().setStyleName(styleName); - updateStyleNames(); - - // Update tooltip - TooltipInfo tooltipInfo = paintableMap.getTooltipInfo(this, null); - if (getState().hasDescription()) { - tooltipInfo.setTitle(getState().getDescription()); - } else { - tooltipInfo.setTitle(null); - } - // add error info to tooltip if present - tooltipInfo.setErrorMessage(getState().getErrorMessage()); + updateWidgetStyleNames(); // Set captions if (delegateCaptionHandling()) { @@ -134,13 +140,16 @@ public abstract class AbstractComponentConnector extends AbstractConnector updateComponentSize(); } + @Override public void setWidgetEnabled(boolean widgetEnabled) { + // add or remove v-disabled style name from the widget + setWidgetStyleName(ApplicationConnection.DISABLED_CLASSNAME, + !widgetEnabled); + if (getWidget() instanceof HasEnabled) { // set widget specific enabled state ((HasEnabled) getWidget()).setEnabled(widgetEnabled); - // add or remove v-disabled style name from the widget - getWidget().setStyleName(ApplicationConnection.DISABLED_CLASSNAME, - !widgetEnabled); + // make sure the caption has or has not v-disabled style if (delegateCaptionHandling()) { ServerConnector parent = getParent(); @@ -190,18 +199,22 @@ public abstract class AbstractComponentConnector extends AbstractConnector widget.setWidth(newWidth); } + @Override public boolean isRelativeHeight() { return getState().getHeight().endsWith("%"); } + @Override public boolean isRelativeWidth() { return getState().getWidth().endsWith("%"); } + @Override public boolean isUndefinedHeight() { return getState().getHeight().length() == 0; } + @Override public boolean isUndefinedWidth() { return getState().getWidth().length() == 0; } @@ -213,111 +226,118 @@ public abstract class AbstractComponentConnector extends AbstractConnector * com.vaadin.terminal.gwt.client.ComponentConnector#delegateCaptionHandling * () */ + @Override public boolean delegateCaptionHandling() { return true; } /** - * Generates the style name for the widget based on the given primary style - * name and the shared state. + * Updates the user defined, read-only and error style names for the widget + * based the shared state. User defined style names are prefixed with the + * primary style name of the widget returned by {@link #getWidget()} * <p> * This method can be overridden to provide additional style names for the - * component + * component, for example see + * {@link AbstractFieldConnector#updateWidgetStyleNames()} * </p> - * - * @param primaryStyleName - * The primary style name to use when generating the final style - * names - * @return The style names, settable using - * {@link Widget#setStyleName(String)} */ - protected String getStyleNames(String primaryStyleName) { + protected void updateWidgetStyleNames() { ComponentState state = getState(); - StringBuilder styleBuf = new StringBuilder(); - styleBuf.append(primaryStyleName); - styleBuf.append(" v-connector"); + String primaryStyleName = getWidget().getStylePrimaryName(); - // Uses connector methods to enable connectors to take hierarchy or - // multiple state variables into account - if (!isEnabled()) { - styleBuf.append(" "); - styleBuf.append(ApplicationConnection.DISABLED_CLASSNAME); - } - if (isReadOnly()) { - styleBuf.append(" "); - styleBuf.append("v-readonly"); - } + // should be in AbstractFieldConnector ? + // add / remove read-only style name + setWidgetStyleName("v-readonly", isReadOnly()); + + // add / remove error style name + setWidgetStyleNameWithPrefix(primaryStyleName, + ApplicationConnection.ERROR_CLASSNAME_EXT, + null != state.getErrorMessage()); - // add additional styles as css classes, prefixed with component default - // stylename + // add additional user defined style names as class names, prefixed with + // component default class name. remove nonexistent style names. if (state.hasStyles()) { - for (String style : state.getStyles()) { - styleBuf.append(" "); - styleBuf.append(primaryStyleName); - styleBuf.append("-"); - styleBuf.append(style); - styleBuf.append(" "); - styleBuf.append(style); + // add new style names + List<String> newStyles = new ArrayList<String>(); + newStyles.addAll(state.getStyles()); + newStyles.removeAll(styleNames); + for (String newStyle : newStyles) { + setWidgetStyleName(newStyle, true); + setWidgetStyleNameWithPrefix(primaryStyleName + "-", newStyle, + true); } + // remove nonexistent style names + styleNames.removeAll(state.getStyles()); + for (String oldStyle : styleNames) { + setWidgetStyleName(oldStyle, false); + setWidgetStyleNameWithPrefix(primaryStyleName + "-", oldStyle, + false); + } + styleNames.clear(); + styleNames.addAll(state.getStyles()); + } else { + // remove all old style names + for (String oldStyle : styleNames) { + setWidgetStyleName(oldStyle, false); + setWidgetStyleNameWithPrefix(primaryStyleName + "-", oldStyle, + false); + } + styleNames.clear(); } - // add error classname to components w/ error - if (null != state.getErrorMessage()) { - styleBuf.append(" "); - styleBuf.append(primaryStyleName); - styleBuf.append(ApplicationConnection.ERROR_CLASSNAME_EXT); - } - - return styleBuf.toString(); } - protected void updateStyleNames() { - Widget widget = getWidget(); - - widget.addStyleName("v"); - - // Disabled - if (!isEnabled()) { - widget.addStyleName(ApplicationConnection.DISABLED_CLASSNAME); - } else { - widget.removeStyleName(ApplicationConnection.DISABLED_CLASSNAME); - } - - // Read-only - if (isReadOnly()) { - widget.addStyleName("v-readonly"); - } else { - widget.removeStyleName("v-readonly"); - } + /** + * This is used to add / remove state related style names from the widget. + * <p> + * Override this method for example if the style name given here should be + * updated in another widget in addition to the one returned by the + * {@link #getWidget()}. + * </p> + * + * @param styleName + * the style name to be added or removed + * @param add + * <code>true</code> to add the given style, <code>false</code> + * to remove it + */ + protected void setWidgetStyleName(String styleName, boolean add) { + getWidget().setStyleName(styleName, add); + } - // Error - if (null != getState().getErrorMessage()) { - widget.addStyleDependentName("error"); + /** + * This is used to add / remove state related prefixed style names from the + * widget. + * <p> + * Override this method if the prefixed style name given here should be + * updated in another widget in addition to the one returned by the + * <code>Connector</code>'s {@link #getWidget()}, or if the prefix should be + * different. For example see + * {@link PopupDateFieldConnector#setWidgetStyleNameWithPrefix(String, String, boolean)} + * </p> + * + * @param styleName + * the style name to be added or removed + * @param add + * <code>true</code> to add the given style, <code>false</code> + * to remove it + * @deprecated This will be removed once styles are no longer added with + * prefixes. + */ + @Deprecated + protected void setWidgetStyleNameWithPrefix(String prefix, + String styleName, boolean add) { + if (!styleName.startsWith("-")) { + if (!prefix.endsWith("-")) { + prefix += "-"; + } } else { - widget.removeStyleDependentName("error"); - } - - // Additional style names - List<String> newStyleNames = getState().getStyles(); - if (newStyleNames == null) { - newStyleNames = new LinkedList<String>(); - } - if (styleNames != null) { - // Remove previous styles which are no longer in the current list - for (String style : styleNames) { - if (!newStyleNames.contains(style)) { - widget.removeStyleName(style); - widget.removeStyleDependentName(style); - } + if (prefix.endsWith("-")) { + styleName.replaceFirst("-", ""); } } - // Add any new styles - for (String style : newStyleNames) { - widget.addStyleName(style); - widget.addStyleDependentName(style); - } - styleNames = newStyleNames; + getWidget().setStyleName(prefix + styleName, add); } /* @@ -325,11 +345,13 @@ public abstract class AbstractComponentConnector extends AbstractConnector * * @see com.vaadin.terminal.gwt.client.ComponentConnector#isReadOnly() */ + @Override @Deprecated public boolean isReadOnly() { return getState().isReadOnly(); } + @Override public LayoutManager getLayoutManager() { return LayoutManager.get(getConnection()); } @@ -343,6 +365,7 @@ public abstract class AbstractComponentConnector extends AbstractConnector * @return true if an event listener has been registered with the given * event identifier on the server side, false otherwise */ + @Override public boolean hasEventListener(String eventIdentifier) { Set<String> reg = getState().getRegisteredEventListeners(); return (reg != null && reg.contains(eventIdentifier)); @@ -368,4 +391,17 @@ public abstract class AbstractComponentConnector extends AbstractConnector + ") has been unregistered. Widget was removed."); } } + + /* + * (non-Javadoc) + * + * @see + * com.vaadin.terminal.gwt.client.ComponentConnector#getTooltipInfo(com. + * google.gwt.dom.client.Element) + */ + @Override + public TooltipInfo getTooltipInfo(Element element) { + return new TooltipInfo(getState().getDescription(), getState() + .getErrorMessage()); + } } diff --git a/src/com/vaadin/terminal/gwt/client/ui/AbstractComponentContainerConnector.java b/src/com/vaadin/terminal/gwt/client/ui/AbstractComponentContainerConnector.java index c6bfba5023..6b294e65b8 100644 --- a/src/com/vaadin/terminal/gwt/client/ui/AbstractComponentContainerConnector.java +++ b/src/com/vaadin/terminal/gwt/client/ui/AbstractComponentContainerConnector.java @@ -35,6 +35,7 @@ public abstract class AbstractComponentContainerConnector extends * @see * com.vaadin.terminal.gwt.client.ComponentContainerConnector#getChildren() */ + @Override public List<ComponentConnector> getChildComponents() { if (childComponents == null) { return Collections.emptyList(); @@ -50,6 +51,7 @@ public abstract class AbstractComponentContainerConnector extends * com.vaadin.terminal.gwt.client.ComponentContainerConnector#setChildren * (java.util.Collection) */ + @Override public void setChildComponents(List<ComponentConnector> childComponents) { this.childComponents = childComponents; } @@ -61,6 +63,7 @@ public abstract class AbstractComponentContainerConnector extends * connectorHierarchyChanged * (com.vaadin.terminal.gwt.client.ConnectorHierarchyChangedEvent) */ + @Override public void onConnectorHierarchyChange(ConnectorHierarchyChangeEvent event) { if (debugLogging) { VConsole.log("Hierarchy changed for " @@ -79,6 +82,7 @@ public abstract class AbstractComponentContainerConnector extends } } + @Override public HandlerRegistration addConnectorHierarchyChangeHandler( ConnectorHierarchyChangeHandler handler) { return ensureHandlerManager().addHandler( diff --git a/src/com/vaadin/terminal/gwt/client/ui/AbstractConnector.java b/src/com/vaadin/terminal/gwt/client/ui/AbstractConnector.java index d34529ee4e..4efd2f5c2f 100644 --- a/src/com/vaadin/terminal/gwt/client/ui/AbstractConnector.java +++ b/src/com/vaadin/terminal/gwt/client/ui/AbstractConnector.java @@ -13,12 +13,12 @@ import java.util.Map; import com.google.gwt.event.shared.GwtEvent; import com.google.gwt.event.shared.HandlerManager; import com.google.web.bindery.event.shared.HandlerRegistration; +import com.vaadin.shared.communication.ClientRpc; +import com.vaadin.shared.communication.SharedState; import com.vaadin.terminal.gwt.client.ApplicationConnection; import com.vaadin.terminal.gwt.client.ServerConnector; import com.vaadin.terminal.gwt.client.Util; import com.vaadin.terminal.gwt.client.VConsole; -import com.vaadin.terminal.gwt.client.communication.ClientRpc; -import com.vaadin.terminal.gwt.client.communication.SharedState; import com.vaadin.terminal.gwt.client.communication.StateChangeEvent; import com.vaadin.terminal.gwt.client.communication.StateChangeEvent.StateChangeHandler; @@ -57,6 +57,7 @@ public abstract class AbstractConnector implements ServerConnector, * * @see com.vaadin.terminal.gwt.client.VPaintable#getConnection() */ + @Override public final ApplicationConnection getConnection() { return connection; } @@ -66,6 +67,7 @@ public abstract class AbstractConnector implements ServerConnector, * * @see com.vaadin.terminal.gwt.client.Connector#getId() */ + @Override public String getConnectorId() { return id; } @@ -78,6 +80,7 @@ public abstract class AbstractConnector implements ServerConnector, * <p> * Connector classes should override {@link #init()} instead of this method. */ + @Override public final void doInit(String connectorId, ApplicationConnection connection) { this.connection = connection; @@ -140,6 +143,7 @@ public abstract class AbstractConnector implements ServerConnector, } } + @Override public <T extends ClientRpc> Collection<T> getRpcImplementations( String rpcInterfaceId) { if (null == rpcImplementations) { @@ -148,6 +152,7 @@ public abstract class AbstractConnector implements ServerConnector, return (Collection<T>) rpcImplementations.get(rpcInterfaceId); } + @Override public void fireEvent(GwtEvent<?> event) { if (handlerManager != null) { handlerManager.fireEvent(event); @@ -162,11 +167,13 @@ public abstract class AbstractConnector implements ServerConnector, return handlerManager; } + @Override public HandlerRegistration addStateChangeHandler(StateChangeHandler handler) { return ensureHandlerManager() .addHandler(StateChangeEvent.TYPE, handler); } + @Override public void removeStateChangeHandler(StateChangeHandler handler) { ensureHandlerManager().removeHandler(StateChangeEvent.TYPE, handler); } @@ -186,6 +193,7 @@ public abstract class AbstractConnector implements ServerConnector, * * @see com.vaadin.terminal.gwt.client.ServerConnector#onUnregister() */ + @Override public void onUnregister() { if (debugLogging) { VConsole.log("Unregistered connector " @@ -201,6 +209,7 @@ public abstract class AbstractConnector implements ServerConnector, * * @return the current shared state (never null) */ + @Override public SharedState getState() { if (state == null) { state = createState(); @@ -221,14 +230,17 @@ public abstract class AbstractConnector implements ServerConnector, return ConnectorStateFactory.createState(getClass()); } + @Override public ServerConnector getParent() { return parent; } + @Override public void setParent(ServerConnector parent) { this.parent = parent; } + @Override public List<ServerConnector> getChildren() { if (children == null) { return Collections.emptyList(); @@ -236,10 +248,12 @@ public abstract class AbstractConnector implements ServerConnector, return children; } + @Override public void setChildren(List<ServerConnector> children) { this.children = children; } + @Override public boolean isEnabled() { if (!getState().isEnabled()) { return false; @@ -252,6 +266,7 @@ public abstract class AbstractConnector implements ServerConnector, } } + @Override public void updateEnabledState(boolean enabledState) { if (lastEnabledState == enabledState) { return; diff --git a/src/com/vaadin/terminal/gwt/client/ui/AbstractFieldConnector.java b/src/com/vaadin/terminal/gwt/client/ui/AbstractFieldConnector.java index 4be0f02c2a..4611b5a4ed 100644 --- a/src/com/vaadin/terminal/gwt/client/ui/AbstractFieldConnector.java +++ b/src/com/vaadin/terminal/gwt/client/ui/AbstractFieldConnector.java @@ -3,7 +3,7 @@ */ package com.vaadin.terminal.gwt.client.ui; -import com.vaadin.terminal.gwt.client.AbstractFieldState; +import com.vaadin.shared.AbstractFieldState; import com.vaadin.terminal.gwt.client.ApplicationConnection; public abstract class AbstractFieldConnector extends AbstractComponentConnector { @@ -35,20 +35,15 @@ public abstract class AbstractFieldConnector extends AbstractComponentConnector } @Override - protected String getStyleNames(String primaryStyleName) { - String styleNames = super.getStyleNames(primaryStyleName); + protected void updateWidgetStyleNames() { + super.updateWidgetStyleNames(); - if (isModified()) { - // add modified classname to Fields - styleNames += " " + ApplicationConnection.MODIFIED_CLASSNAME; - } + // add / remove modified style name to Fields + setWidgetStyleName(ApplicationConnection.MODIFIED_CLASSNAME, + isModified()); - if (isRequired()) { - // add required classname to Fields - styleNames += " " + primaryStyleName - + ApplicationConnection.REQUIRED_CLASSNAME_EXT; - } - - return styleNames; + // add / remove error style name to Fields + setWidgetStyleNameWithPrefix(getWidget().getStylePrimaryName(), + ApplicationConnection.REQUIRED_CLASSNAME_EXT, isRequired()); } } diff --git a/src/com/vaadin/terminal/gwt/client/ui/AbstractLayoutConnector.java b/src/com/vaadin/terminal/gwt/client/ui/AbstractLayoutConnector.java index 175e67807f..cd059357a8 100644 --- a/src/com/vaadin/terminal/gwt/client/ui/AbstractLayoutConnector.java +++ b/src/com/vaadin/terminal/gwt/client/ui/AbstractLayoutConnector.java @@ -3,6 +3,8 @@ */ package com.vaadin.terminal.gwt.client.ui; +import com.vaadin.shared.ui.AbstractLayoutState; + public abstract class AbstractLayoutConnector extends AbstractComponentContainerConnector { diff --git a/src/com/vaadin/terminal/gwt/client/ui/Action.java b/src/com/vaadin/terminal/gwt/client/ui/Action.java index ca13cfc7f3..1a92e30f3f 100644 --- a/src/com/vaadin/terminal/gwt/client/ui/Action.java +++ b/src/com/vaadin/terminal/gwt/client/ui/Action.java @@ -25,6 +25,7 @@ public abstract class Action implements Command { /** * Executed when action fired */ + @Override public abstract void execute(); public String getHTML() { diff --git a/src/com/vaadin/terminal/gwt/client/ui/ClickEventHandler.java b/src/com/vaadin/terminal/gwt/client/ui/ClickEventHandler.java index 758f798ef2..b7b6b13d3c 100644 --- a/src/com/vaadin/terminal/gwt/client/ui/ClickEventHandler.java +++ b/src/com/vaadin/terminal/gwt/client/ui/ClickEventHandler.java @@ -4,8 +4,8 @@ package com.vaadin.terminal.gwt.client.ui; import com.google.gwt.dom.client.NativeEvent; +import com.vaadin.shared.MouseEventDetails; import com.vaadin.terminal.gwt.client.ComponentConnector; -import com.vaadin.terminal.gwt.client.MouseEventDetails; import com.vaadin.terminal.gwt.client.MouseEventDetailsBuilder; public abstract class ClickEventHandler extends AbstractClickEventHandler { diff --git a/src/com/vaadin/terminal/gwt/client/ui/ConnectorClassBasedFactory.java b/src/com/vaadin/terminal/gwt/client/ui/ConnectorClassBasedFactory.java index 051ebdc6df..79dc138df9 100644 --- a/src/com/vaadin/terminal/gwt/client/ui/ConnectorClassBasedFactory.java +++ b/src/com/vaadin/terminal/gwt/client/ui/ConnectorClassBasedFactory.java @@ -6,7 +6,7 @@ package com.vaadin.terminal.gwt.client.ui; import java.util.HashMap; import java.util.Map; -import com.vaadin.terminal.gwt.client.Connector; +import com.vaadin.shared.Connector; public abstract class ConnectorClassBasedFactory<T> { public interface Creator<T> { diff --git a/src/com/vaadin/terminal/gwt/client/ui/ConnectorStateFactory.java b/src/com/vaadin/terminal/gwt/client/ui/ConnectorStateFactory.java index 86e651a0a5..535fd29dfe 100644 --- a/src/com/vaadin/terminal/gwt/client/ui/ConnectorStateFactory.java +++ b/src/com/vaadin/terminal/gwt/client/ui/ConnectorStateFactory.java @@ -4,8 +4,8 @@ package com.vaadin.terminal.gwt.client.ui; import com.google.gwt.core.client.GWT; -import com.vaadin.terminal.gwt.client.Connector; -import com.vaadin.terminal.gwt.client.communication.SharedState; +import com.vaadin.shared.Connector; +import com.vaadin.shared.communication.SharedState; public abstract class ConnectorStateFactory extends ConnectorClassBasedFactory<SharedState> { diff --git a/src/com/vaadin/terminal/gwt/client/ui/ConnectorWidgetFactory.java b/src/com/vaadin/terminal/gwt/client/ui/ConnectorWidgetFactory.java index 063d9f03a1..03d2069a94 100644 --- a/src/com/vaadin/terminal/gwt/client/ui/ConnectorWidgetFactory.java +++ b/src/com/vaadin/terminal/gwt/client/ui/ConnectorWidgetFactory.java @@ -15,6 +15,7 @@ public abstract class ConnectorWidgetFactory extends // TODO Move to generator { addCreator(TextFieldConnector.class, new Creator<Widget>() { + @Override public Widget create() { return GWT.create(VTextField.class); } diff --git a/src/com/vaadin/terminal/gwt/client/ui/FocusableFlexTable.java b/src/com/vaadin/terminal/gwt/client/ui/FocusableFlexTable.java index fc97bafc46..2fac234587 100644 --- a/src/com/vaadin/terminal/gwt/client/ui/FocusableFlexTable.java +++ b/src/com/vaadin/terminal/gwt/client/ui/FocusableFlexTable.java @@ -42,6 +42,7 @@ public class FocusableFlexTable extends FlexTable implements HasFocusHandlers, * com.google.gwt.event.dom.client.HasFocusHandlers#addFocusHandler(com. * google.gwt.event.dom.client.FocusHandler) */ + @Override public HandlerRegistration addFocusHandler(FocusHandler handler) { return addDomHandler(handler, FocusEvent.getType()); } @@ -53,6 +54,7 @@ public class FocusableFlexTable extends FlexTable implements HasFocusHandlers, * com.google.gwt.event.dom.client.HasBlurHandlers#addBlurHandler(com.google * .gwt.event.dom.client.BlurHandler) */ + @Override public HandlerRegistration addBlurHandler(BlurHandler handler) { return addDomHandler(handler, BlurEvent.getType()); } @@ -64,6 +66,7 @@ public class FocusableFlexTable extends FlexTable implements HasFocusHandlers, * com.google.gwt.event.dom.client.HasKeyDownHandlers#addKeyDownHandler( * com.google.gwt.event.dom.client.KeyDownHandler) */ + @Override public HandlerRegistration addKeyDownHandler(KeyDownHandler handler) { return addDomHandler(handler, KeyDownEvent.getType()); } @@ -75,6 +78,7 @@ public class FocusableFlexTable extends FlexTable implements HasFocusHandlers, * com.google.gwt.event.dom.client.HasKeyPressHandlers#addKeyPressHandler * (com.google.gwt.event.dom.client.KeyPressHandler) */ + @Override public HandlerRegistration addKeyPressHandler(KeyPressHandler handler) { return addDomHandler(handler, KeyPressEvent.getType()); } @@ -99,6 +103,7 @@ public class FocusableFlexTable extends FlexTable implements HasFocusHandlers, * * @see com.vaadin.terminal.gwt.client.Focusable#focus() */ + @Override public void focus() { setFocus(true); } diff --git a/src/com/vaadin/terminal/gwt/client/ui/FocusableFlowPanel.java b/src/com/vaadin/terminal/gwt/client/ui/FocusableFlowPanel.java index 831add049b..258fe441af 100644 --- a/src/com/vaadin/terminal/gwt/client/ui/FocusableFlowPanel.java +++ b/src/com/vaadin/terminal/gwt/client/ui/FocusableFlowPanel.java @@ -39,6 +39,7 @@ public class FocusableFlowPanel extends FlowPanel implements HasFocusHandlers, * com.google.gwt.event.dom.client.HasFocusHandlers#addFocusHandler(com. * google.gwt.event.dom.client.FocusHandler) */ + @Override public HandlerRegistration addFocusHandler(FocusHandler handler) { return addDomHandler(handler, FocusEvent.getType()); } @@ -50,6 +51,7 @@ public class FocusableFlowPanel extends FlowPanel implements HasFocusHandlers, * com.google.gwt.event.dom.client.HasBlurHandlers#addBlurHandler(com.google * .gwt.event.dom.client.BlurHandler) */ + @Override public HandlerRegistration addBlurHandler(BlurHandler handler) { return addDomHandler(handler, BlurEvent.getType()); } @@ -61,6 +63,7 @@ public class FocusableFlowPanel extends FlowPanel implements HasFocusHandlers, * com.google.gwt.event.dom.client.HasKeyDownHandlers#addKeyDownHandler( * com.google.gwt.event.dom.client.KeyDownHandler) */ + @Override public HandlerRegistration addKeyDownHandler(KeyDownHandler handler) { return addDomHandler(handler, KeyDownEvent.getType()); } @@ -72,6 +75,7 @@ public class FocusableFlowPanel extends FlowPanel implements HasFocusHandlers, * com.google.gwt.event.dom.client.HasKeyPressHandlers#addKeyPressHandler * (com.google.gwt.event.dom.client.KeyPressHandler) */ + @Override public HandlerRegistration addKeyPressHandler(KeyPressHandler handler) { return addDomHandler(handler, KeyPressEvent.getType()); } @@ -94,6 +98,7 @@ public class FocusableFlowPanel extends FlowPanel implements HasFocusHandlers, /** * Focus the panel */ + @Override public void focus() { setFocus(true); } diff --git a/src/com/vaadin/terminal/gwt/client/ui/FocusableScrollPanel.java b/src/com/vaadin/terminal/gwt/client/ui/FocusableScrollPanel.java index ef1ea8521b..0ba42eb861 100644 --- a/src/com/vaadin/terminal/gwt/client/ui/FocusableScrollPanel.java +++ b/src/com/vaadin/terminal/gwt/client/ui/FocusableScrollPanel.java @@ -110,6 +110,7 @@ public class FocusableScrollPanel extends SimpleFocusablePanel implements } } + @Override public HandlerRegistration addScrollHandler(ScrollHandler handler) { return addDomHandler(handler, ScrollEvent.getType()); } @@ -168,8 +169,10 @@ public class FocusableScrollPanel extends SimpleFocusablePanel implements } } + @Override public void onScroll(ScrollEvent event) { Scheduler.get().scheduleDeferred(new ScheduledCommand() { + @Override public void execute() { focusElement.getStyle().setTop(getScrollPosition(), Unit.PX); focusElement.getStyle().setLeft(getHorizontalScrollPosition(), diff --git a/src/com/vaadin/terminal/gwt/client/ui/JavaScriptComponentConnector.java b/src/com/vaadin/terminal/gwt/client/ui/JavaScriptComponentConnector.java index bb062a6677..380d96115c 100644 --- a/src/com/vaadin/terminal/gwt/client/ui/JavaScriptComponentConnector.java +++ b/src/com/vaadin/terminal/gwt/client/ui/JavaScriptComponentConnector.java @@ -3,6 +3,8 @@ */ package com.vaadin.terminal.gwt.client.ui; +import com.vaadin.shared.ui.Connect; +import com.vaadin.shared.ui.JavaScriptComponentState; import com.vaadin.terminal.gwt.client.JavaScriptConnectorHelper; import com.vaadin.terminal.gwt.client.communication.HasJavaScriptConnectorHelper; import com.vaadin.ui.AbstractJavaScriptComponent; @@ -31,6 +33,7 @@ public final class JavaScriptComponentConnector extends helper.init(); } + @Override public JavaScriptConnectorHelper getJavascriptConnectorHelper() { return helper; } diff --git a/src/com/vaadin/terminal/gwt/client/ui/LayoutClickEventHandler.java b/src/com/vaadin/terminal/gwt/client/ui/LayoutClickEventHandler.java index 7a5d85e34b..9aafaa0bbf 100644 --- a/src/com/vaadin/terminal/gwt/client/ui/LayoutClickEventHandler.java +++ b/src/com/vaadin/terminal/gwt/client/ui/LayoutClickEventHandler.java @@ -5,8 +5,9 @@ package com.vaadin.terminal.gwt.client.ui; import com.google.gwt.dom.client.NativeEvent; import com.google.gwt.user.client.Element; +import com.vaadin.shared.MouseEventDetails; +import com.vaadin.shared.ui.LayoutClickRpc; import com.vaadin.terminal.gwt.client.ComponentConnector; -import com.vaadin.terminal.gwt.client.MouseEventDetails; import com.vaadin.terminal.gwt.client.MouseEventDetailsBuilder; public abstract class LayoutClickEventHandler extends AbstractClickEventHandler { diff --git a/src/com/vaadin/terminal/gwt/client/ui/MediaBaseConnector.java b/src/com/vaadin/terminal/gwt/client/ui/MediaBaseConnector.java index 42027f911b..ccf90b2285 100644 --- a/src/com/vaadin/terminal/gwt/client/ui/MediaBaseConnector.java +++ b/src/com/vaadin/terminal/gwt/client/ui/MediaBaseConnector.java @@ -3,39 +3,25 @@ */ package com.vaadin.terminal.gwt.client.ui; +import com.vaadin.shared.communication.URLReference; +import com.vaadin.shared.ui.AbstractMediaState; +import com.vaadin.shared.ui.MediaControl; import com.vaadin.terminal.gwt.client.Util; -import com.vaadin.terminal.gwt.client.communication.ClientRpc; import com.vaadin.terminal.gwt.client.communication.StateChangeEvent; -import com.vaadin.terminal.gwt.client.communication.URLReference; public abstract class MediaBaseConnector extends AbstractComponentConnector { - /** - * Server to client RPC interface for controlling playback of the media. - * - * @since 7.0 - */ - public static interface MediaControl extends ClientRpc { - /** - * Start playing the media. - */ - public void play(); - - /** - * Pause playback of the media. - */ - public void pause(); - } - @Override protected void init() { super.init(); registerRpc(MediaControl.class, new MediaControl() { + @Override public void play() { getWidget().play(); } + @Override public void pause() { getWidget().pause(); } diff --git a/src/com/vaadin/terminal/gwt/client/ui/ShortcutActionHandler.java b/src/com/vaadin/terminal/gwt/client/ui/ShortcutActionHandler.java index 37e9ab4a69..40454345bc 100644 --- a/src/com/vaadin/terminal/gwt/client/ui/ShortcutActionHandler.java +++ b/src/com/vaadin/terminal/gwt/client/ui/ShortcutActionHandler.java @@ -149,6 +149,7 @@ public class ShortcutActionHandler { } else { shakeTarget(et); Scheduler.get().scheduleDeferred(new Command() { + @Override public void execute() { shakeTarget(et); } @@ -156,6 +157,7 @@ public class ShortcutActionHandler { } Scheduler.get().scheduleDeferred(new Command() { + @Override public void execute() { if (finalTarget != null) { client.updateVariable(paintableId, "actiontarget", @@ -187,6 +189,7 @@ public class ShortcutActionHandler { // deferred. Will cause a small flickering, so not doing it for all // browsers. Scheduler.get().scheduleDeferred(new Command() { + @Override public void execute() { focus(e); } diff --git a/src/com/vaadin/terminal/gwt/client/ui/SimpleFocusablePanel.java b/src/com/vaadin/terminal/gwt/client/ui/SimpleFocusablePanel.java index 9baa1db007..ec62b82ce1 100644 --- a/src/com/vaadin/terminal/gwt/client/ui/SimpleFocusablePanel.java +++ b/src/com/vaadin/terminal/gwt/client/ui/SimpleFocusablePanel.java @@ -36,18 +36,22 @@ public class SimpleFocusablePanel extends SimplePanel implements setTabIndex(0); } + @Override public HandlerRegistration addFocusHandler(FocusHandler handler) { return addDomHandler(handler, FocusEvent.getType()); } + @Override public HandlerRegistration addBlurHandler(BlurHandler handler) { return addDomHandler(handler, BlurEvent.getType()); } + @Override public HandlerRegistration addKeyDownHandler(KeyDownHandler handler) { return addDomHandler(handler, KeyDownEvent.getType()); } + @Override public HandlerRegistration addKeyPressHandler(KeyPressHandler handler) { return addDomHandler(handler, KeyPressEvent.getType()); } @@ -64,6 +68,7 @@ public class SimpleFocusablePanel extends SimplePanel implements } } + @Override public void focus() { setFocus(true); } diff --git a/src/com/vaadin/terminal/gwt/client/ui/TouchScrollDelegate.java b/src/com/vaadin/terminal/gwt/client/ui/TouchScrollDelegate.java index 7302f9f2ac..16c32acecc 100644 --- a/src/com/vaadin/terminal/gwt/client/ui/TouchScrollDelegate.java +++ b/src/com/vaadin/terminal/gwt/client/ui/TouchScrollDelegate.java @@ -121,6 +121,7 @@ public class TouchScrollDelegate implements NativePreviewHandler { setElements(scrollables); } + @Override public void onTouchStart(TouchStartEvent event) { assert delegate != null; delegate.onTouchStart(event); @@ -593,6 +594,7 @@ public class TouchScrollDelegate implements NativePreviewHandler { - scrolledElement.getClientHeight(); } + @Override public void onPreviewNativeEvent(NativePreviewEvent event) { int typeInt = event.getTypeInt(); if (transitionOn) { diff --git a/src/com/vaadin/terminal/gwt/client/ui/TreeImages.java b/src/com/vaadin/terminal/gwt/client/ui/TreeImages.java index 37f8889463..221a409511 100644 --- a/src/com/vaadin/terminal/gwt/client/ui/TreeImages.java +++ b/src/com/vaadin/terminal/gwt/client/ui/TreeImages.java @@ -15,6 +15,7 @@ public interface TreeImages extends com.google.gwt.user.client.ui.TreeImages { * @gwt.resource com/vaadin/terminal/gwt/public/default/tree/img/expanded * .png */ + @Override AbstractImagePrototype treeOpen(); /** @@ -24,6 +25,7 @@ public interface TreeImages extends com.google.gwt.user.client.ui.TreeImages { * @gwt.resource com/vaadin/terminal/gwt/public/default/tree/img/collapsed * .png */ + @Override AbstractImagePrototype treeClosed(); } diff --git a/src/com/vaadin/terminal/gwt/client/ui/UnknownComponentConnector.java b/src/com/vaadin/terminal/gwt/client/ui/UnknownComponentConnector.java index 0cccec6481..83ac97458e 100644 --- a/src/com/vaadin/terminal/gwt/client/ui/UnknownComponentConnector.java +++ b/src/com/vaadin/terminal/gwt/client/ui/UnknownComponentConnector.java @@ -4,7 +4,6 @@ package com.vaadin.terminal.gwt.client.ui; - public class UnknownComponentConnector extends AbstractComponentConnector { @Override diff --git a/src/com/vaadin/terminal/gwt/client/ui/VContextMenu.java b/src/com/vaadin/terminal/gwt/client/ui/VContextMenu.java index 692e13bd94..607abe893a 100644 --- a/src/com/vaadin/terminal/gwt/client/ui/VContextMenu.java +++ b/src/com/vaadin/terminal/gwt/client/ui/VContextMenu.java @@ -46,6 +46,7 @@ public class VContextMenu extends VOverlay implements SubPartAware { private VLazyExecutor delayedImageLoadExecutioner = new VLazyExecutor(100, new ScheduledCommand() { + @Override public void execute() { imagesLoaded(); } @@ -103,6 +104,7 @@ public class VContextMenu extends VOverlay implements SubPartAware { Util.sinkOnloadForImages(menu.getElement()); setPopupPositionAndShow(new PositionCallback() { + @Override public void setPosition(int offsetWidth, int offsetHeight) { // mac FF gets bad width due GWT popups overflow hacks, // re-determine width @@ -129,6 +131,7 @@ public class VContextMenu extends VOverlay implements SubPartAware { * the positioning has been done. */ Scheduler.get().scheduleDeferred(new Command() { + @Override public void execute() { // Focus the menu. menu.setFocus(true); @@ -186,18 +189,22 @@ public class VContextMenu extends VOverlay implements SubPartAware { return super.getItems().get(index); } + @Override public HandlerRegistration addFocusHandler(FocusHandler handler) { return addDomHandler(handler, FocusEvent.getType()); } + @Override public HandlerRegistration addBlurHandler(BlurHandler handler) { return addDomHandler(handler, BlurEvent.getType()); } + @Override public HandlerRegistration addKeyDownHandler(KeyDownHandler handler) { return addDomHandler(handler, KeyDownEvent.getType()); } + @Override public HandlerRegistration addKeyPressHandler(KeyPressHandler handler) { return addDomHandler(handler, KeyPressEvent.getType()); } @@ -215,6 +222,7 @@ public class VContextMenu extends VOverlay implements SubPartAware { setFocus(true); } + @Override public void onLoad(LoadEvent event) { // Handle icon onload events to ensure shadow is resized correctly delayedImageLoadExecutioner.trigger(); @@ -222,6 +230,7 @@ public class VContextMenu extends VOverlay implements SubPartAware { } + @Override public Element getSubPartElement(String subPart) { int index = Integer.parseInt(subPart.substring(6)); // ApplicationConnection.getConsole().log( @@ -232,6 +241,7 @@ public class VContextMenu extends VOverlay implements SubPartAware { return item.getElement().getFirstChildElement().cast(); } + @Override public String getSubPartName(Element subElement) { if (getElement().isOrHasChild(subElement)) { com.google.gwt.dom.client.Element e = subElement; diff --git a/src/com/vaadin/terminal/gwt/client/ui/VOverlay.java b/src/com/vaadin/terminal/gwt/client/ui/VOverlay.java index df655ef959..f2f13d1f35 100644 --- a/src/com/vaadin/terminal/gwt/client/ui/VOverlay.java +++ b/src/com/vaadin/terminal/gwt/client/ui/VOverlay.java @@ -6,7 +6,10 @@ package com.vaadin.terminal.gwt.client.ui; import com.google.gwt.animation.client.Animation; import com.google.gwt.dom.client.Document; +import com.google.gwt.dom.client.IFrameElement; import com.google.gwt.dom.client.Style; +import com.google.gwt.dom.client.Style.BorderStyle; +import com.google.gwt.dom.client.Style.Position; import com.google.gwt.dom.client.Style.Unit; import com.google.gwt.event.logical.shared.CloseEvent; import com.google.gwt.event.logical.shared.CloseHandler; @@ -14,6 +17,7 @@ import com.google.gwt.user.client.DOM; import com.google.gwt.user.client.Element; import com.google.gwt.user.client.ui.PopupPanel; import com.google.gwt.user.client.ui.RootPanel; +import com.google.gwt.user.client.ui.Widget; import com.vaadin.terminal.gwt.client.BrowserInfo; /** @@ -23,6 +27,49 @@ import com.vaadin.terminal.gwt.client.BrowserInfo; */ public class VOverlay extends PopupPanel implements CloseHandler<PopupPanel> { + public static class PositionAndSize { + private int left, top, width, height; + + public int getLeft() { + return left; + } + + public void setLeft(int left) { + this.left = left; + } + + public int getTop() { + return top; + } + + public void setTop(int top) { + this.top = top; + } + + public int getWidth() { + return width; + } + + public void setWidth(int width) { + this.width = width; + } + + public int getHeight() { + return height; + } + + public void setHeight(int height) { + this.height = height; + } + + public void setAnimationFromCenterProgress(double progress) { + left += (int) (width * (1.0 - progress) / 2.0); + top += (int) (height * (1.0 - progress) / 2.0); + width = (int) (width * progress); + height = (int) (height * progress); + } + } + /* * The z-index value from where all overlays live. This can be overridden in * any extending class. @@ -45,6 +92,18 @@ public class VOverlay extends PopupPanel implements CloseHandler<PopupPanel> { */ private Element shadow; + /* + * Creator of VOverlow (widget that made the instance, not the layout + * parent) + */ + private Widget owner; + + /** + * The shim iframe behind the overlay, allowing PDFs and applets to be + * covered by overlays. + */ + private IFrameElement shimElement; + /** * The HTML snippet that is used to render the actual shadow. In consists of * nine different DIV-elements with the following class names: @@ -66,6 +125,11 @@ public class VOverlay extends PopupPanel implements CloseHandler<PopupPanel> { */ private static final String SHADOW_HTML = "<div class=\"top-left\"></div><div class=\"top\"></div><div class=\"top-right\"></div><div class=\"left\"></div><div class=\"center\"></div><div class=\"right\"></div><div class=\"bottom-left\"></div><div class=\"bottom\"></div><div class=\"bottom-right\"></div>"; + /** + * Matches {@link PopupPanel}.ANIMATION_DURATION + */ + private static final int POPUP_PANEL_ANIMATION_DURATION = 200; + private boolean sinkShadowEvents = false; public VOverlay() { @@ -116,9 +180,15 @@ public class VOverlay extends PopupPanel implements CloseHandler<PopupPanel> { return shadow != null; } + private void removeShim() { + if (shimElement != null) { + shimElement.removeFromParent(); + } + } + private void removeShadowIfPresent() { if (isShadowAttached()) { - shadow.getParentElement().removeChild(shadow); + shadow.removeFromParent(); // Remove event listener from the shadow unsinkShadowEvents(); @@ -129,6 +199,10 @@ public class VOverlay extends PopupPanel implements CloseHandler<PopupPanel> { return isShadowEnabled() && shadow.getParentElement() != null; } + private boolean isShimAttached() { + return shimElement != null && shimElement.hasParentElement(); + } + private void adjustZIndex() { setZIndex(Z_INDEX); } @@ -156,7 +230,46 @@ public class VOverlay extends PopupPanel implements CloseHandler<PopupPanel> { style.setMarginLeft(-adjustByRelativeLeftBodyMargin(), Unit.PX); style.setMarginTop(-adjustByRelativeTopBodyMargin(), Unit.PX); super.setPopupPosition(left, top); - updateShadowSizeAndPosition(isAnimationEnabled() ? 0 : 1); + sizeOrPositionUpdated(isAnimationEnabled() ? 0 : 1); + } + + private IFrameElement getShimElement() { + if (shimElement == null) { + shimElement = Document.get().createIFrameElement(); + + // Insert shim iframe before the main overlay element. It does not + // matter if it is in front or behind the shadow as we cannot put a + // shim behind the shadow due to its transparency. + shimElement.getStyle().setPosition(Position.ABSOLUTE); + shimElement.getStyle().setBorderStyle(BorderStyle.NONE); + shimElement.setFrameBorder(0); + shimElement.setMarginHeight(0); + } + return shimElement; + } + + private int getActualTop() { + int y = getAbsoluteTop(); + + /* This is needed for IE7 at least */ + // Account for the difference between absolute position and the + // body's positioning context. + y -= Document.get().getBodyOffsetTop(); + y -= adjustByRelativeTopBodyMargin(); + + return y; + } + + private int getActualLeft() { + int x = getAbsoluteLeft(); + + /* This is needed for IE7 at least */ + // Account for the difference between absolute position and the + // body's positioning context. + x -= Document.get().getBodyOffsetLeft(); + x -= adjustByRelativeLeftBodyMargin(); + + return x; } private static int adjustByRelativeTopBodyMargin() { @@ -189,13 +302,10 @@ public class VOverlay extends PopupPanel implements CloseHandler<PopupPanel> { @Override public void show() { super.show(); - if (isShadowEnabled()) { - if (isAnimationEnabled()) { - ShadowAnimation sa = new ShadowAnimation(); - sa.run(200); - } else { - updateShadowSizeAndPosition(1.0); - } + if (isAnimationEnabled()) { + new ResizeAnimation().run(POPUP_PANEL_ANIMATION_DURATION); + } else { + sizeOrPositionUpdated(1.0); } } @@ -205,6 +315,7 @@ public class VOverlay extends PopupPanel implements CloseHandler<PopupPanel> { // Always ensure shadow is removed when the overlay is removed. removeShadowIfPresent(); + removeShim(); } @Override @@ -219,13 +330,13 @@ public class VOverlay extends PopupPanel implements CloseHandler<PopupPanel> { @Override public void setWidth(String width) { super.setWidth(width); - updateShadowSizeAndPosition(1.0); + sizeOrPositionUpdated(1.0); } @Override public void setHeight(String height) { super.setHeight(height); - updateShadowSizeAndPosition(1.0); + sizeOrPositionUpdated(1.0); } /** @@ -244,28 +355,29 @@ public class VOverlay extends PopupPanel implements CloseHandler<PopupPanel> { } } - /* + /** * Extending classes should always call this method after they change the * size of overlay without using normal 'setWidth(String)' and * 'setHeight(String)' methods (if not calling super.setWidth/Height). + * */ - public void updateShadowSizeAndPosition() { - updateShadowSizeAndPosition(1.0); + public void sizeOrPositionUpdated() { + sizeOrPositionUpdated(1.0); } /** - * Recalculates proper position and dimensions for the shadow element. Can - * be used to animate the shadow, using the 'progress' parameter (used to - * animate the shadow in sync with GWT PopupPanel's default animation - * 'PopupPanel.AnimationType.CENTER'). + * Recalculates proper position and dimensions for the shadow and shim + * elements. Can be used to animate the related elements, using the + * 'progress' parameter (used to animate the shadow in sync with GWT + * PopupPanel's default animation 'PopupPanel.AnimationType.CENTER'). * * @param progress * A value between 0.0 and 1.0, indicating the progress of the * animation (0=start, 1=end). */ - private void updateShadowSizeAndPosition(final double progress) { + private void sizeOrPositionUpdated(final double progress) { // Don't do anything if overlay element is not attached - if (!isAttached() || shadow == null) { + if (!isAttached()) { return; } // Calculate proper z-index @@ -288,37 +400,26 @@ public class VOverlay extends PopupPanel implements CloseHandler<PopupPanel> { getOffsetWidth(); } - int x = getAbsoluteLeft(); - int y = getAbsoluteTop(); + PositionAndSize positionAndSize = new PositionAndSize(); + positionAndSize.left = getActualLeft(); + positionAndSize.top = getActualTop(); + positionAndSize.width = getOffsetWidth(); + positionAndSize.height = getOffsetHeight(); - /* This is needed for IE7 at least */ - // Account for the difference between absolute position and the - // body's positioning context. - x -= Document.get().getBodyOffsetLeft(); - y -= Document.get().getBodyOffsetTop(); - x -= adjustByRelativeLeftBodyMargin(); - y -= adjustByRelativeTopBodyMargin(); - - int width = getOffsetWidth(); - int height = getOffsetHeight(); - - if (width < 0) { - width = 0; + if (positionAndSize.width < 0) { + positionAndSize.width = 0; } - if (height < 0) { - height = 0; + if (positionAndSize.height < 0) { + positionAndSize.height = 0; } - // Animate the shadow size - x += (int) (width * (1.0 - progress) / 2.0); - y += (int) (height * (1.0 - progress) / 2.0); - width = (int) (width * progress); - height = (int) (height * progress); + // Animate the size + positionAndSize.setAnimationFromCenterProgress(progress); // Opera needs some shaking to get parts of the shadow showing // properly // (ticket #2704) - if (BrowserInfo.get().isOpera()) { + if (BrowserInfo.get().isOpera() && isShadowEnabled()) { // Clear the height of all middle elements DOM.getChild(shadow, 3).getStyle().setProperty("height", "auto"); DOM.getChild(shadow, 4).getStyle().setProperty("height", "auto"); @@ -326,15 +427,17 @@ public class VOverlay extends PopupPanel implements CloseHandler<PopupPanel> { } // Update correct values - DOM.setStyleAttribute(shadow, "zIndex", zIndex); - DOM.setStyleAttribute(shadow, "width", width + "px"); - DOM.setStyleAttribute(shadow, "height", height + "px"); - DOM.setStyleAttribute(shadow, "top", y + "px"); - DOM.setStyleAttribute(shadow, "left", x + "px"); - DOM.setStyleAttribute(shadow, "display", progress < 0.9 ? "none" : ""); + if (isShadowEnabled()) { + updateSizeAndPosition(shadow, positionAndSize); + DOM.setStyleAttribute(shadow, "zIndex", zIndex); + DOM.setStyleAttribute(shadow, "display", progress < 0.9 ? "none" + : ""); + } + updateSizeAndPosition((Element) Element.as(getShimElement()), + positionAndSize); // Opera fix, part 2 (ticket #2704) - if (BrowserInfo.get().isOpera()) { + if (BrowserInfo.get().isOpera() && isShadowEnabled()) { // We'll fix the height of all the middle elements DOM.getChild(shadow, 3) .getStyle() @@ -351,20 +454,33 @@ public class VOverlay extends PopupPanel implements CloseHandler<PopupPanel> { } // Attach to dom if not there already - if (!isShadowAttached()) { + if (isShadowEnabled() && !isShadowAttached()) { RootPanel.get().getElement().insertBefore(shadow, getElement()); sinkShadowEvents(); } + if (!isShimAttached()) { + RootPanel.get().getElement() + .insertBefore(shimElement, getElement()); + } + + } + private void updateSizeAndPosition(Element e, + PositionAndSize positionAndSize) { + e.getStyle().setLeft(positionAndSize.left, Unit.PX); + e.getStyle().setTop(positionAndSize.top, Unit.PX); + e.getStyle().setWidth(positionAndSize.width, Unit.PX); + e.getStyle().setHeight(positionAndSize.height, Unit.PX); } - protected class ShadowAnimation extends Animation { + protected class ResizeAnimation extends Animation { @Override protected void onUpdate(double progress) { - updateShadowSizeAndPosition(progress); + sizeOrPositionUpdated(progress); } } + @Override public void onClose(CloseEvent<PopupPanel> event) { removeShadowIfPresent(); } @@ -414,4 +530,25 @@ public class VOverlay extends PopupPanel implements CloseHandler<PopupPanel> { protected boolean isSinkShadowEvents() { return sinkShadowEvents; } + + /** + * Get owner (Widget that made this VOverlay, not the layout parent) of + * VOverlay + * + * @return Owner (creator) or null if not defined + */ + public Widget getOwner() { + return owner; + } + + /** + * Set owner (Widget that made this VOverlay, not the layout parent) of + * VOverlay + * + * @param owner + * Owner (creator) of VOverlay + */ + public void setOwner(Widget owner) { + this.owner = owner; + } } diff --git a/src/com/vaadin/terminal/gwt/client/ui/Vaadin6Connector.java b/src/com/vaadin/terminal/gwt/client/ui/Vaadin6Connector.java index 7fccdafd2a..f2f0125c86 100644 --- a/src/com/vaadin/terminal/gwt/client/ui/Vaadin6Connector.java +++ b/src/com/vaadin/terminal/gwt/client/ui/Vaadin6Connector.java @@ -10,6 +10,7 @@ import com.vaadin.terminal.gwt.client.UIDL; public abstract class Vaadin6Connector extends AbstractComponentConnector implements Paintable { + @Override public void updateFromUIDL(UIDL uidl, ApplicationConnection client) { ((Paintable) getWidget()).updateFromUIDL(uidl, client); } diff --git a/src/com/vaadin/terminal/gwt/client/ui/absolutelayout/AbsoluteLayoutConnector.java b/src/com/vaadin/terminal/gwt/client/ui/absolutelayout/AbsoluteLayoutConnector.java index 91436f5353..188d464b84 100644 --- a/src/com/vaadin/terminal/gwt/client/ui/absolutelayout/AbsoluteLayoutConnector.java +++ b/src/com/vaadin/terminal/gwt/client/ui/absolutelayout/AbsoluteLayoutConnector.java @@ -10,6 +10,10 @@ import com.google.gwt.dom.client.Style; import com.google.gwt.dom.client.Style.Unit; import com.google.gwt.user.client.Element; import com.google.gwt.user.client.ui.Widget; +import com.vaadin.shared.ui.Connect; +import com.vaadin.shared.ui.LayoutClickRpc; +import com.vaadin.shared.ui.absolutelayout.AbsoluteLayoutServerRpc; +import com.vaadin.shared.ui.absolutelayout.AbsoluteLayoutState; import com.vaadin.terminal.gwt.client.ComponentConnector; import com.vaadin.terminal.gwt.client.ConnectorHierarchyChangeEvent; import com.vaadin.terminal.gwt.client.DirectionalManagedLayout; @@ -18,9 +22,7 @@ import com.vaadin.terminal.gwt.client.VCaption; import com.vaadin.terminal.gwt.client.communication.RpcProxy; import com.vaadin.terminal.gwt.client.communication.StateChangeEvent; import com.vaadin.terminal.gwt.client.ui.AbstractComponentContainerConnector; -import com.vaadin.terminal.gwt.client.ui.Connect; import com.vaadin.terminal.gwt.client.ui.LayoutClickEventHandler; -import com.vaadin.terminal.gwt.client.ui.LayoutClickRpc; import com.vaadin.terminal.gwt.client.ui.absolutelayout.VAbsoluteLayout.AbsoluteWrapper; import com.vaadin.ui.AbsoluteLayout; @@ -68,6 +70,7 @@ public class AbsoluteLayoutConnector extends element); } + @Override public void updateCaption(ComponentConnector component) { VAbsoluteLayout absoluteLayoutWidget = getWidget(); AbsoluteWrapper componentWrapper = getWrapper(component); @@ -147,6 +150,7 @@ public class AbsoluteLayoutConnector extends } } + @Override public void layoutVertically() { VAbsoluteLayout layout = getWidget(); for (ComponentConnector paintable : getChildComponents()) { @@ -179,6 +183,7 @@ public class AbsoluteLayoutConnector extends } } + @Override public void layoutHorizontally() { VAbsoluteLayout layout = getWidget(); for (ComponentConnector paintable : getChildComponents()) { diff --git a/src/com/vaadin/terminal/gwt/client/ui/absolutelayout/AbsoluteLayoutServerRpc.java b/src/com/vaadin/terminal/gwt/client/ui/absolutelayout/AbsoluteLayoutServerRpc.java deleted file mode 100644 index d626eb5b6c..0000000000 --- a/src/com/vaadin/terminal/gwt/client/ui/absolutelayout/AbsoluteLayoutServerRpc.java +++ /dev/null @@ -1,11 +0,0 @@ -/* -@VaadinApache2LicenseForJavaFiles@ - */ -package com.vaadin.terminal.gwt.client.ui.absolutelayout; - -import com.vaadin.terminal.gwt.client.communication.ServerRpc; -import com.vaadin.terminal.gwt.client.ui.LayoutClickRpc; - -public interface AbsoluteLayoutServerRpc extends LayoutClickRpc, ServerRpc { - -}
\ No newline at end of file diff --git a/src/com/vaadin/terminal/gwt/client/ui/accordion/AccordionConnector.java b/src/com/vaadin/terminal/gwt/client/ui/accordion/AccordionConnector.java index f022e97973..7ff1257da3 100644 --- a/src/com/vaadin/terminal/gwt/client/ui/accordion/AccordionConnector.java +++ b/src/com/vaadin/terminal/gwt/client/ui/accordion/AccordionConnector.java @@ -5,10 +5,10 @@ package com.vaadin.terminal.gwt.client.ui.accordion; import java.util.Iterator; +import com.vaadin.shared.ui.Connect; import com.vaadin.terminal.gwt.client.ApplicationConnection; import com.vaadin.terminal.gwt.client.ComponentConnector; import com.vaadin.terminal.gwt.client.UIDL; -import com.vaadin.terminal.gwt.client.ui.Connect; import com.vaadin.terminal.gwt.client.ui.SimpleManagedLayout; import com.vaadin.terminal.gwt.client.ui.accordion.VAccordion.StackItem; import com.vaadin.terminal.gwt.client.ui.layout.MayScrollChildren; @@ -57,10 +57,12 @@ public class AccordionConnector extends TabsheetBaseConnector implements return (VAccordion) super.getWidget(); } + @Override public void updateCaption(ComponentConnector component) { /* Accordion does not render its children's captions */ } + @Override public void layout() { VAccordion accordion = getWidget(); diff --git a/src/com/vaadin/terminal/gwt/client/ui/accordion/VAccordion.java b/src/com/vaadin/terminal/gwt/client/ui/accordion/VAccordion.java index b83d5afb00..d9320787e8 100644 --- a/src/com/vaadin/terminal/gwt/client/ui/accordion/VAccordion.java +++ b/src/com/vaadin/terminal/gwt/client/ui/accordion/VAccordion.java @@ -434,6 +434,7 @@ public class VAccordion extends VTabsheetBase { } } + @Override public void onClick(ClickEvent event) { onSelectTab(this); } diff --git a/src/com/vaadin/terminal/gwt/client/ui/audio/AudioConnector.java b/src/com/vaadin/terminal/gwt/client/ui/audio/AudioConnector.java index 1c7feb132a..6b713c229c 100644 --- a/src/com/vaadin/terminal/gwt/client/ui/audio/AudioConnector.java +++ b/src/com/vaadin/terminal/gwt/client/ui/audio/AudioConnector.java @@ -7,9 +7,9 @@ import com.google.gwt.core.client.GWT; import com.google.gwt.dom.client.Style; import com.google.gwt.dom.client.Style.Unit; import com.google.gwt.user.client.ui.Widget; +import com.vaadin.shared.ui.Connect; import com.vaadin.terminal.gwt.client.BrowserInfo; import com.vaadin.terminal.gwt.client.communication.StateChangeEvent; -import com.vaadin.terminal.gwt.client.ui.Connect; import com.vaadin.terminal.gwt.client.ui.MediaBaseConnector; import com.vaadin.ui.Audio; diff --git a/src/com/vaadin/terminal/gwt/client/ui/button/ButtonConnector.java b/src/com/vaadin/terminal/gwt/client/ui/button/ButtonConnector.java index d79aa96ac6..0cec6ce96b 100644 --- a/src/com/vaadin/terminal/gwt/client/ui/button/ButtonConnector.java +++ b/src/com/vaadin/terminal/gwt/client/ui/button/ButtonConnector.java @@ -12,15 +12,17 @@ import com.google.gwt.event.dom.client.FocusEvent; import com.google.gwt.event.dom.client.FocusHandler; import com.google.gwt.event.shared.HandlerRegistration; import com.google.gwt.user.client.DOM; +import com.vaadin.shared.MouseEventDetails; +import com.vaadin.shared.communication.FieldRpc.FocusAndBlurServerRpc; +import com.vaadin.shared.ui.Connect; +import com.vaadin.shared.ui.Connect.LoadStyle; +import com.vaadin.shared.ui.button.ButtonServerRpc; +import com.vaadin.shared.ui.button.ButtonState; import com.vaadin.terminal.gwt.client.EventHelper; -import com.vaadin.terminal.gwt.client.MouseEventDetails; import com.vaadin.terminal.gwt.client.MouseEventDetailsBuilder; -import com.vaadin.terminal.gwt.client.communication.FieldRpc.FocusAndBlurServerRpc; import com.vaadin.terminal.gwt.client.communication.RpcProxy; import com.vaadin.terminal.gwt.client.communication.StateChangeEvent; import com.vaadin.terminal.gwt.client.ui.AbstractComponentConnector; -import com.vaadin.terminal.gwt.client.ui.Connect; -import com.vaadin.terminal.gwt.client.ui.Connect.LoadStyle; import com.vaadin.terminal.gwt.client.ui.Icon; import com.vaadin.ui.Button; @@ -103,18 +105,21 @@ public class ButtonConnector extends AbstractComponentConnector implements return (ButtonState) super.getState(); } + @Override public void onFocus(FocusEvent event) { // EventHelper.updateFocusHandler ensures that this is called only when // there is a listener on server side focusBlurProxy.focus(); } + @Override public void onBlur(BlurEvent event) { // EventHelper.updateFocusHandler ensures that this is called only when // there is a listener on server side focusBlurProxy.blur(); } + @Override public void onClick(ClickEvent event) { if (getState().isDisableOnClick()) { getWidget().setEnabled(false); diff --git a/src/com/vaadin/terminal/gwt/client/ui/button/VButton.java b/src/com/vaadin/terminal/gwt/client/ui/button/VButton.java index 0cd8bc54f4..3232338f62 100644 --- a/src/com/vaadin/terminal/gwt/client/ui/button/VButton.java +++ b/src/com/vaadin/terminal/gwt/client/ui/button/VButton.java @@ -18,7 +18,6 @@ import com.google.gwt.user.client.ui.FocusWidget; import com.vaadin.terminal.gwt.client.ApplicationConnection; import com.vaadin.terminal.gwt.client.BrowserInfo; import com.vaadin.terminal.gwt.client.Util; -import com.vaadin.terminal.gwt.client.VTooltip; import com.vaadin.terminal.gwt.client.ui.Icon; public class VButton extends FocusWidget implements ClickHandler { @@ -90,7 +89,6 @@ public class VButton extends FocusWidget implements ClickHandler { setTabIndex(0); sinkEvents(Event.ONCLICK | Event.MOUSEEVENTS | Event.FOCUSEVENTS | Event.KEYEVENTS); - sinkEvents(VTooltip.TOOLTIP_EVENTS); setStyleName(CLASSNAME); @@ -128,9 +126,6 @@ public class VButton extends FocusWidget implements ClickHandler { * -onload event handler added (for icon handling) */ public void onBrowserEvent(Event event) { - if (client != null) { - client.handleTooltipEvent(event, this); - } if (DOM.eventGetType(event) == Event.ONLOAD) { Util.notifyParentOfSizeChange(this, true); } @@ -286,6 +281,7 @@ public class VButton extends FocusWidget implements ClickHandler { * com.google.gwt.event.dom.client.ClickHandler#onClick(com.google.gwt.event * .dom.client.ClickEvent) */ + @Override public void onClick(ClickEvent event) { if (BrowserInfo.get().isSafari()) { VButton.this.setFocus(true); diff --git a/src/com/vaadin/terminal/gwt/client/ui/checkbox/CheckBoxConnector.java b/src/com/vaadin/terminal/gwt/client/ui/checkbox/CheckBoxConnector.java index bc405b793b..c7e827bc74 100644 --- a/src/com/vaadin/terminal/gwt/client/ui/checkbox/CheckBoxConnector.java +++ b/src/com/vaadin/terminal/gwt/client/ui/checkbox/CheckBoxConnector.java @@ -12,15 +12,17 @@ import com.google.gwt.event.dom.client.FocusHandler; import com.google.gwt.event.shared.HandlerRegistration; import com.google.gwt.user.client.DOM; import com.google.gwt.user.client.Event; +import com.vaadin.shared.MouseEventDetails; +import com.vaadin.shared.communication.FieldRpc.FocusAndBlurServerRpc; +import com.vaadin.shared.ui.Connect; +import com.vaadin.shared.ui.checkbox.CheckBoxServerRpc; +import com.vaadin.shared.ui.checkbox.CheckBoxState; import com.vaadin.terminal.gwt.client.EventHelper; -import com.vaadin.terminal.gwt.client.MouseEventDetails; import com.vaadin.terminal.gwt.client.MouseEventDetailsBuilder; import com.vaadin.terminal.gwt.client.VTooltip; -import com.vaadin.terminal.gwt.client.communication.FieldRpc.FocusAndBlurServerRpc; import com.vaadin.terminal.gwt.client.communication.RpcProxy; import com.vaadin.terminal.gwt.client.communication.StateChangeEvent; import com.vaadin.terminal.gwt.client.ui.AbstractFieldConnector; -import com.vaadin.terminal.gwt.client.ui.Connect; import com.vaadin.terminal.gwt.client.ui.Icon; import com.vaadin.ui.CheckBox; @@ -114,18 +116,21 @@ public class CheckBoxConnector extends AbstractFieldConnector implements return (VCheckBox) super.getWidget(); } + @Override public void onFocus(FocusEvent event) { // EventHelper.updateFocusHandler ensures that this is called only when // there is a listener on server side focusBlurRpc.focus(); } + @Override public void onBlur(BlurEvent event) { // EventHelper.updateFocusHandler ensures that this is called only when // there is a listener on server side focusBlurRpc.blur(); } + @Override public void onClick(ClickEvent event) { if (!isEnabled()) { return; diff --git a/src/com/vaadin/terminal/gwt/client/ui/checkbox/VCheckBox.java b/src/com/vaadin/terminal/gwt/client/ui/checkbox/VCheckBox.java index fd90796ea5..a6eec2de8a 100644 --- a/src/com/vaadin/terminal/gwt/client/ui/checkbox/VCheckBox.java +++ b/src/com/vaadin/terminal/gwt/client/ui/checkbox/VCheckBox.java @@ -31,7 +31,6 @@ public class VCheckBox extends com.google.gwt.user.client.ui.CheckBox implements public VCheckBox() { setStyleName(CLASSNAME); - sinkEvents(VTooltip.TOOLTIP_EVENTS); Element el = DOM.getFirstChild(getElement()); while (el != null) { DOM.sinkEvents(el, @@ -53,9 +52,6 @@ public class VCheckBox extends com.google.gwt.user.client.ui.CheckBox implements if (event.getTypeInt() == Event.ONLOAD) { Util.notifyParentOfSizeChange(this, true); } - if (client != null) { - client.handleTooltipEvent(event, this); - } } } diff --git a/src/com/vaadin/terminal/gwt/client/ui/combobox/ComboBoxConnector.java b/src/com/vaadin/terminal/gwt/client/ui/combobox/ComboBoxConnector.java index ff153d30c9..0fa71bb7a6 100644 --- a/src/com/vaadin/terminal/gwt/client/ui/combobox/ComboBoxConnector.java +++ b/src/com/vaadin/terminal/gwt/client/ui/combobox/ComboBoxConnector.java @@ -5,12 +5,12 @@ package com.vaadin.terminal.gwt.client.ui.combobox; import java.util.Iterator; +import com.vaadin.shared.ui.Connect; import com.vaadin.terminal.gwt.client.ApplicationConnection; import com.vaadin.terminal.gwt.client.Paintable; import com.vaadin.terminal.gwt.client.UIDL; import com.vaadin.terminal.gwt.client.Util; import com.vaadin.terminal.gwt.client.ui.AbstractFieldConnector; -import com.vaadin.terminal.gwt.client.ui.Connect; import com.vaadin.terminal.gwt.client.ui.SimpleManagedLayout; import com.vaadin.terminal.gwt.client.ui.combobox.VFilterSelect.FilterSelectSuggestion; import com.vaadin.terminal.gwt.client.ui.menubar.MenuItem; @@ -27,6 +27,7 @@ public class ComboBoxConnector extends AbstractFieldConnector implements * com.vaadin.terminal.gwt.client.Paintable#updateFromUIDL(com.vaadin.terminal * .gwt.client.UIDL, com.vaadin.terminal.gwt.client.ApplicationConnection) */ + @Override public void updateFromUIDL(UIDL uidl, ApplicationConnection client) { // Save details getWidget().client = client; @@ -230,6 +231,7 @@ public class ComboBoxConnector extends AbstractFieldConnector implements return (VFilterSelect) super.getWidget(); } + @Override public void layout() { VFilterSelect widget = getWidget(); if (widget.initDone) { diff --git a/src/com/vaadin/terminal/gwt/client/ui/combobox/VFilterSelect.java b/src/com/vaadin/terminal/gwt/client/ui/combobox/VFilterSelect.java index 8c5d521445..6e24a74e04 100644 --- a/src/com/vaadin/terminal/gwt/client/ui/combobox/VFilterSelect.java +++ b/src/com/vaadin/terminal/gwt/client/ui/combobox/VFilterSelect.java @@ -44,17 +44,16 @@ import com.google.gwt.user.client.ui.PopupPanel; import com.google.gwt.user.client.ui.PopupPanel.PositionCallback; import com.google.gwt.user.client.ui.SuggestOracle.Suggestion; import com.google.gwt.user.client.ui.TextBox; +import com.vaadin.shared.ComponentState; +import com.vaadin.shared.EventId; import com.vaadin.terminal.gwt.client.ApplicationConnection; import com.vaadin.terminal.gwt.client.BrowserInfo; import com.vaadin.terminal.gwt.client.ComponentConnector; -import com.vaadin.terminal.gwt.client.ComponentState; import com.vaadin.terminal.gwt.client.ConnectorMap; -import com.vaadin.terminal.gwt.client.EventId; import com.vaadin.terminal.gwt.client.Focusable; import com.vaadin.terminal.gwt.client.UIDL; import com.vaadin.terminal.gwt.client.Util; import com.vaadin.terminal.gwt.client.VConsole; -import com.vaadin.terminal.gwt.client.VTooltip; import com.vaadin.terminal.gwt.client.ui.Field; import com.vaadin.terminal.gwt.client.ui.SubPartAware; import com.vaadin.terminal.gwt.client.ui.VLazyExecutor; @@ -102,6 +101,7 @@ public class VFilterSelect extends Composite implements Field, KeyDownHandler, * specified) and the caption of the item */ + @Override public String getDisplayString() { final StringBuffer sb = new StringBuffer(); if (iconUri != null) { @@ -125,6 +125,7 @@ public class VFilterSelect extends Composite implements Field, KeyDownHandler, * Get a string that represents this item. This is used in the text box. */ + @Override public String getReplacementString() { return caption; } @@ -151,6 +152,7 @@ public class VFilterSelect extends Composite implements Field, KeyDownHandler, * Executes a selection of this item. */ + @Override public void execute() { onSuggestionSelected(this); } @@ -455,6 +457,7 @@ public class VFilterSelect extends Composite implements Field, KeyDownHandler, * (int, int) */ + @Override public void setPosition(int offsetWidth, int offsetHeight) { int top = -1; @@ -592,6 +595,7 @@ public class VFilterSelect extends Composite implements Field, KeyDownHandler, private VLazyExecutor delayedImageLoadExecutioner = new VLazyExecutor( 100, new ScheduledCommand() { + @Override public void execute() { if (suggestionPopup.isVisible() && suggestionPopup.isAttached()) { @@ -749,6 +753,7 @@ public class VFilterSelect extends Composite implements Field, KeyDownHandler, private static final String SUBPART_PREFIX = "item"; + @Override public Element getSubPartElement(String subPart) { int index = Integer.parseInt(subPart.substring(SUBPART_PREFIX .length())); @@ -758,6 +763,7 @@ public class VFilterSelect extends Composite implements Field, KeyDownHandler, return item.getElement(); } + @Override public String getSubPartName(Element subElement) { if (!getElement().isOrHasChild(subElement)) { return null; @@ -780,6 +786,7 @@ public class VFilterSelect extends Composite implements Field, KeyDownHandler, return null; } + @Override public void onLoad(LoadEvent event) { // Handle icon onload events to ensure shadow is resized // correctly @@ -824,21 +831,6 @@ public class VFilterSelect extends Composite implements Field, KeyDownHandler, * The text box where the filter is written */ protected final TextBox tb = new TextBox() { - /* - * (non-Javadoc) - * - * @see - * com.google.gwt.user.client.ui.TextBoxBase#onBrowserEvent(com.google - * .gwt.user.client.Event) - */ - - @Override - public void onBrowserEvent(Event event) { - super.onBrowserEvent(event); - if (client != null) { - client.handleTooltipEvent(event, VFilterSelect.this); - } - } // Overridden to avoid selecting text when text input is disabled @Override @@ -869,9 +861,6 @@ public class VFilterSelect extends Composite implements Field, KeyDownHandler, @Override public void onBrowserEvent(Event event) { super.onBrowserEvent(event); - if (client != null) { - client.handleTooltipEvent(event, VFilterSelect.this); - } /* * Prevent the keyboard focus from leaving the textfield by @@ -961,6 +950,7 @@ public class VFilterSelect extends Composite implements Field, KeyDownHandler, selectedItemIcon.setStyleName("v-icon"); selectedItemIcon.addLoadHandler(new LoadHandler() { + @Override public void onLoad(LoadEvent event) { if (BrowserInfo.get().isIE8()) { // IE8 needs some help to discover it should reposition the @@ -972,8 +962,7 @@ public class VFilterSelect extends Composite implements Field, KeyDownHandler, } }); - tb.sinkEvents(VTooltip.TOOLTIP_EVENTS); - popupOpener.sinkEvents(VTooltip.TOOLTIP_EVENTS | Event.ONMOUSEDOWN); + popupOpener.sinkEvents(Event.ONMOUSEDOWN); panel.add(tb); panel.add(popupOpener); initWidget(panel); @@ -1214,6 +1203,7 @@ public class VFilterSelect extends Composite implements Field, KeyDownHandler, * .event.dom.client.KeyDownEvent) */ + @Override public void onKeyDown(KeyDownEvent event) { if (enabled && !readonly) { int keyCode = event.getNativeKeyCode(); @@ -1376,6 +1366,7 @@ public class VFilterSelect extends Composite implements Field, KeyDownHandler, * The KeyUpEvent of the key depressed */ + @Override public void onKeyUp(KeyUpEvent event) { if (enabled && !readonly) { switch (event.getNativeKeyCode()) { @@ -1424,6 +1415,7 @@ public class VFilterSelect extends Composite implements Field, KeyDownHandler, * Listener for popupopener */ + @Override public void onClick(ClickEvent event) { if (textInputEnabled && event.getNativeEvent().getEventTarget().cast() == tb @@ -1488,6 +1480,7 @@ public class VFilterSelect extends Composite implements Field, KeyDownHandler, * .dom.client.FocusEvent) */ + @Override public void onFocus(FocusEvent event) { /* @@ -1525,6 +1518,7 @@ public class VFilterSelect extends Composite implements Field, KeyDownHandler, * .dom.client.BlurEvent) */ + @Override public void onBlur(BlurEvent event) { if (BrowserInfo.get().isIE() && preventNextBlurEventInIE) { @@ -1582,6 +1576,7 @@ public class VFilterSelect extends Composite implements Field, KeyDownHandler, * @see com.vaadin.terminal.gwt.client.Focusable#focus() */ + @Override public void focus() { focused = true; if (prompting && !readonly) { @@ -1690,6 +1685,7 @@ public class VFilterSelect extends Composite implements Field, KeyDownHandler, suggestionPopup.hide(); } + @Override public Element getSubPartElement(String subPart) { if ("textbox".equals(subPart)) { return this.tb.getElement(); @@ -1699,6 +1695,7 @@ public class VFilterSelect extends Composite implements Field, KeyDownHandler, return null; } + @Override public String getSubPartName(Element subElement) { if (tb.getElement().isOrHasChild(subElement)) { return "textbox"; diff --git a/src/com/vaadin/terminal/gwt/client/ui/csslayout/CssLayoutConnector.java b/src/com/vaadin/terminal/gwt/client/ui/csslayout/CssLayoutConnector.java index 4d341bddfc..7d07172cd1 100644 --- a/src/com/vaadin/terminal/gwt/client/ui/csslayout/CssLayoutConnector.java +++ b/src/com/vaadin/terminal/gwt/client/ui/csslayout/CssLayoutConnector.java @@ -9,6 +9,11 @@ import java.util.Map; import com.google.gwt.dom.client.Style; import com.google.gwt.user.client.Element; import com.google.gwt.user.client.ui.Widget; +import com.vaadin.shared.ui.Connect; +import com.vaadin.shared.ui.LayoutClickRpc; +import com.vaadin.shared.ui.VMarginInfo; +import com.vaadin.shared.ui.csslayout.CssLayoutServerRpc; +import com.vaadin.shared.ui.csslayout.CssLayoutState; import com.vaadin.terminal.gwt.client.BrowserInfo; import com.vaadin.terminal.gwt.client.ComponentConnector; import com.vaadin.terminal.gwt.client.ConnectorHierarchyChangeEvent; @@ -17,10 +22,7 @@ import com.vaadin.terminal.gwt.client.VCaption; import com.vaadin.terminal.gwt.client.communication.RpcProxy; import com.vaadin.terminal.gwt.client.communication.StateChangeEvent; import com.vaadin.terminal.gwt.client.ui.AbstractLayoutConnector; -import com.vaadin.terminal.gwt.client.ui.Connect; import com.vaadin.terminal.gwt.client.ui.LayoutClickEventHandler; -import com.vaadin.terminal.gwt.client.ui.LayoutClickRpc; -import com.vaadin.terminal.gwt.client.ui.VMarginInfo; import com.vaadin.terminal.gwt.client.ui.csslayout.VCssLayout.FlowPane; import com.vaadin.ui.CssLayout; @@ -137,6 +139,7 @@ public class CssLayoutConnector extends AbstractLayoutConnector { return (VCssLayout) super.getWidget(); } + @Override public void updateCaption(ComponentConnector child) { Widget childWidget = child.getWidget(); FlowPane cssLayoutWidgetContainer = getWidget().panel; diff --git a/src/com/vaadin/terminal/gwt/client/ui/csslayout/CssLayoutServerRpc.java b/src/com/vaadin/terminal/gwt/client/ui/csslayout/CssLayoutServerRpc.java deleted file mode 100644 index 7ba89d4c4c..0000000000 --- a/src/com/vaadin/terminal/gwt/client/ui/csslayout/CssLayoutServerRpc.java +++ /dev/null @@ -1,11 +0,0 @@ -/* -@VaadinApache2LicenseForJavaFiles@ - */ -package com.vaadin.terminal.gwt.client.ui.csslayout; - -import com.vaadin.terminal.gwt.client.communication.ServerRpc; -import com.vaadin.terminal.gwt.client.ui.LayoutClickRpc; - -public interface CssLayoutServerRpc extends LayoutClickRpc, ServerRpc { - -}
\ No newline at end of file diff --git a/src/com/vaadin/terminal/gwt/client/ui/csslayout/VCssLayout.java b/src/com/vaadin/terminal/gwt/client/ui/csslayout/VCssLayout.java index 7076120388..53f8ca6c8a 100644 --- a/src/com/vaadin/terminal/gwt/client/ui/csslayout/VCssLayout.java +++ b/src/com/vaadin/terminal/gwt/client/ui/csslayout/VCssLayout.java @@ -9,8 +9,8 @@ import com.google.gwt.user.client.Element; import com.google.gwt.user.client.ui.FlowPanel; import com.google.gwt.user.client.ui.SimplePanel; import com.google.gwt.user.client.ui.Widget; +import com.vaadin.shared.ui.VMarginInfo; import com.vaadin.terminal.gwt.client.StyleConstants; -import com.vaadin.terminal.gwt.client.ui.VMarginInfo; public class VCssLayout extends SimplePanel { public static final String TAGNAME = "csslayout"; diff --git a/src/com/vaadin/terminal/gwt/client/ui/customcomponent/CustomComponentConnector.java b/src/com/vaadin/terminal/gwt/client/ui/customcomponent/CustomComponentConnector.java index 5001711d6c..f7740a9205 100644 --- a/src/com/vaadin/terminal/gwt/client/ui/customcomponent/CustomComponentConnector.java +++ b/src/com/vaadin/terminal/gwt/client/ui/customcomponent/CustomComponentConnector.java @@ -3,11 +3,11 @@ */ package com.vaadin.terminal.gwt.client.ui.customcomponent; +import com.vaadin.shared.ui.Connect; +import com.vaadin.shared.ui.Connect.LoadStyle; import com.vaadin.terminal.gwt.client.ComponentConnector; import com.vaadin.terminal.gwt.client.ConnectorHierarchyChangeEvent; import com.vaadin.terminal.gwt.client.ui.AbstractComponentContainerConnector; -import com.vaadin.terminal.gwt.client.ui.Connect; -import com.vaadin.terminal.gwt.client.ui.Connect.LoadStyle; import com.vaadin.ui.CustomComponent; @Connect(value = CustomComponent.class, loadStyle = LoadStyle.EAGER) @@ -19,6 +19,7 @@ public class CustomComponentConnector extends return (VCustomComponent) super.getWidget(); } + @Override public void updateCaption(ComponentConnector component) { // NOP, custom component dont render composition roots caption } diff --git a/src/com/vaadin/terminal/gwt/client/ui/customfield/CustomFieldConnector.java b/src/com/vaadin/terminal/gwt/client/ui/customfield/CustomFieldConnector.java index 09045df6eb..b4f42c36aa 100644 --- a/src/com/vaadin/terminal/gwt/client/ui/customfield/CustomFieldConnector.java +++ b/src/com/vaadin/terminal/gwt/client/ui/customfield/CustomFieldConnector.java @@ -4,9 +4,9 @@ package com.vaadin.terminal.gwt.client.ui.customfield; import com.google.gwt.core.client.GWT; -import com.vaadin.terminal.gwt.client.AbstractFieldState; -import com.vaadin.terminal.gwt.client.communication.SharedState; -import com.vaadin.terminal.gwt.client.ui.Connect; +import com.vaadin.shared.AbstractFieldState; +import com.vaadin.shared.communication.SharedState; +import com.vaadin.shared.ui.Connect; import com.vaadin.terminal.gwt.client.ui.customcomponent.CustomComponentConnector; import com.vaadin.ui.CustomField; diff --git a/src/com/vaadin/terminal/gwt/client/ui/customlayout/CustomLayoutConnector.java b/src/com/vaadin/terminal/gwt/client/ui/customlayout/CustomLayoutConnector.java index f8861caf92..9d973227d1 100644 --- a/src/com/vaadin/terminal/gwt/client/ui/customlayout/CustomLayoutConnector.java +++ b/src/com/vaadin/terminal/gwt/client/ui/customlayout/CustomLayoutConnector.java @@ -5,17 +5,21 @@ package com.vaadin.terminal.gwt.client.ui.customlayout; import com.google.gwt.user.client.DOM; import com.google.gwt.user.client.ui.Widget; +import com.vaadin.shared.ui.Connect; +import com.vaadin.shared.ui.customlayout.CustomLayoutState; +import com.vaadin.terminal.gwt.client.ApplicationConnection; import com.vaadin.terminal.gwt.client.ComponentConnector; import com.vaadin.terminal.gwt.client.ConnectorHierarchyChangeEvent; +import com.vaadin.terminal.gwt.client.Paintable; +import com.vaadin.terminal.gwt.client.UIDL; import com.vaadin.terminal.gwt.client.communication.StateChangeEvent; import com.vaadin.terminal.gwt.client.ui.AbstractLayoutConnector; -import com.vaadin.terminal.gwt.client.ui.Connect; import com.vaadin.terminal.gwt.client.ui.SimpleManagedLayout; import com.vaadin.ui.CustomLayout; @Connect(CustomLayout.class) public class CustomLayoutConnector extends AbstractLayoutConnector implements - SimpleManagedLayout { + SimpleManagedLayout, Paintable { @Override public CustomLayoutState getState() { @@ -102,11 +106,19 @@ public class CustomLayoutConnector extends AbstractLayoutConnector implements return (VCustomLayout) super.getWidget(); } + @Override public void updateCaption(ComponentConnector paintable) { getWidget().updateCaption(paintable); } + @Override public void layout() { getWidget().iLayoutJS(DOM.getFirstChild(getWidget().getElement())); } + + @Override + public void updateFromUIDL(UIDL uidl, ApplicationConnection client) { + // Not interested in anything from the UIDL - just implementing the + // interface to avoid some warning (#8688) + } } diff --git a/src/com/vaadin/terminal/gwt/client/ui/datefield/AbstractDateFieldConnector.java b/src/com/vaadin/terminal/gwt/client/ui/datefield/AbstractDateFieldConnector.java index b55f480bac..159b5bc414 100644 --- a/src/com/vaadin/terminal/gwt/client/ui/datefield/AbstractDateFieldConnector.java +++ b/src/com/vaadin/terminal/gwt/client/ui/datefield/AbstractDateFieldConnector.java @@ -15,6 +15,7 @@ import com.vaadin.terminal.gwt.client.ui.AbstractFieldConnector; public class AbstractDateFieldConnector extends AbstractFieldConnector implements Paintable { + @Override public void updateFromUIDL(UIDL uidl, ApplicationConnection client) { if (!isRealUpdate(uidl)) { return; @@ -63,15 +64,23 @@ public class AbstractDateFieldConnector extends AbstractFieldConnector newResolution = VDateField.RESOLUTION_YEAR; } + // Remove old stylename that indicates current resolution + setWidgetStyleName( + VDateField.CLASSNAME + + "-" + + VDateField + .resolutionToString(getWidget().currentResolution), + false); + getWidget().currentResolution = newResolution; // Add stylename that indicates current resolution - getWidget() - .addStyleName( - VDateField.CLASSNAME - + "-" - + VDateField - .resolutionToString(getWidget().currentResolution)); + setWidgetStyleName( + VDateField.CLASSNAME + + "-" + + VDateField + .resolutionToString(getWidget().currentResolution), + true); final int year = uidl.getIntVariable("year"); final int month = (getWidget().currentResolution >= VDateField.RESOLUTION_MONTH) ? uidl diff --git a/src/com/vaadin/terminal/gwt/client/ui/datefield/InlineDateFieldConnector.java b/src/com/vaadin/terminal/gwt/client/ui/datefield/InlineDateFieldConnector.java index 7cd9c110ba..304c75322a 100644 --- a/src/com/vaadin/terminal/gwt/client/ui/datefield/InlineDateFieldConnector.java +++ b/src/com/vaadin/terminal/gwt/client/ui/datefield/InlineDateFieldConnector.java @@ -5,10 +5,10 @@ package com.vaadin.terminal.gwt.client.ui.datefield; import java.util.Date; +import com.vaadin.shared.ui.Connect; import com.vaadin.terminal.gwt.client.ApplicationConnection; import com.vaadin.terminal.gwt.client.DateTimeService; import com.vaadin.terminal.gwt.client.UIDL; -import com.vaadin.terminal.gwt.client.ui.Connect; import com.vaadin.terminal.gwt.client.ui.datefield.VCalendarPanel.FocusChangeListener; import com.vaadin.terminal.gwt.client.ui.datefield.VCalendarPanel.TimeChangeListener; import com.vaadin.ui.InlineDateField; @@ -40,6 +40,7 @@ public class InlineDateFieldConnector extends AbstractDateFieldConnector { if (getWidget().currentResolution > VDateField.RESOLUTION_DAY) { getWidget().calendarPanel .setTimeChangeListener(new TimeChangeListener() { + @Override public void changed(int hour, int min, int sec, int msec) { Date d = getWidget().getDate(); if (d == null) { @@ -64,6 +65,7 @@ public class InlineDateFieldConnector extends AbstractDateFieldConnector { if (getWidget().currentResolution <= VDateField.RESOLUTION_MONTH) { getWidget().calendarPanel .setFocusChangeListener(new FocusChangeListener() { + @Override public void focusChanged(Date date) { Date date2 = new Date(); if (getWidget().calendarPanel.getDate() != null) { diff --git a/src/com/vaadin/terminal/gwt/client/ui/datefield/PopupDateFieldConnector.java b/src/com/vaadin/terminal/gwt/client/ui/datefield/PopupDateFieldConnector.java index e169d83b48..a8c8ada1d9 100644 --- a/src/com/vaadin/terminal/gwt/client/ui/datefield/PopupDateFieldConnector.java +++ b/src/com/vaadin/terminal/gwt/client/ui/datefield/PopupDateFieldConnector.java @@ -6,10 +6,10 @@ package com.vaadin.terminal.gwt.client.ui.datefield; import java.util.Date; +import com.vaadin.shared.ui.Connect; import com.vaadin.terminal.gwt.client.ApplicationConnection; import com.vaadin.terminal.gwt.client.DateTimeService; import com.vaadin.terminal.gwt.client.UIDL; -import com.vaadin.terminal.gwt.client.ui.Connect; import com.vaadin.terminal.gwt.client.ui.datefield.VCalendarPanel.FocusChangeListener; import com.vaadin.terminal.gwt.client.ui.datefield.VCalendarPanel.TimeChangeListener; import com.vaadin.ui.DateField; @@ -35,14 +35,6 @@ public class PopupDateFieldConnector extends TextualDateConnector { super.updateFromUIDL(uidl, client); - String popupStyleNames = getStyleNames(VPopupCalendar.POPUP_PRIMARY_STYLE_NAME); - popupStyleNames += " " - + VDateField.CLASSNAME - + "-" - + VPopupCalendar - .resolutionToString(getWidget().currentResolution); - getWidget().popup.setStyleName(popupStyleNames); - getWidget().calendar.setDateTimeService(getWidget() .getDateTimeService()); getWidget().calendar.setShowISOWeekNumbers(getWidget() @@ -61,6 +53,7 @@ public class PopupDateFieldConnector extends TextualDateConnector { if (getWidget().currentResolution <= VPopupCalendar.RESOLUTION_MONTH) { getWidget().calendar .setFocusChangeListener(new FocusChangeListener() { + @Override public void focusChanged(Date date) { getWidget().updateValue(date); getWidget().buildDate(); @@ -76,6 +69,7 @@ public class PopupDateFieldConnector extends TextualDateConnector { if (getWidget().currentResolution > VPopupCalendar.RESOLUTION_DAY) { getWidget().calendar .setTimeChangeListener(new TimeChangeListener() { + @Override public void changed(int hour, int min, int sec, int msec) { Date d = getWidget().getDate(); if (d == null) { @@ -114,4 +108,30 @@ public class PopupDateFieldConnector extends TextualDateConnector { public VPopupCalendar getWidget() { return (VPopupCalendar) super.getWidget(); } + + @Override + protected void setWidgetStyleName(String styleName, boolean add) { + super.setWidgetStyleName(styleName, add); + + // update the style change to popup calendar widget + getWidget().popup.setStyleName(styleName, add); + } + + @Override + protected void setWidgetStyleNameWithPrefix(String prefix, + String styleName, boolean add) { + super.setWidgetStyleNameWithPrefix(prefix, styleName, add); + + // update the style change to popup calendar widget with the correct + // prefix + if (!styleName.startsWith("-")) { + getWidget().popup.setStyleName( + VPopupCalendar.POPUP_PRIMARY_STYLE_NAME + "-" + styleName, + add); + } else { + getWidget().popup.setStyleName( + VPopupCalendar.POPUP_PRIMARY_STYLE_NAME + styleName, add); + } + } + } diff --git a/src/com/vaadin/terminal/gwt/client/ui/datefield/VCalendarPanel.java b/src/com/vaadin/terminal/gwt/client/ui/datefield/VCalendarPanel.java index acfff60d53..e4e25a5a2e 100644 --- a/src/com/vaadin/terminal/gwt/client/ui/datefield/VCalendarPanel.java +++ b/src/com/vaadin/terminal/gwt/client/ui/datefield/VCalendarPanel.java @@ -121,6 +121,7 @@ public class VCalendarPanel extends FocusableFlexTable implements * com.google.gwt.event.dom.client.ClickHandler#onClick(com.google.gwt * .event.dom.client.ClickEvent) */ + @Override public void onClick(ClickEvent event) { Day day = (Day) event.getSource(); focusDay(day.getDate()); @@ -718,6 +719,7 @@ public class VCalendarPanel extends FocusableFlexTable implements * com.google.gwt.event.dom.client.KeyDownHandler#onKeyDown(com.google.gwt * .event.dom.client.KeyDownEvent) */ + @Override public void onKeyDown(KeyDownEvent event) { handleKeyPress(event); } @@ -729,6 +731,7 @@ public class VCalendarPanel extends FocusableFlexTable implements * com.google.gwt.event.dom.client.KeyPressHandler#onKeyPress(com.google * .gwt.event.dom.client.KeyPressEvent) */ + @Override public void onKeyPress(KeyPressEvent event) { handleKeyPress(event); } @@ -1124,6 +1127,7 @@ public class VCalendarPanel extends FocusableFlexTable implements * com.google.gwt.event.dom.client.MouseOutHandler#onMouseOut(com.google * .gwt.event.dom.client.MouseOutEvent) */ + @Override public void onMouseOut(MouseOutEvent event) { if (mouseTimer != null) { mouseTimer.cancel(); @@ -1137,6 +1141,7 @@ public class VCalendarPanel extends FocusableFlexTable implements * com.google.gwt.event.dom.client.MouseDownHandler#onMouseDown(com.google * .gwt.event.dom.client.MouseDownEvent) */ + @Override public void onMouseDown(MouseDownEvent event) { // Allow user to click-n-hold for fast-forward or fast-rewind. // Timer is first used for a 500ms delay after mousedown. After that has @@ -1169,6 +1174,7 @@ public class VCalendarPanel extends FocusableFlexTable implements * com.google.gwt.event.dom.client.MouseUpHandler#onMouseUp(com.google.gwt * .event.dom.client.MouseUpEvent) */ + @Override public void onMouseUp(MouseUpEvent event) { if (mouseTimer != null) { mouseTimer.cancel(); @@ -1354,6 +1360,7 @@ public class VCalendarPanel extends FocusableFlexTable implements ListBox lastDropDown = getLastDropDown(); lastDropDown.addKeyDownHandler(new KeyDownHandler() { + @Override public void onKeyDown(KeyDownEvent event) { boolean shiftKey = event.getNativeEvent().getShiftKey(); if (shiftKey) { @@ -1439,6 +1446,7 @@ public class VCalendarPanel extends FocusableFlexTable implements * com.google.gwt.event.dom.client.ChangeHandler#onChange(com.google.gwt * .event.dom.client.ChangeEvent) */ + @Override public void onChange(ChangeEvent event) { /* * Value from dropdowns gets always set for the value. Like year and @@ -1589,6 +1597,7 @@ public class VCalendarPanel extends FocusableFlexTable implements * com.google.gwt.event.dom.client.BlurHandler#onBlur(com.google.gwt.event * .dom.client.BlurEvent) */ + @Override public void onBlur(final BlurEvent event) { if (event.getSource() instanceof VCalendarPanel) { hasFocus = false; @@ -1603,6 +1612,7 @@ public class VCalendarPanel extends FocusableFlexTable implements * com.google.gwt.event.dom.client.FocusHandler#onFocus(com.google.gwt.event * .dom.client.FocusEvent) */ + @Override public void onFocus(FocusEvent event) { if (event.getSource() instanceof VCalendarPanel) { hasFocus = true; @@ -1627,6 +1637,7 @@ public class VCalendarPanel extends FocusableFlexTable implements private static final String SUBPART_DAY = "day"; private static final String SUBPART_MONTH_YEAR_HEADER = "header"; + @Override public String getSubPartName(Element subElement) { if (contains(nextMonth, subElement)) { return SUBPART_NEXT_MONTH; @@ -1685,6 +1696,7 @@ public class VCalendarPanel extends FocusableFlexTable implements return w.getElement().isOrHasChild(subElement); } + @Override public Element getSubPartElement(String subPart) { if (SUBPART_NEXT_MONTH.equals(subPart)) { return nextMonth.getElement(); diff --git a/src/com/vaadin/terminal/gwt/client/ui/datefield/VDateField.java b/src/com/vaadin/terminal/gwt/client/ui/datefield/VDateField.java index d169b1b47e..614c4febdd 100644 --- a/src/com/vaadin/terminal/gwt/client/ui/datefield/VDateField.java +++ b/src/com/vaadin/terminal/gwt/client/ui/datefield/VDateField.java @@ -6,11 +6,9 @@ package com.vaadin.terminal.gwt.client.ui.datefield; import java.util.Date; -import com.google.gwt.user.client.Event; import com.google.gwt.user.client.ui.FlowPanel; import com.vaadin.terminal.gwt.client.ApplicationConnection; import com.vaadin.terminal.gwt.client.DateTimeService; -import com.vaadin.terminal.gwt.client.VTooltip; import com.vaadin.terminal.gwt.client.ui.Field; public class VDateField extends FlowPanel implements Field { @@ -66,15 +64,6 @@ public class VDateField extends FlowPanel implements Field { public VDateField() { setStyleName(CLASSNAME); dts = new DateTimeService(); - sinkEvents(VTooltip.TOOLTIP_EVENTS); - } - - @Override - public void onBrowserEvent(Event event) { - super.onBrowserEvent(event); - if (client != null) { - client.handleTooltipEvent(event, this); - } } /* diff --git a/src/com/vaadin/terminal/gwt/client/ui/datefield/VDateFieldCalendar.java b/src/com/vaadin/terminal/gwt/client/ui/datefield/VDateFieldCalendar.java index 84b3c678eb..e411fb3013 100644 --- a/src/com/vaadin/terminal/gwt/client/ui/datefield/VDateFieldCalendar.java +++ b/src/com/vaadin/terminal/gwt/client/ui/datefield/VDateFieldCalendar.java @@ -23,16 +23,19 @@ public class VDateFieldCalendar extends VDateField { calendarPanel = new VCalendarPanel(); add(calendarPanel); calendarPanel.setSubmitListener(new SubmitListener() { + @Override public void onSubmit() { updateValueFromPanel(); } + @Override public void onCancel() { // TODO Auto-generated method stub } }); calendarPanel.setFocusOutListener(new FocusOutListener() { + @Override public boolean onFocusOut(DomEvent<?> event) { updateValueFromPanel(); return false; diff --git a/src/com/vaadin/terminal/gwt/client/ui/datefield/VPopupCalendar.java b/src/com/vaadin/terminal/gwt/client/ui/datefield/VPopupCalendar.java index 7011e5358b..de6ebf29af 100644 --- a/src/com/vaadin/terminal/gwt/client/ui/datefield/VPopupCalendar.java +++ b/src/com/vaadin/terminal/gwt/client/ui/datefield/VPopupCalendar.java @@ -66,6 +66,7 @@ public class VPopupCalendar extends VTextualDate implements Field, calendar = GWT.create(VCalendarPanel.class); calendar.setFocusOutListener(new FocusOutListener() { + @Override public boolean onFocusOut(DomEvent<?> event) { event.preventDefault(); closeCalendarPanel(); @@ -74,6 +75,7 @@ public class VPopupCalendar extends VTextualDate implements Field, }); calendar.setSubmitListener(new SubmitListener() { + @Override public void onSubmit() { // Update internal value and send valuechange event if immediate updateValue(calendar.getDate()); @@ -84,6 +86,7 @@ public class VPopupCalendar extends VTextualDate implements Field, closeCalendarPanel(); } + @Override public void onCancel() { closeCalendarPanel(); } @@ -164,6 +167,7 @@ public class VPopupCalendar extends VTextualDate implements Field, popup.setWidth(""); popup.setHeight(""); popup.setPopupPositionAndShow(new PositionCallback() { + @Override public void setPosition(int offsetWidth, int offsetHeight) { final int w = offsetWidth; final int h = offsetHeight; @@ -232,6 +236,7 @@ public class VPopupCalendar extends VTextualDate implements Field, * com.google.gwt.event.dom.client.ClickHandler#onClick(com.google.gwt.event * .dom.client.ClickEvent) */ + @Override public void onClick(ClickEvent event) { if (event.getSource() == calendarToggle && isEnabled()) { openCalendarPanel(); @@ -245,6 +250,7 @@ public class VPopupCalendar extends VTextualDate implements Field, * com.google.gwt.event.logical.shared.CloseHandler#onClose(com.google.gwt * .event.logical.shared.CloseEvent) */ + @Override public void onClose(CloseEvent<PopupPanel> event) { if (event.getSource() == popup) { buildDate(); diff --git a/src/com/vaadin/terminal/gwt/client/ui/datefield/VTextualDate.java b/src/com/vaadin/terminal/gwt/client/ui/datefield/VTextualDate.java index db4eca152a..8c252ddc69 100644 --- a/src/com/vaadin/terminal/gwt/client/ui/datefield/VTextualDate.java +++ b/src/com/vaadin/terminal/gwt/client/ui/datefield/VTextualDate.java @@ -14,7 +14,7 @@ import com.google.gwt.event.dom.client.FocusEvent; import com.google.gwt.event.dom.client.FocusHandler; import com.google.gwt.user.client.Element; import com.google.gwt.user.client.ui.TextBox; -import com.vaadin.terminal.gwt.client.EventId; +import com.vaadin.shared.EventId; import com.vaadin.terminal.gwt.client.Focusable; import com.vaadin.terminal.gwt.client.LocaleNotLoadedException; import com.vaadin.terminal.gwt.client.LocaleService; @@ -50,6 +50,7 @@ public class VTextualDate extends VDateField implements Field, ChangeHandler, text.addStyleName(CLASSNAME + "-textfield"); text.addChangeHandler(this); text.addFocusHandler(new FocusHandler() { + @Override public void onFocus(FocusEvent event) { text.addStyleName(VTextField.CLASSNAME + "-" + VTextField.CLASSNAME_FOCUS); @@ -66,6 +67,7 @@ public class VTextualDate extends VDateField implements Field, ChangeHandler, } }); text.addBlurHandler(new BlurHandler() { + @Override public void onBlur(BlurEvent event) { text.removeStyleName(VTextField.CLASSNAME + "-" + VTextField.CLASSNAME_FOCUS); @@ -168,6 +170,7 @@ public class VTextualDate extends VDateField implements Field, ChangeHandler, } } + @Override @SuppressWarnings("deprecation") public void onChange(ChangeEvent event) { if (!text.getText().equals("")) { @@ -291,6 +294,7 @@ public class VTextualDate extends VDateField implements Field, ChangeHandler, return format.trim(); } + @Override public void focus() { text.setFocus(true); } @@ -315,6 +319,7 @@ public class VTextualDate extends VDateField implements Field, ChangeHandler, private final String TEXTFIELD_ID = "field"; + @Override public Element getSubPartElement(String subPart) { if (subPart.equals(TEXTFIELD_ID)) { return text.getElement(); @@ -323,6 +328,7 @@ public class VTextualDate extends VDateField implements Field, ChangeHandler, return null; } + @Override public String getSubPartName(Element subElement) { if (text.getElement().isOrHasChild(subElement)) { return TEXTFIELD_ID; diff --git a/src/com/vaadin/terminal/gwt/client/ui/dd/DDUtil.java b/src/com/vaadin/terminal/gwt/client/ui/dd/DDUtil.java index 97f5eb86fd..f9ec8a2f48 100644 --- a/src/com/vaadin/terminal/gwt/client/ui/dd/DDUtil.java +++ b/src/com/vaadin/terminal/gwt/client/ui/dd/DDUtil.java @@ -6,6 +6,8 @@ package com.vaadin.terminal.gwt.client.ui.dd; import com.google.gwt.dom.client.NativeEvent; import com.google.gwt.user.client.Element; import com.google.gwt.user.client.Window; +import com.vaadin.shared.ui.dd.HorizontalDropLocation; +import com.vaadin.shared.ui.dd.VerticalDropLocation; import com.vaadin.terminal.gwt.client.Util; public class DDUtil { diff --git a/src/com/vaadin/terminal/gwt/client/ui/dd/VAbstractDropHandler.java b/src/com/vaadin/terminal/gwt/client/ui/dd/VAbstractDropHandler.java index ce47c7d13a..ce0533ac1f 100644 --- a/src/com/vaadin/terminal/gwt/client/ui/dd/VAbstractDropHandler.java +++ b/src/com/vaadin/terminal/gwt/client/ui/dd/VAbstractDropHandler.java @@ -47,6 +47,7 @@ public abstract class VAbstractDropHandler implements VDropHandler { /** * Default implementation does nothing. */ + @Override public void dragOver(VDragEvent drag) { } @@ -55,6 +56,7 @@ public abstract class VAbstractDropHandler implements VDropHandler { * Default implementation does nothing. Implementors should clean possible * emphasis or drag icons here. */ + @Override public void dragLeave(VDragEvent drag) { } @@ -73,8 +75,10 @@ public abstract class VAbstractDropHandler implements VDropHandler { * implementation. * */ + @Override public void dragEnter(final VDragEvent drag) { validate(new VAcceptCallback() { + @Override public void accepted(VDragEvent event) { dragAccepted(drag); } @@ -94,6 +98,7 @@ public abstract class VAbstractDropHandler implements VDropHandler { protected void validate(final VAcceptCallback cb, final VDragEvent event) { Command checkCriteria = new Command() { + @Override public void execute() { acceptCriteria.accept(event, criterioUIDL, cb); } @@ -109,12 +114,14 @@ public abstract class VAbstractDropHandler implements VDropHandler { * can't be verified on client or if {@link AcceptCriterion} are met on * client. */ + @Override public boolean drop(VDragEvent drag) { if (acceptCriteria.needsServerSideCheck(drag, criterioUIDL)) { return true; } else { validated = false; acceptCriteria.accept(drag, criterioUIDL, new VAcceptCallback() { + @Override public void accepted(VDragEvent event) { validated = true; } @@ -129,6 +136,7 @@ public abstract class VAbstractDropHandler implements VDropHandler { * side counterpart of the Paintable is expected to implement * {@link DropTarget} interface. */ + @Override public abstract ComponentConnector getConnector(); } diff --git a/src/com/vaadin/terminal/gwt/client/ui/dd/VAcceptAll.java b/src/com/vaadin/terminal/gwt/client/ui/dd/VAcceptAll.java index a864a93c2a..7ce0d69727 100644 --- a/src/com/vaadin/terminal/gwt/client/ui/dd/VAcceptAll.java +++ b/src/com/vaadin/terminal/gwt/client/ui/dd/VAcceptAll.java @@ -7,6 +7,7 @@ package com.vaadin.terminal.gwt.client.ui.dd; import com.vaadin.event.dd.acceptcriteria.AcceptAll; +import com.vaadin.shared.ui.dd.AcceptCriterion; import com.vaadin.terminal.gwt.client.UIDL; @AcceptCriterion(AcceptAll.class) diff --git a/src/com/vaadin/terminal/gwt/client/ui/dd/VAcceptCriterion.java b/src/com/vaadin/terminal/gwt/client/ui/dd/VAcceptCriterion.java index 0d71e23903..b1a88166ec 100644 --- a/src/com/vaadin/terminal/gwt/client/ui/dd/VAcceptCriterion.java +++ b/src/com/vaadin/terminal/gwt/client/ui/dd/VAcceptCriterion.java @@ -19,6 +19,7 @@ public abstract class VAcceptCriterion { final VAcceptCallback callback) { if (needsServerSideCheck(drag, configuration)) { VDragEventServerCallback acceptCallback = new VDragEventServerCallback() { + @Override public void handleResponse(boolean accepted, UIDL response) { if (accepted) { callback.accepted(drag); diff --git a/src/com/vaadin/terminal/gwt/client/ui/dd/VAnd.java b/src/com/vaadin/terminal/gwt/client/ui/dd/VAnd.java index 19399d7d4a..2f0cdc2a80 100644 --- a/src/com/vaadin/terminal/gwt/client/ui/dd/VAnd.java +++ b/src/com/vaadin/terminal/gwt/client/ui/dd/VAnd.java @@ -7,6 +7,7 @@ package com.vaadin.terminal.gwt.client.ui.dd; import com.vaadin.event.dd.acceptcriteria.And; +import com.vaadin.shared.ui.dd.AcceptCriterion; import com.vaadin.terminal.gwt.client.UIDL; @AcceptCriterion(And.class) @@ -33,6 +34,7 @@ final public class VAnd extends VAcceptCriterion implements VAcceptCallback { return true; } + @Override public void accepted(VDragEvent event) { b1 = true; } diff --git a/src/com/vaadin/terminal/gwt/client/ui/dd/VContainsDataFlavor.java b/src/com/vaadin/terminal/gwt/client/ui/dd/VContainsDataFlavor.java index 3cd341eefd..7c5d9f769a 100644 --- a/src/com/vaadin/terminal/gwt/client/ui/dd/VContainsDataFlavor.java +++ b/src/com/vaadin/terminal/gwt/client/ui/dd/VContainsDataFlavor.java @@ -7,6 +7,7 @@ package com.vaadin.terminal.gwt.client.ui.dd; import com.vaadin.event.dd.acceptcriteria.ContainsDataFlavor; +import com.vaadin.shared.ui.dd.AcceptCriterion; import com.vaadin.terminal.gwt.client.UIDL; @AcceptCriterion(ContainsDataFlavor.class) diff --git a/src/com/vaadin/terminal/gwt/client/ui/dd/VDragAndDropManager.java b/src/com/vaadin/terminal/gwt/client/ui/dd/VDragAndDropManager.java index 2f404a3028..bc98860716 100644 --- a/src/com/vaadin/terminal/gwt/client/ui/dd/VDragAndDropManager.java +++ b/src/com/vaadin/terminal/gwt/client/ui/dd/VDragAndDropManager.java @@ -22,9 +22,10 @@ import com.google.gwt.user.client.Event.NativePreviewHandler; import com.google.gwt.user.client.Timer; import com.google.gwt.user.client.ui.RootPanel; import com.google.gwt.user.client.ui.Widget; +import com.vaadin.shared.MouseEventDetails; +import com.vaadin.shared.ui.dd.DragEventType; import com.vaadin.terminal.gwt.client.ApplicationConnection; import com.vaadin.terminal.gwt.client.ComponentConnector; -import com.vaadin.terminal.gwt.client.MouseEventDetails; import com.vaadin.terminal.gwt.client.MouseEventDetailsBuilder; import com.vaadin.terminal.gwt.client.UIDL; import com.vaadin.terminal.gwt.client.Util; @@ -48,6 +49,7 @@ public class VDragAndDropManager { private final class DefaultDragAndDropEventHandler implements NativePreviewHandler { + @Override public void onPreviewNativeEvent(NativePreviewEvent event) { NativeEvent nativeEvent = event.getNativeEvent(); @@ -223,10 +225,6 @@ public class VDragAndDropManager { } - public enum DragEventType { - ENTER, LEAVE, OVER, DROP - } - public static final String DD_SERVICE = "DD"; private static VDragAndDropManager instance; @@ -307,6 +305,7 @@ public class VDragAndDropManager { final Command startDrag = new Command() { + @Override public void execute() { isStarted = true; addActiveDragSourceStyleName(); @@ -352,6 +351,7 @@ public class VDragAndDropManager { deferredStartRegistration = Event .addNativePreviewHandler(new NativePreviewHandler() { + @Override public void onPreviewNativeEvent( NativePreviewEvent event) { int typeInt = event.getTypeInt(); @@ -509,6 +509,7 @@ public class VDragAndDropManager { final ApplicationConnection client = currentDropHandler .getApplicationConnection(); Scheduler.get().scheduleFixedDelay(new RepeatingCommand() { + @Override public boolean execute() { if (!client.hasActiveRequest()) { removeActiveDragSourceStyleName(dragSource); diff --git a/src/com/vaadin/terminal/gwt/client/ui/dd/VDragSourceIs.java b/src/com/vaadin/terminal/gwt/client/ui/dd/VDragSourceIs.java index b6af81085f..ffb923f3e0 100644 --- a/src/com/vaadin/terminal/gwt/client/ui/dd/VDragSourceIs.java +++ b/src/com/vaadin/terminal/gwt/client/ui/dd/VDragSourceIs.java @@ -4,6 +4,7 @@ package com.vaadin.terminal.gwt.client.ui.dd; import com.vaadin.event.dd.acceptcriteria.SourceIs; +import com.vaadin.shared.ui.dd.AcceptCriterion; import com.vaadin.terminal.gwt.client.ComponentConnector; import com.vaadin.terminal.gwt.client.ConnectorMap; import com.vaadin.terminal.gwt.client.UIDL; diff --git a/src/com/vaadin/terminal/gwt/client/ui/dd/VIsOverId.java b/src/com/vaadin/terminal/gwt/client/ui/dd/VIsOverId.java index 5dad4873ea..d0055d48dd 100644 --- a/src/com/vaadin/terminal/gwt/client/ui/dd/VIsOverId.java +++ b/src/com/vaadin/terminal/gwt/client/ui/dd/VIsOverId.java @@ -6,6 +6,7 @@ */ package com.vaadin.terminal.gwt.client.ui.dd; +import com.vaadin.shared.ui.dd.AcceptCriterion; import com.vaadin.terminal.gwt.client.ComponentConnector; import com.vaadin.terminal.gwt.client.ConnectorMap; import com.vaadin.terminal.gwt.client.UIDL; diff --git a/src/com/vaadin/terminal/gwt/client/ui/dd/VItemIdIs.java b/src/com/vaadin/terminal/gwt/client/ui/dd/VItemIdIs.java index ca4d0e900d..67f323a950 100644 --- a/src/com/vaadin/terminal/gwt/client/ui/dd/VItemIdIs.java +++ b/src/com/vaadin/terminal/gwt/client/ui/dd/VItemIdIs.java @@ -6,6 +6,7 @@ */ package com.vaadin.terminal.gwt.client.ui.dd; +import com.vaadin.shared.ui.dd.AcceptCriterion; import com.vaadin.terminal.gwt.client.ComponentConnector; import com.vaadin.terminal.gwt.client.UIDL; import com.vaadin.ui.AbstractSelect; diff --git a/src/com/vaadin/terminal/gwt/client/ui/dd/VLazyInitItemIdentifiers.java b/src/com/vaadin/terminal/gwt/client/ui/dd/VLazyInitItemIdentifiers.java index e3bed02642..bfda603d58 100644 --- a/src/com/vaadin/terminal/gwt/client/ui/dd/VLazyInitItemIdentifiers.java +++ b/src/com/vaadin/terminal/gwt/client/ui/dd/VLazyInitItemIdentifiers.java @@ -8,6 +8,7 @@ package com.vaadin.terminal.gwt.client.ui.dd; import java.util.HashSet; +import com.vaadin.shared.ui.dd.AcceptCriterion; import com.vaadin.terminal.gwt.client.UIDL; import com.vaadin.ui.Table; import com.vaadin.ui.Tree; @@ -48,6 +49,7 @@ public class VLazyInitItemIdentifiers extends VAcceptCriterion { VDragEventServerCallback acceptCallback = new VDragEventServerCallback() { + @Override public void handleResponse(boolean accepted, UIDL response) { hashSet = new HashSet<String>(); String[] stringArrayAttribute = response diff --git a/src/com/vaadin/terminal/gwt/client/ui/dd/VNot.java b/src/com/vaadin/terminal/gwt/client/ui/dd/VNot.java index e4d2dff606..8355afc625 100644 --- a/src/com/vaadin/terminal/gwt/client/ui/dd/VNot.java +++ b/src/com/vaadin/terminal/gwt/client/ui/dd/VNot.java @@ -7,6 +7,7 @@ package com.vaadin.terminal.gwt.client.ui.dd; import com.vaadin.event.dd.acceptcriteria.Not; +import com.vaadin.shared.ui.dd.AcceptCriterion; import com.vaadin.terminal.gwt.client.UIDL; import com.vaadin.terminal.gwt.client.VConsole; @@ -33,6 +34,7 @@ final public class VNot extends VAcceptCriterion { b1 = false; VAcceptCallback accept1cb = new VAcceptCallback() { + @Override public void accepted(VDragEvent event) { b1 = true; } diff --git a/src/com/vaadin/terminal/gwt/client/ui/dd/VOr.java b/src/com/vaadin/terminal/gwt/client/ui/dd/VOr.java index 91ba4bf0c4..46bf28b42a 100644 --- a/src/com/vaadin/terminal/gwt/client/ui/dd/VOr.java +++ b/src/com/vaadin/terminal/gwt/client/ui/dd/VOr.java @@ -7,6 +7,7 @@ package com.vaadin.terminal.gwt.client.ui.dd; import com.vaadin.event.dd.acceptcriteria.Or; +import com.vaadin.shared.ui.dd.AcceptCriterion; import com.vaadin.terminal.gwt.client.UIDL; /** @@ -41,6 +42,7 @@ final public class VOr extends VAcceptCriterion implements VAcceptCallback { return false; // not used here } + @Override public void accepted(VDragEvent event) { accepted = true; } diff --git a/src/com/vaadin/terminal/gwt/client/ui/dd/VServerAccept.java b/src/com/vaadin/terminal/gwt/client/ui/dd/VServerAccept.java index 64c2da5320..42d4d90ae4 100644 --- a/src/com/vaadin/terminal/gwt/client/ui/dd/VServerAccept.java +++ b/src/com/vaadin/terminal/gwt/client/ui/dd/VServerAccept.java @@ -7,6 +7,7 @@ package com.vaadin.terminal.gwt.client.ui.dd; import com.vaadin.event.dd.acceptcriteria.ServerSideCriterion; +import com.vaadin.shared.ui.dd.AcceptCriterion; import com.vaadin.terminal.gwt.client.UIDL; @AcceptCriterion(ServerSideCriterion.class) @@ -16,6 +17,7 @@ final public class VServerAccept extends VAcceptCriterion { final VAcceptCallback callback) { VDragEventServerCallback acceptCallback = new VDragEventServerCallback() { + @Override public void handleResponse(boolean accepted, UIDL response) { if (accepted) { callback.accepted(drag); diff --git a/src/com/vaadin/terminal/gwt/client/ui/dd/VSourceIsTarget.java b/src/com/vaadin/terminal/gwt/client/ui/dd/VSourceIsTarget.java index 2365eabe22..dcb2f405fa 100644 --- a/src/com/vaadin/terminal/gwt/client/ui/dd/VSourceIsTarget.java +++ b/src/com/vaadin/terminal/gwt/client/ui/dd/VSourceIsTarget.java @@ -7,6 +7,7 @@ package com.vaadin.terminal.gwt.client.ui.dd; import com.vaadin.event.dd.acceptcriteria.SourceIsTarget; +import com.vaadin.shared.ui.dd.AcceptCriterion; import com.vaadin.terminal.gwt.client.ComponentConnector; import com.vaadin.terminal.gwt.client.UIDL; diff --git a/src/com/vaadin/terminal/gwt/client/ui/dd/VTargetDetailIs.java b/src/com/vaadin/terminal/gwt/client/ui/dd/VTargetDetailIs.java index 610d555745..e67d81387c 100644 --- a/src/com/vaadin/terminal/gwt/client/ui/dd/VTargetDetailIs.java +++ b/src/com/vaadin/terminal/gwt/client/ui/dd/VTargetDetailIs.java @@ -7,6 +7,7 @@ package com.vaadin.terminal.gwt.client.ui.dd; import com.vaadin.event.dd.acceptcriteria.TargetDetailIs; +import com.vaadin.shared.ui.dd.AcceptCriterion; import com.vaadin.terminal.gwt.client.UIDL; @AcceptCriterion(TargetDetailIs.class) diff --git a/src/com/vaadin/terminal/gwt/client/ui/dd/VTargetInSubtree.java b/src/com/vaadin/terminal/gwt/client/ui/dd/VTargetInSubtree.java index 56478b2b95..14bca0ed91 100644 --- a/src/com/vaadin/terminal/gwt/client/ui/dd/VTargetInSubtree.java +++ b/src/com/vaadin/terminal/gwt/client/ui/dd/VTargetInSubtree.java @@ -7,6 +7,7 @@ package com.vaadin.terminal.gwt.client.ui.dd; import com.google.gwt.user.client.ui.Widget; +import com.vaadin.shared.ui.dd.AcceptCriterion; import com.vaadin.terminal.gwt.client.UIDL; import com.vaadin.terminal.gwt.client.ui.tree.VTree; import com.vaadin.terminal.gwt.client.ui.tree.VTree.TreeNode; diff --git a/src/com/vaadin/terminal/gwt/client/ui/draganddropwrapper/DragAndDropWrapperConnector.java b/src/com/vaadin/terminal/gwt/client/ui/draganddropwrapper/DragAndDropWrapperConnector.java index 2a78cc4433..6914b451fa 100644 --- a/src/com/vaadin/terminal/gwt/client/ui/draganddropwrapper/DragAndDropWrapperConnector.java +++ b/src/com/vaadin/terminal/gwt/client/ui/draganddropwrapper/DragAndDropWrapperConnector.java @@ -6,10 +6,10 @@ package com.vaadin.terminal.gwt.client.ui.draganddropwrapper; import java.util.HashMap; import java.util.Set; +import com.vaadin.shared.ui.Connect; import com.vaadin.terminal.gwt.client.ApplicationConnection; import com.vaadin.terminal.gwt.client.Paintable; import com.vaadin.terminal.gwt.client.UIDL; -import com.vaadin.terminal.gwt.client.ui.Connect; import com.vaadin.terminal.gwt.client.ui.customcomponent.CustomComponentConnector; import com.vaadin.ui.DragAndDropWrapper; @@ -17,6 +17,7 @@ import com.vaadin.ui.DragAndDropWrapper; public class DragAndDropWrapperConnector extends CustomComponentConnector implements Paintable { + @Override public void updateFromUIDL(UIDL uidl, ApplicationConnection client) { getWidget().client = client; if (isRealUpdate(uidl) && !uidl.hasAttribute("hidden")) { diff --git a/src/com/vaadin/terminal/gwt/client/ui/draganddropwrapper/VDragAndDropWrapper.java b/src/com/vaadin/terminal/gwt/client/ui/draganddropwrapper/VDragAndDropWrapper.java index 4c36e92bbb..e77055764e 100644 --- a/src/com/vaadin/terminal/gwt/client/ui/draganddropwrapper/VDragAndDropWrapper.java +++ b/src/com/vaadin/terminal/gwt/client/ui/draganddropwrapper/VDragAndDropWrapper.java @@ -22,6 +22,8 @@ import com.google.gwt.user.client.Timer; import com.google.gwt.user.client.ui.Widget; import com.google.gwt.xhr.client.ReadyStateChangeHandler; import com.google.gwt.xhr.client.XMLHttpRequest; +import com.vaadin.shared.ui.dd.HorizontalDropLocation; +import com.vaadin.shared.ui.dd.VerticalDropLocation; import com.vaadin.terminal.gwt.client.ApplicationConnection; import com.vaadin.terminal.gwt.client.ComponentConnector; import com.vaadin.terminal.gwt.client.ConnectorMap; @@ -29,11 +31,9 @@ import com.vaadin.terminal.gwt.client.LayoutManager; import com.vaadin.terminal.gwt.client.MouseEventDetailsBuilder; import com.vaadin.terminal.gwt.client.Util; import com.vaadin.terminal.gwt.client.VConsole; -import com.vaadin.terminal.gwt.client.VTooltip; import com.vaadin.terminal.gwt.client.ValueMap; import com.vaadin.terminal.gwt.client.ui.customcomponent.VCustomComponent; import com.vaadin.terminal.gwt.client.ui.dd.DDUtil; -import com.vaadin.terminal.gwt.client.ui.dd.HorizontalDropLocation; import com.vaadin.terminal.gwt.client.ui.dd.VAbstractDropHandler; import com.vaadin.terminal.gwt.client.ui.dd.VAcceptCallback; import com.vaadin.terminal.gwt.client.ui.dd.VDragAndDropManager; @@ -43,7 +43,6 @@ import com.vaadin.terminal.gwt.client.ui.dd.VHasDropHandler; import com.vaadin.terminal.gwt.client.ui.dd.VHtml5DragEvent; import com.vaadin.terminal.gwt.client.ui.dd.VHtml5File; import com.vaadin.terminal.gwt.client.ui.dd.VTransferable; -import com.vaadin.terminal.gwt.client.ui.dd.VerticalDropLocation; /** * @@ -64,12 +63,12 @@ public class VDragAndDropWrapper extends VCustomComponent implements public VDragAndDropWrapper() { super(); - sinkEvents(VTooltip.TOOLTIP_EVENTS); hookHtml5Events(getElement()); setStyleName(CLASSNAME); addDomHandler(new MouseDownHandler() { + @Override public void onMouseDown(MouseDownEvent event) { if (startDrag(event.getNativeEvent())) { event.preventDefault(); // prevent text selection @@ -79,6 +78,7 @@ public class VDragAndDropWrapper extends VCustomComponent implements addDomHandler(new TouchStartHandler() { + @Override public void onTouchStart(TouchStartEvent event) { if (startDrag(event.getNativeEvent())) { /* @@ -92,16 +92,6 @@ public class VDragAndDropWrapper extends VCustomComponent implements sinkEvents(Event.TOUCHEVENTS); } - @Override - public void onBrowserEvent(Event event) { - super.onBrowserEvent(event); - - if (hasTooltip && client != null) { - // Override child tooltips if the wrapper has a tooltip defined - client.handleTooltipEvent(event, this); - } - } - /** * Starts a drag and drop operation from mousedown or touchstart event if * required conditions are met. @@ -178,6 +168,7 @@ public class VDragAndDropWrapper extends VCustomComponent implements private ReadyStateChangeHandler readyStateChangeHandler = new ReadyStateChangeHandler() { + @Override public void onReadyStateChange(XMLHttpRequest xhr) { if (xhr.getReadyState() == XMLHttpRequest.DONE) { // visit server for possible @@ -194,6 +185,7 @@ public class VDragAndDropWrapper extends VCustomComponent implements void startNextUpload() { Scheduler.get().scheduleDeferred(new Command() { + @Override public void execute() { if (!uploading) { if (fileIds.size() > 0) { @@ -425,6 +417,7 @@ public class VDragAndDropWrapper extends VCustomComponent implements files.add(file); } + @Override public VDropHandler getDropHandler() { return dropHandler; } @@ -463,6 +456,7 @@ public class VDragAndDropWrapper extends VCustomComponent implements currentlyValid = false; validate(new VAcceptCallback() { + @Override public void accepted(VDragEvent event) { dragAccepted(drag); } @@ -507,6 +501,7 @@ public class VDragAndDropWrapper extends VCustomComponent implements VDragAndDropWrapper.this); } + @Override public ApplicationConnection getApplicationConnection() { return client; } diff --git a/src/com/vaadin/terminal/gwt/client/ui/embedded/EmbeddedConnector.java b/src/com/vaadin/terminal/gwt/client/ui/embedded/EmbeddedConnector.java index af3ad67db4..a1851d9c84 100644 --- a/src/com/vaadin/terminal/gwt/client/ui/embedded/EmbeddedConnector.java +++ b/src/com/vaadin/terminal/gwt/client/ui/embedded/EmbeddedConnector.java @@ -15,8 +15,10 @@ import com.google.gwt.dom.client.Style; import com.google.gwt.user.client.DOM; import com.google.gwt.user.client.Element; import com.google.gwt.user.client.Event; +import com.vaadin.shared.MouseEventDetails; +import com.vaadin.shared.ui.Connect; +import com.vaadin.shared.ui.embedded.EmbeddedServerRpc; import com.vaadin.terminal.gwt.client.ApplicationConnection; -import com.vaadin.terminal.gwt.client.MouseEventDetails; import com.vaadin.terminal.gwt.client.Paintable; import com.vaadin.terminal.gwt.client.UIDL; import com.vaadin.terminal.gwt.client.VConsole; @@ -24,7 +26,6 @@ import com.vaadin.terminal.gwt.client.VTooltip; import com.vaadin.terminal.gwt.client.communication.RpcProxy; import com.vaadin.terminal.gwt.client.ui.AbstractComponentConnector; import com.vaadin.terminal.gwt.client.ui.ClickEventHandler; -import com.vaadin.terminal.gwt.client.ui.Connect; import com.vaadin.ui.Embedded; @Connect(Embedded.class) @@ -41,6 +42,7 @@ public class EmbeddedConnector extends AbstractComponentConnector implements rpc = RpcProxy.create(EmbeddedServerRpc.class, this); } + @Override public void updateFromUIDL(UIDL uidl, ApplicationConnection client) { if (!isRealUpdate(uidl)) { return; @@ -54,6 +56,16 @@ public class EmbeddedConnector extends AbstractComponentConnector implements clickEventHandler.handleEventHandlerRegistration(); if (uidl.hasAttribute("type")) { + // remove old style name related to type + if (getWidget().type != null) { + getWidget().removeStyleName( + VEmbedded.CLASSNAME + "-" + getWidget().type); + } + // remove old style name related to mime type + if (getWidget().mimetype != null) { + getWidget().removeStyleName( + VEmbedded.CLASSNAME + "-" + getWidget().mimetype); + } getWidget().type = uidl.getStringAttribute("type"); if (getWidget().type.equals("image")) { getWidget().addStyleName(VEmbedded.CLASSNAME + "-image"); @@ -118,13 +130,25 @@ public class EmbeddedConnector extends AbstractComponentConnector implements VConsole.log("Unknown Embedded type '" + getWidget().type + "'"); } } else if (uidl.hasAttribute("mimetype")) { + // remove old style name related to type + if (getWidget().type != null) { + getWidget().removeStyleName( + VEmbedded.CLASSNAME + "-" + getWidget().type); + } + // remove old style name related to mime type + if (getWidget().mimetype != null) { + getWidget().removeStyleName( + VEmbedded.CLASSNAME + "-" + getWidget().mimetype); + } final String mime = uidl.getStringAttribute("mimetype"); if (mime.equals("application/x-shockwave-flash")) { + getWidget().mimetype = "flash"; // Handle embedding of Flash getWidget().addStyleName(VEmbedded.CLASSNAME + "-flash"); getWidget().setHTML(getWidget().createFlashEmbed(uidl)); } else if (mime.equals("image/svg+xml")) { + getWidget().mimetype = "svg"; getWidget().addStyleName(VEmbedded.CLASSNAME + "-svg"); String data; Map<String, String> parameters = VEmbedded.getParameters(uidl); diff --git a/src/com/vaadin/terminal/gwt/client/ui/embedded/EmbeddedServerRpc.java b/src/com/vaadin/terminal/gwt/client/ui/embedded/EmbeddedServerRpc.java deleted file mode 100644 index 7f36c812bc..0000000000 --- a/src/com/vaadin/terminal/gwt/client/ui/embedded/EmbeddedServerRpc.java +++ /dev/null @@ -1,10 +0,0 @@ -/* -@VaadinApache2LicenseForJavaFiles@ - */ -package com.vaadin.terminal.gwt.client.ui.embedded; - -import com.vaadin.terminal.gwt.client.communication.ServerRpc; -import com.vaadin.terminal.gwt.client.ui.ClickRpc; - -public interface EmbeddedServerRpc extends ClickRpc, ServerRpc { -}
\ No newline at end of file diff --git a/src/com/vaadin/terminal/gwt/client/ui/embedded/VEmbedded.java b/src/com/vaadin/terminal/gwt/client/ui/embedded/VEmbedded.java index 203e7362f3..1d2a5a156a 100644 --- a/src/com/vaadin/terminal/gwt/client/ui/embedded/VEmbedded.java +++ b/src/com/vaadin/terminal/gwt/client/ui/embedded/VEmbedded.java @@ -26,6 +26,7 @@ public class VEmbedded extends HTML { protected Element browserElement; protected String type; + protected String mimetype; protected ApplicationConnection client; @@ -232,8 +233,6 @@ public class VEmbedded extends HTML { VConsole.log("Embeddable onload"); Util.notifyParentOfSizeChange(this, true); } - - client.handleTooltipEvent(event, this); } } diff --git a/src/com/vaadin/terminal/gwt/client/ui/form/FormConnector.java b/src/com/vaadin/terminal/gwt/client/ui/form/FormConnector.java index 981c753dd1..e31de1f85d 100644 --- a/src/com/vaadin/terminal/gwt/client/ui/form/FormConnector.java +++ b/src/com/vaadin/terminal/gwt/client/ui/form/FormConnector.java @@ -6,13 +6,14 @@ package com.vaadin.terminal.gwt.client.ui.form; import com.google.gwt.dom.client.Style.Unit; import com.google.gwt.event.dom.client.KeyDownEvent; import com.google.gwt.user.client.ui.Widget; +import com.vaadin.shared.ui.Connect; +import com.vaadin.shared.ui.form.FormState; import com.vaadin.terminal.gwt.client.ApplicationConnection; import com.vaadin.terminal.gwt.client.ComponentConnector; import com.vaadin.terminal.gwt.client.LayoutManager; import com.vaadin.terminal.gwt.client.Paintable; import com.vaadin.terminal.gwt.client.UIDL; import com.vaadin.terminal.gwt.client.ui.AbstractComponentContainerConnector; -import com.vaadin.terminal.gwt.client.ui.Connect; import com.vaadin.terminal.gwt.client.ui.Icon; import com.vaadin.terminal.gwt.client.ui.ShortcutActionHandler; import com.vaadin.terminal.gwt.client.ui.layout.ElementResizeEvent; @@ -25,6 +26,7 @@ public class FormConnector extends AbstractComponentContainerConnector implements Paintable, MayScrollChildren { private final ElementResizeListener footerResizeListener = new ElementResizeListener() { + @Override public void onElementResize(ElementResizeEvent e) { VForm form = getWidget(); @@ -57,6 +59,7 @@ public class FormConnector extends AbstractComponentContainerConnector return false; } + @Override public void updateFromUIDL(UIDL uidl, ApplicationConnection client) { getWidget().client = client; getWidget().id = uidl.getId(); @@ -180,6 +183,7 @@ public class FormConnector extends AbstractComponentContainerConnector } } + @Override public void updateCaption(ComponentConnector component) { // NOP form don't render caption for neither field layout nor footer // layout diff --git a/src/com/vaadin/terminal/gwt/client/ui/form/VForm.java b/src/com/vaadin/terminal/gwt/client/ui/form/VForm.java index 81f24a8e7e..823b0e83ae 100644 --- a/src/com/vaadin/terminal/gwt/client/ui/form/VForm.java +++ b/src/com/vaadin/terminal/gwt/client/ui/form/VForm.java @@ -62,6 +62,7 @@ public class VForm extends ComplexPanel implements KeyDownHandler { fieldSet.appendChild(footerContainer); } + @Override public void onKeyDown(KeyDownEvent event) { shortcutHandler.handleKeyboardEvent(Event.as(event.getNativeEvent())); } diff --git a/src/com/vaadin/terminal/gwt/client/ui/formlayout/FormLayoutConnector.java b/src/com/vaadin/terminal/gwt/client/ui/formlayout/FormLayoutConnector.java index ca21947a6c..567513d7fe 100644 --- a/src/com/vaadin/terminal/gwt/client/ui/formlayout/FormLayoutConnector.java +++ b/src/com/vaadin/terminal/gwt/client/ui/formlayout/FormLayoutConnector.java @@ -3,18 +3,21 @@ */ package com.vaadin.terminal.gwt.client.ui.formlayout; +import com.google.gwt.dom.client.Element; import com.google.gwt.user.client.ui.Widget; +import com.vaadin.shared.ui.Connect; +import com.vaadin.shared.ui.VMarginInfo; +import com.vaadin.shared.ui.orderedlayout.AbstractOrderedLayoutState; import com.vaadin.terminal.gwt.client.ComponentConnector; import com.vaadin.terminal.gwt.client.ConnectorHierarchyChangeEvent; +import com.vaadin.terminal.gwt.client.TooltipInfo; +import com.vaadin.terminal.gwt.client.Util; import com.vaadin.terminal.gwt.client.communication.StateChangeEvent; import com.vaadin.terminal.gwt.client.ui.AbstractFieldConnector; import com.vaadin.terminal.gwt.client.ui.AbstractLayoutConnector; -import com.vaadin.terminal.gwt.client.ui.Connect; -import com.vaadin.terminal.gwt.client.ui.VMarginInfo; import com.vaadin.terminal.gwt.client.ui.formlayout.VFormLayout.Caption; import com.vaadin.terminal.gwt.client.ui.formlayout.VFormLayout.ErrorFlag; import com.vaadin.terminal.gwt.client.ui.formlayout.VFormLayout.VFormLayoutTable; -import com.vaadin.terminal.gwt.client.ui.orderedlayout.AbstractOrderedLayoutState; import com.vaadin.ui.FormLayout; @Connect(FormLayout.class) @@ -76,6 +79,7 @@ public class FormLayoutConnector extends AbstractLayoutConnector { } + @Override public void updateCaption(ComponentConnector component) { getWidget().table.updateCaption(component.getWidget(), component.getState(), component.isEnabled()); @@ -96,4 +100,36 @@ public class FormLayoutConnector extends AbstractLayoutConnector { return (VFormLayout) super.getWidget(); } + @Override + public TooltipInfo getTooltipInfo(Element element) { + TooltipInfo info = null; + + if (element != getWidget().getElement()) { + Object node = Util.findWidget( + (com.google.gwt.user.client.Element) element, + VFormLayout.Caption.class); + + if (node != null) { + VFormLayout.Caption caption = (VFormLayout.Caption) node; + info = caption.getOwner().getTooltipInfo(element); + } else { + + node = Util.findWidget( + (com.google.gwt.user.client.Element) element, + VFormLayout.ErrorFlag.class); + + if (node != null) { + VFormLayout.ErrorFlag flag = (VFormLayout.ErrorFlag) node; + info = flag.getOwner().getTooltipInfo(element); + } + } + } + + if (info == null) { + info = super.getTooltipInfo(element); + } + + return info; + } + } diff --git a/src/com/vaadin/terminal/gwt/client/ui/formlayout/VFormLayout.java b/src/com/vaadin/terminal/gwt/client/ui/formlayout/VFormLayout.java index 8a859c409c..9ecab6352c 100644 --- a/src/com/vaadin/terminal/gwt/client/ui/formlayout/VFormLayout.java +++ b/src/com/vaadin/terminal/gwt/client/ui/formlayout/VFormLayout.java @@ -12,21 +12,20 @@ import com.google.gwt.event.dom.client.ClickEvent; import com.google.gwt.event.dom.client.ClickHandler; import com.google.gwt.user.client.DOM; import com.google.gwt.user.client.Element; -import com.google.gwt.user.client.Event; import com.google.gwt.user.client.ui.FlexTable; import com.google.gwt.user.client.ui.HTML; import com.google.gwt.user.client.ui.SimplePanel; import com.google.gwt.user.client.ui.Widget; +import com.vaadin.shared.ComponentState; +import com.vaadin.shared.ui.VMarginInfo; import com.vaadin.terminal.gwt.client.ApplicationConnection; import com.vaadin.terminal.gwt.client.BrowserInfo; import com.vaadin.terminal.gwt.client.ComponentConnector; -import com.vaadin.terminal.gwt.client.ComponentState; import com.vaadin.terminal.gwt.client.Focusable; import com.vaadin.terminal.gwt.client.StyleConstants; import com.vaadin.terminal.gwt.client.VTooltip; import com.vaadin.terminal.gwt.client.ui.AbstractFieldConnector; import com.vaadin.terminal.gwt.client.ui.Icon; -import com.vaadin.terminal.gwt.client.ui.VMarginInfo; /** * Two col Layout that places caption on left col and field on right col @@ -88,6 +87,7 @@ public class VFormLayout extends SimplePanel { * com.google.gwt.event.dom.client.ClickHandler#onClick(com.google.gwt * .event.dom.client.ClickEvent) */ + @Override public void onClick(ClickEvent event) { Caption caption = (Caption) event.getSource(); if (caption.getOwner() != null) { @@ -215,8 +215,6 @@ public class VFormLayout extends SimplePanel { public Caption(ComponentConnector component) { super(); owner = component; - - sinkEvents(VTooltip.TOOLTIP_EVENTS); } private void setStyles(String[] styles) { @@ -324,12 +322,6 @@ public class VFormLayout extends SimplePanel { public ComponentConnector getOwner() { return owner; } - - @Override - public void onBrowserEvent(Event event) { - super.onBrowserEvent(event); - owner.getConnection().handleTooltipEvent(event, owner); - } } class ErrorFlag extends HTML { @@ -345,6 +337,10 @@ public class VFormLayout extends SimplePanel { this.owner = owner; } + public ComponentConnector getOwner() { + return owner; + } + public void updateError(String errorMessage, boolean hideErrors) { boolean showError = null != errorMessage; if (hideErrors) { @@ -366,13 +362,5 @@ public class VFormLayout extends SimplePanel { } } - @Override - public void onBrowserEvent(Event event) { - super.onBrowserEvent(event); - if (owner != null) { - owner.getConnection().handleTooltipEvent(event, owner); - } - } - } } diff --git a/src/com/vaadin/terminal/gwt/client/ui/gridlayout/GridLayoutConnector.java b/src/com/vaadin/terminal/gwt/client/ui/gridlayout/GridLayoutConnector.java index 2cd82313c2..07e481d31d 100644 --- a/src/com/vaadin/terminal/gwt/client/ui/gridlayout/GridLayoutConnector.java +++ b/src/com/vaadin/terminal/gwt/client/ui/gridlayout/GridLayoutConnector.java @@ -7,6 +7,12 @@ import java.util.Iterator; import com.google.gwt.user.client.Element; import com.google.gwt.user.client.ui.Widget; +import com.vaadin.shared.ui.AlignmentInfo; +import com.vaadin.shared.ui.Connect; +import com.vaadin.shared.ui.LayoutClickRpc; +import com.vaadin.shared.ui.VMarginInfo; +import com.vaadin.shared.ui.gridlayout.GridLayoutServerRpc; +import com.vaadin.shared.ui.gridlayout.GridLayoutState; import com.vaadin.terminal.gwt.client.ApplicationConnection; import com.vaadin.terminal.gwt.client.ComponentConnector; import com.vaadin.terminal.gwt.client.ConnectorHierarchyChangeEvent; @@ -18,11 +24,7 @@ import com.vaadin.terminal.gwt.client.VCaption; import com.vaadin.terminal.gwt.client.communication.RpcProxy; import com.vaadin.terminal.gwt.client.communication.StateChangeEvent; import com.vaadin.terminal.gwt.client.ui.AbstractComponentContainerConnector; -import com.vaadin.terminal.gwt.client.ui.AlignmentInfo; -import com.vaadin.terminal.gwt.client.ui.Connect; import com.vaadin.terminal.gwt.client.ui.LayoutClickEventHandler; -import com.vaadin.terminal.gwt.client.ui.LayoutClickRpc; -import com.vaadin.terminal.gwt.client.ui.VMarginInfo; import com.vaadin.terminal.gwt.client.ui.gridlayout.VGridLayout.Cell; import com.vaadin.terminal.gwt.client.ui.layout.VLayoutSlot; import com.vaadin.ui.GridLayout; @@ -51,6 +53,7 @@ public class GridLayoutConnector extends AbstractComponentContainerConnector @Override public void init() { + super.init(); rpc = RpcProxy.create(GridLayoutServerRpc.class, this); getLayoutManager().registerDependency(this, getWidget().spacingMeasureElement); @@ -82,6 +85,7 @@ public class GridLayoutConnector extends AbstractComponentContainerConnector } + @Override public void updateFromUIDL(UIDL uidl, ApplicationConnection client) { VGridLayout layout = getWidget(); layout.client = client; @@ -185,6 +189,7 @@ public class GridLayoutConnector extends AbstractComponentContainerConnector } + @Override public void updateCaption(ComponentConnector childConnector) { if (!childConnector.delegateCaptionHandling()) { // Check not required by interface but by workarounds in this class @@ -223,10 +228,12 @@ public class GridLayoutConnector extends AbstractComponentContainerConnector return (VGridLayout) super.getWidget(); } + @Override public void layoutVertically() { getWidget().updateHeight(); } + @Override public void layoutHorizontally() { getWidget().updateWidth(); } diff --git a/src/com/vaadin/terminal/gwt/client/ui/gridlayout/GridLayoutServerRpc.java b/src/com/vaadin/terminal/gwt/client/ui/gridlayout/GridLayoutServerRpc.java deleted file mode 100644 index cd8df297ec..0000000000 --- a/src/com/vaadin/terminal/gwt/client/ui/gridlayout/GridLayoutServerRpc.java +++ /dev/null @@ -1,11 +0,0 @@ -/* -@VaadinApache2LicenseForJavaFiles@ - */ -package com.vaadin.terminal.gwt.client.ui.gridlayout; - -import com.vaadin.terminal.gwt.client.communication.ServerRpc; -import com.vaadin.terminal.gwt.client.ui.LayoutClickRpc; - -public interface GridLayoutServerRpc extends LayoutClickRpc, ServerRpc { - -}
\ No newline at end of file diff --git a/src/com/vaadin/terminal/gwt/client/ui/gridlayout/VGridLayout.java b/src/com/vaadin/terminal/gwt/client/ui/gridlayout/VGridLayout.java index 7629e09cac..1ea84d46cd 100644 --- a/src/com/vaadin/terminal/gwt/client/ui/gridlayout/VGridLayout.java +++ b/src/com/vaadin/terminal/gwt/client/ui/gridlayout/VGridLayout.java @@ -16,6 +16,8 @@ import com.google.gwt.dom.client.Style.Unit; import com.google.gwt.user.client.Element; import com.google.gwt.user.client.ui.ComplexPanel; import com.google.gwt.user.client.ui.Widget; +import com.vaadin.shared.ui.AlignmentInfo; +import com.vaadin.shared.ui.VMarginInfo; import com.vaadin.terminal.gwt.client.ApplicationConnection; import com.vaadin.terminal.gwt.client.ComponentConnector; import com.vaadin.terminal.gwt.client.ConnectorMap; @@ -23,8 +25,6 @@ import com.vaadin.terminal.gwt.client.LayoutManager; import com.vaadin.terminal.gwt.client.UIDL; import com.vaadin.terminal.gwt.client.Util; import com.vaadin.terminal.gwt.client.VCaption; -import com.vaadin.terminal.gwt.client.ui.AlignmentInfo; -import com.vaadin.terminal.gwt.client.ui.VMarginInfo; import com.vaadin.terminal.gwt.client.ui.layout.ComponentConnectorLayoutSlot; import com.vaadin.terminal.gwt.client.ui.layout.VLayoutSlot; diff --git a/src/com/vaadin/terminal/gwt/client/ui/label/ContentMode.java b/src/com/vaadin/terminal/gwt/client/ui/label/ContentMode.java deleted file mode 100644 index 4892c7e6bd..0000000000 --- a/src/com/vaadin/terminal/gwt/client/ui/label/ContentMode.java +++ /dev/null @@ -1,48 +0,0 @@ -/* -@VaadinApache2LicenseForJavaFiles@ - */ -package com.vaadin.terminal.gwt.client.ui.label; - -/** - * Content modes defining how the client should interpret a Label's value. - * - * @since 7.0.0 - */ -public enum ContentMode { - /** - * Content mode, where the label contains only plain text. The getValue() - * result is coded to XML when painting. - */ - TEXT, - - /** - * Content mode, where the label contains preformatted text. - */ - PREFORMATTED, - - /** - * Content mode, where the label contains XHTML. - */ - XHTML, - - /** - * Content mode, where the label contains well-formed or well-balanced XML. - * Each of the root elements must have their default namespace specified. - * - * @deprecated Use {@link #XHTML} - */ - @Deprecated - XML, - - /** - * Content mode, where the label contains RAW output. Output is not required - * to comply to with XML. In Web Adapter output is inserted inside the - * resulting HTML document as-is. This is useful for some specific purposes - * where possibly broken HTML content needs to be shown, but in most cases - * XHTML mode should be preferred. - * - * @deprecated Use {@link #XHTML}, {@link #TEXT} or {@link #PREFORMATTED}. - */ - @Deprecated - RAW; -} diff --git a/src/com/vaadin/terminal/gwt/client/ui/label/LabelConnector.java b/src/com/vaadin/terminal/gwt/client/ui/label/LabelConnector.java index e64f9fffea..4c6c71e037 100644 --- a/src/com/vaadin/terminal/gwt/client/ui/label/LabelConnector.java +++ b/src/com/vaadin/terminal/gwt/client/ui/label/LabelConnector.java @@ -5,11 +5,12 @@ package com.vaadin.terminal.gwt.client.ui.label; import com.google.gwt.dom.client.Document; import com.google.gwt.dom.client.PreElement; +import com.vaadin.shared.ui.Connect; +import com.vaadin.shared.ui.Connect.LoadStyle; +import com.vaadin.shared.ui.label.LabelState; import com.vaadin.terminal.gwt.client.Util; import com.vaadin.terminal.gwt.client.communication.StateChangeEvent; import com.vaadin.terminal.gwt.client.ui.AbstractComponentConnector; -import com.vaadin.terminal.gwt.client.ui.Connect; -import com.vaadin.terminal.gwt.client.ui.Connect.LoadStyle; import com.vaadin.ui.Label; @Connect(value = Label.class, loadStyle = LoadStyle.EAGER) diff --git a/src/com/vaadin/terminal/gwt/client/ui/label/VLabel.java b/src/com/vaadin/terminal/gwt/client/ui/label/VLabel.java index f47b8437b7..f0c170c6b0 100644 --- a/src/com/vaadin/terminal/gwt/client/ui/label/VLabel.java +++ b/src/com/vaadin/terminal/gwt/client/ui/label/VLabel.java @@ -28,7 +28,6 @@ public class VLabel extends HTML { public VLabel(String text) { super(text); setStyleName(CLASSNAME); - sinkEvents(VTooltip.TOOLTIP_EVENTS); } @Override @@ -39,9 +38,6 @@ public class VLabel extends HTML { event.stopPropagation(); return; } - if (connection != null) { - connection.handleTooltipEvent(event, this); - } } @Override diff --git a/src/com/vaadin/terminal/gwt/client/ui/layout/LayoutDependencyTree.java b/src/com/vaadin/terminal/gwt/client/ui/layout/LayoutDependencyTree.java index 18843057f3..cb0ed697c9 100644 --- a/src/com/vaadin/terminal/gwt/client/ui/layout/LayoutDependencyTree.java +++ b/src/com/vaadin/terminal/gwt/client/ui/layout/LayoutDependencyTree.java @@ -10,9 +10,9 @@ import java.util.HashSet; import java.util.Map; import java.util.Set; +import com.vaadin.shared.ComponentState; import com.vaadin.terminal.gwt.client.ComponentConnector; import com.vaadin.terminal.gwt.client.ComponentContainerConnector; -import com.vaadin.terminal.gwt.client.ComponentState; import com.vaadin.terminal.gwt.client.ServerConnector; import com.vaadin.terminal.gwt.client.Util; import com.vaadin.terminal.gwt.client.VConsole; diff --git a/src/com/vaadin/terminal/gwt/client/ui/layout/VLayoutSlot.java b/src/com/vaadin/terminal/gwt/client/ui/layout/VLayoutSlot.java index 034fe35649..5b2b1fc49b 100644 --- a/src/com/vaadin/terminal/gwt/client/ui/layout/VLayoutSlot.java +++ b/src/com/vaadin/terminal/gwt/client/ui/layout/VLayoutSlot.java @@ -10,8 +10,8 @@ import com.google.gwt.dom.client.Style.Unit; import com.google.gwt.user.client.DOM; import com.google.gwt.user.client.Element; import com.google.gwt.user.client.ui.Widget; +import com.vaadin.shared.ui.AlignmentInfo; import com.vaadin.terminal.gwt.client.VCaption; -import com.vaadin.terminal.gwt.client.ui.AlignmentInfo; public abstract class VLayoutSlot { diff --git a/src/com/vaadin/terminal/gwt/client/ui/link/LinkConnector.java b/src/com/vaadin/terminal/gwt/client/ui/link/LinkConnector.java index c002d2dd50..5ef641470d 100644 --- a/src/com/vaadin/terminal/gwt/client/ui/link/LinkConnector.java +++ b/src/com/vaadin/terminal/gwt/client/ui/link/LinkConnector.java @@ -5,11 +5,11 @@ package com.vaadin.terminal.gwt.client.ui.link; import com.google.gwt.user.client.DOM; +import com.vaadin.shared.ui.Connect; import com.vaadin.terminal.gwt.client.ApplicationConnection; import com.vaadin.terminal.gwt.client.Paintable; import com.vaadin.terminal.gwt.client.UIDL; import com.vaadin.terminal.gwt.client.ui.AbstractComponentConnector; -import com.vaadin.terminal.gwt.client.ui.Connect; import com.vaadin.terminal.gwt.client.ui.Icon; import com.vaadin.ui.Link; @@ -22,6 +22,7 @@ public class LinkConnector extends AbstractComponentConnector implements return false; } + @Override public void updateFromUIDL(UIDL uidl, ApplicationConnection client) { if (!isRealUpdate(uidl)) { diff --git a/src/com/vaadin/terminal/gwt/client/ui/link/VLink.java b/src/com/vaadin/terminal/gwt/client/ui/link/VLink.java index 68fe5d9292..4df3220ef1 100644 --- a/src/com/vaadin/terminal/gwt/client/ui/link/VLink.java +++ b/src/com/vaadin/terminal/gwt/client/ui/link/VLink.java @@ -13,7 +13,6 @@ import com.google.gwt.user.client.Window; import com.google.gwt.user.client.ui.HTML; import com.vaadin.terminal.gwt.client.ApplicationConnection; import com.vaadin.terminal.gwt.client.Util; -import com.vaadin.terminal.gwt.client.VTooltip; import com.vaadin.terminal.gwt.client.ui.Icon; public class VLink extends HTML implements ClickHandler { @@ -51,10 +50,10 @@ public class VLink extends HTML implements ClickHandler { getElement().appendChild(anchor); anchor.appendChild(captionElement); addClickHandler(this); - sinkEvents(VTooltip.TOOLTIP_EVENTS); setStyleName(CLASSNAME); } + @Override public void onClick(ClickEvent event) { if (enabled) { if (target == null) { @@ -101,9 +100,6 @@ public class VLink extends HTML implements ClickHandler { if (event.getTypeInt() == Event.ONLOAD) { Util.notifyParentOfSizeChange(this, true); } - if (client != null) { - client.handleTooltipEvent(event, this); - } if (target == captionElement || target == anchor || (icon != null && target == icon.getElement())) { super.onBrowserEvent(event); diff --git a/src/com/vaadin/terminal/gwt/client/ui/listselect/ListSelectConnector.java b/src/com/vaadin/terminal/gwt/client/ui/listselect/ListSelectConnector.java index 8a4553d983..678847226b 100644 --- a/src/com/vaadin/terminal/gwt/client/ui/listselect/ListSelectConnector.java +++ b/src/com/vaadin/terminal/gwt/client/ui/listselect/ListSelectConnector.java @@ -4,7 +4,7 @@ package com.vaadin.terminal.gwt.client.ui.listselect; -import com.vaadin.terminal.gwt.client.ui.Connect; +import com.vaadin.shared.ui.Connect; import com.vaadin.terminal.gwt.client.ui.optiongroup.OptionGroupBaseConnector; import com.vaadin.ui.ListSelect; diff --git a/src/com/vaadin/terminal/gwt/client/ui/listselect/TooltipListBox.java b/src/com/vaadin/terminal/gwt/client/ui/listselect/TooltipListBox.java deleted file mode 100644 index abecd844da..0000000000 --- a/src/com/vaadin/terminal/gwt/client/ui/listselect/TooltipListBox.java +++ /dev/null @@ -1,41 +0,0 @@ -/* -@VaadinApache2LicenseForJavaFiles@ - */ -package com.vaadin.terminal.gwt.client.ui.listselect; - -import com.google.gwt.user.client.Event; -import com.google.gwt.user.client.ui.ListBox; -import com.google.gwt.user.client.ui.Widget; -import com.vaadin.terminal.gwt.client.ApplicationConnection; -import com.vaadin.terminal.gwt.client.VTooltip; - -/** - * Extended ListBox to listen tooltip events and forward them to generic - * handler. - */ -public class TooltipListBox extends ListBox { - private ApplicationConnection client; - private Widget widget; - - public TooltipListBox(boolean isMultiselect) { - super(isMultiselect); - sinkEvents(VTooltip.TOOLTIP_EVENTS); - } - - public void setClient(ApplicationConnection client) { - this.client = client; - } - - public void setSelect(Widget widget) { - this.widget = widget; - } - - @Override - public void onBrowserEvent(Event event) { - super.onBrowserEvent(event); - if (client != null) { - client.handleTooltipEvent(event, widget); - } - } - -}
\ No newline at end of file diff --git a/src/com/vaadin/terminal/gwt/client/ui/listselect/VListSelect.java b/src/com/vaadin/terminal/gwt/client/ui/listselect/VListSelect.java index e338897841..6f3f876fb7 100644 --- a/src/com/vaadin/terminal/gwt/client/ui/listselect/VListSelect.java +++ b/src/com/vaadin/terminal/gwt/client/ui/listselect/VListSelect.java @@ -8,6 +8,7 @@ import java.util.ArrayList; import java.util.Iterator; import com.google.gwt.event.dom.client.ChangeEvent; +import com.google.gwt.user.client.ui.ListBox; import com.vaadin.terminal.gwt.client.UIDL; import com.vaadin.terminal.gwt.client.ui.optiongroup.VOptionGroupBase; @@ -17,23 +18,25 @@ public class VListSelect extends VOptionGroupBase { private static final int VISIBLE_COUNT = 10; - protected TooltipListBox select; + protected ListBox select; private int lastSelectedIndex = -1; public VListSelect() { - super(new TooltipListBox(true), CLASSNAME); - select = (TooltipListBox) optionsContainer; - select.setSelect(this); + super(new ListBox(true), CLASSNAME); + select = getOptionsContainer(); select.addChangeHandler(this); select.addClickHandler(this); select.setStyleName(CLASSNAME + "-select"); select.setVisibleItemCount(VISIBLE_COUNT); } + protected ListBox getOptionsContainer() { + return (ListBox) optionsContainer; + } + @Override protected void buildOptions(UIDL uidl) { - select.setClient(client); select.setMultipleSelect(isMultiselect()); select.setEnabled(!isDisabled() && !isReadonly()); select.clear(); @@ -99,9 +102,10 @@ public class VListSelect extends VOptionGroupBase { @Override protected void setTabIndex(int tabIndex) { - ((TooltipListBox) optionsContainer).setTabIndex(tabIndex); + getOptionsContainer().setTabIndex(tabIndex); } + @Override public void focus() { select.setFocus(true); } diff --git a/src/com/vaadin/terminal/gwt/client/ui/menubar/MenuBar.java b/src/com/vaadin/terminal/gwt/client/ui/menubar/MenuBar.java index 7bee870387..5cb3fb83b4 100644 --- a/src/com/vaadin/terminal/gwt/client/ui/menubar/MenuBar.java +++ b/src/com/vaadin/terminal/gwt/client/ui/menubar/MenuBar.java @@ -246,6 +246,7 @@ public class MenuBar extends Widget implements PopupListener { } } + @Override public void onPopupClosed(PopupPanel sender, boolean autoClosed) { // If the menu popup was auto-closed, close all of its parents as well. if (autoClosed) { diff --git a/src/com/vaadin/terminal/gwt/client/ui/menubar/MenuBarConnector.java b/src/com/vaadin/terminal/gwt/client/ui/menubar/MenuBarConnector.java index d1f77aa0ff..2a8923bbc0 100644 --- a/src/com/vaadin/terminal/gwt/client/ui/menubar/MenuBarConnector.java +++ b/src/com/vaadin/terminal/gwt/client/ui/menubar/MenuBarConnector.java @@ -7,14 +7,16 @@ import java.util.Iterator; import java.util.Stack; import com.google.gwt.core.client.GWT; +import com.google.gwt.dom.client.Element; import com.google.gwt.user.client.Command; +import com.vaadin.shared.ui.Connect; +import com.vaadin.shared.ui.Connect.LoadStyle; import com.vaadin.terminal.gwt.client.ApplicationConnection; import com.vaadin.terminal.gwt.client.Paintable; +import com.vaadin.terminal.gwt.client.TooltipInfo; import com.vaadin.terminal.gwt.client.UIDL; import com.vaadin.terminal.gwt.client.Util; import com.vaadin.terminal.gwt.client.ui.AbstractComponentConnector; -import com.vaadin.terminal.gwt.client.ui.Connect; -import com.vaadin.terminal.gwt.client.ui.Connect.LoadStyle; import com.vaadin.terminal.gwt.client.ui.Icon; import com.vaadin.terminal.gwt.client.ui.SimpleManagedLayout; import com.vaadin.terminal.gwt.client.ui.menubar.VMenuBar.CustomMenuItem; @@ -29,6 +31,7 @@ public class MenuBarConnector extends AbstractComponentConnector implements * This method is called when the page is loaded for the first time, and * every time UI changes in the component are received from the server. */ + @Override public void updateFromUIDL(UIDL uidl, ApplicationConnection client) { if (!isRealUpdate(uidl)) { return; @@ -105,6 +108,7 @@ public class MenuBarConnector extends AbstractComponentConnector implements // Construct a command that fires onMenuClick(int) with the // item's id-number cmd = new Command() { + @Override public void execute() { getWidget().hostReference.onMenuClick(itemId); } @@ -120,6 +124,7 @@ public class MenuBarConnector extends AbstractComponentConnector implements iteratorStack.push(itr); itr = item.getChildIterator(); currentMenu = new VMenuBar(true, currentMenu); + client.getVTooltip().connectHandlersToWidget(currentMenu); // this is the top-level style that also propagates to items - // any item specific styles are set above in // currentItem.updateFromUIDL(item, client) @@ -157,7 +162,30 @@ public class MenuBarConnector extends AbstractComponentConnector implements return (VMenuBar) super.getWidget(); } + @Override public void layout() { getWidget().iLayout(); } + + @Override + public TooltipInfo getTooltipInfo(Element element) { + TooltipInfo info = null; + + // Check content of widget to find tooltip for element + if (element != getWidget().getElement()) { + + CustomMenuItem item = getWidget().getMenuItemWithElement( + (com.google.gwt.user.client.Element) element); + if (item != null) { + info = item.getTooltip(); + } + } + + // Use default tooltip if nothing found from DOM three + if (info == null) { + info = super.getTooltipInfo(element); + } + + return info; + } } diff --git a/src/com/vaadin/terminal/gwt/client/ui/menubar/MenuItem.java b/src/com/vaadin/terminal/gwt/client/ui/menubar/MenuItem.java index af79ba7c5e..7f150d9a5f 100644 --- a/src/com/vaadin/terminal/gwt/client/ui/menubar/MenuItem.java +++ b/src/com/vaadin/terminal/gwt/client/ui/menubar/MenuItem.java @@ -121,6 +121,7 @@ public class MenuItem extends UIObject implements HasHTML { return command; } + @Override public String getHTML() { return DOM.getInnerHTML(getElement()); } @@ -143,6 +144,7 @@ public class MenuItem extends UIObject implements HasHTML { return subMenu; } + @Override public String getText() { return DOM.getInnerText(getElement()); } @@ -157,6 +159,7 @@ public class MenuItem extends UIObject implements HasHTML { command = cmd; } + @Override public void setHTML(String html) { DOM.setInnerHTML(getElement(), html); } @@ -171,6 +174,7 @@ public class MenuItem extends UIObject implements HasHTML { this.subMenu = subMenu; } + @Override public void setText(String text) { DOM.setInnerText(getElement(), text); } diff --git a/src/com/vaadin/terminal/gwt/client/ui/menubar/VMenuBar.java b/src/com/vaadin/terminal/gwt/client/ui/menubar/VMenuBar.java index e48483cb02..47bda81362 100644 --- a/src/com/vaadin/terminal/gwt/client/ui/menubar/VMenuBar.java +++ b/src/com/vaadin/terminal/gwt/client/ui/menubar/VMenuBar.java @@ -36,7 +36,6 @@ import com.vaadin.terminal.gwt.client.LayoutManager; import com.vaadin.terminal.gwt.client.TooltipInfo; import com.vaadin.terminal.gwt.client.UIDL; import com.vaadin.terminal.gwt.client.Util; -import com.vaadin.terminal.gwt.client.VTooltip; import com.vaadin.terminal.gwt.client.ui.Icon; import com.vaadin.terminal.gwt.client.ui.SimpleFocusablePanel; import com.vaadin.terminal.gwt.client.ui.SubPartAware; @@ -89,11 +88,10 @@ public class VMenuBar extends SimpleFocusablePanel implements boolean enabled = true; - private String width = "notinited"; - private VLazyExecutor iconLoadedExecutioner = new VLazyExecutor(100, new ScheduledCommand() { + @Override public void execute() { iLayout(true); } @@ -140,8 +138,6 @@ public class VMenuBar extends SimpleFocusablePanel implements sinkEvents(Event.ONCLICK | Event.ONMOUSEOVER | Event.ONMOUSEOUT | Event.ONLOAD); - - sinkEvents(VTooltip.TOOLTIP_EVENTS); } @Override @@ -340,15 +336,6 @@ public class VMenuBar extends SimpleFocusablePanel implements } } - // Handle tooltips - if (targetItem == null && client != null) { - // Handle root menubar tooltips - client.handleTooltipEvent(e, this); - } else if (targetItem != null) { - // Handle item tooltips - targetItem.onBrowserEvent(e); - } - if (targetItem != null) { switch (DOM.eventGetType(e)) { @@ -537,6 +524,22 @@ public class VMenuBar extends SimpleFocusablePanel implements final int shadowSpace = 10; popup = new VOverlay(true, false, true); + + // Setting owner and handlers to support tooltips. Needed for tooltip + // handling of overlay widgets (will direct queries to parent menu) + if (parentMenu == null) { + popup.setOwner(this); + } else { + VMenuBar parent = parentMenu; + while (parent.getParentMenu() != null) { + parent = parent.getParentMenu(); + } + popup.setOwner(parent); + } + if (client != null) { + client.getVTooltip().connectHandlersToWidget(popup); + } + popup.setStyleName(CLASSNAME + "-popup"); popup.setWidget(item.getSubMenu()); popup.addCloseHandler(this); @@ -600,7 +603,7 @@ public class VMenuBar extends SimpleFocusablePanel implements // popup style.setWidth(contentWidth + Util.getNativeScrollbarSize(), Unit.PX); - popup.updateShadowSizeAndPosition(); + popup.sizeOrPositionUpdated(); } } return top; @@ -633,6 +636,7 @@ public class VMenuBar extends SimpleFocusablePanel implements /** * Listener method, fired when this menu is closed */ + @Override public void onClose(CloseEvent<PopupPanel> event) { hideChildren(); if (event.isAutoClosed()) { @@ -720,9 +724,7 @@ public class VMenuBar extends SimpleFocusablePanel implements * A class to hold information on menu items * */ - protected static class CustomMenuItem extends Widget implements HasHTML { - - private ApplicationConnection client; + public static class CustomMenuItem extends Widget implements HasHTML { protected String html = null; protected Command command = null; @@ -732,6 +734,7 @@ public class VMenuBar extends SimpleFocusablePanel implements protected boolean isSeparator = false; protected boolean checkable = false; protected boolean checked = false; + protected String description = null; /** * Default menu item {@link Widget} constructor for GWT.create(). @@ -761,7 +764,6 @@ public class VMenuBar extends SimpleFocusablePanel implements setSelected(false); setStyleName(CLASSNAME + "-menuitem"); - sinkEvents(VTooltip.TOOLTIP_EVENTS); } public void setSelected(boolean selected) { @@ -849,10 +851,12 @@ public class VMenuBar extends SimpleFocusablePanel implements return command; } + @Override public String getHTML() { return html; } + @Override public void setHTML(String html) { this.html = html; DOM.setInnerHTML(getElement(), html); @@ -862,10 +866,12 @@ public class VMenuBar extends SimpleFocusablePanel implements Util.sinkOnloadForImages(getElement()); } + @Override public String getText() { return html; } + @Override public void setText(String text) { setHTML(Util.escapeHTML(text)); } @@ -898,7 +904,6 @@ public class VMenuBar extends SimpleFocusablePanel implements } public void updateFromUIDL(UIDL uidl, ApplicationConnection client) { - this.client = client; setSeparator(uidl.hasAttribute("separator")); setEnabled(!uidl.hasAttribute(ATTRIBUTE_ITEM_DISABLED)); @@ -918,32 +923,17 @@ public class VMenuBar extends SimpleFocusablePanel implements } if (uidl.hasAttribute(ATTRIBUTE_ITEM_DESCRIPTION)) { - String description = uidl + description = uidl .getStringAttribute(ATTRIBUTE_ITEM_DESCRIPTION); - TooltipInfo info = new TooltipInfo(description); - - VMenuBar root = findRootMenu(); - client.registerTooltip(root, this, info); } } - @Override - public void onBrowserEvent(Event event) { - super.onBrowserEvent(event); - if (client != null) { - client.handleTooltipEvent(event, findRootMenu(), this); + public TooltipInfo getTooltip() { + if (description == null) { + return null; } - } - private VMenuBar findRootMenu() { - VMenuBar menubar = getParentMenu(); - - // Traverse up until root menu is found - while (menubar.getParentMenu() != null) { - menubar = menubar.getParentMenu(); - } - - return menubar; + return new TooltipInfo(description); } /** @@ -1064,6 +1054,7 @@ public class VMenuBar extends SimpleFocusablePanel implements * com.google.gwt.event.dom.client.KeyPressHandler#onKeyPress(com.google * .gwt.event.dom.client.KeyPressEvent) */ + @Override public void onKeyPress(KeyPressEvent event) { if (handleNavigation(event.getNativeEvent().getKeyCode(), event.isControlKeyDown() || event.isMetaKeyDown(), @@ -1079,6 +1070,7 @@ public class VMenuBar extends SimpleFocusablePanel implements * com.google.gwt.event.dom.client.KeyDownHandler#onKeyDown(com.google.gwt * .event.dom.client.KeyDownEvent) */ + @Override public void onKeyDown(KeyDownEvent event) { if (handleNavigation(event.getNativeEvent().getKeyCode(), event.isControlKeyDown() || event.isMetaKeyDown(), @@ -1399,12 +1391,14 @@ public class VMenuBar extends SimpleFocusablePanel implements * com.google.gwt.event.dom.client.FocusHandler#onFocus(com.google.gwt.event * .dom.client.FocusEvent) */ + @Override public void onFocus(FocusEvent event) { } private final String SUBPART_PREFIX = "item"; + @Override public Element getSubPartElement(String subPart) { int index = Integer .parseInt(subPart.substring(SUBPART_PREFIX.length())); @@ -1413,6 +1407,7 @@ public class VMenuBar extends SimpleFocusablePanel implements return item.getElement(); } + @Override public String getSubPartName(Element subElement) { if (!getElement().isOrHasChild(subElement)) { return null; @@ -1435,4 +1430,28 @@ public class VMenuBar extends SimpleFocusablePanel implements return null; } + /** + * Get menu item with given DOM element + * + * @param element + * Element used in search + * @return Menu item or null if not found + */ + public CustomMenuItem getMenuItemWithElement(Element element) { + for (int i = 0; i < items.size(); i++) { + CustomMenuItem item = items.get(i); + if (DOM.isOrHasChild(item.getElement(), element)) { + return item; + } + + if (item.getSubMenu() != null) { + item = item.getSubMenu().getMenuItemWithElement(element); + if (item != null) { + return item; + } + } + } + + return null; + } } diff --git a/src/com/vaadin/terminal/gwt/client/ui/nativebutton/NativeButtonConnector.java b/src/com/vaadin/terminal/gwt/client/ui/nativebutton/NativeButtonConnector.java index c010fba711..73de87c276 100644 --- a/src/com/vaadin/terminal/gwt/client/ui/nativebutton/NativeButtonConnector.java +++ b/src/com/vaadin/terminal/gwt/client/ui/nativebutton/NativeButtonConnector.java @@ -9,15 +9,15 @@ import com.google.gwt.event.dom.client.FocusEvent; import com.google.gwt.event.dom.client.FocusHandler; import com.google.gwt.event.shared.HandlerRegistration; import com.google.gwt.user.client.DOM; +import com.vaadin.shared.communication.FieldRpc.FocusAndBlurServerRpc; +import com.vaadin.shared.ui.Connect; +import com.vaadin.shared.ui.button.ButtonServerRpc; +import com.vaadin.shared.ui.button.ButtonState; import com.vaadin.terminal.gwt.client.EventHelper; -import com.vaadin.terminal.gwt.client.communication.FieldRpc.FocusAndBlurServerRpc; import com.vaadin.terminal.gwt.client.communication.RpcProxy; import com.vaadin.terminal.gwt.client.communication.StateChangeEvent; import com.vaadin.terminal.gwt.client.ui.AbstractComponentConnector; -import com.vaadin.terminal.gwt.client.ui.Connect; import com.vaadin.terminal.gwt.client.ui.Icon; -import com.vaadin.terminal.gwt.client.ui.button.ButtonServerRpc; -import com.vaadin.terminal.gwt.client.ui.button.ButtonState; import com.vaadin.ui.NativeButton; @Connect(NativeButton.class) @@ -107,12 +107,14 @@ public class NativeButtonConnector extends AbstractComponentConnector implements return (ButtonState) super.getState(); } + @Override public void onFocus(FocusEvent event) { // EventHelper.updateFocusHandler ensures that this is called only when // there is a listener on server side focusBlurRpc.focus(); } + @Override public void onBlur(BlurEvent event) { // EventHelper.updateFocusHandler ensures that this is called only when // there is a listener on server side diff --git a/src/com/vaadin/terminal/gwt/client/ui/nativebutton/VNativeButton.java b/src/com/vaadin/terminal/gwt/client/ui/nativebutton/VNativeButton.java index dd6e741126..d58fd2a995 100644 --- a/src/com/vaadin/terminal/gwt/client/ui/nativebutton/VNativeButton.java +++ b/src/com/vaadin/terminal/gwt/client/ui/nativebutton/VNativeButton.java @@ -10,14 +10,13 @@ import com.google.gwt.event.dom.client.ClickHandler; import com.google.gwt.user.client.DOM; import com.google.gwt.user.client.Event; import com.google.gwt.user.client.ui.Button; +import com.vaadin.shared.MouseEventDetails; +import com.vaadin.shared.ui.button.ButtonServerRpc; import com.vaadin.terminal.gwt.client.ApplicationConnection; import com.vaadin.terminal.gwt.client.BrowserInfo; -import com.vaadin.terminal.gwt.client.MouseEventDetails; import com.vaadin.terminal.gwt.client.MouseEventDetailsBuilder; import com.vaadin.terminal.gwt.client.Util; -import com.vaadin.terminal.gwt.client.VTooltip; import com.vaadin.terminal.gwt.client.ui.Icon; -import com.vaadin.terminal.gwt.client.ui.button.ButtonServerRpc; public class VNativeButton extends Button implements ClickHandler { @@ -54,7 +53,6 @@ public class VNativeButton extends Button implements ClickHandler { addClickHandler(this); - sinkEvents(VTooltip.TOOLTIP_EVENTS); sinkEvents(Event.ONMOUSEDOWN); sinkEvents(Event.ONMOUSEUP); } @@ -87,10 +85,6 @@ public class VNativeButton extends Button implements ClickHandler { } clickPending = false; } - - if (client != null) { - client.handleTooltipEvent(event, this); - } } @Override @@ -106,6 +100,7 @@ public class VNativeButton extends Button implements ClickHandler { * com.google.gwt.event.dom.client.ClickHandler#onClick(com.google.gwt.event * .dom.client.ClickEvent) */ + @Override public void onClick(ClickEvent event) { if (paintableId == null || client == null) { return; diff --git a/src/com/vaadin/terminal/gwt/client/ui/nativeselect/NativeSelectConnector.java b/src/com/vaadin/terminal/gwt/client/ui/nativeselect/NativeSelectConnector.java index 8f57e0c37f..8a00afa056 100644 --- a/src/com/vaadin/terminal/gwt/client/ui/nativeselect/NativeSelectConnector.java +++ b/src/com/vaadin/terminal/gwt/client/ui/nativeselect/NativeSelectConnector.java @@ -4,7 +4,7 @@ package com.vaadin.terminal.gwt.client.ui.nativeselect; -import com.vaadin.terminal.gwt.client.ui.Connect; +import com.vaadin.shared.ui.Connect; import com.vaadin.terminal.gwt.client.ui.optiongroup.OptionGroupBaseConnector; import com.vaadin.ui.NativeSelect; diff --git a/src/com/vaadin/terminal/gwt/client/ui/nativeselect/VNativeSelect.java b/src/com/vaadin/terminal/gwt/client/ui/nativeselect/VNativeSelect.java index 54f5e9aff5..ea5292724d 100644 --- a/src/com/vaadin/terminal/gwt/client/ui/nativeselect/VNativeSelect.java +++ b/src/com/vaadin/terminal/gwt/client/ui/nativeselect/VNativeSelect.java @@ -8,32 +8,34 @@ import java.util.ArrayList; import java.util.Iterator; import com.google.gwt.event.dom.client.ChangeEvent; +import com.google.gwt.user.client.ui.ListBox; import com.vaadin.terminal.gwt.client.UIDL; import com.vaadin.terminal.gwt.client.ui.Field; -import com.vaadin.terminal.gwt.client.ui.listselect.TooltipListBox; import com.vaadin.terminal.gwt.client.ui.optiongroup.VOptionGroupBase; public class VNativeSelect extends VOptionGroupBase implements Field { public static final String CLASSNAME = "v-select"; - protected TooltipListBox select; + protected ListBox select; private boolean firstValueIsTemporaryNullItem = false; public VNativeSelect() { - super(new TooltipListBox(false), CLASSNAME); - select = (TooltipListBox) optionsContainer; - select.setSelect(this); + super(new ListBox(false), CLASSNAME); + select = getOptionsContainer(); select.setVisibleItemCount(1); select.addChangeHandler(this); select.setStyleName(CLASSNAME + "-select"); } + protected ListBox getOptionsContainer() { + return (ListBox) optionsContainer; + } + @Override protected void buildOptions(UIDL uidl) { - select.setClient(client); select.setEnabled(!isDisabled() && !isReadonly()); select.clear(); firstValueIsTemporaryNullItem = false; @@ -103,9 +105,10 @@ public class VNativeSelect extends VOptionGroupBase implements Field { @Override protected void setTabIndex(int tabIndex) { - ((TooltipListBox) optionsContainer).setTabIndex(tabIndex); + getOptionsContainer().setTabIndex(tabIndex); } + @Override public void focus() { select.setFocus(true); } diff --git a/src/com/vaadin/terminal/gwt/client/ui/notification/VNotification.java b/src/com/vaadin/terminal/gwt/client/ui/notification/VNotification.java index fb853b8a55..1309155443 100644 --- a/src/com/vaadin/terminal/gwt/client/ui/notification/VNotification.java +++ b/src/com/vaadin/terminal/gwt/client/ui/notification/VNotification.java @@ -163,6 +163,7 @@ public class VNotification extends VOverlay { super.show(); notifications.add(this); setPosition(position); + sizeOrPositionUpdated(); /** * Android 4 fails to render notifications correctly without a little * nudge (#8551) diff --git a/src/com/vaadin/terminal/gwt/client/ui/optiongroup/OptionGroupBaseConnector.java b/src/com/vaadin/terminal/gwt/client/ui/optiongroup/OptionGroupBaseConnector.java index 3658126a97..a4dd72906d 100644 --- a/src/com/vaadin/terminal/gwt/client/ui/optiongroup/OptionGroupBaseConnector.java +++ b/src/com/vaadin/terminal/gwt/client/ui/optiongroup/OptionGroupBaseConnector.java @@ -14,6 +14,7 @@ import com.vaadin.terminal.gwt.client.ui.textfield.VTextField; public abstract class OptionGroupBaseConnector extends AbstractFieldConnector implements Paintable { + @Override public void updateFromUIDL(UIDL uidl, ApplicationConnection client) { // Save details diff --git a/src/com/vaadin/terminal/gwt/client/ui/optiongroup/OptionGroupConnector.java b/src/com/vaadin/terminal/gwt/client/ui/optiongroup/OptionGroupConnector.java index e6064bd03f..caf85348d4 100644 --- a/src/com/vaadin/terminal/gwt/client/ui/optiongroup/OptionGroupConnector.java +++ b/src/com/vaadin/terminal/gwt/client/ui/optiongroup/OptionGroupConnector.java @@ -9,10 +9,10 @@ import java.util.ArrayList; import com.google.gwt.event.shared.HandlerRegistration; import com.google.gwt.user.client.ui.CheckBox; import com.google.gwt.user.client.ui.Widget; +import com.vaadin.shared.EventId; +import com.vaadin.shared.ui.Connect; import com.vaadin.terminal.gwt.client.ApplicationConnection; -import com.vaadin.terminal.gwt.client.EventId; import com.vaadin.terminal.gwt.client.UIDL; -import com.vaadin.terminal.gwt.client.ui.Connect; import com.vaadin.ui.OptionGroup; @Connect(OptionGroup.class) diff --git a/src/com/vaadin/terminal/gwt/client/ui/optiongroup/VOptionGroup.java b/src/com/vaadin/terminal/gwt/client/ui/optiongroup/VOptionGroup.java index d6e6949242..a6cdf7e888 100644 --- a/src/com/vaadin/terminal/gwt/client/ui/optiongroup/VOptionGroup.java +++ b/src/com/vaadin/terminal/gwt/client/ui/optiongroup/VOptionGroup.java @@ -25,8 +25,8 @@ import com.google.gwt.user.client.ui.Focusable; import com.google.gwt.user.client.ui.Panel; import com.google.gwt.user.client.ui.RadioButton; import com.google.gwt.user.client.ui.Widget; +import com.vaadin.shared.EventId; import com.vaadin.terminal.gwt.client.ApplicationConnection; -import com.vaadin.terminal.gwt.client.EventId; import com.vaadin.terminal.gwt.client.UIDL; import com.vaadin.terminal.gwt.client.Util; import com.vaadin.terminal.gwt.client.ui.Icon; @@ -51,6 +51,7 @@ public class VOptionGroup extends VOptionGroupBase implements FocusHandler, protected List<HandlerRegistration> blurHandlers = null; private final LoadHandler iconLoadHandler = new LoadHandler() { + @Override public void onLoad(LoadEvent event) { Util.notifyParentOfSizeChange(VOptionGroup.this, true); } @@ -154,6 +155,7 @@ public class VOptionGroup extends VOptionGroupBase implements FocusHandler, } } + @Override public void focus() { Iterator<Widget> iterator = panel.iterator(); if (iterator.hasNext()) { @@ -161,6 +163,7 @@ public class VOptionGroup extends VOptionGroupBase implements FocusHandler, } } + @Override public void onFocus(FocusEvent arg0) { if (!blurOccured) { // no blur occured before this focus event @@ -178,10 +181,12 @@ public class VOptionGroup extends VOptionGroupBase implements FocusHandler, } } + @Override public void onBlur(BlurEvent arg0) { blurOccured = true; if (sendBlurEvents) { Scheduler.get().scheduleDeferred(new Command() { + @Override public void execute() { // check whether blurOccured still is true and then send the // event out to the server diff --git a/src/com/vaadin/terminal/gwt/client/ui/optiongroup/VOptionGroupBase.java b/src/com/vaadin/terminal/gwt/client/ui/optiongroup/VOptionGroupBase.java index a512f024b8..d128d7deb1 100644 --- a/src/com/vaadin/terminal/gwt/client/ui/optiongroup/VOptionGroupBase.java +++ b/src/com/vaadin/terminal/gwt/client/ui/optiongroup/VOptionGroupBase.java @@ -126,6 +126,7 @@ public abstract class VOptionGroupBase extends Composite implements Field, abstract protected void setTabIndex(int tabIndex); + @Override public void onClick(ClickEvent event) { if (event.getSource() == newItemButton && !newItemField.getText().equals("")) { @@ -135,6 +136,7 @@ public abstract class VOptionGroupBase extends Composite implements Field, } } + @Override public void onChange(ChangeEvent event) { if (multiselect) { client.updateVariable(paintableId, "selected", getSelectedItems(), @@ -145,6 +147,7 @@ public abstract class VOptionGroupBase extends Composite implements Field, } } + @Override public void onKeyPress(KeyPressEvent event) { if (event.getSource() == newItemField && event.getCharCode() == KeyCodes.KEY_ENTER) { diff --git a/src/com/vaadin/terminal/gwt/client/ui/orderedlayout/AbstractOrderedLayoutConnector.java b/src/com/vaadin/terminal/gwt/client/ui/orderedlayout/AbstractOrderedLayoutConnector.java index 9a89553fd2..e1bf217691 100644 --- a/src/com/vaadin/terminal/gwt/client/ui/orderedlayout/AbstractOrderedLayoutConnector.java +++ b/src/com/vaadin/terminal/gwt/client/ui/orderedlayout/AbstractOrderedLayoutConnector.java @@ -9,6 +9,11 @@ import com.google.gwt.dom.client.Style; import com.google.gwt.dom.client.Style.Unit; import com.google.gwt.user.client.Element; import com.google.gwt.user.client.ui.Widget; +import com.vaadin.shared.ui.AlignmentInfo; +import com.vaadin.shared.ui.LayoutClickRpc; +import com.vaadin.shared.ui.VMarginInfo; +import com.vaadin.shared.ui.orderedlayout.AbstractOrderedLayoutServerRpc; +import com.vaadin.shared.ui.orderedlayout.AbstractOrderedLayoutState; import com.vaadin.terminal.gwt.client.ComponentConnector; import com.vaadin.terminal.gwt.client.ConnectorHierarchyChangeEvent; import com.vaadin.terminal.gwt.client.DirectionalManagedLayout; @@ -18,10 +23,7 @@ import com.vaadin.terminal.gwt.client.VCaption; import com.vaadin.terminal.gwt.client.communication.RpcProxy; import com.vaadin.terminal.gwt.client.communication.StateChangeEvent; import com.vaadin.terminal.gwt.client.ui.AbstractLayoutConnector; -import com.vaadin.terminal.gwt.client.ui.AlignmentInfo; import com.vaadin.terminal.gwt.client.ui.LayoutClickEventHandler; -import com.vaadin.terminal.gwt.client.ui.LayoutClickRpc; -import com.vaadin.terminal.gwt.client.ui.VMarginInfo; import com.vaadin.terminal.gwt.client.ui.layout.ComponentConnectorLayoutSlot; import com.vaadin.terminal.gwt.client.ui.layout.VLayoutSlot; @@ -48,6 +50,7 @@ public abstract class AbstractOrderedLayoutConnector extends @Override public void init() { + super.init(); rpc = RpcProxy.create(AbstractOrderedLayoutServerRpc.class, this); getLayoutManager().registerDependency(this, getWidget().spacingMeasureElement); @@ -72,6 +75,7 @@ public abstract class AbstractOrderedLayoutConnector extends return (AbstractOrderedLayoutState) super.getState(); } + @Override public void updateCaption(ComponentConnector component) { VMeasuringOrderedLayout layout = getWidget(); if (VCaption.isNeeded(component.getState())) { @@ -262,6 +266,7 @@ public abstract class AbstractOrderedLayoutConnector extends } } + @Override public void layoutHorizontally() { if (getWidget().isVertical) { layoutSecondaryDirection(); @@ -270,6 +275,7 @@ public abstract class AbstractOrderedLayoutConnector extends } } + @Override public void layoutVertically() { if (getWidget().isVertical) { layoutPrimaryDirection(); diff --git a/src/com/vaadin/terminal/gwt/client/ui/orderedlayout/AbstractOrderedLayoutServerRpc.java b/src/com/vaadin/terminal/gwt/client/ui/orderedlayout/AbstractOrderedLayoutServerRpc.java deleted file mode 100644 index 5a29eacada..0000000000 --- a/src/com/vaadin/terminal/gwt/client/ui/orderedlayout/AbstractOrderedLayoutServerRpc.java +++ /dev/null @@ -1,12 +0,0 @@ -/* -@VaadinApache2LicenseForJavaFiles@ - */ -package com.vaadin.terminal.gwt.client.ui.orderedlayout; - -import com.vaadin.terminal.gwt.client.communication.ServerRpc; -import com.vaadin.terminal.gwt.client.ui.LayoutClickRpc; - -public interface AbstractOrderedLayoutServerRpc extends LayoutClickRpc, - ServerRpc { - -}
\ No newline at end of file diff --git a/src/com/vaadin/terminal/gwt/client/ui/orderedlayout/HorizontalLayoutConnector.java b/src/com/vaadin/terminal/gwt/client/ui/orderedlayout/HorizontalLayoutConnector.java index 3b0014c0f0..459bd474d1 100644 --- a/src/com/vaadin/terminal/gwt/client/ui/orderedlayout/HorizontalLayoutConnector.java +++ b/src/com/vaadin/terminal/gwt/client/ui/orderedlayout/HorizontalLayoutConnector.java @@ -3,8 +3,8 @@ */ package com.vaadin.terminal.gwt.client.ui.orderedlayout; -import com.vaadin.terminal.gwt.client.ui.Connect; -import com.vaadin.terminal.gwt.client.ui.Connect.LoadStyle; +import com.vaadin.shared.ui.Connect; +import com.vaadin.shared.ui.Connect.LoadStyle; import com.vaadin.ui.HorizontalLayout; @Connect(value = HorizontalLayout.class, loadStyle = LoadStyle.EAGER) diff --git a/src/com/vaadin/terminal/gwt/client/ui/orderedlayout/VMeasuringOrderedLayout.java b/src/com/vaadin/terminal/gwt/client/ui/orderedlayout/VMeasuringOrderedLayout.java index de55ca98e6..4bb1c66e86 100644 --- a/src/com/vaadin/terminal/gwt/client/ui/orderedlayout/VMeasuringOrderedLayout.java +++ b/src/com/vaadin/terminal/gwt/client/ui/orderedlayout/VMeasuringOrderedLayout.java @@ -15,8 +15,8 @@ import com.google.gwt.user.client.Element; import com.google.gwt.user.client.ui.ComplexPanel; import com.google.gwt.user.client.ui.Widget; import com.google.gwt.user.client.ui.WidgetCollection; +import com.vaadin.shared.ui.VMarginInfo; import com.vaadin.terminal.gwt.client.VCaption; -import com.vaadin.terminal.gwt.client.ui.VMarginInfo; import com.vaadin.terminal.gwt.client.ui.layout.VLayoutSlot; public class VMeasuringOrderedLayout extends ComplexPanel { diff --git a/src/com/vaadin/terminal/gwt/client/ui/orderedlayout/VerticalLayoutConnector.java b/src/com/vaadin/terminal/gwt/client/ui/orderedlayout/VerticalLayoutConnector.java index 42a762864e..a481283156 100644 --- a/src/com/vaadin/terminal/gwt/client/ui/orderedlayout/VerticalLayoutConnector.java +++ b/src/com/vaadin/terminal/gwt/client/ui/orderedlayout/VerticalLayoutConnector.java @@ -3,8 +3,8 @@ */ package com.vaadin.terminal.gwt.client.ui.orderedlayout; -import com.vaadin.terminal.gwt.client.ui.Connect; -import com.vaadin.terminal.gwt.client.ui.Connect.LoadStyle; +import com.vaadin.shared.ui.Connect; +import com.vaadin.shared.ui.Connect.LoadStyle; import com.vaadin.ui.VerticalLayout; @Connect(value = VerticalLayout.class, loadStyle = LoadStyle.EAGER) diff --git a/src/com/vaadin/terminal/gwt/client/ui/panel/PanelConnector.java b/src/com/vaadin/terminal/gwt/client/ui/panel/PanelConnector.java index d9096526f3..fd4761de5e 100644 --- a/src/com/vaadin/terminal/gwt/client/ui/panel/PanelConnector.java +++ b/src/com/vaadin/terminal/gwt/client/ui/panel/PanelConnector.java @@ -7,17 +7,19 @@ import com.google.gwt.dom.client.NativeEvent; import com.google.gwt.dom.client.Style; import com.google.gwt.dom.client.Style.Unit; import com.google.gwt.user.client.ui.Widget; +import com.vaadin.shared.MouseEventDetails; +import com.vaadin.shared.ui.Connect; +import com.vaadin.shared.ui.panel.PanelServerRpc; +import com.vaadin.shared.ui.panel.PanelState; import com.vaadin.terminal.gwt.client.ApplicationConnection; import com.vaadin.terminal.gwt.client.ComponentConnector; import com.vaadin.terminal.gwt.client.ConnectorHierarchyChangeEvent; import com.vaadin.terminal.gwt.client.LayoutManager; -import com.vaadin.terminal.gwt.client.MouseEventDetails; import com.vaadin.terminal.gwt.client.Paintable; import com.vaadin.terminal.gwt.client.UIDL; import com.vaadin.terminal.gwt.client.communication.RpcProxy; import com.vaadin.terminal.gwt.client.ui.AbstractComponentContainerConnector; import com.vaadin.terminal.gwt.client.ui.ClickEventHandler; -import com.vaadin.terminal.gwt.client.ui.Connect; import com.vaadin.terminal.gwt.client.ui.PostLayoutListener; import com.vaadin.terminal.gwt.client.ui.ShortcutActionHandler; import com.vaadin.terminal.gwt.client.ui.SimpleManagedLayout; @@ -46,6 +48,7 @@ public class PanelConnector extends AbstractComponentContainerConnector @Override public void init() { + super.init(); rpc = RpcProxy.create(PanelServerRpc.class, this); VPanel panel = getWidget(); LayoutManager layoutManager = getLayoutManager(); @@ -70,6 +73,7 @@ public class PanelConnector extends AbstractComponentContainerConnector return false; } + @Override public void updateFromUIDL(UIDL uidl, ApplicationConnection client) { if (isRealUpdate(uidl)) { @@ -164,6 +168,7 @@ public class PanelConnector extends AbstractComponentContainerConnector getWidget().contentNode.setTabIndex(getState().getTabIndex()); } + @Override public void updateCaption(ComponentConnector component) { // NOP: layouts caption, errors etc not rendered in Panel } @@ -173,6 +178,7 @@ public class PanelConnector extends AbstractComponentContainerConnector return (VPanel) super.getWidget(); } + @Override public void layout() { updateSizes(); } @@ -199,6 +205,7 @@ public class PanelConnector extends AbstractComponentContainerConnector panel.scrollLeft = panel.contentNode.getScrollLeft(); } + @Override public void postLayout() { VPanel panel = getWidget(); if (uidlScrollTop != null) { diff --git a/src/com/vaadin/terminal/gwt/client/ui/panel/PanelServerRpc.java b/src/com/vaadin/terminal/gwt/client/ui/panel/PanelServerRpc.java deleted file mode 100644 index 9b59344aec..0000000000 --- a/src/com/vaadin/terminal/gwt/client/ui/panel/PanelServerRpc.java +++ /dev/null @@ -1,11 +0,0 @@ -/* -@VaadinApache2LicenseForJavaFiles@ - */ -package com.vaadin.terminal.gwt.client.ui.panel; - -import com.vaadin.terminal.gwt.client.communication.ServerRpc; -import com.vaadin.terminal.gwt.client.ui.ClickRpc; - -public interface PanelServerRpc extends ClickRpc, ServerRpc { - -}
\ No newline at end of file diff --git a/src/com/vaadin/terminal/gwt/client/ui/panel/VPanel.java b/src/com/vaadin/terminal/gwt/client/ui/panel/VPanel.java index 6a06367acd..8764d61c3a 100644 --- a/src/com/vaadin/terminal/gwt/client/ui/panel/VPanel.java +++ b/src/com/vaadin/terminal/gwt/client/ui/panel/VPanel.java @@ -100,6 +100,7 @@ public class VPanel extends SimplePanel implements ShortcutActionHandlerOwner, * @see com.vaadin.terminal.gwt.client.Focusable#focus() */ + @Override public void focus() { setFocus(true); @@ -167,13 +168,10 @@ public class VPanel extends SimplePanel implements ShortcutActionHandlerOwner, client.updateVariable(id, "scrollTop", scrollTop, false); client.updateVariable(id, "scrollLeft", scrollLeft, false); } - } else if (captionNode.isOrHasChild(target)) { - if (client != null) { - client.handleTooltipEvent(event, this); - } } } + @Override public ShortcutActionHandler getShortcutActionHandler() { return shortcutHandler; } diff --git a/src/com/vaadin/terminal/gwt/client/ui/passwordfield/PasswordFieldConnector.java b/src/com/vaadin/terminal/gwt/client/ui/passwordfield/PasswordFieldConnector.java index c4c5954c33..55d645f12e 100644 --- a/src/com/vaadin/terminal/gwt/client/ui/passwordfield/PasswordFieldConnector.java +++ b/src/com/vaadin/terminal/gwt/client/ui/passwordfield/PasswordFieldConnector.java @@ -4,7 +4,7 @@ package com.vaadin.terminal.gwt.client.ui.passwordfield; -import com.vaadin.terminal.gwt.client.ui.Connect; +import com.vaadin.shared.ui.Connect; import com.vaadin.terminal.gwt.client.ui.textfield.TextFieldConnector; import com.vaadin.ui.PasswordField; diff --git a/src/com/vaadin/terminal/gwt/client/ui/popupview/PopupViewConnector.java b/src/com/vaadin/terminal/gwt/client/ui/popupview/PopupViewConnector.java index c5117fdddb..19b35821c7 100644 --- a/src/com/vaadin/terminal/gwt/client/ui/popupview/PopupViewConnector.java +++ b/src/com/vaadin/terminal/gwt/client/ui/popupview/PopupViewConnector.java @@ -3,6 +3,7 @@ */ package com.vaadin.terminal.gwt.client.ui.popupview; +import com.vaadin.shared.ui.Connect; import com.vaadin.terminal.gwt.client.ApplicationConnection; import com.vaadin.terminal.gwt.client.ComponentConnector; import com.vaadin.terminal.gwt.client.Paintable; @@ -10,7 +11,6 @@ import com.vaadin.terminal.gwt.client.UIDL; import com.vaadin.terminal.gwt.client.VCaption; import com.vaadin.terminal.gwt.client.VCaptionWrapper; import com.vaadin.terminal.gwt.client.ui.AbstractComponentContainerConnector; -import com.vaadin.terminal.gwt.client.ui.Connect; import com.vaadin.terminal.gwt.client.ui.PostLayoutListener; import com.vaadin.ui.PopupView; @@ -31,6 +31,7 @@ public class PopupViewConnector extends AbstractComponentContainerConnector * @see com.vaadin.terminal.gwt.client.ComponentConnector#updateFromUIDL(com.vaadin.terminal.gwt.client.UIDL, * com.vaadin.terminal.gwt.client.ApplicationConnection) */ + @Override public void updateFromUIDL(UIDL uidl, ApplicationConnection client) { if (!isRealUpdate(uidl)) { return; @@ -81,6 +82,7 @@ public class PopupViewConnector extends AbstractComponentContainerConnector } }// updateFromUIDL + @Override public void updateCaption(ComponentConnector component) { if (VCaption.isNeeded(component.getState())) { if (getWidget().popup.captionWrapper != null) { @@ -104,6 +106,7 @@ public class PopupViewConnector extends AbstractComponentContainerConnector return (VPopupView) super.getWidget(); } + @Override public void postLayout() { if (centerAfterLayout) { centerAfterLayout = false; diff --git a/src/com/vaadin/terminal/gwt/client/ui/popupview/VPopupView.java b/src/com/vaadin/terminal/gwt/client/ui/popupview/VPopupView.java index da48975726..6efcd8f417 100644 --- a/src/com/vaadin/terminal/gwt/client/ui/popupview/VPopupView.java +++ b/src/com/vaadin/terminal/gwt/client/ui/popupview/VPopupView.java @@ -10,6 +10,8 @@ import java.util.Set; import com.google.gwt.event.dom.client.ClickEvent; import com.google.gwt.event.dom.client.ClickHandler; import com.google.gwt.event.dom.client.KeyCodes; +import com.google.gwt.event.dom.client.KeyDownEvent; +import com.google.gwt.event.dom.client.KeyDownHandler; import com.google.gwt.event.logical.shared.CloseEvent; import com.google.gwt.event.logical.shared.CloseHandler; import com.google.gwt.user.client.DOM; @@ -26,7 +28,9 @@ import com.vaadin.terminal.gwt.client.ApplicationConnection; import com.vaadin.terminal.gwt.client.ComponentConnector; import com.vaadin.terminal.gwt.client.UIDL; import com.vaadin.terminal.gwt.client.VCaptionWrapper; -import com.vaadin.terminal.gwt.client.VTooltip; +import com.vaadin.terminal.gwt.client.VConsole; +import com.vaadin.terminal.gwt.client.ui.ShortcutActionHandler; +import com.vaadin.terminal.gwt.client.ui.ShortcutActionHandler.ShortcutActionHandlerOwner; import com.vaadin.terminal.gwt.client.ui.VOverlay; import com.vaadin.terminal.gwt.client.ui.richtextarea.VRichTextArea; @@ -60,6 +64,7 @@ public class VPopupView extends HTML { // When we click to open the popup... addClickHandler(new ClickHandler() { + @Override public void onClick(ClickEvent event) { updateState(true); } @@ -67,13 +72,13 @@ public class VPopupView extends HTML { // ..and when we close it popup.addCloseHandler(new CloseHandler<PopupPanel>() { + @Override public void onClose(CloseEvent<PopupPanel> event) { updateState(false); } }); popup.setAnimationEnabled(true); - sinkEvents(VTooltip.TOOLTIP_EVENTS); } /** @@ -183,8 +188,23 @@ public class VPopupView extends HTML { private final Set<Element> activeChildren = new HashSet<Element>(); private boolean hiding = false; + private ShortcutActionHandler shortcutActionHandler; + public CustomPopup() { super(true, false, true); // autoHide, not modal, dropshadow + + // Delegate popup keyboard events to the relevant handler. The + // events do not propagate automatically because the popup is + // directly attached to the RootPanel. + addDomHandler(new KeyDownHandler() { + @Override + public void onKeyDown(KeyDownEvent event) { + if (shortcutActionHandler != null) { + shortcutActionHandler.handleKeyboardEvent(Event + .as(event.getNativeEvent())); + } + } + }, KeyDownEvent.getType()); } // For some reason ONMOUSEOUT events are not always received, so we have @@ -227,18 +247,33 @@ public class VPopupView extends HTML { @Override public void hide(boolean autoClosed) { + VConsole.log("Hiding popupview"); hiding = true; syncChildren(); if (popupComponentWidget != null && popupComponentWidget != loading) { remove(popupComponentWidget); } hasHadMouseOver = false; + shortcutActionHandler = null; super.hide(autoClosed); } @Override public void show() { hiding = false; + + // Find the shortcut action handler that should handle keyboard + // events from the popup. The events do not propagate automatically + // because the popup is directly attached to the RootPanel. + Widget widget = VPopupView.this; + while (shortcutActionHandler == null && widget != null) { + if (widget instanceof ShortcutActionHandlerOwner) { + shortcutActionHandler = ((ShortcutActionHandlerOwner) widget) + .getShortcutActionHandler(); + } + widget = widget.getParent(); + } + super.show(); } @@ -337,12 +372,4 @@ public class VPopupView extends HTML { }// class CustomPopup - @Override - public void onBrowserEvent(Event event) { - super.onBrowserEvent(event); - if (client != null) { - client.handleTooltipEvent(event, this); - } - } - }// class VPopupView diff --git a/src/com/vaadin/terminal/gwt/client/ui/progressindicator/ProgressIndicatorConnector.java b/src/com/vaadin/terminal/gwt/client/ui/progressindicator/ProgressIndicatorConnector.java index 9d0532fae3..cdb0174a49 100644 --- a/src/com/vaadin/terminal/gwt/client/ui/progressindicator/ProgressIndicatorConnector.java +++ b/src/com/vaadin/terminal/gwt/client/ui/progressindicator/ProgressIndicatorConnector.java @@ -5,17 +5,18 @@ package com.vaadin.terminal.gwt.client.ui.progressindicator; import com.google.gwt.user.client.DOM; +import com.vaadin.shared.ui.Connect; import com.vaadin.terminal.gwt.client.ApplicationConnection; import com.vaadin.terminal.gwt.client.Paintable; import com.vaadin.terminal.gwt.client.UIDL; import com.vaadin.terminal.gwt.client.ui.AbstractFieldConnector; -import com.vaadin.terminal.gwt.client.ui.Connect; import com.vaadin.ui.ProgressIndicator; @Connect(ProgressIndicator.class) public class ProgressIndicatorConnector extends AbstractFieldConnector implements Paintable { + @Override public void updateFromUIDL(UIDL uidl, ApplicationConnection client) { if (!isRealUpdate(uidl)) { diff --git a/src/com/vaadin/terminal/gwt/client/ui/richtextarea/RichTextAreaConnector.java b/src/com/vaadin/terminal/gwt/client/ui/richtextarea/RichTextAreaConnector.java index db52640088..66781eb645 100644 --- a/src/com/vaadin/terminal/gwt/client/ui/richtextarea/RichTextAreaConnector.java +++ b/src/com/vaadin/terminal/gwt/client/ui/richtextarea/RichTextAreaConnector.java @@ -4,12 +4,12 @@ package com.vaadin.terminal.gwt.client.ui.richtextarea; import com.google.gwt.user.client.Event; +import com.vaadin.shared.ui.Connect; +import com.vaadin.shared.ui.Connect.LoadStyle; import com.vaadin.terminal.gwt.client.ApplicationConnection; import com.vaadin.terminal.gwt.client.Paintable; import com.vaadin.terminal.gwt.client.UIDL; import com.vaadin.terminal.gwt.client.ui.AbstractFieldConnector; -import com.vaadin.terminal.gwt.client.ui.Connect; -import com.vaadin.terminal.gwt.client.ui.Connect.LoadStyle; import com.vaadin.terminal.gwt.client.ui.ShortcutActionHandler.BeforeShortcutActionListener; import com.vaadin.ui.RichTextArea; @@ -17,6 +17,7 @@ import com.vaadin.ui.RichTextArea; public class RichTextAreaConnector extends AbstractFieldConnector implements Paintable, BeforeShortcutActionListener { + @Override public void updateFromUIDL(final UIDL uidl, ApplicationConnection client) { getWidget().client = client; getWidget().id = uidl.getId(); @@ -59,6 +60,7 @@ public class RichTextAreaConnector extends AbstractFieldConnector implements } + @Override public void onBeforeShortcutAction(Event e) { getWidget().synchronizeContentToServer(); } diff --git a/src/com/vaadin/terminal/gwt/client/ui/richtextarea/VRichTextArea.java b/src/com/vaadin/terminal/gwt/client/ui/richtextarea/VRichTextArea.java index eb062a3799..f9b399caac 100644 --- a/src/com/vaadin/terminal/gwt/client/ui/richtextarea/VRichTextArea.java +++ b/src/com/vaadin/terminal/gwt/client/ui/richtextarea/VRichTextArea.java @@ -31,6 +31,7 @@ import com.vaadin.terminal.gwt.client.Util; import com.vaadin.terminal.gwt.client.ui.Field; import com.vaadin.terminal.gwt.client.ui.ShortcutActionHandler; import com.vaadin.terminal.gwt.client.ui.ShortcutActionHandler.ShortcutActionHandlerOwner; +import com.vaadin.terminal.gwt.client.ui.TouchScrollDelegate; /** * This class implements a basic client side rich text editor component. @@ -85,6 +86,7 @@ public class VRichTextArea extends Composite implements Field, ChangeHandler, initWidget(fp); setStyleName(CLASSNAME); + TouchScrollDelegate.enableTouchScrolling(html, html.getElement()); } private void createRTAComponents() { @@ -160,6 +162,7 @@ public class VRichTextArea extends Composite implements Field, ChangeHandler, } // TODO is this really used, or does everything go via onBlur() only? + @Override public void onChange(ChangeEvent event) { synchronizeContentToServer(); } @@ -177,6 +180,7 @@ public class VRichTextArea extends Composite implements Field, ChangeHandler, } } + @Override public void onBlur(BlurEvent event) { synchronizeContentToServer(); // TODO notify possible server side blur/focus listeners @@ -242,6 +246,7 @@ public class VRichTextArea extends Composite implements Field, ChangeHandler, * delay the height setting so the DOM has had time to stabilize. */ Scheduler.get().scheduleDeferred(new Command() { + @Override public void execute() { int editorHeight = getOffsetHeight() - getExtraVerticalPixels() @@ -281,9 +286,11 @@ public class VRichTextArea extends Composite implements Field, ChangeHandler, } } + @Override public void onKeyPress(KeyPressEvent event) { if (maxLength >= 0) { Scheduler.get().scheduleDeferred(new Command() { + @Override public void execute() { if (rta.getHTML().length() > maxLength) { rta.setHTML(rta.getHTML().substring(0, maxLength)); @@ -293,6 +300,7 @@ public class VRichTextArea extends Composite implements Field, ChangeHandler, } } + @Override public void onKeyDown(KeyDownEvent event) { // delegate to closest shortcut action handler // throw event from the iframe forward to the shortcuthandler @@ -320,14 +328,17 @@ public class VRichTextArea extends Composite implements Field, ChangeHandler, return hasShortcutActionHandler; } + @Override public int getTabIndex() { return rta.getTabIndex(); } + @Override public void setAccessKey(char key) { rta.setAccessKey(key); } + @Override public void setFocus(boolean focused) { /* * Similar issue as with selectAll. Focusing must happen before possible @@ -342,6 +353,7 @@ public class VRichTextArea extends Composite implements Field, ChangeHandler, }.schedule(300); } + @Override public void setTabIndex(int index) { rta.setTabIndex(index); } diff --git a/src/com/vaadin/terminal/gwt/client/ui/richtextarea/VRichTextToolbar.java b/src/com/vaadin/terminal/gwt/client/ui/richtextarea/VRichTextToolbar.java index 1e1805efdf..d86c7a4bf5 100644 --- a/src/com/vaadin/terminal/gwt/client/ui/richtextarea/VRichTextToolbar.java +++ b/src/com/vaadin/terminal/gwt/client/ui/richtextarea/VRichTextToolbar.java @@ -172,6 +172,7 @@ public class VRichTextToolbar extends Composite { private class EventHandler implements ClickHandler, ChangeHandler, KeyUpHandler { + @Override @SuppressWarnings("deprecation") public void onChange(ChangeEvent event) { Object sender = event.getSource(); @@ -193,6 +194,7 @@ public class VRichTextToolbar extends Composite { } } + @Override @SuppressWarnings("deprecation") public void onClick(ClickEvent event) { Object sender = event.getSource(); @@ -249,6 +251,7 @@ public class VRichTextToolbar extends Composite { } } + @Override public void onKeyUp(KeyUpEvent event) { if (event.getSource() == richText) { // We use the RichTextArea's onKeyUp event to update the toolbar diff --git a/src/com/vaadin/terminal/gwt/client/ui/root/RootConnector.java b/src/com/vaadin/terminal/gwt/client/ui/root/RootConnector.java index 1a62e566ad..7b5097ff77 100644 --- a/src/com/vaadin/terminal/gwt/client/ui/root/RootConnector.java +++ b/src/com/vaadin/terminal/gwt/client/ui/root/RootConnector.java @@ -19,13 +19,18 @@ import com.google.gwt.user.client.Window; import com.google.gwt.user.client.ui.RootPanel; import com.google.gwt.user.client.ui.Widget; import com.google.web.bindery.event.shared.HandlerRegistration; +import com.vaadin.shared.MouseEventDetails; +import com.vaadin.shared.ui.Connect; +import com.vaadin.shared.ui.Connect.LoadStyle; +import com.vaadin.shared.ui.root.PageClientRpc; +import com.vaadin.shared.ui.root.RootServerRpc; +import com.vaadin.shared.ui.root.RootState; import com.vaadin.terminal.gwt.client.ApplicationConnection; import com.vaadin.terminal.gwt.client.BrowserInfo; import com.vaadin.terminal.gwt.client.ComponentConnector; import com.vaadin.terminal.gwt.client.ConnectorHierarchyChangeEvent; import com.vaadin.terminal.gwt.client.ConnectorMap; import com.vaadin.terminal.gwt.client.Focusable; -import com.vaadin.terminal.gwt.client.MouseEventDetails; import com.vaadin.terminal.gwt.client.Paintable; import com.vaadin.terminal.gwt.client.UIDL; import com.vaadin.terminal.gwt.client.VConsole; @@ -34,8 +39,6 @@ import com.vaadin.terminal.gwt.client.communication.StateChangeEvent; import com.vaadin.terminal.gwt.client.communication.StateChangeEvent.StateChangeHandler; import com.vaadin.terminal.gwt.client.ui.AbstractComponentContainerConnector; import com.vaadin.terminal.gwt.client.ui.ClickEventHandler; -import com.vaadin.terminal.gwt.client.ui.Connect; -import com.vaadin.terminal.gwt.client.ui.Connect.LoadStyle; import com.vaadin.terminal.gwt.client.ui.ShortcutActionHandler; import com.vaadin.terminal.gwt.client.ui.layout.MayScrollChildren; import com.vaadin.terminal.gwt.client.ui.notification.VNotification; @@ -51,6 +54,7 @@ public class RootConnector extends AbstractComponentContainerConnector private HandlerRegistration childStateChangeHandlerRegistration; private final StateChangeHandler childStateChangeHandler = new StateChangeHandler() { + @Override public void onStateChanged(StateChangeEvent stateChangeEvent) { // TODO Should use a more specific handler that only reacts to // size changes @@ -62,12 +66,14 @@ public class RootConnector extends AbstractComponentContainerConnector protected void init() { super.init(); registerRpc(PageClientRpc.class, new PageClientRpc() { + @Override public void setTitle(String title) { com.google.gwt.user.client.Window.setTitle(title); } }); } + @Override public void updateFromUIDL(final UIDL uidl, ApplicationConnection client) { ConnectorMap paintableMap = ConnectorMap.get(getConnection()); getWidget().rendering = true; @@ -118,6 +124,7 @@ public class RootConnector extends AbstractComponentContainerConnector // to finish rendering this window in case this is a download // (and window stays open). Scheduler.get().scheduleDeferred(new Command() { + @Override public void execute() { VRoot.goTo(url); } @@ -182,6 +189,7 @@ public class RootConnector extends AbstractComponentContainerConnector if (uidl.hasAttribute("focused")) { // set focused component when render phase is finished Scheduler.get().scheduleDeferred(new Command() { + @Override public void execute() { ComponentConnector paintable = (ComponentConnector) uidl .getPaintableAttribute("focused", getConnection()); @@ -246,6 +254,11 @@ public class RootConnector extends AbstractComponentContainerConnector getWidget().currentFragment, false); } + if (firstPaint) { + // Queue the initial window size to be sent with the following + // request. + getWidget().sendClientResized(); + } getWidget().rendering = false; } @@ -288,6 +301,7 @@ public class RootConnector extends AbstractComponentContainerConnector }; + @Override public void updateCaption(ComponentConnector component) { // NOP The main view never draws caption for its layout } @@ -407,6 +421,7 @@ public class RootConnector extends AbstractComponentContainerConnector } Scheduler.get().scheduleDeferred(new Command() { + @Override public void execute() { componentConnector.getWidget().getElement().scrollIntoView(); } diff --git a/src/com/vaadin/terminal/gwt/client/ui/root/RootServerRpc.java b/src/com/vaadin/terminal/gwt/client/ui/root/RootServerRpc.java deleted file mode 100644 index 389500949d..0000000000 --- a/src/com/vaadin/terminal/gwt/client/ui/root/RootServerRpc.java +++ /dev/null @@ -1,11 +0,0 @@ -/* -@VaadinApache2LicenseForJavaFiles@ - */ -package com.vaadin.terminal.gwt.client.ui.root; - -import com.vaadin.terminal.gwt.client.communication.ServerRpc; -import com.vaadin.terminal.gwt.client.ui.ClickRpc; - -public interface RootServerRpc extends ClickRpc, ServerRpc { - -}
\ No newline at end of file diff --git a/src/com/vaadin/terminal/gwt/client/ui/root/VRoot.java b/src/com/vaadin/terminal/gwt/client/ui/root/VRoot.java index 0af8919280..fddb76e755 100644 --- a/src/com/vaadin/terminal/gwt/client/ui/root/VRoot.java +++ b/src/com/vaadin/terminal/gwt/client/ui/root/VRoot.java @@ -123,6 +123,7 @@ public class VRoot extends SimplePanel implements ResizeHandler, */ private final ValueChangeHandler<String> historyChangeHandler = new ValueChangeHandler<String>() { + @Override public void onValueChange(ValueChangeEvent<String> event) { String newFragment = event.getValue(); @@ -138,6 +139,7 @@ public class VRoot extends SimplePanel implements ResizeHandler, private VLazyExecutor delayedResizeExecutor = new VLazyExecutor(200, new ScheduledCommand() { + @Override public void execute() { performSizeCheck(); } @@ -361,6 +363,7 @@ public class VRoot extends SimplePanel implements ResizeHandler, * .gwt.event.logical.shared.ResizeEvent) */ + @Override public void onResize(ResizeEvent event) { triggerSizeChangeCheck(); } @@ -395,7 +398,7 @@ public class VRoot extends SimplePanel implements ResizeHandler, /** * Send new dimensions to the server. */ - private void sendClientResized() { + void sendClientResized() { Element parentElement = getElement().getParentElement(); int viewHeight = parentElement.getClientHeight(); int viewWidth = parentElement.getClientWidth(); @@ -416,6 +419,7 @@ public class VRoot extends SimplePanel implements ResizeHandler, $wnd.location = url; }-*/; + @Override public void onWindowClosing(Window.ClosingEvent event) { // Change focus on this window in order to ensure that all state is // collected from textfields @@ -435,10 +439,12 @@ public class VRoot extends SimplePanel implements ResizeHandler, } }-*/; + @Override public ShortcutActionHandler getShortcutActionHandler() { return actionHandler; } + @Override public void focus() { getElement().focus(); } diff --git a/src/com/vaadin/terminal/gwt/client/ui/slider/SliderConnector.java b/src/com/vaadin/terminal/gwt/client/ui/slider/SliderConnector.java index 6fd7f8b6aa..f8588dbf3f 100644 --- a/src/com/vaadin/terminal/gwt/client/ui/slider/SliderConnector.java +++ b/src/com/vaadin/terminal/gwt/client/ui/slider/SliderConnector.java @@ -5,17 +5,18 @@ package com.vaadin.terminal.gwt.client.ui.slider; import com.google.gwt.core.client.Scheduler; import com.google.gwt.user.client.Command; +import com.vaadin.shared.ui.Connect; import com.vaadin.terminal.gwt.client.ApplicationConnection; import com.vaadin.terminal.gwt.client.Paintable; import com.vaadin.terminal.gwt.client.UIDL; import com.vaadin.terminal.gwt.client.ui.AbstractFieldConnector; -import com.vaadin.terminal.gwt.client.ui.Connect; import com.vaadin.ui.Slider; @Connect(Slider.class) public class SliderConnector extends AbstractFieldConnector implements Paintable { + @Override public void updateFromUIDL(UIDL uidl, ApplicationConnection client) { getWidget().client = client; @@ -51,6 +52,7 @@ public class SliderConnector extends AbstractFieldConnector implements if (!getWidget().vertical) { // Draw handle with a delay to allow base to gain maximum width Scheduler.get().scheduleDeferred(new Command() { + @Override public void execute() { getWidget().buildHandle(); getWidget().setValue(getWidget().value, false); diff --git a/src/com/vaadin/terminal/gwt/client/ui/slider/VSlider.java b/src/com/vaadin/terminal/gwt/client/ui/slider/VSlider.java index 5c7ee7a784..06608c95fe 100644 --- a/src/com/vaadin/terminal/gwt/client/ui/slider/VSlider.java +++ b/src/com/vaadin/terminal/gwt/client/ui/slider/VSlider.java @@ -18,7 +18,6 @@ import com.vaadin.terminal.gwt.client.BrowserInfo; import com.vaadin.terminal.gwt.client.ContainerResizedListener; import com.vaadin.terminal.gwt.client.Util; import com.vaadin.terminal.gwt.client.VConsole; -import com.vaadin.terminal.gwt.client.VTooltip; import com.vaadin.terminal.gwt.client.ui.Field; import com.vaadin.terminal.gwt.client.ui.SimpleFocusablePanel; import com.vaadin.terminal.gwt.client.ui.VLazyExecutor; @@ -79,6 +78,7 @@ public class VSlider extends SimpleFocusablePanel implements Field, private VLazyExecutor delayedValueUpdater = new VLazyExecutor(100, new ScheduledCommand() { + @Override public void execute() { updateValueToServer(); acceleration = 1; @@ -114,8 +114,6 @@ public class VSlider extends SimpleFocusablePanel implements Field, feedbackPopup.addStyleName(CLASSNAME + "-feedback"); feedbackPopup.setWidget(feedback); - - sinkEvents(VTooltip.TOOLTIP_EVENTS); } void setFeedbackValue(double value) { @@ -162,6 +160,7 @@ public class VSlider extends SimpleFocusablePanel implements Field, DOM.setStyleAttribute(base, styleAttribute, MIN_SIZE + "px"); Scheduler.get().scheduleDeferred(new Command() { + @Override public void execute() { final Element p = DOM.getParent(getElement()); if (DOM.getElementPropertyInt(p, domProperty) > (MIN_SIZE + 5)) { @@ -291,9 +290,6 @@ public class VSlider extends SimpleFocusablePanel implements Field, event.preventDefault(); // avoid simulated events event.stopPropagation(); } - if (client != null) { - client.handleTooltipEvent(event, this); - } } private void processMouseWheelEvent(final Event event) { @@ -422,6 +418,7 @@ public class VSlider extends SimpleFocusablePanel implements Field, } } + @Override public void iLayout() { if (vertical) { setHeight(); diff --git a/src/com/vaadin/terminal/gwt/client/ui/splitpanel/AbstractSplitPanelConnector.java b/src/com/vaadin/terminal/gwt/client/ui/splitpanel/AbstractSplitPanelConnector.java index e33755bc9b..f82718e4ea 100644 --- a/src/com/vaadin/terminal/gwt/client/ui/splitpanel/AbstractSplitPanelConnector.java +++ b/src/com/vaadin/terminal/gwt/client/ui/splitpanel/AbstractSplitPanelConnector.java @@ -14,16 +14,18 @@ import com.google.gwt.event.shared.HandlerRegistration; import com.google.gwt.user.client.Element; import com.google.gwt.user.client.Event; import com.google.gwt.user.client.ui.Widget; +import com.vaadin.shared.MouseEventDetails; +import com.vaadin.shared.ui.splitpanel.AbstractSplitPanelRpc; +import com.vaadin.shared.ui.splitpanel.AbstractSplitPanelState; +import com.vaadin.shared.ui.splitpanel.AbstractSplitPanelState.SplitterState; import com.vaadin.terminal.gwt.client.ComponentConnector; import com.vaadin.terminal.gwt.client.ConnectorHierarchyChangeEvent; import com.vaadin.terminal.gwt.client.LayoutManager; -import com.vaadin.terminal.gwt.client.MouseEventDetails; import com.vaadin.terminal.gwt.client.communication.RpcProxy; import com.vaadin.terminal.gwt.client.communication.StateChangeEvent; import com.vaadin.terminal.gwt.client.ui.AbstractComponentContainerConnector; import com.vaadin.terminal.gwt.client.ui.ClickEventHandler; import com.vaadin.terminal.gwt.client.ui.SimpleManagedLayout; -import com.vaadin.terminal.gwt.client.ui.splitpanel.AbstractSplitPanelState.SplitterState; import com.vaadin.terminal.gwt.client.ui.splitpanel.VAbstractSplitPanel.SplitterMoveHandler; import com.vaadin.terminal.gwt.client.ui.splitpanel.VAbstractSplitPanel.SplitterMoveHandler.SplitterMoveEvent; @@ -41,6 +43,7 @@ public abstract class AbstractSplitPanelConnector extends getWidget().addHandler(new SplitterMoveHandler() { + @Override public void splitterMoved(SplitterMoveEvent event) { String position = getWidget().getSplitterPosition(); float pos = 0; @@ -61,6 +64,7 @@ public abstract class AbstractSplitPanelConnector extends }, SplitterMoveEvent.TYPE); } + @Override public void updateCaption(ComponentConnector component) { // TODO Implement caption handling } @@ -145,6 +149,7 @@ public abstract class AbstractSplitPanelConnector extends getWidget().makeScrollable(); } + @Override public void layout() { VAbstractSplitPanel splitPanel = getWidget(); splitPanel.setSplitPosition(splitPanel.position); diff --git a/src/com/vaadin/terminal/gwt/client/ui/splitpanel/HorizontalSplitPanelConnector.java b/src/com/vaadin/terminal/gwt/client/ui/splitpanel/HorizontalSplitPanelConnector.java index 92c942e04b..8c2c4d24cd 100644 --- a/src/com/vaadin/terminal/gwt/client/ui/splitpanel/HorizontalSplitPanelConnector.java +++ b/src/com/vaadin/terminal/gwt/client/ui/splitpanel/HorizontalSplitPanelConnector.java @@ -3,8 +3,8 @@ */ package com.vaadin.terminal.gwt.client.ui.splitpanel; -import com.vaadin.terminal.gwt.client.ui.Connect; -import com.vaadin.terminal.gwt.client.ui.Connect.LoadStyle; +import com.vaadin.shared.ui.Connect; +import com.vaadin.shared.ui.Connect.LoadStyle; import com.vaadin.ui.HorizontalSplitPanel; @Connect(value = HorizontalSplitPanel.class, loadStyle = LoadStyle.EAGER) diff --git a/src/com/vaadin/terminal/gwt/client/ui/splitpanel/VAbstractSplitPanel.java b/src/com/vaadin/terminal/gwt/client/ui/splitpanel/VAbstractSplitPanel.java index e2f30c6676..a20c0476a5 100644 --- a/src/com/vaadin/terminal/gwt/client/ui/splitpanel/VAbstractSplitPanel.java +++ b/src/com/vaadin/terminal/gwt/client/ui/splitpanel/VAbstractSplitPanel.java @@ -125,12 +125,14 @@ public class VAbstractSplitPanel extends ComplexPanel { makeScrollable(); addDomHandler(new TouchCancelHandler() { + @Override public void onTouchCancel(TouchCancelEvent event) { // TODO When does this actually happen?? VConsole.log("TOUCH CANCEL"); } }, TouchCancelEvent.getType()); addDomHandler(new TouchStartHandler() { + @Override public void onTouchStart(TouchStartEvent event) { Node target = event.getTouches().get(0).getTarget().cast(); if (splitter.isOrHasChild(target)) { @@ -139,6 +141,7 @@ public class VAbstractSplitPanel extends ComplexPanel { } }, TouchStartEvent.getType()); addDomHandler(new TouchMoveHandler() { + @Override public void onTouchMove(TouchMoveEvent event) { if (resizing) { onMouseMove(Event.as(event.getNativeEvent())); @@ -146,6 +149,7 @@ public class VAbstractSplitPanel extends ComplexPanel { } }, TouchMoveEvent.getType()); addDomHandler(new TouchEndHandler() { + @Override public void onTouchEnd(TouchEndEvent event) { if (resizing) { onMouseUp(Event.as(event.getNativeEvent())); @@ -251,23 +255,22 @@ public class VAbstractSplitPanel extends ComplexPanel { * @return */ private float convertToPercentage(String pos) { - float posAsFloat = 0; - - if (pos.indexOf("px") > 0) { - int posAsInt = Integer.parseInt(pos.substring(0, pos.length() - 2)); + if (pos.endsWith("px")) { + float pixelPosition = Float.parseFloat(pos.substring(0, + pos.length() - 2)); int offsetLength = orientation == ORIENTATION_HORIZONTAL ? getOffsetWidth() : getOffsetHeight(); - // 100% needs special handling - if (posAsInt + getSplitterSize() >= offsetLength) { - posAsInt = offsetLength; + // Take splitter size into account at the edge + if (pixelPosition + getSplitterSize() >= offsetLength) { + return 100; } - posAsFloat = ((float) posAsInt / (float) offsetLength * 100); + return pixelPosition / offsetLength * 100; } else { - posAsFloat = Float.parseFloat(pos.substring(0, pos.length() - 1)); + assert pos.endsWith("%"); + return Float.parseFloat(pos.substring(0, pos.length() - 1)); } - return posAsFloat; } /** diff --git a/src/com/vaadin/terminal/gwt/client/ui/splitpanel/VerticalSplitPanelConnector.java b/src/com/vaadin/terminal/gwt/client/ui/splitpanel/VerticalSplitPanelConnector.java index 5015fcc60c..048136c1c9 100644 --- a/src/com/vaadin/terminal/gwt/client/ui/splitpanel/VerticalSplitPanelConnector.java +++ b/src/com/vaadin/terminal/gwt/client/ui/splitpanel/VerticalSplitPanelConnector.java @@ -4,8 +4,8 @@ package com.vaadin.terminal.gwt.client.ui.splitpanel; import com.google.gwt.core.client.GWT; -import com.vaadin.terminal.gwt.client.ui.Connect; -import com.vaadin.terminal.gwt.client.ui.Connect.LoadStyle; +import com.vaadin.shared.ui.Connect; +import com.vaadin.shared.ui.Connect.LoadStyle; import com.vaadin.ui.VerticalSplitPanel; @Connect(value = VerticalSplitPanel.class, loadStyle = LoadStyle.EAGER) diff --git a/src/com/vaadin/terminal/gwt/client/ui/table/TableConnector.java b/src/com/vaadin/terminal/gwt/client/ui/table/TableConnector.java index ada0f2424f..7721a3d763 100644 --- a/src/com/vaadin/terminal/gwt/client/ui/table/TableConnector.java +++ b/src/com/vaadin/terminal/gwt/client/ui/table/TableConnector.java @@ -7,20 +7,22 @@ import java.util.Iterator; import com.google.gwt.core.client.Scheduler; import com.google.gwt.core.client.Scheduler.ScheduledCommand; +import com.google.gwt.dom.client.Element; import com.google.gwt.dom.client.Style.Position; import com.google.gwt.user.client.Command; import com.google.gwt.user.client.ui.Widget; -import com.vaadin.terminal.gwt.client.AbstractFieldState; +import com.vaadin.shared.AbstractFieldState; +import com.vaadin.shared.ui.Connect; import com.vaadin.terminal.gwt.client.ApplicationConnection; import com.vaadin.terminal.gwt.client.BrowserInfo; import com.vaadin.terminal.gwt.client.ComponentConnector; import com.vaadin.terminal.gwt.client.DirectionalManagedLayout; import com.vaadin.terminal.gwt.client.Paintable; import com.vaadin.terminal.gwt.client.ServerConnector; +import com.vaadin.terminal.gwt.client.TooltipInfo; import com.vaadin.terminal.gwt.client.UIDL; import com.vaadin.terminal.gwt.client.Util; import com.vaadin.terminal.gwt.client.ui.AbstractComponentContainerConnector; -import com.vaadin.terminal.gwt.client.ui.Connect; import com.vaadin.terminal.gwt.client.ui.PostLayoutListener; import com.vaadin.terminal.gwt.client.ui.table.VScrollTable.ContextMenuDetails; import com.vaadin.terminal.gwt.client.ui.table.VScrollTable.VScrollTableBody.VScrollTableRow; @@ -42,6 +44,7 @@ public class TableConnector extends AbstractComponentContainerConnector * com.vaadin.terminal.gwt.client.Paintable#updateFromUIDL(com.vaadin.terminal * .gwt.client.UIDL, com.vaadin.terminal.gwt.client.ApplicationConnection) */ + @Override public void updateFromUIDL(UIDL uidl, ApplicationConnection client) { getWidget().rendering = true; @@ -178,6 +181,7 @@ public class TableConnector extends AbstractComponentContainerConnector // *shouldn't* have changed (unless the number of rows // or the height of the widget has also changed) Scheduler.get().scheduleDeferred(new Command() { + @Override public void execute() { Util.runWebkitOverflowAutoFix(getWidget().scrollBodyPanel .getElement()); @@ -244,6 +248,20 @@ public class TableConnector extends AbstractComponentContainerConnector } } + /* + * If the server has (re)initialized the rows, our selectionRangeStart + * row will point to an index that the server knows nothing about, + * causing problems if doing multi selection with shift. The field will + * be cleared a little later when the row focus has been restored. + * (#8584) + */ + if (uidl.hasAttribute(VScrollTable.ATTRIBUTE_KEY_MAPPER_RESET) + && uidl.getBooleanAttribute(VScrollTable.ATTRIBUTE_KEY_MAPPER_RESET) + && getWidget().selectionRangeStart != null) { + assert !getWidget().selectionRangeStart.isAttached(); + getWidget().selectionRangeStart = getWidget().focusedRow; + } + getWidget().tabIndex = uidl.hasAttribute("tabindex") ? uidl .getIntAttribute("tabindex") : 0; getWidget().setProperTabIndex(); @@ -265,23 +283,28 @@ public class TableConnector extends AbstractComponentContainerConnector return (VScrollTable) super.getWidget(); } + @Override public void updateCaption(ComponentConnector component) { // NOP, not rendered } + @Override public void layoutVertically() { getWidget().updateHeight(); } + @Override public void layoutHorizontally() { getWidget().updateWidth(); } + @Override public void postLayout() { VScrollTable table = getWidget(); if (table.sizeNeedsInit) { table.sizeInit(); Scheduler.get().scheduleFinally(new ScheduledCommand() { + @Override public void execute() { getLayoutManager().setNeedsMeasure(TableConnector.this); ServerConnector parent = getParent(); @@ -328,4 +351,27 @@ public class TableConnector extends AbstractComponentContainerConnector } } + @Override + public TooltipInfo getTooltipInfo(Element element) { + + TooltipInfo info = null; + + if (element != getWidget().getElement()) { + Object node = Util.findWidget( + (com.google.gwt.user.client.Element) element, + VScrollTableRow.class); + + if (node != null) { + VScrollTableRow row = (VScrollTableRow) node; + info = row.getTooltip(element); + } + } + + if (info == null) { + info = super.getTooltipInfo(element); + } + + return info; + } + } diff --git a/src/com/vaadin/terminal/gwt/client/ui/table/VScrollTable.java b/src/com/vaadin/terminal/gwt/client/ui/table/VScrollTable.java index c4a57f5c8b..8a58c28c5b 100644 --- a/src/com/vaadin/terminal/gwt/client/ui/table/VScrollTable.java +++ b/src/com/vaadin/terminal/gwt/client/ui/table/VScrollTable.java @@ -11,6 +11,7 @@ import java.util.HashSet; import java.util.Iterator; import java.util.LinkedList; import java.util.List; +import java.util.Map; import java.util.Set; import com.google.gwt.core.client.JavaScriptObject; @@ -59,13 +60,14 @@ import com.google.gwt.user.client.ui.PopupPanel; import com.google.gwt.user.client.ui.RootPanel; import com.google.gwt.user.client.ui.UIObject; import com.google.gwt.user.client.ui.Widget; +import com.vaadin.shared.ComponentState; +import com.vaadin.shared.MouseEventDetails; +import com.vaadin.shared.ui.dd.VerticalDropLocation; import com.vaadin.terminal.gwt.client.ApplicationConnection; import com.vaadin.terminal.gwt.client.BrowserInfo; import com.vaadin.terminal.gwt.client.ComponentConnector; -import com.vaadin.terminal.gwt.client.ComponentState; import com.vaadin.terminal.gwt.client.ConnectorMap; import com.vaadin.terminal.gwt.client.Focusable; -import com.vaadin.terminal.gwt.client.MouseEventDetails; import com.vaadin.terminal.gwt.client.MouseEventDetailsBuilder; import com.vaadin.terminal.gwt.client.TooltipInfo; import com.vaadin.terminal.gwt.client.UIDL; @@ -84,7 +86,6 @@ import com.vaadin.terminal.gwt.client.ui.dd.VDragAndDropManager; import com.vaadin.terminal.gwt.client.ui.dd.VDragEvent; import com.vaadin.terminal.gwt.client.ui.dd.VHasDropHandler; import com.vaadin.terminal.gwt.client.ui.dd.VTransferable; -import com.vaadin.terminal.gwt.client.ui.dd.VerticalDropLocation; import com.vaadin.terminal.gwt.client.ui.embedded.VEmbedded; import com.vaadin.terminal.gwt.client.ui.label.VLabel; import com.vaadin.terminal.gwt.client.ui.table.VScrollTable.VScrollTableBody.VScrollTableRow; @@ -130,6 +131,12 @@ public class VScrollTable extends FlowPanel implements HasWidgets, } } + /** + * Tell the client that old keys are no longer valid because the server has + * cleared its key map. + */ + public static final String ATTRIBUTE_KEY_MAPPER_RESET = "clearKeyMap"; + private static final String ROW_HEADER_COLUMN_KEY = "0"; public static final String CLASSNAME = "v-table"; @@ -215,7 +222,7 @@ public class VScrollTable extends FlowPanel implements HasWidgets, /* * Helper to store selection range start in when using the keyboard */ - private VScrollTableRow selectionRangeStart; + VScrollTableRow selectionRangeStart; /* * Flag for notifying when the selection has changed and should be sent to @@ -241,6 +248,19 @@ public class VScrollTable extends FlowPanel implements HasWidgets, private Set<String> noncollapsibleColumns; /** + * The last known row height used to preserve the height of a table with + * custom row heights and a fixed page length after removing the last row + * from the table. + * + * A new VScrollTableBody instance is created every time the number of rows + * changes causing {@link VScrollTableBody#rowHeight} to be discarded and + * the height recalculated by {@link VScrollTableBody#getRowHeight(boolean)} + * to avoid some rounding problems, e.g. round(2 * 19.8) / 2 = 20 but + * round(3 * 19.8) / 3 = 19.66. + */ + private double lastKnownRowHeight = Double.NaN; + + /** * Represents a select range of rows */ private class SelectionRange { @@ -327,6 +347,7 @@ public class VScrollTable extends FlowPanel implements HasWidgets, private KeyPressHandler navKeyPressHandler = new KeyPressHandler() { + @Override public void onKeyPress(KeyPressEvent keyPressEvent) { // This is used for Firefox only, since Firefox auto-repeat // works correctly only if we use a key press handler, other @@ -364,6 +385,7 @@ public class VScrollTable extends FlowPanel implements HasWidgets, private KeyUpHandler navKeyUpHandler = new KeyUpHandler() { + @Override public void onKeyUp(KeyUpEvent keyUpEvent) { NativeEvent event = keyUpEvent.getNativeEvent(); int keyCode = event.getKeyCode(); @@ -391,6 +413,7 @@ public class VScrollTable extends FlowPanel implements HasWidgets, private KeyDownHandler navKeyDownHandler = new KeyDownHandler() { + @Override public void onKeyDown(KeyDownEvent keyDownEvent) { NativeEvent event = keyDownEvent.getNativeEvent(); // This is not used for Firefox @@ -519,6 +542,7 @@ public class VScrollTable extends FlowPanel implements HasWidgets, scrollBodyPanel.sinkEvents(Event.ONCONTEXTMENU); scrollBodyPanel.addDomHandler(new ContextMenuHandler() { + @Override public void onContextMenu(ContextMenuEvent event) { handleBodyContextMenu(event); } @@ -539,6 +563,7 @@ public class VScrollTable extends FlowPanel implements HasWidgets, // closes. See #8526. client.getContextMenu().addCloseHandler(new CloseHandler<PopupPanel>() { + @Override public void onClose(CloseEvent<PopupPanel> event) { contextMenu = null; } @@ -1848,6 +1873,7 @@ public class VScrollTable extends FlowPanel implements HasWidgets, // Deferred due to some Firefox oddities Scheduler.get().scheduleDeferred(new Command() { + @Override public void execute() { scrollBodyPanel .setScrollPosition(measureRowHeightOffset(firstvisible)); @@ -1883,6 +1909,7 @@ public class VScrollTable extends FlowPanel implements HasWidgets, scrollBody.reLayoutComponents(); Scheduler.get().scheduleDeferred(new Command() { + @Override public void execute() { Util.runWebkitOverflowAutoFix(scrollBodyPanel.getElement()); } @@ -2214,6 +2241,7 @@ public class VScrollTable extends FlowPanel implements HasWidgets, } else { Scheduler.get().scheduleDeferred(new Command() { + @Override public void execute() { int tdWidth = width + scrollBody.getCellExtraWidth(); @@ -2812,6 +2840,7 @@ public class VScrollTable extends FlowPanel implements HasWidgets, Scheduler.get().scheduleDeferred( new ScheduledCommand() { + @Override public void execute() { setColWidth(colIx, newWidth, true); } @@ -2840,6 +2869,7 @@ public class VScrollTable extends FlowPanel implements HasWidgets, // Recalculate the column sizings if any column has changed Scheduler.get().scheduleDeferred(new ScheduledCommand() { + @Override public void execute() { triggerLazyColumnAdjustment(true); } @@ -2951,6 +2981,7 @@ public class VScrollTable extends FlowPanel implements HasWidgets, visibleCells.add(newIndex, hCell); } + @Override public Iterator<Widget> iterator() { return visibleCells.iterator(); } @@ -3100,6 +3131,7 @@ public class VScrollTable extends FlowPanel implements HasWidgets, * Returns columns as Action array for column select popup */ + @Override public Action[] getActions() { Object[] cols; if (columnReordering && columnOrder != null) { @@ -3138,10 +3170,12 @@ public class VScrollTable extends FlowPanel implements HasWidgets, return actions; } + @Override public ApplicationConnection getClient() { return client; } + @Override public String getPaintableId() { return paintableId; } @@ -3287,20 +3321,15 @@ public class VScrollTable extends FlowPanel implements HasWidgets, DOM.setStyleAttribute(captionContainer, "width", ""); setWidth(""); } else { - /* * Reduce width with one pixel for the right border since the * footers does not have any spacers between them. */ - int borderWidths = 1; + final int borderWidths = 1; // Set the container width (check for negative value) - if (w - borderWidths >= 0) { - captionContainer.getStyle().setPropertyPx("width", - w - borderWidths); - } else { - captionContainer.getStyle().setPropertyPx("width", 0); - } + captionContainer.getStyle().setPropertyPx("width", + Math.max(w - borderWidths, 0)); /* * if we already have tBody, set the header width properly, if @@ -3308,22 +3337,18 @@ public class VScrollTable extends FlowPanel implements HasWidgets, * unless TD width is not explicitly set. */ if (scrollBody != null) { - /* - * Reduce with one since footer does not have any spacers, - * instead a 1 pixel border. - */ int tdWidth = width + scrollBody.getCellExtraWidth() - borderWidths; - setWidth(tdWidth + "px"); + setWidth(Math.max(tdWidth, 0) + "px"); } else { Scheduler.get().scheduleDeferred(new Command() { + @Override public void execute() { - int borderWidths = 1; int tdWidth = width + scrollBody.getCellExtraWidth() - borderWidths; - setWidth(tdWidth + "px"); + setWidth(Math.max(tdWidth, 0) + "px"); } }); } @@ -3582,6 +3607,7 @@ public class VScrollTable extends FlowPanel implements HasWidgets, * @see com.google.gwt.user.client.ui.HasWidgets#iterator() */ + @Override public Iterator<Widget> iterator() { return visibleCells.iterator(); } @@ -4120,6 +4146,7 @@ public class VScrollTable extends FlowPanel implements HasWidgets, renderedRows.add(actualIx, row); } + @Override public Iterator<Widget> iterator() { return renderedRows.iterator(); } @@ -4194,14 +4221,6 @@ public class VScrollTable extends FlowPanel implements HasWidgets, private void unlinkRowAtActualIndex(int index) { final VScrollTableRow toBeRemoved = (VScrollTableRow) renderedRows .get(index); - // Unregister row tooltip - client.registerTooltip(VScrollTable.this, toBeRemoved.getElement(), - null); - for (int i = 0; i < toBeRemoved.getElement().getChildCount(); i++) { - // Unregister cell tooltips - Element td = toBeRemoved.getElement().getChild(i).cast(); - client.registerTooltip(VScrollTable.this, td, null); - } tBodyElement.removeChild(toBeRemoved.getElement()); orphan(toBeRemoved); renderedRows.remove(index); @@ -4244,13 +4263,27 @@ public class VScrollTable extends FlowPanel implements HasWidgets, if (tBodyMeasurementsDone && !forceUpdate) { return rowHeight; } else { - if (tBodyElement.getRows().getLength() > 0) { int tableHeight = getTableHeight(); int rowCount = tBodyElement.getRows().getLength(); rowHeight = tableHeight / (double) rowCount; } else { - if (isAttached()) { + // Special cases if we can't just measure the current rows + if (!Double.isNaN(lastKnownRowHeight)) { + // Use previous value if available + if (BrowserInfo.get().isIE()) { + /* + * IE needs to reflow the table element at this + * point to work correctly (e.g. + * com.vaadin.tests.components.table. + * ContainerSizeChange) - the other code paths + * already trigger reflows, but here it must be done + * explicitly. + */ + getTableHeight(); + } + rowHeight = lastKnownRowHeight; + } else if (isAttached()) { // measure row height by adding a dummy row VScrollTableRow scrollTableRow = new VScrollTableRow(); tBodyElement.appendChild(scrollTableRow.getElement()); @@ -4261,6 +4294,7 @@ public class VScrollTable extends FlowPanel implements HasWidgets, return DEFAULT_ROW_HEIGHT; } } + lastKnownRowHeight = rowHeight; tBodyMeasurementsDone = true; return rowHeight; } @@ -4423,6 +4457,8 @@ public class VScrollTable extends FlowPanel implements HasWidgets, private Timer dragTouchTimeout; private int touchStartY; private int touchStartX; + private TooltipInfo tooltipInfo = null; + private Map<TableCellElement, TooltipInfo> cellToolTips = new HashMap<TableCellElement, TooltipInfo>(); private boolean isDragging = false; private VScrollTableRow(int rowKey) { @@ -4450,11 +4486,9 @@ public class VScrollTable extends FlowPanel implements HasWidgets, String rowDescription = uidl.getStringAttribute("rowdescr"); if (rowDescription != null && !rowDescription.equals("")) { - TooltipInfo info = new TooltipInfo(rowDescription); - client.registerTooltip(VScrollTable.this, rowElement, info); + tooltipInfo = new TooltipInfo(rowDescription); } else { - // Remove possibly previously set tooltip - client.registerTooltip(VScrollTable.this, rowElement, null); + tooltipInfo = null; } tHead.getColumnAlignments(); @@ -4480,6 +4514,10 @@ public class VScrollTable extends FlowPanel implements HasWidgets, } } + public TooltipInfo getTooltipInfo() { + return tooltipInfo; + } + /** * Add a dummy row, used for measurements if Table is empty. */ @@ -4665,10 +4703,9 @@ public class VScrollTable extends FlowPanel implements HasWidgets, if (description != null && !description.equals("")) { TooltipInfo info = new TooltipInfo(description); - client.registerTooltip(VScrollTable.this, td, info); + cellToolTips.put(td, info); } else { - // Remove possibly previously set tooltip - client.registerTooltip(VScrollTable.this, td, null); + cellToolTips.remove(td); } td.appendChild(container); @@ -4718,6 +4755,7 @@ public class VScrollTable extends FlowPanel implements HasWidgets, childWidgets.add(w); } + @Override public Iterator<Widget> iterator() { return childWidgets.iterator(); } @@ -4776,39 +4814,22 @@ public class VScrollTable extends FlowPanel implements HasWidgets, return true; } - private void handleTooltips(final Event event, Element target) { + public TooltipInfo getTooltip( + com.google.gwt.dom.client.Element target) { + + TooltipInfo info = null; + if (target.hasTagName("TD")) { - // Table cell (td) - Element container = target.getFirstChildElement().cast(); - Element widget = container.getFirstChildElement().cast(); - - boolean containsWidget = false; - for (Widget w : childWidgets) { - if (widget == w.getElement()) { - containsWidget = true; - break; - } - } - if (!containsWidget) { - // Only text nodes has tooltips - if (ConnectorMap.get(client).getWidgetTooltipInfo( - VScrollTable.this, target) != null) { - // Cell has description, use it - client.handleTooltipEvent(event, VScrollTable.this, - target); - } else { - // Cell might have row description, use row - // description - client.handleTooltipEvent(event, VScrollTable.this, - target.getParentElement()); - } - } + TableCellElement td = (TableCellElement) target.cast(); + info = cellToolTips.get(td); + } - } else { - // Table row (tr) - client.handleTooltipEvent(event, VScrollTable.this, target); + if (info == null) { + info = tooltipInfo; } + + return info; } /** @@ -4953,9 +4974,6 @@ public class VScrollTable extends FlowPanel implements HasWidgets, } boolean targetCellOrRowFound = targetTdOrTr != null; - if (targetCellOrRowFound) { - handleTooltips(event, targetTdOrTr); - } switch (type) { case Event.ONDBLCLICK: @@ -5430,6 +5448,7 @@ public class VScrollTable extends FlowPanel implements HasWidgets, * @see com.vaadin.terminal.gwt.client.ui.IActionOwner#getActions () */ + @Override public Action[] getActions() { if (actionKeys == null) { return new Action[] {}; @@ -5453,10 +5472,12 @@ public class VScrollTable extends FlowPanel implements HasWidgets, return actions; } + @Override public ApplicationConnection getClient() { return client; } + @Override public String getPaintableId() { return paintableId; } @@ -5507,6 +5528,7 @@ public class VScrollTable extends FlowPanel implements HasWidgets, // widths. Scheduler.get().scheduleDeferred(new ScheduledCommand() { + @Override public void execute() { if (showRowHeaders) { setCellWidth(0, tHead.getHeaderCell(0).getWidth()); @@ -5824,7 +5846,7 @@ public class VScrollTable extends FlowPanel implements HasWidgets, if (isDynamicHeight() && totalRows == pageLength) { // fix body height (may vary if lazy loading is offhorizontal // scrollbar appears/disappears) - int bodyHeight = Util.getRequiredHeight(scrollBody); + int bodyHeight = scrollBody.getRequiredHeight(); boolean needsSpaceForHorizontalScrollbar = (availW < usedMinimumWidth); if (needsSpaceForHorizontalScrollbar) { bodyHeight += Util.getNativeScrollbarSize(); @@ -5838,6 +5860,7 @@ public class VScrollTable extends FlowPanel implements HasWidgets, scrollBody.reLayoutComponents(); Scheduler.get().scheduleDeferred(new Command() { + @Override public void execute() { Util.runWebkitOverflowAutoFix(scrollBodyPanel.getElement()); } @@ -5959,6 +5982,7 @@ public class VScrollTable extends FlowPanel implements HasWidgets, // #7607. Scheduler.get().scheduleDeferred(new Command() { + @Override public void execute() { Util.runWebkitOverflowAutoFix(scrollBodyPanel.getElement()); } @@ -5989,6 +6013,7 @@ public class VScrollTable extends FlowPanel implements HasWidgets, if (visible) { Scheduler.get().scheduleDeferred(new Command() { + @Override public void execute() { scrollBodyPanel .setScrollPosition(measureRowHeightOffset(firstRowInViewPort)); @@ -6023,6 +6048,7 @@ public class VScrollTable extends FlowPanel implements HasWidgets, * user scrolls */ + @Override public void onScroll(ScrollEvent event) { scrollLeft = scrollBodyPanel.getElement().getScrollLeft(); scrollTop = scrollBodyPanel.getScrollPosition(); @@ -6052,6 +6078,7 @@ public class VScrollTable extends FlowPanel implements HasWidgets, // value available soon. Scheduler.get().scheduleDeferred(new Command() { + @Override public void execute() { onScroll(null); } @@ -6132,6 +6159,7 @@ public class VScrollTable extends FlowPanel implements HasWidgets, return (int) Math.ceil(scrollTop / scrollBody.getRowHeight()); } + @Override public VScrollTableDropHandler getDropHandler() { return dropHandler; } @@ -6212,6 +6240,7 @@ public class VScrollTable extends FlowPanel implements HasWidgets, final TableDDDetails newDetails = dropDetails; VAcceptCallback cb = new VAcceptCallback() { + @Override public void accepted(VDragEvent event) { if (newDetails.equals(dropDetails)) { dragAccepted(event); @@ -6288,6 +6317,7 @@ public class VScrollTable extends FlowPanel implements HasWidgets, return ConnectorMap.get(client).getConnector(VScrollTable.this); } + @Override public ApplicationConnection getApplicationConnection() { return client; } @@ -6619,6 +6649,7 @@ public class VScrollTable extends FlowPanel implements HasWidgets, * .dom.client.FocusEvent) */ + @Override public void onFocus(FocusEvent event) { if (isFocusable()) { hasFocus = true; @@ -6640,6 +6671,7 @@ public class VScrollTable extends FlowPanel implements HasWidgets, * .dom.client.BlurEvent) */ + @Override public void onBlur(BlurEvent event) { hasFocus = false; navKeyDown = false; @@ -6713,6 +6745,7 @@ public class VScrollTable extends FlowPanel implements HasWidgets, * @see com.vaadin.terminal.gwt.client.Focusable#focus() */ + @Override public void focus() { if (isFocusable()) { scrollBodyPanel.focus(); @@ -6794,6 +6827,7 @@ public class VScrollTable extends FlowPanel implements HasWidgets, public void lazyRevertFocusToRow(final VScrollTableRow currentlyFocusedRow) { Scheduler.get().scheduleFinally(new ScheduledCommand() { + @Override public void execute() { if (currentlyFocusedRow != null) { setRowFocus(currentlyFocusedRow); @@ -6806,6 +6840,7 @@ public class VScrollTable extends FlowPanel implements HasWidgets, }); } + @Override public Action[] getActions() { if (bodyActionKeys == null) { return new Action[] {}; @@ -6821,10 +6856,12 @@ public class VScrollTable extends FlowPanel implements HasWidgets, return actions; } + @Override public ApplicationConnection getClient() { return client; } + @Override public String getPaintableId() { return paintableId; } diff --git a/src/com/vaadin/terminal/gwt/client/ui/tabsheet/TabsheetBaseConnector.java b/src/com/vaadin/terminal/gwt/client/ui/tabsheet/TabsheetBaseConnector.java index e16e84d112..ea0bea6b04 100644 --- a/src/com/vaadin/terminal/gwt/client/ui/tabsheet/TabsheetBaseConnector.java +++ b/src/com/vaadin/terminal/gwt/client/ui/tabsheet/TabsheetBaseConnector.java @@ -22,6 +22,7 @@ public abstract class TabsheetBaseConnector extends public static final String ATTRIBUTE_TAB_CAPTION = "caption"; public static final String ATTRIBUTE_TAB_ICON = "icon"; + @Override public void updateFromUIDL(UIDL uidl, ApplicationConnection client) { getWidget().client = client; diff --git a/src/com/vaadin/terminal/gwt/client/ui/tabsheet/TabsheetConnector.java b/src/com/vaadin/terminal/gwt/client/ui/tabsheet/TabsheetConnector.java index 08d4679dc5..ce19f1e02a 100644 --- a/src/com/vaadin/terminal/gwt/client/ui/tabsheet/TabsheetConnector.java +++ b/src/com/vaadin/terminal/gwt/client/ui/tabsheet/TabsheetConnector.java @@ -3,13 +3,14 @@ */ package com.vaadin.terminal.gwt.client.ui.tabsheet; -import com.google.gwt.core.client.GWT; +import com.google.gwt.dom.client.Element; import com.google.gwt.user.client.DOM; -import com.google.gwt.user.client.ui.Widget; +import com.vaadin.shared.ui.Connect; import com.vaadin.terminal.gwt.client.ApplicationConnection; import com.vaadin.terminal.gwt.client.ComponentConnector; +import com.vaadin.terminal.gwt.client.TooltipInfo; import com.vaadin.terminal.gwt.client.UIDL; -import com.vaadin.terminal.gwt.client.ui.Connect; +import com.vaadin.terminal.gwt.client.Util; import com.vaadin.terminal.gwt.client.ui.SimpleManagedLayout; import com.vaadin.terminal.gwt.client.ui.layout.MayScrollChildren; import com.vaadin.ui.TabSheet; @@ -67,10 +68,12 @@ public class TabsheetConnector extends TabsheetBaseConnector implements return (VTabsheet) super.getWidget(); } + @Override public void updateCaption(ComponentConnector component) { /* Tabsheet does not render its children's captions */ } + @Override public void layout() { VTabsheet tabsheet = getWidget(); @@ -97,4 +100,29 @@ public class TabsheetConnector extends TabsheetBaseConnector implements } + @Override + public TooltipInfo getTooltipInfo(Element element) { + + TooltipInfo info = null; + + // Find a tooltip for the tab, if the element is a tab + if (element != getWidget().getElement()) { + Object node = Util.findWidget( + (com.google.gwt.user.client.Element) element, + VTabsheet.TabCaption.class); + + if (node != null) { + VTabsheet.TabCaption caption = (VTabsheet.TabCaption) node; + info = caption.getTooltipInfo(); + } + } + + // If not tab tooltip was found, use the default + if (info == null) { + info = super.getTooltipInfo(element); + } + + return info; + } + } diff --git a/src/com/vaadin/terminal/gwt/client/ui/tabsheet/VTabsheet.java b/src/com/vaadin/terminal/gwt/client/ui/tabsheet/VTabsheet.java index aba5a41f9a..1f6314050e 100644 --- a/src/com/vaadin/terminal/gwt/client/ui/tabsheet/VTabsheet.java +++ b/src/com/vaadin/terminal/gwt/client/ui/tabsheet/VTabsheet.java @@ -34,12 +34,12 @@ import com.google.gwt.user.client.ui.ComplexPanel; import com.google.gwt.user.client.ui.SimplePanel; import com.google.gwt.user.client.ui.Widget; import com.google.gwt.user.client.ui.impl.FocusImpl; +import com.vaadin.shared.ComponentState; +import com.vaadin.shared.EventId; import com.vaadin.terminal.gwt.client.ApplicationConnection; import com.vaadin.terminal.gwt.client.BrowserInfo; import com.vaadin.terminal.gwt.client.ComponentConnector; -import com.vaadin.terminal.gwt.client.ComponentState; import com.vaadin.terminal.gwt.client.ConnectorMap; -import com.vaadin.terminal.gwt.client.EventId; import com.vaadin.terminal.gwt.client.Focusable; import com.vaadin.terminal.gwt.client.TooltipInfo; import com.vaadin.terminal.gwt.client.UIDL; @@ -212,14 +212,17 @@ public class VTabsheet extends VTabsheetBase implements Focusable, tabCaption.setWidth(tabCaption.getRequiredWidth() + "px"); } + @Override public HandlerRegistration addFocusHandler(FocusHandler handler) { return addDomHandler(handler, FocusEvent.getType()); } + @Override public HandlerRegistration addBlurHandler(BlurHandler handler) { return addDomHandler(handler, BlurEvent.getType()); } + @Override public HandlerRegistration addKeyDownHandler(KeyDownHandler handler) { return addDomHandler(handler, KeyDownEvent.getType()); } @@ -233,7 +236,7 @@ public class VTabsheet extends VTabsheetBase implements Focusable, } } - private static class TabCaption extends VCaption { + public static class TabCaption extends VCaption { private boolean closable = false; private Element closeButton; @@ -248,16 +251,11 @@ public class VTabsheet extends VTabsheetBase implements Focusable, public boolean updateCaption(UIDL uidl) { if (uidl.hasAttribute(TabsheetBaseConnector.ATTRIBUTE_TAB_DESCRIPTION)) { - TooltipInfo tooltipInfo = new TooltipInfo(); - tooltipInfo - .setTitle(uidl - .getStringAttribute(TabsheetBaseConnector.ATTRIBUTE_TAB_DESCRIPTION)); - tooltipInfo - .setErrorMessage(uidl - .getStringAttribute(TabsheetBaseConnector.ATTRIBUTE_TAB_ERROR_MESSAGE)); - client.registerTooltip(getTabsheet(), getElement(), tooltipInfo); + setTooltipInfo(new TooltipInfo( + uidl.getStringAttribute(TabsheetBaseConnector.ATTRIBUTE_TAB_DESCRIPTION), + uidl.getStringAttribute(TabsheetBaseConnector.ATTRIBUTE_TAB_ERROR_MESSAGE))); } else { - client.registerTooltip(getTabsheet(), getElement(), null); + setTooltipInfo(null); } // TODO need to call this instead of super because the caption does @@ -292,7 +290,6 @@ public class VTabsheet extends VTabsheetBase implements Focusable, if (event.getTypeInt() == Event.ONLOAD) { getTabsheet().tabSizeMightHaveChanged(getTab()); } - client.handleTooltipEvent(event, getTabsheet(), getElement()); } public Tab getTab() { @@ -362,6 +359,7 @@ public class VTabsheet extends VTabsheetBase implements Focusable, setElement(el); } + @Override public void onClose(VCloseEvent event) { Tab tab = event.getTab(); if (!tab.isEnabledOnServer()) { @@ -397,6 +395,7 @@ public class VTabsheet extends VTabsheetBase implements Focusable, return t; } + @Override public void onClick(ClickEvent event) { TabCaption caption = (TabCaption) event.getSource(); Element targetElement = event.getNativeEvent().getEventTarget() @@ -691,24 +690,27 @@ public class VTabsheet extends VTabsheetBase implements Focusable, @Override public void onBrowserEvent(Event event) { + if (event.getTypeInt() == Event.ONCLICK) { + // Tab scrolling + if (isScrolledTabs() && DOM.eventGetTarget(event) == scrollerPrev) { + int newFirstIndex = tb.scrollLeft(scrollerIndex); + if (newFirstIndex != -1) { + scrollerIndex = newFirstIndex; + updateTabScroller(); + } + return; + } else if (isClippedTabs() + && DOM.eventGetTarget(event) == scrollerNext) { + int newFirstIndex = tb.scrollRight(scrollerIndex); - // Tab scrolling - if (isScrolledTabs() && DOM.eventGetTarget(event) == scrollerPrev) { - int newFirstIndex = tb.scrollLeft(scrollerIndex); - if (newFirstIndex != -1) { - scrollerIndex = newFirstIndex; - updateTabScroller(); - } - } else if (isClippedTabs() && DOM.eventGetTarget(event) == scrollerNext) { - int newFirstIndex = tb.scrollRight(scrollerIndex); - - if (newFirstIndex != -1) { - scrollerIndex = newFirstIndex; - updateTabScroller(); + if (newFirstIndex != -1) { + scrollerIndex = newFirstIndex; + updateTabScroller(); + } + return; } - } else { - super.onBrowserEvent(event); } + super.onBrowserEvent(event); } /** @@ -1034,6 +1036,7 @@ public class VTabsheet extends VTabsheetBase implements Focusable, style.setProperty("whiteSpace", "normal"); Scheduler.get().scheduleDeferred(new Command() { + @Override public void execute() { style.setProperty("whiteSpace", ""); } @@ -1118,6 +1121,7 @@ public class VTabsheet extends VTabsheetBase implements Focusable, } } + @Override public void onBlur(BlurEvent event) { if (focusedTab != null && event.getSource() instanceof Tab) { focusedTab = null; @@ -1127,6 +1131,7 @@ public class VTabsheet extends VTabsheetBase implements Focusable, } } + @Override public void onFocus(FocusEvent event) { if (focusedTab == null && event.getSource() instanceof Tab) { focusedTab = (Tab) event.getSource(); @@ -1136,6 +1141,7 @@ public class VTabsheet extends VTabsheetBase implements Focusable, } } + @Override public void focus() { tb.getTab(activeTabIndex).focus(); } @@ -1144,6 +1150,7 @@ public class VTabsheet extends VTabsheetBase implements Focusable, tb.getTab(activeTabIndex).blur(); } + @Override public void onKeyDown(KeyDownEvent event) { if (event.getSource() instanceof Tab) { int keycode = event.getNativeEvent().getKeyCode(); diff --git a/src/com/vaadin/terminal/gwt/client/ui/textarea/TextAreaConnector.java b/src/com/vaadin/terminal/gwt/client/ui/textarea/TextAreaConnector.java index a235ca5389..cdf648d3ec 100644 --- a/src/com/vaadin/terminal/gwt/client/ui/textarea/TextAreaConnector.java +++ b/src/com/vaadin/terminal/gwt/client/ui/textarea/TextAreaConnector.java @@ -4,8 +4,9 @@ package com.vaadin.terminal.gwt.client.ui.textarea; +import com.vaadin.shared.ui.Connect; +import com.vaadin.shared.ui.textarea.TextAreaState; import com.vaadin.terminal.gwt.client.communication.StateChangeEvent; -import com.vaadin.terminal.gwt.client.ui.Connect; import com.vaadin.terminal.gwt.client.ui.textfield.TextFieldConnector; import com.vaadin.ui.TextArea; diff --git a/src/com/vaadin/terminal/gwt/client/ui/textarea/VTextArea.java b/src/com/vaadin/terminal/gwt/client/ui/textarea/VTextArea.java index aede1ef002..c0f6deab53 100644 --- a/src/com/vaadin/terminal/gwt/client/ui/textarea/VTextArea.java +++ b/src/com/vaadin/terminal/gwt/client/ui/textarea/VTextArea.java @@ -57,6 +57,7 @@ public class VTextArea extends VTextField { public void onBrowserEvent(Event event) { if (getMaxLength() >= 0 && event.getTypeInt() == Event.ONKEYUP) { Scheduler.get().scheduleDeferred(new Command() { + @Override public void execute() { if (getText().length() > getMaxLength()) { setText(getText().substring(0, getMaxLength())); diff --git a/src/com/vaadin/terminal/gwt/client/ui/textfield/TextFieldConnector.java b/src/com/vaadin/terminal/gwt/client/ui/textfield/TextFieldConnector.java index 04bf029b05..d98d27942a 100644 --- a/src/com/vaadin/terminal/gwt/client/ui/textfield/TextFieldConnector.java +++ b/src/com/vaadin/terminal/gwt/client/ui/textfield/TextFieldConnector.java @@ -7,12 +7,13 @@ package com.vaadin.terminal.gwt.client.ui.textfield; import com.google.gwt.core.client.Scheduler; import com.google.gwt.user.client.Command; import com.google.gwt.user.client.Event; +import com.vaadin.shared.ui.Connect; +import com.vaadin.shared.ui.Connect.LoadStyle; +import com.vaadin.shared.ui.textfield.AbstractTextFieldState; import com.vaadin.terminal.gwt.client.ApplicationConnection; import com.vaadin.terminal.gwt.client.Paintable; import com.vaadin.terminal.gwt.client.UIDL; import com.vaadin.terminal.gwt.client.ui.AbstractFieldConnector; -import com.vaadin.terminal.gwt.client.ui.Connect; -import com.vaadin.terminal.gwt.client.ui.Connect.LoadStyle; import com.vaadin.terminal.gwt.client.ui.ShortcutActionHandler.BeforeShortcutActionListener; import com.vaadin.ui.TextField; @@ -25,6 +26,7 @@ public class TextFieldConnector extends AbstractFieldConnector implements return (AbstractTextFieldState) super.getState(); } + @Override public void updateFromUIDL(UIDL uidl, ApplicationConnection client) { // Save details getWidget().client = client; @@ -83,6 +85,7 @@ public class TextFieldConnector extends AbstractFieldConnector implements * Gecko defers setting the text so we need to defer the selection. */ Scheduler.get().scheduleDeferred(new Command() { + @Override public void execute() { getWidget().setSelectionRange(pos, length); } @@ -95,6 +98,7 @@ public class TextFieldConnector extends AbstractFieldConnector implements return (VTextField) super.getWidget(); } + @Override public void onBeforeShortcutAction(Event e) { getWidget().valueChange(false); } diff --git a/src/com/vaadin/terminal/gwt/client/ui/textfield/VTextField.java b/src/com/vaadin/terminal/gwt/client/ui/textfield/VTextField.java index aeae165f60..7f8e549550 100644 --- a/src/com/vaadin/terminal/gwt/client/ui/textfield/VTextField.java +++ b/src/com/vaadin/terminal/gwt/client/ui/textfield/VTextField.java @@ -18,11 +18,10 @@ import com.google.gwt.user.client.Element; import com.google.gwt.user.client.Event; import com.google.gwt.user.client.Timer; import com.google.gwt.user.client.ui.TextBoxBase; +import com.vaadin.shared.EventId; import com.vaadin.terminal.gwt.client.ApplicationConnection; import com.vaadin.terminal.gwt.client.BrowserInfo; -import com.vaadin.terminal.gwt.client.EventId; import com.vaadin.terminal.gwt.client.Util; -import com.vaadin.terminal.gwt.client.VTooltip; import com.vaadin.terminal.gwt.client.ui.Field; /** @@ -88,7 +87,6 @@ public class VTextField extends TextBoxBase implements Field, ChangeHandler, } addFocusHandler(this); addBlurHandler(this); - sinkEvents(VTooltip.TOOLTIP_EVENTS); } /* @@ -107,9 +105,6 @@ public class VTextField extends TextBoxBase implements Field, ChangeHandler, @Override public void onBrowserEvent(Event event) { super.onBrowserEvent(event); - if (client != null) { - client.handleTooltipEvent(event, this); - } if (listenTextChangeEvents && (event.getTypeInt() & TEXTCHANGE_EVENTS) == event @@ -279,6 +274,7 @@ public class VTextField extends TextBoxBase implements Field, ChangeHandler, return maxLength; } + @Override public void onChange(ChangeEvent event) { valueChange(false); } @@ -305,7 +301,7 @@ public class VTextField extends TextBoxBase implements Field, ChangeHandler, if (!prompting && newText != null && !newText.equals(valueBeforeEdit)) { sendValueChange = immediate; - client.updateVariable(paintableId, "text", getText(), false); + client.updateVariable(paintableId, "text", newText, false); valueBeforeEdit = newText; valueBeforeEditIsSynced = true; } @@ -354,6 +350,7 @@ public class VTextField extends TextBoxBase implements Field, ChangeHandler, } } + @Override public void onFocus(FocusEvent event) { addStyleDependentName(CLASSNAME_FOCUS); if (prompting) { @@ -367,7 +364,13 @@ public class VTextField extends TextBoxBase implements Field, ChangeHandler, } } + @Override public void onBlur(BlurEvent event) { + // this is called twice on Chrome when e.g. changing tab while prompting + // field focused - do not change settings on the second time + if (focusedTextField != this) { + return; + } removeStyleDependentName(CLASSNAME_FOCUS); focusedTextField = null; String text = getText(); @@ -392,6 +395,7 @@ public class VTextField extends TextBoxBase implements Field, ChangeHandler, setWidth(columns + "em"); } + @Override public void onKeyDown(KeyDownEvent event) { if (event.getNativeKeyCode() == KeyCodes.KEY_ENTER) { valueChange(false); diff --git a/src/com/vaadin/terminal/gwt/client/ui/tree/TreeConnector.java b/src/com/vaadin/terminal/gwt/client/ui/tree/TreeConnector.java index e4afa32143..def63edae9 100644 --- a/src/com/vaadin/terminal/gwt/client/ui/tree/TreeConnector.java +++ b/src/com/vaadin/terminal/gwt/client/ui/tree/TreeConnector.java @@ -3,16 +3,20 @@ */ package com.vaadin.terminal.gwt.client.ui.tree; +import java.util.HashMap; import java.util.Iterator; +import java.util.Map; -import com.vaadin.terminal.gwt.client.AbstractFieldState; +import com.google.gwt.dom.client.Element; +import com.vaadin.shared.AbstractFieldState; +import com.vaadin.shared.ui.Connect; import com.vaadin.terminal.gwt.client.ApplicationConnection; import com.vaadin.terminal.gwt.client.BrowserInfo; import com.vaadin.terminal.gwt.client.Paintable; import com.vaadin.terminal.gwt.client.TooltipInfo; import com.vaadin.terminal.gwt.client.UIDL; +import com.vaadin.terminal.gwt.client.Util; import com.vaadin.terminal.gwt.client.ui.AbstractComponentConnector; -import com.vaadin.terminal.gwt.client.ui.Connect; import com.vaadin.terminal.gwt.client.ui.tree.VTree.TreeNode; import com.vaadin.ui.Tree; @@ -27,6 +31,9 @@ public class TreeConnector extends AbstractComponentConnector implements public static final String ATTRIBUTE_ACTION_CAPTION = "caption"; public static final String ATTRIBUTE_ACTION_ICON = ATTRIBUTE_NODE_ICON; + protected final Map<TreeNode, TooltipInfo> tooltipMap = new HashMap<TreeNode, TooltipInfo>(); + + @Override public void updateFromUIDL(UIDL uidl, ApplicationConnection client) { if (!isRealUpdate(uidl)) { return; @@ -62,6 +69,8 @@ public class TreeConnector extends AbstractComponentConnector implements getWidget().body.clear(); // clear out any references to nodes that no longer are attached getWidget().clearNodeToKeyMap(); + tooltipMap.clear(); + TreeNode childTree = null; UIDL childUidl = null; for (final Iterator<?> i = uidl.getChildIterator(); i.hasNext();) { @@ -74,6 +83,7 @@ public class TreeConnector extends AbstractComponentConnector implements continue; } childTree = getWidget().new TreeNode(); + getConnection().getVTooltip().connectHandlersToWidget(childTree); updateNodeFromUIDL(childTree, childUidl); getWidget().body.add(childTree); childTree.addStyleDependentName("root"); @@ -193,13 +203,8 @@ public class TreeConnector extends AbstractComponentConnector implements } String description = uidl.getStringAttribute("descr"); - if (description != null && getConnection() != null) { - // Set tooltip - TooltipInfo info = new TooltipInfo(description); - getConnection().registerTooltip(this, nodeKey, info); - } else { - // Remove possible previous tooltip - getConnection().registerTooltip(this, nodeKey, null); + if (description != null) { + tooltipMap.put(treeNode, new TooltipInfo(description)); } if (uidl.getBooleanAttribute("expanded") && !treeNode.getState()) { @@ -228,6 +233,7 @@ public class TreeConnector extends AbstractComponentConnector implements continue; } final TreeNode childTree = getWidget().new TreeNode(); + getConnection().getVTooltip().connectHandlersToWidget(childTree); updateNodeFromUIDL(childTree, childUidl); containerNode.childNodeContainer.add(childTree); if (!i.hasNext()) { @@ -250,4 +256,32 @@ public class TreeConnector extends AbstractComponentConnector implements return (AbstractFieldState) super.getState(); } + @Override + public TooltipInfo getTooltipInfo(Element element) { + + TooltipInfo info = null; + + // Try to find a tooltip for a node + if (element != getWidget().getElement()) { + Object node = Util.findWidget( + (com.google.gwt.user.client.Element) element, + TreeNode.class); + + if (node != null) { + TreeNode tnode = (TreeNode) node; + if (tnode.isCaptionElement(element)) { + info = tooltipMap.get(tnode); + } + } + } + + // If no tooltip found for the node or if the target was not a node, use + // the default tooltip + if (info == null) { + info = super.getTooltipInfo(element); + } + + return info; + } + } diff --git a/src/com/vaadin/terminal/gwt/client/ui/tree/VTree.java b/src/com/vaadin/terminal/gwt/client/ui/tree/VTree.java index 6f19cba957..f5fe6bce1a 100644 --- a/src/com/vaadin/terminal/gwt/client/ui/tree/VTree.java +++ b/src/com/vaadin/terminal/gwt/client/ui/tree/VTree.java @@ -37,15 +37,15 @@ import com.google.gwt.user.client.ui.FlowPanel; import com.google.gwt.user.client.ui.SimplePanel; import com.google.gwt.user.client.ui.UIObject; import com.google.gwt.user.client.ui.Widget; +import com.vaadin.shared.MouseEventDetails; +import com.vaadin.shared.ui.dd.VerticalDropLocation; import com.vaadin.terminal.gwt.client.ApplicationConnection; import com.vaadin.terminal.gwt.client.BrowserInfo; import com.vaadin.terminal.gwt.client.ComponentConnector; import com.vaadin.terminal.gwt.client.ConnectorMap; -import com.vaadin.terminal.gwt.client.MouseEventDetails; import com.vaadin.terminal.gwt.client.MouseEventDetailsBuilder; import com.vaadin.terminal.gwt.client.UIDL; import com.vaadin.terminal.gwt.client.Util; -import com.vaadin.terminal.gwt.client.VTooltip; import com.vaadin.terminal.gwt.client.ui.Action; import com.vaadin.terminal.gwt.client.ui.ActionOwner; import com.vaadin.terminal.gwt.client.ui.FocusElementPanel; @@ -61,7 +61,6 @@ import com.vaadin.terminal.gwt.client.ui.dd.VDragEvent; import com.vaadin.terminal.gwt.client.ui.dd.VDropHandler; import com.vaadin.terminal.gwt.client.ui.dd.VHasDropHandler; import com.vaadin.terminal.gwt.client.ui.dd.VTransferable; -import com.vaadin.terminal.gwt.client.ui.dd.VerticalDropLocation; /** * @@ -127,6 +126,7 @@ public class VTree extends FocusElementPanel implements VHasDropHandler, public VLazyExecutor iconLoaded = new VLazyExecutor(50, new ScheduledCommand() { + @Override public void execute() { Util.notifyParentOfSizeChange(VTree.this, true); } @@ -146,6 +146,7 @@ public class VTree extends FocusElementPanel implements VHasDropHandler, */ sinkEvents(Event.ONCONTEXTMENU); addDomHandler(new ContextMenuHandler() { + @Override public void onContextMenu(ContextMenuEvent event) { handleBodyContextMenu(event); } @@ -334,6 +335,7 @@ public class VTree extends FocusElementPanel implements VHasDropHandler, } if (newKey != null) { validate(new VAcceptCallback() { + @Override public void accepted(VDragEvent event) { VerticalDropLocation curDetail = (VerticalDropLocation) event .getDropDetails().get("detail"); @@ -377,6 +379,7 @@ public class VTree extends FocusElementPanel implements VHasDropHandler, return ConnectorMap.get(client).getConnector(VTree.this); } + @Override public ApplicationConnection getApplicationConnection() { return client; } @@ -420,6 +423,7 @@ public class VTree extends FocusElementPanel implements VHasDropHandler, */ private void sendSelectionToServer() { Command command = new Command() { + @Override public void execute() { client.updateVariable(paintableId, "selected", selectedIds.toArray(new String[selectedIds.size()]), @@ -587,6 +591,7 @@ public class VTree extends FocusElementPanel implements VHasDropHandler, } ScheduledCommand command = new ScheduledCommand() { + @Override public void execute() { if (multiSelectMode == MULTISELECT_MODE_SIMPLE @@ -656,12 +661,7 @@ public class VTree extends FocusElementPanel implements VHasDropHandler, return; } - if (target == nodeCaptionSpan) { - client.handleTooltipEvent(event, VTree.this, key); - } - - final boolean inCaption = target == nodeCaptionSpan - || (icon != null && target == icon.getElement()); + final boolean inCaption = isCaptionElement(target); if (inCaption && client .hasEventListeners(VTree.this, ITEM_CLICK_EVENT_ID) @@ -751,6 +751,18 @@ public class VTree extends FocusElementPanel implements VHasDropHandler, } } + /** + * Checks if the given element is the caption or the icon. + * + * @param target + * The element to check + * @return true if the element is the caption or the icon + */ + public boolean isCaptionElement(com.google.gwt.dom.client.Element target) { + return (target == nodeCaptionSpan || (icon != null && target == icon + .getElement())); + } + private void fireClick(final Event evt) { /* * Ensure we have focus in tree before sending variables. Otherwise @@ -770,6 +782,7 @@ public class VTree extends FocusElementPanel implements VHasDropHandler, final MouseEventDetails details = MouseEventDetailsBuilder .buildMouseEventDetails(evt); ScheduledCommand command = new ScheduledCommand() { + @Override public void execute() { // Determine if we should send the event immediately to the // server. We do not want to send the event if there is a @@ -825,7 +838,6 @@ public class VTree extends FocusElementPanel implements VHasDropHandler, + "-caption"); Element wrapper = DOM.createDiv(); nodeCaptionSpan = DOM.createSpan(); - DOM.sinkEvents(nodeCaptionSpan, VTooltip.TOOLTIP_EVENTS); DOM.appendChild(getElement(), nodeCaptionDiv); DOM.appendChild(nodeCaptionDiv, wrapper); DOM.appendChild(wrapper, nodeCaptionSpan); @@ -914,6 +926,7 @@ public class VTree extends FocusElementPanel implements VHasDropHandler, return nodes; } + @Override public Action[] getActions() { if (actionKeys == null) { return new Action[] {}; @@ -930,10 +943,12 @@ public class VTree extends FocusElementPanel implements VHasDropHandler, return actions; } + @Override public ApplicationConnection getClient() { return client; } + @Override public String getPaintableId() { return paintableId; } @@ -1071,6 +1086,7 @@ public class VTree extends FocusElementPanel implements VHasDropHandler, } + @Override public VDropHandler getDropHandler() { return dropHandler; } @@ -1480,6 +1496,7 @@ public class VTree extends FocusElementPanel implements VHasDropHandler, node.scrollIntoView(); } else { Scheduler.get().scheduleDeferred(new Command() { + @Override public void execute() { focusedNode.scrollIntoView(); } @@ -1505,6 +1522,7 @@ public class VTree extends FocusElementPanel implements VHasDropHandler, * com.google.gwt.event.dom.client.FocusHandler#onFocus(com.google.gwt.event * .dom.client.FocusEvent) */ + @Override public void onFocus(FocusEvent event) { treeHasFocus = true; // If no node has focus, focus the first item in the tree @@ -1524,6 +1542,7 @@ public class VTree extends FocusElementPanel implements VHasDropHandler, * com.google.gwt.event.dom.client.BlurHandler#onBlur(com.google.gwt.event * .dom.client.BlurEvent) */ + @Override public void onBlur(BlurEvent event) { treeHasFocus = false; if (focusedNode != null) { @@ -1538,6 +1557,7 @@ public class VTree extends FocusElementPanel implements VHasDropHandler, * com.google.gwt.event.dom.client.KeyPressHandler#onKeyPress(com.google * .gwt.event.dom.client.KeyPressEvent) */ + @Override public void onKeyPress(KeyPressEvent event) { NativeEvent nativeEvent = event.getNativeEvent(); int keyCode = nativeEvent.getKeyCode(); @@ -1561,6 +1581,7 @@ public class VTree extends FocusElementPanel implements VHasDropHandler, * com.google.gwt.event.dom.client.KeyDownHandler#onKeyDown(com.google.gwt * .event.dom.client.KeyDownEvent) */ + @Override public void onKeyDown(KeyDownEvent event) { if (handleKeyNavigation(event.getNativeEvent().getKeyCode(), event.isControlKeyDown() || event.isMetaKeyDown(), @@ -1941,6 +1962,7 @@ public class VTree extends FocusElementPanel implements VHasDropHandler, * com.vaadin.terminal.gwt.client.ui.SubPartAware#getSubPartElement(java * .lang.String) */ + @Override public Element getSubPartElement(String subPart) { if ("fe".equals(subPart)) { if (BrowserInfo.get().isOpera() && focusedNode != null) { @@ -1994,6 +2016,7 @@ public class VTree extends FocusElementPanel implements VHasDropHandler, * com.vaadin.terminal.gwt.client.ui.SubPartAware#getSubPartName(com.google * .gwt.user.client.Element) */ + @Override public String getSubPartName(Element subElement) { // Supported identifiers: // @@ -2044,6 +2067,7 @@ public class VTree extends FocusElementPanel implements VHasDropHandler, return locator; } + @Override public Action[] getActions() { if (bodyActionKeys == null) { return new Action[] {}; @@ -2059,10 +2083,12 @@ public class VTree extends FocusElementPanel implements VHasDropHandler, return actions; } + @Override public ApplicationConnection getClient() { return client; } + @Override public String getPaintableId() { return paintableId; } diff --git a/src/com/vaadin/terminal/gwt/client/ui/treetable/TreeTableConnector.java b/src/com/vaadin/terminal/gwt/client/ui/treetable/TreeTableConnector.java index 59910c1b3e..06e916fbc9 100644 --- a/src/com/vaadin/terminal/gwt/client/ui/treetable/TreeTableConnector.java +++ b/src/com/vaadin/terminal/gwt/client/ui/treetable/TreeTableConnector.java @@ -3,9 +3,9 @@ */ package com.vaadin.terminal.gwt.client.ui.treetable; +import com.vaadin.shared.ui.Connect; import com.vaadin.terminal.gwt.client.ApplicationConnection; import com.vaadin.terminal.gwt.client.UIDL; -import com.vaadin.terminal.gwt.client.ui.Connect; import com.vaadin.terminal.gwt.client.ui.FocusableScrollPanel; import com.vaadin.terminal.gwt.client.ui.table.TableConnector; import com.vaadin.terminal.gwt.client.ui.table.VScrollTable.VScrollTableBody.VScrollTableRow; diff --git a/src/com/vaadin/terminal/gwt/client/ui/treetable/VTreeTable.java b/src/com/vaadin/terminal/gwt/client/ui/treetable/VTreeTable.java index 9a8e0e9ce1..c03dff9507 100644 --- a/src/com/vaadin/terminal/gwt/client/ui/treetable/VTreeTable.java +++ b/src/com/vaadin/terminal/gwt/client/ui/treetable/VTreeTable.java @@ -97,7 +97,7 @@ public class VTreeTable extends VScrollTable { } class VTreeTableScrollBody extends VScrollTable.VScrollTableBody { - private int identWidth = -1; + private int indentWidth = -1; VTreeTableScrollBody() { super(); @@ -165,7 +165,7 @@ public class VTreeTable extends VScrollTable { container.insertFirst(treeSpacer); depth = rowUidl.hasAttribute("depth") ? rowUidl .getIntAttribute("depth") : 0; - setIdent(); + setIndent(); isTreeCellAdded = true; return true; } @@ -202,18 +202,19 @@ public class VTreeTable extends VScrollTable { } - private void setIdent() { - if (getIdentWidth() > 0 && depth != 0) { - treeSpacer.getStyle().setWidth( - (depth + 1) * getIdentWidth(), Unit.PX); + private void setIndent() { + if (getIndentWidth() > 0) { + treeSpacer.getParentElement().getStyle() + .setPaddingLeft(getIndent(), Unit.PX); + treeSpacer.getStyle().setWidth(getIndent(), Unit.PX); } } @Override protected void onAttach() { super.onAttach(); - if (getIdentWidth() < 0) { - detectIdent(this); + if (getIndentWidth() < 0) { + detectIndent(this); } } @@ -227,6 +228,19 @@ public class VTreeTable extends VScrollTable { return consumedSpace; } + @Override + protected void setCellWidth(int cellIx, int width) { + if (cellIx == colIndexOfHierarchy + (showRowHeaders ? 1 : 0)) { + // take indentation padding into account if this is the + // hierarchy column + width = Math.max(width - getIndent(), 0); + } + super.setCellWidth(cellIx, width); + } + + private int getIndent() { + return (depth + 1) * getIndentWidth(); + } } protected class VTreeTableGeneratedRow extends VTreeTableRow { @@ -257,6 +271,7 @@ public class VTreeTable extends VScrollTable { // widths. Scheduler.get().scheduleDeferred(new ScheduledCommand() { + @Override public void execute() { if (showRowHeaders) { setCellWidth(0, tHead.getHeaderCell(0).getWidth()); @@ -353,20 +368,20 @@ public class VTreeTable extends VScrollTable { } } - private int getIdentWidth() { - return identWidth; + private int getIndentWidth() { + return indentWidth; } - private void detectIdent(VTreeTableRow vTreeTableRow) { - identWidth = vTreeTableRow.treeSpacer.getOffsetWidth(); - if (identWidth == 0) { - identWidth = -1; + private void detectIndent(VTreeTableRow vTreeTableRow) { + indentWidth = vTreeTableRow.treeSpacer.getOffsetWidth(); + if (indentWidth == 0) { + indentWidth = -1; return; } Iterator<Widget> iterator = iterator(); while (iterator.hasNext()) { VTreeTableRow next = (VTreeTableRow) iterator.next(); - next.setIdent(); + next.setIndent(); } } diff --git a/src/com/vaadin/terminal/gwt/client/ui/twincolselect/TwinColSelectConnector.java b/src/com/vaadin/terminal/gwt/client/ui/twincolselect/TwinColSelectConnector.java index a77319920c..2ce6bf2129 100644 --- a/src/com/vaadin/terminal/gwt/client/ui/twincolselect/TwinColSelectConnector.java +++ b/src/com/vaadin/terminal/gwt/client/ui/twincolselect/TwinColSelectConnector.java @@ -4,10 +4,10 @@ package com.vaadin.terminal.gwt.client.ui.twincolselect; +import com.vaadin.shared.ui.Connect; import com.vaadin.terminal.gwt.client.ApplicationConnection; import com.vaadin.terminal.gwt.client.DirectionalManagedLayout; import com.vaadin.terminal.gwt.client.UIDL; -import com.vaadin.terminal.gwt.client.ui.Connect; import com.vaadin.terminal.gwt.client.ui.optiongroup.OptionGroupBaseConnector; import com.vaadin.ui.TwinColSelect; @@ -29,6 +29,7 @@ public class TwinColSelectConnector extends OptionGroupBaseConnector implements @Override protected void init() { + super.init(); getLayoutManager().registerDependency(this, getWidget().captionWrapper.getElement()); } @@ -44,6 +45,7 @@ public class TwinColSelectConnector extends OptionGroupBaseConnector implements return (VTwinColSelect) super.getWidget(); } + @Override public void layoutVertically() { if (isUndefinedHeight()) { getWidget().clearInternalHeights(); @@ -52,6 +54,7 @@ public class TwinColSelectConnector extends OptionGroupBaseConnector implements } } + @Override public void layoutHorizontally() { if (isUndefinedWidth()) { getWidget().clearInternalWidths(); diff --git a/src/com/vaadin/terminal/gwt/client/ui/twincolselect/VTwinColSelect.java b/src/com/vaadin/terminal/gwt/client/ui/twincolselect/VTwinColSelect.java index 8f1ea09b8f..1a2deae3b4 100644 --- a/src/com/vaadin/terminal/gwt/client/ui/twincolselect/VTwinColSelect.java +++ b/src/com/vaadin/terminal/gwt/client/ui/twincolselect/VTwinColSelect.java @@ -409,6 +409,7 @@ public class VTwinColSelect extends VOptionGroupBase implements KeyDownHandler, remove.setTabIndex(tabIndex); } + @Override public void focus() { options.setFocus(true); } @@ -430,6 +431,7 @@ public class VTwinColSelect extends VOptionGroupBase implements KeyDownHandler, * com.google.gwt.event.dom.client.KeyDownHandler#onKeyDown(com.google.gwt * .event.dom.client.KeyDownEvent) */ + @Override public void onKeyDown(KeyDownEvent event) { int keycode = event.getNativeKeyCode(); @@ -493,6 +495,7 @@ public class VTwinColSelect extends VOptionGroupBase implements KeyDownHandler, * com.google.gwt.event.dom.client.MouseDownHandler#onMouseDown(com.google * .gwt.event.dom.client.MouseDownEvent) */ + @Override public void onMouseDown(MouseDownEvent event) { // Ensure that items are deselected when selecting // from a different source. See #3699 for details. @@ -515,6 +518,7 @@ public class VTwinColSelect extends VOptionGroupBase implements KeyDownHandler, * com.google.gwt.event.dom.client.DoubleClickHandler#onDoubleClick(com. * google.gwt.event.dom.client.DoubleClickEvent) */ + @Override public void onDoubleClick(DoubleClickEvent event) { if (event.getSource() == options) { addItem(); @@ -539,6 +543,7 @@ public class VTwinColSelect extends VOptionGroupBase implements KeyDownHandler, private static final String SUBPART_ADD_BUTTON = "add"; private static final String SUBPART_REMOVE_BUTTON = "remove"; + @Override public Element getSubPartElement(String subPart) { if (SUBPART_OPTION_SELECT.equals(subPart)) { return options.getElement(); @@ -568,6 +573,7 @@ public class VTwinColSelect extends VOptionGroupBase implements KeyDownHandler, return null; } + @Override public String getSubPartName(Element subElement) { if (optionsCaption != null && optionsCaption.getElement().isOrHasChild(subElement)) { diff --git a/src/com/vaadin/terminal/gwt/client/ui/upload/UploadConnector.java b/src/com/vaadin/terminal/gwt/client/ui/upload/UploadConnector.java index 153d99229b..af31491060 100644 --- a/src/com/vaadin/terminal/gwt/client/ui/upload/UploadConnector.java +++ b/src/com/vaadin/terminal/gwt/client/ui/upload/UploadConnector.java @@ -4,18 +4,19 @@ package com.vaadin.terminal.gwt.client.ui.upload; +import com.vaadin.shared.ui.Connect; +import com.vaadin.shared.ui.Connect.LoadStyle; import com.vaadin.terminal.gwt.client.ApplicationConnection; import com.vaadin.terminal.gwt.client.Paintable; import com.vaadin.terminal.gwt.client.UIDL; import com.vaadin.terminal.gwt.client.ui.AbstractComponentConnector; -import com.vaadin.terminal.gwt.client.ui.Connect; -import com.vaadin.terminal.gwt.client.ui.Connect.LoadStyle; import com.vaadin.ui.Upload; @Connect(value = Upload.class, loadStyle = LoadStyle.LAZY) public class UploadConnector extends AbstractComponentConnector implements Paintable { + @Override public void updateFromUIDL(UIDL uidl, ApplicationConnection client) { if (!isRealUpdate(uidl)) { return; diff --git a/src/com/vaadin/terminal/gwt/client/ui/upload/VUpload.java b/src/com/vaadin/terminal/gwt/client/ui/upload/VUpload.java index 4fe53fb89c..5cf2f2fe25 100644 --- a/src/com/vaadin/terminal/gwt/client/ui/upload/VUpload.java +++ b/src/com/vaadin/terminal/gwt/client/ui/upload/VUpload.java @@ -24,7 +24,6 @@ import com.google.gwt.user.client.ui.SimplePanel; import com.vaadin.terminal.gwt.client.ApplicationConnection; import com.vaadin.terminal.gwt.client.BrowserInfo; import com.vaadin.terminal.gwt.client.VConsole; -import com.vaadin.terminal.gwt.client.VTooltip; import com.vaadin.terminal.gwt.client.ui.button.VButton; /** @@ -116,6 +115,7 @@ public class VUpload extends SimplePanel { panel.add(fu); submitButton = new VButton(); submitButton.addClickHandler(new ClickHandler() { + @Override public void onClick(ClickEvent event) { if (immediate) { // fire click on upload (eg. focused button and hit space) @@ -128,16 +128,6 @@ public class VUpload extends SimplePanel { panel.add(submitButton); setStyleName(CLASSNAME); - - sinkEvents(VTooltip.TOOLTIP_EVENTS); - } - - @Override - public void onBrowserEvent(Event event) { - if ((event.getTypeInt() & VTooltip.TOOLTIP_EVENTS) > 0) { - client.handleTooltipEvent(event, this); - } - super.onBrowserEvent(event); } private static native void setEncoding(Element form, String encoding) @@ -214,6 +204,7 @@ public class VUpload extends SimplePanel { private void onSubmitComplete() { /* Needs to be run dereferred to avoid various browser issues. */ Scheduler.get().scheduleDeferred(new Command() { + @Override public void execute() { if (submitted) { if (client != null) { diff --git a/src/com/vaadin/terminal/gwt/client/ui/video/VideoConnector.java b/src/com/vaadin/terminal/gwt/client/ui/video/VideoConnector.java index ddf8df66ff..d0c126832a 100644 --- a/src/com/vaadin/terminal/gwt/client/ui/video/VideoConnector.java +++ b/src/com/vaadin/terminal/gwt/client/ui/video/VideoConnector.java @@ -3,9 +3,10 @@ */ package com.vaadin.terminal.gwt.client.ui.video; +import com.vaadin.shared.communication.URLReference; +import com.vaadin.shared.ui.Connect; +import com.vaadin.shared.ui.video.VideoState; import com.vaadin.terminal.gwt.client.communication.StateChangeEvent; -import com.vaadin.terminal.gwt.client.communication.URLReference; -import com.vaadin.terminal.gwt.client.ui.Connect; import com.vaadin.terminal.gwt.client.ui.MediaBaseConnector; import com.vaadin.ui.Video; diff --git a/src/com/vaadin/terminal/gwt/client/ui/window/VWindow.java b/src/com/vaadin/terminal/gwt/client/ui/window/VWindow.java index 8fd84a9ea6..8ac0d0662b 100644 --- a/src/com/vaadin/terminal/gwt/client/ui/window/VWindow.java +++ b/src/com/vaadin/terminal/gwt/client/ui/window/VWindow.java @@ -26,12 +26,12 @@ import com.google.gwt.user.client.Window; import com.google.gwt.user.client.ui.HasWidgets; import com.google.gwt.user.client.ui.RootPanel; import com.google.gwt.user.client.ui.Widget; +import com.vaadin.shared.EventId; import com.vaadin.terminal.gwt.client.ApplicationConnection; import com.vaadin.terminal.gwt.client.BrowserInfo; import com.vaadin.terminal.gwt.client.ComponentConnector; import com.vaadin.terminal.gwt.client.ConnectorMap; import com.vaadin.terminal.gwt.client.Console; -import com.vaadin.terminal.gwt.client.EventId; import com.vaadin.terminal.gwt.client.Focusable; import com.vaadin.terminal.gwt.client.LayoutManager; import com.vaadin.terminal.gwt.client.Util; @@ -146,6 +146,7 @@ public class VWindow extends VOverlay implements ShortcutActionHandlerOwner, private VLazyExecutor delayedContentsSizeUpdater = new VLazyExecutor(200, new ScheduledCommand() { + @Override public void execute() { updateContentsSize(); } @@ -266,6 +267,7 @@ public class VWindow extends VOverlay implements ShortcutActionHandlerOwner, orderingDefered = true; Scheduler.get().scheduleFinally(new Command() { + @Override public void execute() { doServerSideOrdering(); VNotification.bringNotificationsToFront(); @@ -279,6 +281,7 @@ public class VWindow extends VOverlay implements ShortcutActionHandlerOwner, VWindow[] array = windowOrder.toArray(new VWindow[windowOrder.size()]); Arrays.sort(array, new Comparator<VWindow>() { + @Override public int compare(VWindow o1, VWindow o2) { /* * Order by modality, then by bringtofront sequence. @@ -552,11 +555,6 @@ public class VWindow extends VOverlay implements ShortcutActionHandlerOwner, final Element target = DOM.eventGetTarget(event); - if (client != null && header.isOrHasChild(target)) { - // Handle window caption tooltips - client.handleTooltipEvent(event, this); - } - if (resizing || resizeBox == target) { onResizeEvent(event); bubble = false; @@ -856,10 +854,12 @@ public class VWindow extends VOverlay implements ShortcutActionHandlerOwner, true); } + @Override public ShortcutActionHandler getShortcutActionHandler() { return shortcutHandler; } + @Override public void onScroll(ScrollEvent event) { client.updateVariable(id, "scrollTop", contentPanel.getScrollPosition(), false); @@ -868,6 +868,7 @@ public class VWindow extends VOverlay implements ShortcutActionHandlerOwner, } + @Override public void onKeyDown(KeyDownEvent event) { if (shortcutHandler != null) { shortcutHandler @@ -876,18 +877,21 @@ public class VWindow extends VOverlay implements ShortcutActionHandlerOwner, } } + @Override public void onBlur(BlurEvent event) { if (client.hasEventListeners(this, EventId.BLUR)) { client.updateVariable(id, EventId.BLUR, "", true); } } + @Override public void onFocus(FocusEvent event) { if (client.hasEventListeners(this, EventId.FOCUS)) { client.updateVariable(id, EventId.FOCUS, "", true); } } + @Override public void focus() { contentPanel.focus(); } diff --git a/src/com/vaadin/terminal/gwt/client/ui/window/WindowConnector.java b/src/com/vaadin/terminal/gwt/client/ui/window/WindowConnector.java index 83de039f0b..bae4f804fc 100644 --- a/src/com/vaadin/terminal/gwt/client/ui/window/WindowConnector.java +++ b/src/com/vaadin/terminal/gwt/client/ui/window/WindowConnector.java @@ -12,18 +12,20 @@ import com.google.gwt.user.client.DOM; import com.google.gwt.user.client.Event; import com.google.gwt.user.client.Window; import com.google.gwt.user.client.ui.Widget; +import com.vaadin.shared.MouseEventDetails; +import com.vaadin.shared.ui.Connect; +import com.vaadin.shared.ui.window.WindowServerRpc; +import com.vaadin.shared.ui.window.WindowState; import com.vaadin.terminal.gwt.client.ApplicationConnection; import com.vaadin.terminal.gwt.client.BrowserInfo; import com.vaadin.terminal.gwt.client.ComponentConnector; import com.vaadin.terminal.gwt.client.ConnectorHierarchyChangeEvent; import com.vaadin.terminal.gwt.client.LayoutManager; -import com.vaadin.terminal.gwt.client.MouseEventDetails; import com.vaadin.terminal.gwt.client.Paintable; import com.vaadin.terminal.gwt.client.UIDL; import com.vaadin.terminal.gwt.client.communication.RpcProxy; import com.vaadin.terminal.gwt.client.ui.AbstractComponentContainerConnector; import com.vaadin.terminal.gwt.client.ui.ClickEventHandler; -import com.vaadin.terminal.gwt.client.ui.Connect; import com.vaadin.terminal.gwt.client.ui.PostLayoutListener; import com.vaadin.terminal.gwt.client.ui.ShortcutActionHandler; import com.vaadin.terminal.gwt.client.ui.ShortcutActionHandler.BeforeShortcutActionListener; @@ -72,6 +74,7 @@ public class WindowConnector extends AbstractComponentContainerConnector lm.unregisterDependency(this, window.footer); } + @Override public void updateFromUIDL(UIDL uidl, ApplicationConnection client) { getWidget().id = getConnectorId(); getWidget().client = client; @@ -180,10 +183,12 @@ public class WindowConnector extends AbstractComponentContainerConnector } } + @Override public void updateCaption(ComponentConnector component) { // NOP, window has own caption, layout caption not rendered } + @Override public void onBeforeShortcutAction(Event e) { // NOP, nothing to update just avoid workaround ( causes excess // blur/focus ) @@ -210,6 +215,7 @@ public class WindowConnector extends AbstractComponentContainerConnector getWidget().contentPanel.setWidget(newChildWidget); } + @Override public void layout() { LayoutManager lm = getLayoutManager(); VWindow window = getWidget(); @@ -274,13 +280,14 @@ public class WindowConnector extends AbstractComponentContainerConnector } } + @Override public void postLayout() { minWidthChecked = false; VWindow window = getWidget(); if (window.centered) { window.center(); } - window.updateShadowSizeAndPosition(); + window.sizeOrPositionUpdated(); } @Override diff --git a/src/com/vaadin/terminal/gwt/client/ui/window/WindowServerRpc.java b/src/com/vaadin/terminal/gwt/client/ui/window/WindowServerRpc.java deleted file mode 100644 index 4723c55786..0000000000 --- a/src/com/vaadin/terminal/gwt/client/ui/window/WindowServerRpc.java +++ /dev/null @@ -1,10 +0,0 @@ -/* -@VaadinApache2LicenseForJavaFiles@ - */ -package com.vaadin.terminal.gwt.client.ui.window; - -import com.vaadin.terminal.gwt.client.communication.ServerRpc; -import com.vaadin.terminal.gwt.client.ui.ClickRpc; - -public interface WindowServerRpc extends ClickRpc, ServerRpc { -}
\ No newline at end of file diff --git a/src/com/vaadin/terminal/gwt/server/AbstractApplicationPortlet.java b/src/com/vaadin/terminal/gwt/server/AbstractApplicationPortlet.java index c2f887674a..363f7e4869 100644 --- a/src/com/vaadin/terminal/gwt/server/AbstractApplicationPortlet.java +++ b/src/com/vaadin/terminal/gwt/server/AbstractApplicationPortlet.java @@ -25,7 +25,6 @@ import javax.portlet.ActionResponse; import javax.portlet.EventRequest; import javax.portlet.EventResponse; import javax.portlet.GenericPortlet; -import javax.portlet.MimeResponse; import javax.portlet.PortletConfig; import javax.portlet.PortletContext; import javax.portlet.PortletException; @@ -64,6 +63,8 @@ import com.vaadin.ui.Root; public abstract class AbstractApplicationPortlet extends GenericPortlet implements Constants { + public static final String RESOURCE_URL_ID = "APP"; + public static class WrappedHttpAndPortletRequest extends WrappedPortletRequest { @@ -175,15 +176,12 @@ public abstract class AbstractApplicationPortlet extends GenericPortlet this.portlet = portlet; } + @Override public void criticalNotification(WrappedRequest request, WrappedResponse response, String cap, String msg, String details, String outOfSyncURL) throws IOException { - PortletRequest portletRequest = WrappedPortletRequest.cast(request) - .getPortletRequest(); - PortletResponse portletResponse = ((WrappedPortletResponse) response) - .getPortletResponse(); - portlet.criticalNotification(portletRequest, - (MimeResponse) portletResponse, cap, msg, details, + portlet.criticalNotification(WrappedPortletRequest.cast(request), + (WrappedPortletResponse) response, cap, msg, details, outOfSyncURL); } } @@ -207,19 +205,19 @@ public abstract class AbstractApplicationPortlet extends GenericPortlet // TODO Can we close the application when the portlet is removed? Do we know // when the portlet is removed? - private Properties applicationProperties; - private boolean productionMode = false; - private DeploymentConfiguration deploymentConfiguration = new DeploymentConfiguration() { - + private DeploymentConfiguration deploymentConfiguration = new AbstractDeploymentConfiguration( + getClass()) { + @Override public String getConfiguredWidgetset(WrappedRequest request) { String widgetset = getApplicationOrSystemProperty( PARAMETER_WIDGETSET, null); if (widgetset == null) { - // If no widgetset defined for the application, check the portal + // If no widgetset defined for the application, check the + // portal // property widgetset = WrappedPortletRequest.cast(request) .getPortalProperty(PORTAL_PARAMETER_VAADIN_WIDGETSET); @@ -233,6 +231,7 @@ public abstract class AbstractApplicationPortlet extends GenericPortlet return widgetset; } + @Override public String getConfiguredTheme(WrappedRequest request) { // is the default theme defined by the portal? @@ -247,12 +246,7 @@ public abstract class AbstractApplicationPortlet extends GenericPortlet return themeName; } - public String getApplicationOrSystemProperty(String propertyName, - String defaultValue) { - return AbstractApplicationPortlet.this - .getApplicationOrSystemProperty(propertyName, defaultValue); - } - + @Override public boolean isStandalone(WrappedRequest request) { return false; } @@ -272,6 +266,7 @@ public abstract class AbstractApplicationPortlet extends GenericPortlet * be a VAADIN directory). Does not end with a slash (/). */ + @Override public String getStaticFileLocation(WrappedRequest request) { String staticFileLocation = WrappedPortletRequest.cast(request) .getPortalProperty( @@ -289,17 +284,17 @@ public abstract class AbstractApplicationPortlet extends GenericPortlet } } - public ClassLoader getClassLoader() { - // Custom class loaders not currently supported in portlets (see - // #8574) - return null; + @Override + public String getMimeType(String resourceName) { + return getPortletContext().getMimeType(resourceName); } }; @Override public void init(PortletConfig config) throws PortletException { super.init(config); - applicationProperties = new Properties(); + Properties applicationProperties = getDeploymentConfiguration() + .getInitParameters(); // Read default parameters from the context final PortletContext context = config.getPortletContext(); @@ -323,7 +318,7 @@ public abstract class AbstractApplicationPortlet extends GenericPortlet } private void checkCrossSiteProtection() { - if (getApplicationOrSystemProperty( + if (getDeploymentConfiguration().getApplicationOrSystemProperty( SERVLET_PARAMETER_DISABLE_XSRF_PROTECTION, "false").equals( "true")) { /* @@ -338,8 +333,8 @@ public abstract class AbstractApplicationPortlet extends GenericPortlet // TODO Identical code in AbstractApplicationServlet -> refactor // Check if the application is in production mode. // We are in production mode if productionMode=true - if (getApplicationOrSystemProperty(SERVLET_PARAMETER_PRODUCTION_MODE, - "false").equals("true")) { + if (getDeploymentConfiguration().getApplicationOrSystemProperty( + SERVLET_PARAMETER_PRODUCTION_MODE, "false").equals("true")) { productionMode = true; } @@ -350,101 +345,27 @@ public abstract class AbstractApplicationPortlet extends GenericPortlet } } - /** - * Gets an application property value. - * - * @param parameterName - * the Name or the parameter. - * @return String value or null if not found - */ - protected String getApplicationProperty(String parameterName) { - - String val = applicationProperties.getProperty(parameterName); - if (val != null) { - return val; - } - - // Try lower case application properties for backward compatibility with - // 3.0.2 and earlier - val = applicationProperties.getProperty(parameterName.toLowerCase()); - - return val; - } - - /** - * Gets an system property value. - * - * @param parameterName - * the Name or the parameter. - * @return String value or null if not found - */ - protected String getSystemProperty(String parameterName) { - String val = null; - - String pkgName; - final Package pkg = getClass().getPackage(); - if (pkg != null) { - pkgName = pkg.getName(); - } else { - final String className = getClass().getName(); - pkgName = new String(className.toCharArray(), 0, - className.lastIndexOf('.')); - } - val = System.getProperty(pkgName + "." + parameterName); - if (val != null) { - return val; - } - - // Try lowercased system properties - val = System.getProperty(pkgName + "." + parameterName.toLowerCase()); - return val; - } - - /** - * Gets an application or system property value. - * - * @param parameterName - * the Name or the parameter. - * @param defaultValue - * the Default to be used. - * @return String value or default if not found - */ - protected String getApplicationOrSystemProperty(String parameterName, - String defaultValue) { - - String val = null; - - // Try application properties - val = getApplicationProperty(parameterName); - if (val != null) { - return val; - } - - // Try system properties - val = getSystemProperty(parameterName); - if (val != null) { - return val; - } - - return defaultValue; - } - protected enum RequestType { - FILE_UPLOAD, UIDL, RENDER, STATIC_FILE, APPLICATION_RESOURCE, DUMMY, EVENT, ACTION, UNKNOWN, BROWSER_DETAILS; + FILE_UPLOAD, UIDL, RENDER, STATIC_FILE, APPLICATION_RESOURCE, DUMMY, EVENT, ACTION, UNKNOWN, BROWSER_DETAILS, CONNECTOR_RESOURCE; } - protected RequestType getRequestType(PortletRequest request) { + protected RequestType getRequestType(WrappedPortletRequest wrappedRequest) { + PortletRequest request = wrappedRequest.getPortletRequest(); if (request instanceof RenderRequest) { return RequestType.RENDER; } else if (request instanceof ResourceRequest) { ResourceRequest resourceRequest = (ResourceRequest) request; - if (isUIDLRequest(resourceRequest)) { + if (ServletPortletHelper.isUIDLRequest(wrappedRequest)) { return RequestType.UIDL; - } else if (isBrowserDetailsRequeset(resourceRequest)) { + } else if (isBrowserDetailsRequest(resourceRequest)) { return RequestType.BROWSER_DETAILS; - } else if (isFileUploadRequest(resourceRequest)) { + } else if (ServletPortletHelper.isFileUploadRequest(wrappedRequest)) { return RequestType.FILE_UPLOAD; - } else if (isApplicationResourceRequest(resourceRequest)) { + } else if (ServletPortletHelper + .isConnectorResourceRequest(wrappedRequest)) { + return RequestType.CONNECTOR_RESOURCE; + } else if (ServletPortletHelper + .isApplicationResourceRequest(wrappedRequest)) { return RequestType.APPLICATION_RESOURCE; } else if (isDummyRequest(resourceRequest)) { return RequestType.DUMMY; @@ -459,30 +380,16 @@ public abstract class AbstractApplicationPortlet extends GenericPortlet return RequestType.UNKNOWN; } - private boolean isBrowserDetailsRequeset(ResourceRequest request) { + private boolean isBrowserDetailsRequest(ResourceRequest request) { return request.getResourceID() != null && request.getResourceID().equals("browserDetails"); } - private boolean isApplicationResourceRequest(ResourceRequest request) { - return request.getResourceID() != null - && request.getResourceID().startsWith("APP"); - } - - private boolean isUIDLRequest(ResourceRequest request) { - return request.getResourceID() != null - && request.getResourceID().equals("UIDL"); - } - private boolean isDummyRequest(ResourceRequest request) { return request.getResourceID() != null && request.getResourceID().equals("DUMMY"); } - private boolean isFileUploadRequest(ResourceRequest request) { - return "UPLOAD".equals(request.getResourceID()); - } - /** * Returns true if the servlet is running in production mode. Production * mode disables all debug facilities. @@ -506,7 +413,7 @@ public abstract class AbstractApplicationPortlet extends GenericPortlet WrappedPortletResponse wrappedResponse = new WrappedPortletResponse( response, getDeploymentConfiguration()); - RequestType requestType = getRequestType(request); + RequestType requestType = getRequestType(wrappedRequest); if (requestType == RequestType.UNKNOWN) { handleUnknownRequest(request, response); @@ -554,6 +461,12 @@ public abstract class AbstractApplicationPortlet extends GenericPortlet PortletCommunicationManager applicationManager = applicationContext .getApplicationManager(application); + if (requestType == RequestType.CONNECTOR_RESOURCE) { + applicationManager.serveConnectorResource(wrappedRequest, + wrappedResponse); + return; + } + /* Update browser information from request */ applicationContext.getBrowser().updateRequestDetails( wrappedRequest); @@ -638,8 +551,10 @@ public abstract class AbstractApplicationPortlet extends GenericPortlet /* Handle the request */ if (requestType == RequestType.FILE_UPLOAD) { - applicationManager.handleFileUpload(root, wrappedRequest, - wrappedResponse); + // Root is resolved in handleFileUpload by + // PortletCommunicationManager + applicationManager.handleFileUpload(application, + wrappedRequest, wrappedResponse); return; } else if (requestType == RequestType.BROWSER_DETAILS) { applicationManager.handleBrowserDetailsRequest( @@ -673,7 +588,8 @@ public abstract class AbstractApplicationPortlet extends GenericPortlet getLogger() .fine("General security exception, the security key was probably incorrect."); } catch (final Throwable e) { - handleServiceException(request, response, application, e); + handleServiceException(wrappedRequest, wrappedResponse, + application, e); } finally { // Notifies transaction end try { @@ -727,7 +643,7 @@ public abstract class AbstractApplicationPortlet extends GenericPortlet } - private DeploymentConfiguration getDeploymentConfiguration() { + protected DeploymentConfiguration getDeploymentConfiguration() { return deploymentConfiguration; } @@ -871,7 +787,8 @@ public abstract class AbstractApplicationPortlet extends GenericPortlet application.setLocale(locale); // No application URL when running inside a portlet application.start(new ApplicationStartEvent(null, - applicationProperties, context, isProductionMode())); + getDeploymentConfiguration().getInitParameters(), + context, isProductionMode())); } } @@ -995,11 +912,6 @@ public abstract class AbstractApplicationPortlet extends GenericPortlet } } - protected ClassLoader getClassLoader() throws PortletException { - // TODO Add support for custom class loader - return getClass().getClassLoader(); - } - /** * Get system messages from the current application class * @@ -1031,16 +943,16 @@ public abstract class AbstractApplicationPortlet extends GenericPortlet return Application.getSystemMessages(); } - private void handleServiceException(PortletRequest request, - PortletResponse response, Application application, Throwable e) - throws IOException, PortletException { + private void handleServiceException(WrappedPortletRequest request, + WrappedPortletResponse response, Application application, + Throwable e) throws IOException, PortletException { // TODO Check that this error handler is working when running inside a // portlet // if this was an UIDL request, response UIDL back to client if (getRequestType(request) == RequestType.UIDL) { Application.SystemMessages ci = getSystemMessages(); - criticalNotification(request, (ResourceResponse) response, + criticalNotification(request, response, ci.getInternalErrorCaption(), ci.getInternalErrorMessage(), null, ci.getInternalErrorURL()); if (application != null) { @@ -1065,6 +977,7 @@ public abstract class AbstractApplicationPortlet extends GenericPortlet this.throwable = throwable; } + @Override public Throwable getThrowable() { return throwable; } @@ -1093,9 +1006,9 @@ public abstract class AbstractApplicationPortlet extends GenericPortlet * @throws IOException * if the writing failed due to input/output error. */ - void criticalNotification(PortletRequest request, MimeResponse response, - String caption, String message, String details, String url) - throws IOException { + void criticalNotification(WrappedPortletRequest request, + WrappedPortletResponse response, String caption, String message, + String details, String url) throws IOException { // clients JS app is still running, but server application either // no longer exists or it might fail to perform reasonably. @@ -1121,7 +1034,7 @@ public abstract class AbstractApplicationPortlet extends GenericPortlet // Set the response type response.setContentType("application/json; charset=UTF-8"); - final OutputStream out = response.getPortletOutputStream(); + final OutputStream out = response.getOutputStream(); final PrintWriter outWriter = new PrintWriter(new BufferedWriter( new OutputStreamWriter(out, "UTF-8"))); outWriter.print("for(;;);[{\"changes\":[], \"meta\" : {" diff --git a/src/com/vaadin/terminal/gwt/server/AbstractApplicationServlet.java b/src/com/vaadin/terminal/gwt/server/AbstractApplicationServlet.java index f7e46a7ca9..a0e807801e 100644 --- a/src/com/vaadin/terminal/gwt/server/AbstractApplicationServlet.java +++ b/src/com/vaadin/terminal/gwt/server/AbstractApplicationServlet.java @@ -10,7 +10,6 @@ import java.io.OutputStream; import java.io.OutputStreamWriter; import java.io.PrintWriter; import java.io.Serializable; -import java.lang.reflect.Constructor; import java.lang.reflect.InvocationTargetException; import java.lang.reflect.Method; import java.net.MalformedURLException; @@ -74,6 +73,7 @@ public abstract class AbstractApplicationServlet extends HttpServlet implements this.servlet = servlet; } + @Override public void criticalNotification(WrappedRequest request, WrappedResponse response, String cap, String msg, String details, String outOfSyncURL) throws IOException { @@ -87,16 +87,16 @@ public abstract class AbstractApplicationServlet extends HttpServlet implements // TODO Move some (all?) of the constants to a separate interface (shared // with portlet) - private Properties applicationProperties; - private boolean productionMode = false; private final String resourcePath = null; private int resourceCacheTime = 3600; - private DeploymentConfiguration deploymentConfiguration = new DeploymentConfiguration() { + private DeploymentConfiguration deploymentConfiguration = new AbstractDeploymentConfiguration( + getClass()) { + @Override public String getStaticFileLocation(WrappedRequest request) { HttpServletRequest servletRequest = WrappedHttpServletRequest .cast(request); @@ -104,38 +104,30 @@ public abstract class AbstractApplicationServlet extends HttpServlet implements .getStaticFilesLocation(servletRequest); } + @Override public String getConfiguredWidgetset(WrappedRequest request) { return getApplicationOrSystemProperty( AbstractApplicationServlet.PARAMETER_WIDGETSET, AbstractApplicationServlet.DEFAULT_WIDGETSET); } + @Override public String getConfiguredTheme(WrappedRequest request) { // Use the default return AbstractApplicationServlet.getDefaultTheme(); } - public String getApplicationOrSystemProperty(String propertyName, - String defaultValue) { - return AbstractApplicationServlet.this - .getApplicationOrSystemProperty(propertyName, defaultValue); - } - + @Override public boolean isStandalone(WrappedRequest request) { return true; } - public ClassLoader getClassLoader() { - try { - return AbstractApplicationServlet.this.getClassLoader(); - } catch (ServletException e) { - throw new RuntimeException(e); - } + @Override + public String getMimeType(String resourceName) { + return getServletContext().getMimeType(resourceName); } }; - static final String UPLOAD_URL_PREFIX = "APP/UPLOAD/"; - /** * Called by the servlet container to indicate to a servlet that the servlet * is being placed into service. @@ -148,11 +140,11 @@ public abstract class AbstractApplicationServlet extends HttpServlet implements * servlet's normal operation. */ @Override - @SuppressWarnings("unchecked") public void init(javax.servlet.ServletConfig servletConfig) throws javax.servlet.ServletException { super.init(servletConfig); - applicationProperties = new Properties(); + Properties applicationProperties = getDeploymentConfiguration() + .getInitParameters(); // Read default parameters from server.xml final ServletContext context = servletConfig.getServletContext(); @@ -177,7 +169,7 @@ public abstract class AbstractApplicationServlet extends HttpServlet implements } private void checkCrossSiteProtection() { - if (getApplicationOrSystemProperty( + if (getDeploymentConfiguration().getApplicationOrSystemProperty( SERVLET_PARAMETER_DISABLE_XSRF_PROTECTION, "false").equals( "true")) { /* @@ -191,8 +183,8 @@ public abstract class AbstractApplicationServlet extends HttpServlet implements private void checkProductionMode() { // Check if the application is in production mode. // We are in production mode if productionMode=true - if (getApplicationOrSystemProperty(SERVLET_PARAMETER_PRODUCTION_MODE, - "false").equals("true")) { + if (getDeploymentConfiguration().getApplicationOrSystemProperty( + SERVLET_PARAMETER_PRODUCTION_MODE, "false").equals("true")) { productionMode = true; } @@ -206,8 +198,9 @@ public abstract class AbstractApplicationServlet extends HttpServlet implements private void checkResourceCacheTime() { // Check if the browser caching time has been set in web.xml try { - String rct = getApplicationOrSystemProperty( - SERVLET_PARAMETER_RESOURCE_CACHE_TIME, "3600"); + String rct = getDeploymentConfiguration() + .getApplicationOrSystemProperty( + SERVLET_PARAMETER_RESOURCE_CACHE_TIME, "3600"); resourceCacheTime = Integer.parseInt(rct); } catch (NumberFormatException nfe) { // Default is 1h @@ -217,85 +210,6 @@ public abstract class AbstractApplicationServlet extends HttpServlet implements } /** - * Gets an application property value. - * - * @param parameterName - * the Name or the parameter. - * @return String value or null if not found - */ - protected String getApplicationProperty(String parameterName) { - - String val = applicationProperties.getProperty(parameterName); - if (val != null) { - return val; - } - - // Try lower case application properties for backward compatibility with - // 3.0.2 and earlier - val = applicationProperties.getProperty(parameterName.toLowerCase()); - - return val; - } - - /** - * Gets an system property value. - * - * @param parameterName - * the Name or the parameter. - * @return String value or null if not found - */ - protected String getSystemProperty(String parameterName) { - String val = null; - - String pkgName; - final Package pkg = getClass().getPackage(); - if (pkg != null) { - pkgName = pkg.getName(); - } else { - final String className = getClass().getName(); - pkgName = new String(className.toCharArray(), 0, - className.lastIndexOf('.')); - } - val = System.getProperty(pkgName + "." + parameterName); - if (val != null) { - return val; - } - - // Try lowercased system properties - val = System.getProperty(pkgName + "." + parameterName.toLowerCase()); - return val; - } - - /** - * Gets an application or system property value. - * - * @param parameterName - * the Name or the parameter. - * @param defaultValue - * the Default to be used. - * @return String value or default if not found - */ - String getApplicationOrSystemProperty(String parameterName, - String defaultValue) { - - String val = null; - - // Try application properties - val = getApplicationProperty(parameterName); - if (val != null) { - return val; - } - - // Try system properties - val = getSystemProperty(parameterName); - if (val != null) { - return val; - } - - return defaultValue; - } - - /** * Returns true if the servlet is running in production mode. Production * mode disables all debug facilities. * @@ -396,6 +310,11 @@ public abstract class AbstractApplicationServlet extends HttpServlet implements CommunicationManager applicationManager = webApplicationContext .getApplicationManager(application, this); + if (requestType == RequestType.CONNECTOR_RESOURCE) { + applicationManager.serveConnectorResource(request, response); + return; + } + /* Update browser information from the request */ webApplicationContext.getBrowser().updateRequestDetails(request); @@ -421,11 +340,9 @@ public abstract class AbstractApplicationServlet extends HttpServlet implements /* Handle the request */ if (requestType == RequestType.FILE_UPLOAD) { - Root root = application.getRootForRequest(request); - if (root == null) { - throw new ServletException(ERROR_NO_ROOT_FOUND); - } - applicationManager.handleFileUpload(root, request, response); + // Root is resolved in communication manager + applicationManager.handleFileUpload(application, request, + response); return; } else if (requestType == RequestType.UIDL) { Root root = application.getRootForRequest(request); @@ -536,8 +453,8 @@ public abstract class AbstractApplicationServlet extends HttpServlet implements * @throws IOException */ private boolean ensureCookiesEnabled(RequestType requestType, - HttpServletRequest request, HttpServletResponse response) - throws IOException { + WrappedHttpServletRequest request, + WrappedHttpServletResponse response) throws IOException { if (requestType == RequestType.UIDL && !isRepaintAll(request)) { // In all other but the first UIDL request a cookie should be // returned by the browser. @@ -554,30 +471,6 @@ public abstract class AbstractApplicationServlet extends HttpServlet implements return true; } - protected ClassLoader getClassLoader() throws ServletException { - // Gets custom class loader - final String classLoaderName = getApplicationOrSystemProperty( - "ClassLoader", null); - ClassLoader classLoader; - if (classLoaderName == null) { - classLoader = getClass().getClassLoader(); - } else { - try { - final Class<?> classLoaderClass = getClass().getClassLoader() - .loadClass(classLoaderName); - final Constructor<?> c = classLoaderClass - .getConstructor(new Class[] { ClassLoader.class }); - classLoader = (ClassLoader) c - .newInstance(new Object[] { getClass().getClassLoader() }); - } catch (final Exception e) { - throw new ServletException( - "Could not find specified class loader: " - + classLoaderName, e); - } - } - return classLoader; - } - /** * Send a notification to client's application. Used to notify client of * critical errors, session expiration and more. Server has no knowledge of @@ -602,11 +495,11 @@ public abstract class AbstractApplicationServlet extends HttpServlet implements * @throws IOException * if the writing failed due to input/output error. */ - protected void criticalNotification(HttpServletRequest request, + protected void criticalNotification(WrappedHttpServletRequest request, HttpServletResponse response, String caption, String message, String details, String url) throws IOException { - if (isUIDLRequest(request)) { + if (ServletPortletHelper.isUIDLRequest(request)) { if (caption != null) { caption = "\"" + JsonPaintTarget.escapeJSON(caption) + "\""; @@ -828,9 +721,9 @@ public abstract class AbstractApplicationServlet extends HttpServlet implements return newApplication; } - private void handleServiceException(HttpServletRequest request, - HttpServletResponse response, Application application, Throwable e) - throws IOException, ServletException { + private void handleServiceException(WrappedHttpServletRequest request, + WrappedHttpServletResponse response, Application application, + Throwable e) throws IOException, ServletException { // if this was an UIDL request, response UIDL back to client if (getRequestType(request) == RequestType.UIDL) { Application.SystemMessages ci = getSystemMessages(); @@ -883,8 +776,9 @@ public abstract class AbstractApplicationServlet extends HttpServlet implements return DEFAULT_THEME_NAME; } - void handleServiceSessionExpired(HttpServletRequest request, - HttpServletResponse response) throws IOException, ServletException { + void handleServiceSessionExpired(WrappedHttpServletRequest request, + WrappedHttpServletResponse response) throws IOException, + ServletException { if (isOnUnloadRequest(request)) { /* @@ -924,8 +818,10 @@ public abstract class AbstractApplicationServlet extends HttpServlet implements } - private void handleServiceSecurityException(HttpServletRequest request, - HttpServletResponse response) throws IOException, ServletException { + private void handleServiceSecurityException( + WrappedHttpServletRequest request, + WrappedHttpServletResponse response) throws IOException, + ServletException { if (isOnUnloadRequest(request)) { /* * Request was an unload request (e.g. window close event) and the @@ -991,8 +887,8 @@ public abstract class AbstractApplicationServlet extends HttpServlet implements Locale locale = request.getLocale(); application.setLocale(locale); application.start(new ApplicationStartEvent(applicationUrl, - applicationProperties, webApplicationContext, - isProductionMode())); + getDeploymentConfiguration().getInitParameters(), + webApplicationContext, isProductionMode())); } } @@ -1054,7 +950,8 @@ public abstract class AbstractApplicationServlet extends HttpServlet implements // strip leading "/" otherwise stream from JAR wont work filename = filename.substring(1); - resourceUrl = getClassLoader().getResource(filename); + resourceUrl = getDeploymentConfiguration().getClassLoader() + .getResource(filename); if (resourceUrl == null) { // cannot serve requested file @@ -1250,22 +1147,22 @@ public abstract class AbstractApplicationServlet extends HttpServlet implements } protected enum RequestType { - FILE_UPLOAD, BROWSER_DETAILS, UIDL, OTHER, STATIC_FILE, APPLICATION_RESOURCE; + FILE_UPLOAD, BROWSER_DETAILS, UIDL, OTHER, STATIC_FILE, APPLICATION_RESOURCE, CONNECTOR_RESOURCE; } - protected RequestType getRequestType(HttpServletRequest request) { - if (isFileUploadRequest(request)) { + protected RequestType getRequestType(WrappedHttpServletRequest request) { + if (ServletPortletHelper.isFileUploadRequest(request)) { return RequestType.FILE_UPLOAD; + } else if (ServletPortletHelper.isConnectorResourceRequest(request)) { + return RequestType.CONNECTOR_RESOURCE; } else if (isBrowserDetailsRequest(request)) { return RequestType.BROWSER_DETAILS; - } else if (isUIDLRequest(request)) { + } else if (ServletPortletHelper.isUIDLRequest(request)) { return RequestType.UIDL; } else if (isStaticResourceRequest(request)) { return RequestType.STATIC_FILE; - } else if (isApplicationRequest(request)) { + } else if (ServletPortletHelper.isApplicationResourceRequest(request)) { return RequestType.APPLICATION_RESOURCE; - } else if (request.getHeader("FileId") != null) { - return RequestType.FILE_UPLOAD; } return RequestType.OTHER; @@ -1276,14 +1173,6 @@ public abstract class AbstractApplicationServlet extends HttpServlet implements && request.getParameter("browserDetails") != null; } - private boolean isApplicationRequest(HttpServletRequest request) { - String path = getRequestPathInfo(request); - if (path != null && path.startsWith("/APP/")) { - return true; - } - return false; - } - private boolean isStaticResourceRequest(HttpServletRequest request) { String pathInfo = request.getPathInfo(); if (pathInfo == null || pathInfo.length() <= 10) { @@ -1301,37 +1190,6 @@ public abstract class AbstractApplicationServlet extends HttpServlet implements return false; } - private boolean isUIDLRequest(HttpServletRequest request) { - String pathInfo = getRequestPathInfo(request); - - if (pathInfo == null) { - return false; - } - - String compare = AJAX_UIDL_URI; - - if (pathInfo.startsWith(compare + "/") || pathInfo.endsWith(compare)) { - return true; - } - - return false; - } - - private boolean isFileUploadRequest(HttpServletRequest request) { - String pathInfo = getRequestPathInfo(request); - - if (pathInfo == null) { - return false; - } - - if (pathInfo.startsWith("/" + UPLOAD_URL_PREFIX)) { - return true; - } - - return false; - - } - private boolean isOnUnloadRequest(HttpServletRequest request) { return request.getParameter(ApplicationConnection.PARAM_UNLOADBURST) != null; } @@ -1410,8 +1268,9 @@ public abstract class AbstractApplicationServlet extends HttpServlet implements HttpServletRequest request) { String staticFileLocation; // if property is defined in configurations, use that - staticFileLocation = getApplicationOrSystemProperty( - PARAMETER_VAADIN_RESOURCES, null); + staticFileLocation = getDeploymentConfiguration() + .getApplicationOrSystemProperty(PARAMETER_VAADIN_RESOURCES, + null); if (staticFileLocation != null) { return staticFileLocation; } @@ -1682,6 +1541,7 @@ public abstract class AbstractApplicationServlet extends HttpServlet implements this.throwable = throwable; } + @Override public Throwable getThrowable() { return throwable; } diff --git a/src/com/vaadin/terminal/gwt/server/AbstractCommunicationManager.java b/src/com/vaadin/terminal/gwt/server/AbstractCommunicationManager.java index 7cad8e3a33..ba1b3cadb6 100644 --- a/src/com/vaadin/terminal/gwt/server/AbstractCommunicationManager.java +++ b/src/com/vaadin/terminal/gwt/server/AbstractCommunicationManager.java @@ -18,6 +18,8 @@ import java.io.StringWriter; import java.lang.reflect.InvocationTargetException; import java.lang.reflect.Method; import java.lang.reflect.Type; +import java.net.URI; +import java.net.URISyntaxException; import java.security.GeneralSecurityException; import java.text.CharacterIterator; import java.text.DateFormat; @@ -42,13 +44,21 @@ import java.util.UUID; import java.util.logging.Level; import java.util.logging.Logger; +import javax.servlet.http.HttpServletResponse; + import com.vaadin.Application; import com.vaadin.Application.SystemMessages; import com.vaadin.RootRequiresMoreInformationException; import com.vaadin.Version; +import com.vaadin.annotations.JavaScript; +import com.vaadin.annotations.StyleSheet; import com.vaadin.external.json.JSONArray; import com.vaadin.external.json.JSONException; import com.vaadin.external.json.JSONObject; +import com.vaadin.shared.Connector; +import com.vaadin.shared.communication.MethodInvocation; +import com.vaadin.shared.communication.SharedState; +import com.vaadin.shared.communication.UidlValue; import com.vaadin.terminal.AbstractClientConnector; import com.vaadin.terminal.CombinedRequest; import com.vaadin.terminal.LegacyPaint; @@ -65,10 +75,6 @@ import com.vaadin.terminal.VariableOwner; import com.vaadin.terminal.WrappedRequest; import com.vaadin.terminal.WrappedResponse; import com.vaadin.terminal.gwt.client.ApplicationConnection; -import com.vaadin.terminal.gwt.client.Connector; -import com.vaadin.terminal.gwt.client.communication.MethodInvocation; -import com.vaadin.terminal.gwt.client.communication.SharedState; -import com.vaadin.terminal.gwt.client.communication.UidlValue; import com.vaadin.terminal.gwt.server.BootstrapHandler.BootstrapContext; import com.vaadin.terminal.gwt.server.ComponentSizeValidator.InvalidLayout; import com.vaadin.terminal.gwt.server.RpcManager.RpcInvocationException; @@ -154,6 +160,12 @@ public abstract class AbstractCommunicationManager implements Serializable { private Connector highlightedConnector; + private Map<String, Class<?>> connectorResourceContexts = new HashMap<String, Class<?>>(); + + private Map<String, Map<String, StreamVariable>> pidToNameToStreamVariable; + + private Map<StreamVariable, String> streamVariableToSeckey; + /** * TODO New constructor - document me! * @@ -204,7 +216,7 @@ public abstract class AbstractCommunicationManager implements Serializable { */ protected void doHandleSimpleMultipartFileUpload(WrappedRequest request, WrappedResponse response, StreamVariable streamVariable, - String variableName, Connector owner, String boundary) + String variableName, ClientConnector owner, String boundary) throws IOException { // multipart parsing, supports only one file for request, but that is // fine for our current terminal @@ -267,14 +279,16 @@ public abstract class AbstractCommunicationManager implements Serializable { final String mimeType = rawMimeType; try { - /* - * safe cast as in GWT terminal all variable owners are expected to - * be components. - */ - Component component = (Component) owner; - if (component.isReadOnly()) { + // TODO Shouldn't this check connectorEnabled? + if (owner == null) { throw new UploadException( - "Warning: file upload ignored because the componente was read-only"); + "File upload ignored because the connector for the stream variable was not found"); + } + if (owner instanceof Component) { + if (((Component) owner).isReadOnly()) { + throw new UploadException( + "Warning: file upload ignored because the componente was read-only"); + } } boolean forgetVariable = streamToReceiver(simpleMultiPartReader, streamVariable, filename, mimeType, contentLength); @@ -303,7 +317,7 @@ public abstract class AbstractCommunicationManager implements Serializable { */ protected void doHandleXhrFilePost(WrappedRequest request, WrappedResponse response, StreamVariable streamVariable, - String variableName, Connector owner, int contentLength) + String variableName, ClientConnector owner, int contentLength) throws IOException { // These are unknown in filexhr ATM, maybe add to Accept header that @@ -497,10 +511,11 @@ public abstract class AbstractCommunicationManager implements Serializable { * found * @throws IOException * @throws InvalidUIDLSecurityKeyException + * @throws JSONException */ public void handleUidlRequest(WrappedRequest request, WrappedResponse response, Callback callback, Root root) - throws IOException, InvalidUIDLSecurityKeyException { + throws IOException, InvalidUIDLSecurityKeyException, JSONException { checkWidgetsetVersion(request); requestThemeName = request.getParameter("theme"); @@ -623,6 +638,23 @@ public abstract class AbstractCommunicationManager implements Serializable { // Remove connectors that have been detached from the application during // handling of the request root.getConnectorTracker().cleanConnectorMap(); + + if (pidToNameToStreamVariable != null) { + Iterator<String> iterator = pidToNameToStreamVariable.keySet() + .iterator(); + while (iterator.hasNext()) { + String connectorId = iterator.next(); + if (root.getConnectorTracker().getConnector(connectorId) == null) { + // Owner is no longer attached to the application + Map<String, StreamVariable> removed = pidToNameToStreamVariable + .get(connectorId); + for (String key : removed.keySet()) { + streamVariableToSeckey.remove(removed.get(key)); + } + iterator.remove(); + } + } + } } protected void highlightConnector(Connector highlightedConnector) { @@ -696,11 +728,12 @@ public abstract class AbstractCommunicationManager implements Serializable { * @param analyzeLayouts * @throws PaintException * @throws IOException + * @throws JSONException */ private void paintAfterVariableChanges(WrappedRequest request, WrappedResponse response, Callback callback, boolean repaintAll, final PrintWriter outWriter, Root root, boolean analyzeLayouts) - throws PaintException, IOException { + throws PaintException, IOException, JSONException { // Removes application if it has stopped during variable changes if (!application.isRunning()) { @@ -764,7 +797,7 @@ public abstract class AbstractCommunicationManager implements Serializable { @SuppressWarnings("unchecked") public void writeUidlResponse(WrappedRequest request, boolean repaintAll, final PrintWriter outWriter, Root root, boolean analyzeLayouts) - throws PaintException { + throws PaintException, JSONException { ArrayList<ClientConnector> dirtyVisibleConnectors = new ArrayList<ClientConnector>(); Application application = root.getApplication(); // Paints components @@ -1095,10 +1128,14 @@ public abstract class AbstractCommunicationManager implements Serializable { boolean typeMappingsOpen = false; ClientCache clientCache = getClientCache(root); + List<Class<? extends ClientConnector>> newConnectorTypes = new ArrayList<Class<? extends ClientConnector>>(); + for (Class<? extends ClientConnector> class1 : usedClientConnectors) { if (clientCache.cache(class1)) { // client does not know the mapping key for this type, send // mapping to client + newConnectorTypes.add(class1); + if (!typeMappingsOpen) { typeMappingsOpen = true; outWriter.print(", \"typeMappings\" : { "); @@ -1142,6 +1179,58 @@ public abstract class AbstractCommunicationManager implements Serializable { } } + /* + * Ensure super classes come before sub classes to get script dependency + * order right. Sub class @JavaScript might assume that @JavaScript + * defined by super class is already loaded. + */ + Collections.sort(newConnectorTypes, new Comparator<Class<?>>() { + @Override + public int compare(Class<?> o1, Class<?> o2) { + // TODO optimize using Class.isAssignableFrom? + return hierarchyDepth(o1) - hierarchyDepth(o2); + } + + private int hierarchyDepth(Class<?> type) { + if (type == Object.class) { + return 0; + } else { + return hierarchyDepth(type.getSuperclass()) + 1; + } + } + }); + + List<String> scriptDependencies = new ArrayList<String>(); + List<String> styleDependencies = new ArrayList<String>(); + + for (Class<? extends ClientConnector> class1 : newConnectorTypes) { + JavaScript jsAnnotation = class1.getAnnotation(JavaScript.class); + if (jsAnnotation != null) { + for (String resource : jsAnnotation.value()) { + scriptDependencies.add(registerResource(resource, class1)); + } + } + + StyleSheet styleAnnotation = class1.getAnnotation(StyleSheet.class); + if (styleAnnotation != null) { + for (String resource : styleAnnotation.value()) { + styleDependencies.add(registerResource(resource, class1)); + } + } + } + + // Include script dependencies in output if there are any + if (!scriptDependencies.isEmpty()) { + outWriter.print(", \"scriptDependencies\": " + + new JSONArray(scriptDependencies).toString()); + } + + // Include style dependencies in output if there are any + if (!styleDependencies.isEmpty()) { + outWriter.print(", \"styleDependencies\": " + + new JSONArray(styleDependencies).toString()); + } + // add any pending locale definitions requested by the client printLocaleDeclarations(outWriter); @@ -1153,6 +1242,54 @@ public abstract class AbstractCommunicationManager implements Serializable { } /** + * Resolves a resource URI, registering the URI with this + * {@code AbstractCommunicationManager} if needed and returns a fully + * qualified URI. + */ + private String registerResource(String resourceUri, Class<?> context) { + try { + URI uri = new URI(resourceUri); + String protocol = uri.getScheme(); + + if ("connector".equals(protocol)) { + // Strip initial slash + String resourceName = uri.getPath().substring(1); + return registerConnectorResource(resourceName, context); + } + + if (protocol != null || uri.getHost() != null) { + return resourceUri; + } + + // Bare path interpreted as connector resource + return registerConnectorResource(resourceUri, context); + } catch (URISyntaxException e) { + getLogger().log(Level.WARNING, + "Could not parse resource url " + resourceUri, e); + return resourceUri; + } + } + + private String registerConnectorResource(String name, Class<?> context) { + synchronized (connectorResourceContexts) { + // Add to map of names accepted by serveConnectorResource + if (connectorResourceContexts.containsKey(name)) { + Class<?> oldContext = connectorResourceContexts.get(name); + if (oldContext != context) { + getLogger().warning( + "Resource " + name + " defined by both " + context + + " and " + oldContext + ". Resource from " + + oldContext + " will be used."); + } + } else { + connectorResourceContexts.put(name, context); + } + } + + return ApplicationConnection.CONNECTOR_PROTOCOL_PREFIX + "/" + name; + } + + /** * Adds the performance timing data (used by TestBench 3) to the UIDL * response. */ @@ -1194,6 +1331,7 @@ public abstract class AbstractCommunicationManager implements Serializable { // before children start calling e.g. updateCaption Collections.sort(paintables, new Comparator<Component>() { + @Override public int compare(Component c1, Component c2) { int depth1 = 0; while (c1.getParent() != null) { @@ -1280,14 +1418,17 @@ public abstract class AbstractCommunicationManager implements Serializable { private static class NullIterator<E> implements Iterator<E> { + @Override public boolean hasNext() { return false; } + @Override public E next() { return null; } + @Override public void remove() { } @@ -1380,7 +1521,7 @@ public abstract class AbstractCommunicationManager implements Serializable { private boolean handleVariables(WrappedRequest request, WrappedResponse response, Callback callback, Application application2, Root root) throws IOException, - InvalidUIDLSecurityKeyException { + InvalidUIDLSecurityKeyException, JSONException { boolean success = true; String changes = getRequestPayload(request); @@ -1761,6 +1902,7 @@ public abstract class AbstractCommunicationManager implements Serializable { this.throwable = throwable; } + @Override public Throwable getThrowable() { return throwable; } @@ -2162,10 +2304,57 @@ public abstract class AbstractCommunicationManager implements Serializable { } - abstract String getStreamVariableTargetUrl(Connector owner, String name, - StreamVariable value); + public String getStreamVariableTargetUrl(ClientConnector owner, + String name, StreamVariable value) { + /* + * We will use the same APP/* URI space as ApplicationResources but + * prefix url with UPLOAD + * + * eg. APP/UPLOAD/[ROOTID]/[PID]/[NAME]/[SECKEY] + * + * SECKEY is created on each paint to make URL's unpredictable (to + * prevent CSRF attacks). + * + * NAME and PID from URI forms a key to fetch StreamVariable when + * handling post + */ + String paintableId = owner.getConnectorId(); + int rootId = owner.getRoot().getRootId(); + String key = rootId + "/" + paintableId + "/" + name; + + if (pidToNameToStreamVariable == null) { + pidToNameToStreamVariable = new HashMap<String, Map<String, StreamVariable>>(); + } + Map<String, StreamVariable> nameToStreamVariable = pidToNameToStreamVariable + .get(paintableId); + if (nameToStreamVariable == null) { + nameToStreamVariable = new HashMap<String, StreamVariable>(); + pidToNameToStreamVariable.put(paintableId, nameToStreamVariable); + } + nameToStreamVariable.put(name, value); + + if (streamVariableToSeckey == null) { + streamVariableToSeckey = new HashMap<StreamVariable, String>(); + } + String seckey = streamVariableToSeckey.get(value); + if (seckey == null) { + seckey = UUID.randomUUID().toString(); + streamVariableToSeckey.put(value, seckey); + } + + return ApplicationConnection.APP_PROTOCOL_PREFIX + + ServletPortletHelper.UPLOAD_URL_PREFIX + key + "/" + seckey; + + } - abstract protected void cleanStreamVariable(Connector owner, String name); + public void cleanStreamVariable(ClientConnector owner, String name) { + Map<String, StreamVariable> nameToStreamVar = pidToNameToStreamVariable + .get(owner.getConnectorId()); + nameToStreamVar.remove(name); + if (nameToStreamVar.isEmpty()) { + pidToNameToStreamVariable.remove(owner.getConnectorId()); + } + } /** * Gets the bootstrap handler that should be used for generating the pages @@ -2256,9 +2445,11 @@ public abstract class AbstractCommunicationManager implements Serializable { * @return a string with the initial UIDL message * @throws PaintException * if an exception occurs while painting + * @throws JSONException + * if an exception occurs while encoding output */ protected String getInitialUIDL(WrappedRequest request, Root root) - throws PaintException { + throws PaintException, JSONException { // TODO maybe unify writeUidlResponse()? StringWriter sWriter = new StringWriter(); PrintWriter pWriter = new PrintWriter(sWriter); @@ -2274,6 +2465,176 @@ public abstract class AbstractCommunicationManager implements Serializable { } /** + * Serve a connector resource from the classpath if the resource has + * previously been registered by calling + * {@link #registerResource(String, Class)}. Sending arbitrary files from + * the classpath is prevented by only accepting resource names that have + * explicitly been registered. Resources can currently only be registered by + * including a {@link JavaScript} or {@link StyleSheet} annotation on a + * Connector class. + * + * @param request + * @param response + * + * @throws IOException + */ + public void serveConnectorResource(WrappedRequest request, + WrappedResponse response) throws IOException { + + String pathInfo = request.getRequestPathInfo(); + // + 2 to also remove beginning and ending slashes + String resourceName = pathInfo + .substring(ApplicationConnection.CONNECTOR_RESOURCE_PREFIX + .length() + 2); + + final String mimetype = response.getDeploymentConfiguration() + .getMimeType(resourceName); + + // Security check: avoid accidentally serving from the root of the + // classpath instead of relative to the context class + if (resourceName.startsWith("/")) { + getLogger().warning( + "Connector resource request starting with / rejected: " + + resourceName); + response.sendError(HttpServletResponse.SC_NOT_FOUND, resourceName); + return; + } + + // Check that the resource name has been registered + Class<?> context; + synchronized (connectorResourceContexts) { + context = connectorResourceContexts.get(resourceName); + } + + // Security check: don't serve resource if the name hasn't been + // registered in the map + if (context == null) { + getLogger().warning( + "Connector resource request for unknown resource rejected: " + + resourceName); + response.sendError(HttpServletResponse.SC_NOT_FOUND, resourceName); + return; + } + + // Resolve file relative to the location of the context class + InputStream in = context.getResourceAsStream(resourceName); + if (in == null) { + getLogger().warning( + resourceName + " defined by " + context.getName() + + " not found. Verify that the file " + + context.getPackage().getName().replace('.', '/') + + '/' + resourceName + + " is available on the classpath."); + response.sendError(HttpServletResponse.SC_NOT_FOUND, resourceName); + return; + } + + // TODO Check and set cache headers + + OutputStream out = null; + try { + if (mimetype != null) { + response.setContentType(mimetype); + } + + out = response.getOutputStream(); + + final byte[] buffer = new byte[Constants.DEFAULT_BUFFER_SIZE]; + + int bytesRead = 0; + while ((bytesRead = in.read(buffer)) > 0) { + out.write(buffer, 0, bytesRead); + } + out.flush(); + } finally { + try { + in.close(); + } catch (Exception e) { + // Do nothing + } + if (out != null) { + try { + out.close(); + } catch (Exception e) { + // Do nothing + } + } + } + } + + /** + * Handles file upload request submitted via Upload component. + * + * @param root + * The root for this request + * + * @see #getStreamVariableTargetUrl(ReceiverOwner, String, StreamVariable) + * + * @param request + * @param response + * @throws IOException + * @throws InvalidUIDLSecurityKeyException + */ + public void handleFileUpload(Application application, + WrappedRequest request, WrappedResponse response) + throws IOException, InvalidUIDLSecurityKeyException { + + /* + * URI pattern: APP/UPLOAD/[ROOTID]/[PID]/[NAME]/[SECKEY] See + * #createReceiverUrl + */ + + String pathInfo = request.getRequestPathInfo(); + // strip away part until the data we are interested starts + int startOfData = pathInfo + .indexOf(ServletPortletHelper.UPLOAD_URL_PREFIX) + + ServletPortletHelper.UPLOAD_URL_PREFIX.length(); + String uppUri = pathInfo.substring(startOfData); + String[] parts = uppUri.split("/", 4); // 0= rootid, 1 = cid, 2= name, 3 + // = sec key + String rootId = parts[0]; + String connectorId = parts[1]; + String variableName = parts[2]; + Root root = application.getRootById(Integer.parseInt(rootId)); + Root.setCurrent(root); + + StreamVariable streamVariable = getStreamVariable(connectorId, + variableName); + String secKey = streamVariableToSeckey.get(streamVariable); + if (secKey.equals(parts[3])) { + + ClientConnector source = getConnector(root, connectorId); + String contentType = request.getContentType(); + if (contentType.contains("boundary")) { + // Multipart requests contain boundary string + doHandleSimpleMultipartFileUpload(request, response, + streamVariable, variableName, source, + contentType.split("boundary=")[1]); + } else { + // if boundary string does not exist, the posted file is from + // XHR2.post(File) + doHandleXhrFilePost(request, response, streamVariable, + variableName, source, request.getContentLength()); + } + } else { + throw new InvalidUIDLSecurityKeyException( + "Security key in upload post did not match!"); + } + + } + + public StreamVariable getStreamVariable(String connectorId, + String variableName) { + Map<String, StreamVariable> map = pidToNameToStreamVariable + .get(connectorId); + if (map == null) { + return null; + } + StreamVariable streamVariable = map.get(variableName); + return streamVariable; + } + + /** * Stream that extracts content from another stream until the boundary * string is encountered. * diff --git a/src/com/vaadin/terminal/gwt/server/AbstractDeploymentConfiguration.java b/src/com/vaadin/terminal/gwt/server/AbstractDeploymentConfiguration.java new file mode 100644 index 0000000000..1ac090ad76 --- /dev/null +++ b/src/com/vaadin/terminal/gwt/server/AbstractDeploymentConfiguration.java @@ -0,0 +1,121 @@ +/* +@VaadinApache2LicenseForJavaFiles@ + */ + +package com.vaadin.terminal.gwt.server; + +import java.lang.reflect.Constructor; +import java.util.Properties; + +import com.vaadin.terminal.DeploymentConfiguration; + +public abstract class AbstractDeploymentConfiguration implements + DeploymentConfiguration { + + private final Class<?> systemPropertyBaseClass; + private final Properties applicationProperties = new Properties(); + + public AbstractDeploymentConfiguration(Class<?> systemPropertyBaseClass) { + this.systemPropertyBaseClass = systemPropertyBaseClass; + } + + @Override + public String getApplicationOrSystemProperty(String propertyName, + String defaultValue) { + + String val = null; + + // Try application properties + val = getApplicationProperty(propertyName); + if (val != null) { + return val; + } + + // Try system properties + val = getSystemProperty(propertyName); + if (val != null) { + return val; + } + + return defaultValue; + } + + /** + * Gets an system property value. + * + * @param parameterName + * the Name or the parameter. + * @return String value or null if not found + */ + protected String getSystemProperty(String parameterName) { + String val = null; + + String pkgName; + final Package pkg = systemPropertyBaseClass.getPackage(); + if (pkg != null) { + pkgName = pkg.getName(); + } else { + final String className = systemPropertyBaseClass.getName(); + pkgName = new String(className.toCharArray(), 0, + className.lastIndexOf('.')); + } + val = System.getProperty(pkgName + "." + parameterName); + if (val != null) { + return val; + } + + // Try lowercased system properties + val = System.getProperty(pkgName + "." + parameterName.toLowerCase()); + return val; + } + + @Override + public ClassLoader getClassLoader() { + final String classLoaderName = getApplicationOrSystemProperty( + "ClassLoader", null); + ClassLoader classLoader; + if (classLoaderName == null) { + classLoader = getClass().getClassLoader(); + } else { + try { + final Class<?> classLoaderClass = getClass().getClassLoader() + .loadClass(classLoaderName); + final Constructor<?> c = classLoaderClass + .getConstructor(new Class[] { ClassLoader.class }); + classLoader = (ClassLoader) c + .newInstance(new Object[] { getClass().getClassLoader() }); + } catch (final Exception e) { + throw new RuntimeException( + "Could not find specified class loader: " + + classLoaderName, e); + } + } + return classLoader; + } + + /** + * Gets an application property value. + * + * @param parameterName + * the Name or the parameter. + * @return String value or null if not found + */ + protected String getApplicationProperty(String parameterName) { + + String val = applicationProperties.getProperty(parameterName); + if (val != null) { + return val; + } + + // Try lower case application properties for backward compatibility with + // 3.0.2 and earlier + val = applicationProperties.getProperty(parameterName.toLowerCase()); + + return val; + } + + @Override + public Properties getInitParameters() { + return applicationProperties; + } +} diff --git a/src/com/vaadin/terminal/gwt/server/AbstractStreamingEvent.java b/src/com/vaadin/terminal/gwt/server/AbstractStreamingEvent.java index 43b175cc36..d3474e736e 100644 --- a/src/com/vaadin/terminal/gwt/server/AbstractStreamingEvent.java +++ b/src/com/vaadin/terminal/gwt/server/AbstractStreamingEvent.java @@ -15,10 +15,12 @@ abstract class AbstractStreamingEvent implements StreamingEvent { private final long contentLength; private final long bytesReceived; + @Override public final String getFileName() { return filename; } + @Override public final String getMimeType() { return type; } @@ -31,10 +33,12 @@ abstract class AbstractStreamingEvent implements StreamingEvent { this.bytesReceived = bytesReceived; } + @Override public final long getContentLength() { return contentLength; } + @Override public final long getBytesReceived() { return bytesReceived; } diff --git a/src/com/vaadin/terminal/gwt/server/AbstractWebApplicationContext.java b/src/com/vaadin/terminal/gwt/server/AbstractWebApplicationContext.java index bf4ea860a8..3a33621d10 100644 --- a/src/com/vaadin/terminal/gwt/server/AbstractWebApplicationContext.java +++ b/src/com/vaadin/terminal/gwt/server/AbstractWebApplicationContext.java @@ -24,6 +24,7 @@ import javax.servlet.http.HttpSessionBindingListener; import com.vaadin.Application; import com.vaadin.service.ApplicationContext; import com.vaadin.terminal.ApplicationResource; +import com.vaadin.terminal.gwt.client.ApplicationConnection; /** * Base class for web application contexts (including portlet contexts) that @@ -45,12 +46,14 @@ public abstract class AbstractWebApplicationContext implements private long lastRequestTime = -1; + @Override public void addTransactionListener(TransactionListener listener) { if (listener != null) { listeners.add(listener); } } + @Override public void removeTransactionListener(TransactionListener listener) { listeners.remove(listener); } @@ -119,6 +122,7 @@ public abstract class AbstractWebApplicationContext implements /** * @see javax.servlet.http.HttpSessionBindingListener#valueBound(HttpSessionBindingEvent) */ + @Override public void valueBound(HttpSessionBindingEvent arg0) { // We are not interested in bindings } @@ -126,6 +130,7 @@ public abstract class AbstractWebApplicationContext implements /** * @see javax.servlet.http.HttpSessionBindingListener#valueUnbound(HttpSessionBindingEvent) */ + @Override public void valueUnbound(HttpSessionBindingEvent event) { // If we are going to be unbound from the session, the session must be // closing @@ -160,6 +165,7 @@ public abstract class AbstractWebApplicationContext implements return browser; } + @Override public Collection<Application> getApplications() { return Collections.unmodifiableCollection(applications); } @@ -169,12 +175,14 @@ public abstract class AbstractWebApplicationContext implements applicationToAjaxAppMgrMap.remove(application); } + @Override public String generateApplicationResourceURL(ApplicationResource resource, String mapKey) { final String filename = resource.getFilename(); if (filename == null) { - return "app://APP/" + mapKey + "/"; + return ApplicationConnection.APP_PROTOCOL_PREFIX + + ApplicationConnection.APP_REQUEST_PATH + mapKey + "/"; } else { // #7738 At least Tomcat and JBoss refuses requests containing // encoded slashes or backslashes in URLs. Application resource URLs @@ -182,7 +190,9 @@ public abstract class AbstractWebApplicationContext implements // in the future. String encodedFileName = urlEncode(filename).replace("%2F", "/") .replace("%5C", "\\"); - return "app://APP/" + mapKey + "/" + encodedFileName; + return ApplicationConnection.APP_PROTOCOL_PREFIX + + ApplicationConnection.APP_REQUEST_PATH + mapKey + "/" + + encodedFileName; } } @@ -197,6 +207,7 @@ public abstract class AbstractWebApplicationContext implements } } + @Override public boolean isApplicationResourceURL(URL context, String relativeUri) { // If the relative uri is null, we are ready if (relativeUri == null) { @@ -214,6 +225,7 @@ public abstract class AbstractWebApplicationContext implements return (prefix.equals("APP")); } + @Override public String getURLKey(URL context, String relativeUri) { final int index = relativeUri.indexOf('/'); final int next = relativeUri.indexOf('/', index + 1); diff --git a/src/com/vaadin/terminal/gwt/server/ApplicationPortlet2.java b/src/com/vaadin/terminal/gwt/server/ApplicationPortlet2.java index 7a46a07e6c..788c48267e 100644 --- a/src/com/vaadin/terminal/gwt/server/ApplicationPortlet2.java +++ b/src/com/vaadin/terminal/gwt/server/ApplicationPortlet2.java @@ -23,10 +23,8 @@ public class ApplicationPortlet2 extends AbstractApplicationPortlet { public void init(PortletConfig config) throws PortletException { super.init(config); try { - applicationClass = ServletPortletHelper.getApplicationClass( - config.getInitParameter("application"), - config.getInitParameter(Application.ROOT_PARAMETER), - getClassLoader()); + applicationClass = ServletPortletHelper + .getApplicationClass(getDeploymentConfiguration()); } catch (ApplicationClassException e) { throw new PortletException(e); } diff --git a/src/com/vaadin/terminal/gwt/server/ApplicationResourceHandler.java b/src/com/vaadin/terminal/gwt/server/ApplicationResourceHandler.java index 7cf66d5fcf..42726c933e 100644 --- a/src/com/vaadin/terminal/gwt/server/ApplicationResourceHandler.java +++ b/src/com/vaadin/terminal/gwt/server/ApplicationResourceHandler.java @@ -21,6 +21,7 @@ public class ApplicationResourceHandler implements RequestHandler { private static final Pattern APP_RESOURCE_PATTERN = Pattern .compile("^/?APP/(\\d+)/.*"); + @Override public boolean handleRequest(Application application, WrappedRequest request, WrappedResponse response) throws IOException { diff --git a/src/com/vaadin/terminal/gwt/server/ApplicationServlet.java b/src/com/vaadin/terminal/gwt/server/ApplicationServlet.java index 2c4d38ef24..1af49e0da0 100644 --- a/src/com/vaadin/terminal/gwt/server/ApplicationServlet.java +++ b/src/com/vaadin/terminal/gwt/server/ApplicationServlet.java @@ -41,14 +41,12 @@ public class ApplicationServlet extends AbstractApplicationServlet { throws javax.servlet.ServletException { super.init(servletConfig); - // Loads the application class using the same class loader - // as the servlet itself + // Loads the application class using the classloader defined in the + // deployment configuration try { - applicationClass = ServletPortletHelper.getApplicationClass( - servletConfig.getInitParameter("application"), - servletConfig.getInitParameter(Application.ROOT_PARAMETER), - getClassLoader()); + applicationClass = ServletPortletHelper + .getApplicationClass(getDeploymentConfiguration()); } catch (ApplicationClassException e) { throw new ServletException(e); } diff --git a/src/com/vaadin/terminal/gwt/server/BootstrapHandler.java b/src/com/vaadin/terminal/gwt/server/BootstrapHandler.java index 69f033c8cd..4038b8f1bc 100644 --- a/src/com/vaadin/terminal/gwt/server/BootstrapHandler.java +++ b/src/com/vaadin/terminal/gwt/server/BootstrapHandler.java @@ -9,10 +9,6 @@ import java.io.IOException; import java.io.OutputStreamWriter; import java.io.Serializable; import java.io.Writer; -import java.lang.annotation.Annotation; -import java.util.ArrayList; -import java.util.Collections; -import java.util.List; import java.util.Map; import javax.servlet.http.HttpServletResponse; @@ -20,7 +16,6 @@ import javax.servlet.http.HttpServletResponse; import com.vaadin.Application; import com.vaadin.RootRequiresMoreInformationException; import com.vaadin.Version; -import com.vaadin.annotations.LoadScripts; import com.vaadin.external.json.JSONException; import com.vaadin.external.json.JSONObject; import com.vaadin.terminal.DeploymentConfiguration; @@ -118,6 +113,7 @@ public abstract class BootstrapHandler implements RequestHandler { } + @Override public boolean handleRequest(Application application, WrappedRequest request, WrappedResponse response) throws IOException { @@ -490,50 +486,6 @@ public abstract class BootstrapHandler implements RequestHandler { page.write("<title>" + AbstractApplicationServlet.safeEscapeForHtml(title) + "</title>\n"); - - if (root != null) { - List<LoadScripts> loadScriptsAnnotations = getAnnotationsFor( - root.getClass(), LoadScripts.class); - Collections.reverse(loadScriptsAnnotations); - // Begin from the end as a class might requests scripts that depend - // on script loaded by a super class - for (int i = loadScriptsAnnotations.size() - 1; i >= 0; i--) { - LoadScripts loadScripts = loadScriptsAnnotations.get(i); - String[] value = loadScripts.value(); - if (value != null) { - for (String script : value) { - page.write("<script type='text/javascript' src='"); - page.write(script); - page.write("'></script>\n"); - } - } - } - - } - } - - private static <T extends Annotation> List<T> getAnnotationsFor( - Class<?> type, Class<T> annotationType) { - List<T> list = new ArrayList<T>(); - // Find from the class hierarchy - Class<?> currentType = type; - while (currentType != Object.class) { - T annotation = currentType.getAnnotation(annotationType); - if (annotation != null) { - list.add(annotation); - } - currentType = currentType.getSuperclass(); - } - - // Find from an implemented interface - for (Class<?> iface : type.getInterfaces()) { - T annotation = iface.getAnnotation(annotationType); - if (annotation != null) { - list.add(annotation); - } - } - - return list; } /** @@ -645,8 +597,10 @@ public abstract class BootstrapHandler implements RequestHandler { * @return a string with the initial UIDL message * @throws PaintException * if an exception occurs while painting the components + * @throws JSONException + * if an exception occurs while formatting the output */ protected abstract String getInitialUIDL(WrappedRequest request, Root root) - throws PaintException; + throws PaintException, JSONException; } diff --git a/src/com/vaadin/terminal/gwt/server/ChangeVariablesErrorEvent.java b/src/com/vaadin/terminal/gwt/server/ChangeVariablesErrorEvent.java index b6576dce9f..8f0c80332f 100644 --- a/src/com/vaadin/terminal/gwt/server/ChangeVariablesErrorEvent.java +++ b/src/com/vaadin/terminal/gwt/server/ChangeVariablesErrorEvent.java @@ -23,6 +23,7 @@ public class ChangeVariablesErrorEvent implements ComponentErrorEvent { this.variableChanges = variableChanges; } + @Override public Throwable getThrowable() { return throwable; } diff --git a/src/com/vaadin/terminal/gwt/server/ClientConnector.java b/src/com/vaadin/terminal/gwt/server/ClientConnector.java index dfdd58879d..4f74cfe4bb 100644 --- a/src/com/vaadin/terminal/gwt/server/ClientConnector.java +++ b/src/com/vaadin/terminal/gwt/server/ClientConnector.java @@ -6,12 +6,13 @@ package com.vaadin.terminal.gwt.server; import java.util.Collection; import java.util.List; +import com.vaadin.shared.Connector; +import com.vaadin.shared.communication.SharedState; import com.vaadin.terminal.AbstractClientConnector; import com.vaadin.terminal.Extension; -import com.vaadin.terminal.gwt.client.Connector; -import com.vaadin.terminal.gwt.client.communication.SharedState; import com.vaadin.ui.Component; import com.vaadin.ui.ComponentContainer; +import com.vaadin.ui.Root; /** * Interface implemented by all connectors that are capable of communicating @@ -47,6 +48,7 @@ public interface ClientConnector extends Connector, RpcTarget { */ public Class<? extends SharedState> getStateType(); + @Override public ClientConnector getParent(); /** @@ -136,4 +138,12 @@ public interface ClientConnector extends Connector, RpcTarget { * the extension to remove. */ public void removeExtension(Extension extension); + + /** + * Returns the root this connector is attached to + * + * @return The Root this connector is attached to or null if it is not + * attached to any Root + */ + public Root getRoot(); } diff --git a/src/com/vaadin/terminal/gwt/server/ClientMethodInvocation.java b/src/com/vaadin/terminal/gwt/server/ClientMethodInvocation.java index ad9484723b..64ea288665 100644 --- a/src/com/vaadin/terminal/gwt/server/ClientMethodInvocation.java +++ b/src/com/vaadin/terminal/gwt/server/ClientMethodInvocation.java @@ -61,6 +61,7 @@ public class ClientMethodInvocation implements Serializable, return sequenceNumber; } + @Override public int compareTo(ClientMethodInvocation o) { if (null == o) { return 0; diff --git a/src/com/vaadin/terminal/gwt/server/CommunicationManager.java b/src/com/vaadin/terminal/gwt/server/CommunicationManager.java index cc2981dc45..3cc3a8cb64 100644 --- a/src/com/vaadin/terminal/gwt/server/CommunicationManager.java +++ b/src/com/vaadin/terminal/gwt/server/CommunicationManager.java @@ -4,22 +4,15 @@ package com.vaadin.terminal.gwt.server; -import java.io.IOException; import java.io.InputStream; import java.net.URL; -import java.util.HashMap; -import java.util.Iterator; -import java.util.Map; -import java.util.UUID; import javax.servlet.ServletContext; import com.vaadin.Application; +import com.vaadin.external.json.JSONException; import com.vaadin.terminal.PaintException; -import com.vaadin.terminal.StreamVariable; import com.vaadin.terminal.WrappedRequest; -import com.vaadin.terminal.WrappedResponse; -import com.vaadin.terminal.gwt.client.Connector; import com.vaadin.ui.Root; /** @@ -58,142 +51,6 @@ public class CommunicationManager extends AbstractCommunicationManager { super(application); } - /** - * Handles file upload request submitted via Upload component. - * - * @param root - * The root for this request - * - * @see #getStreamVariableTargetUrl(ReceiverOwner, String, StreamVariable) - * - * @param request - * @param response - * @throws IOException - * @throws InvalidUIDLSecurityKeyException - */ - public void handleFileUpload(Root root, WrappedRequest request, - WrappedResponse response) throws IOException, - InvalidUIDLSecurityKeyException { - - /* - * URI pattern: APP/UPLOAD/[PID]/[NAME]/[SECKEY] See #createReceiverUrl - */ - - String pathInfo = request.getRequestPathInfo(); - // strip away part until the data we are interested starts - int startOfData = pathInfo - .indexOf(AbstractApplicationServlet.UPLOAD_URL_PREFIX) - + AbstractApplicationServlet.UPLOAD_URL_PREFIX.length(); - String uppUri = pathInfo.substring(startOfData); - String[] parts = uppUri.split("/", 3); // 0 = pid, 1= name, 2 = sec key - String variableName = parts[1]; - String connectorId = parts[0]; - - StreamVariable streamVariable = pidToNameToStreamVariable.get( - connectorId).get(variableName); - String secKey = streamVariableToSeckey.get(streamVariable); - if (secKey.equals(parts[2])) { - - Connector source = getConnector(root, connectorId); - String contentType = request.getContentType(); - if (contentType.contains("boundary")) { - // Multipart requests contain boundary string - doHandleSimpleMultipartFileUpload(request, response, - streamVariable, variableName, source, - contentType.split("boundary=")[1]); - } else { - // if boundary string does not exist, the posted file is from - // XHR2.post(File) - doHandleXhrFilePost(request, response, streamVariable, - variableName, source, request.getContentLength()); - } - } else { - throw new InvalidUIDLSecurityKeyException( - "Security key in upload post did not match!"); - } - - } - - @Override - protected void postPaint(Root root) { - super.postPaint(root); - - if (pidToNameToStreamVariable != null) { - Iterator<String> iterator = pidToNameToStreamVariable.keySet() - .iterator(); - while (iterator.hasNext()) { - String connectorId = iterator.next(); - if (root.getConnectorTracker().getConnector(connectorId) == null) { - // Owner is no longer attached to the application - Map<String, StreamVariable> removed = pidToNameToStreamVariable - .get(connectorId); - for (String key : removed.keySet()) { - streamVariableToSeckey.remove(removed.get(key)); - } - iterator.remove(); - } - } - } - - } - - private Map<String, Map<String, StreamVariable>> pidToNameToStreamVariable; - - private Map<StreamVariable, String> streamVariableToSeckey; - - @Override - String getStreamVariableTargetUrl(Connector owner, String name, - StreamVariable value) { - /* - * We will use the same APP/* URI space as ApplicationResources but - * prefix url with UPLOAD - * - * eg. APP/UPLOAD/[PID]/[NAME]/[SECKEY] - * - * SECKEY is created on each paint to make URL's unpredictable (to - * prevent CSRF attacks). - * - * NAME and PID from URI forms a key to fetch StreamVariable when - * handling post - */ - String paintableId = owner.getConnectorId(); - String key = paintableId + "/" + name; - - if (pidToNameToStreamVariable == null) { - pidToNameToStreamVariable = new HashMap<String, Map<String, StreamVariable>>(); - } - Map<String, StreamVariable> nameToStreamVariable = pidToNameToStreamVariable - .get(paintableId); - if (nameToStreamVariable == null) { - nameToStreamVariable = new HashMap<String, StreamVariable>(); - pidToNameToStreamVariable.put(paintableId, nameToStreamVariable); - } - nameToStreamVariable.put(name, value); - - if (streamVariableToSeckey == null) { - streamVariableToSeckey = new HashMap<StreamVariable, String>(); - } - String seckey = streamVariableToSeckey.get(value); - if (seckey == null) { - seckey = UUID.randomUUID().toString(); - streamVariableToSeckey.put(value, seckey); - } - - return "app://" + AbstractApplicationServlet.UPLOAD_URL_PREFIX + key - + "/" + seckey; - - } - - @Override - protected void cleanStreamVariable(Connector owner, String name) { - Map<String, StreamVariable> nameToStreamVar = pidToNameToStreamVariable - .get(owner.getConnectorId()); - nameToStreamVar.remove("name"); - if (nameToStreamVar.isEmpty()) { - pidToNameToStreamVariable.remove(owner.getConnectorId()); - } - } - @Override protected BootstrapHandler createBootstrapHandler() { return new BootstrapHandler() { @@ -245,7 +102,7 @@ public class CommunicationManager extends AbstractCommunicationManager { @Override protected String getInitialUIDL(WrappedRequest request, Root root) - throws PaintException { + throws PaintException, JSONException { return CommunicationManager.this.getInitialUIDL(request, root); } }; diff --git a/src/com/vaadin/terminal/gwt/server/Constants.java b/src/com/vaadin/terminal/gwt/server/Constants.java index 9e6b2c775b..7efb0205ac 100644 --- a/src/com/vaadin/terminal/gwt/server/Constants.java +++ b/src/com/vaadin/terminal/gwt/server/Constants.java @@ -54,8 +54,6 @@ public interface Constants { static final int MAX_BUFFER_SIZE = 64 * 1024; - static final String AJAX_UIDL_URI = "/UIDL"; - final String THEME_DIRECTORY_PATH = "VAADIN/themes/"; static final int DEFAULT_THEME_CACHETIME = 1000 * 60 * 60 * 24; diff --git a/src/com/vaadin/terminal/gwt/server/DragAndDropService.java b/src/com/vaadin/terminal/gwt/server/DragAndDropService.java index 0e8d1c0152..efb5666efa 100644 --- a/src/com/vaadin/terminal/gwt/server/DragAndDropService.java +++ b/src/com/vaadin/terminal/gwt/server/DragAndDropService.java @@ -19,13 +19,14 @@ import com.vaadin.event.dd.DropTarget; import com.vaadin.event.dd.TargetDetails; import com.vaadin.event.dd.TargetDetailsImpl; import com.vaadin.event.dd.acceptcriteria.AcceptCriterion; +import com.vaadin.shared.communication.SharedState; +import com.vaadin.shared.ui.dd.DragEventType; import com.vaadin.terminal.Extension; import com.vaadin.terminal.PaintException; import com.vaadin.terminal.VariableOwner; -import com.vaadin.terminal.gwt.client.communication.SharedState; import com.vaadin.terminal.gwt.client.ui.dd.VDragAndDropManager; -import com.vaadin.terminal.gwt.client.ui.dd.VDragAndDropManager.DragEventType; import com.vaadin.ui.Component; +import com.vaadin.ui.Root; public class DragAndDropService implements VariableOwner, ClientConnector { @@ -43,6 +44,7 @@ public class DragAndDropService implements VariableOwner, ClientConnector { this.manager = manager; } + @Override public void changeVariables(Object source, Map<String, Object> variables) { Object owner = variables.get("dhowner"); @@ -181,10 +183,12 @@ public class DragAndDropService implements VariableOwner, ClientConnector { return transferable; } + @Override public boolean isEnabled() { return isConnectorEnabled(); } + @Override public boolean isImmediate() { return true; } @@ -218,68 +222,82 @@ public class DragAndDropService implements VariableOwner, ClientConnector { return false; } + @Override public SharedState getState() { // TODO Auto-generated method stub return null; } + @Override public String getConnectorId() { return VDragAndDropManager.DD_SERVICE; } + @Override public boolean isConnectorEnabled() { // Drag'n'drop can't be disabled return true; } + @Override public List<ClientMethodInvocation> retrievePendingRpcCalls() { return null; } + @Override public RpcManager getRpcManager(Class<?> rpcInterface) { // TODO Use rpc for drag'n'drop return null; } + @Override public Class<? extends SharedState> getStateType() { return SharedState.class; } + @Override public void requestRepaint() { // TODO Auto-generated method stub } + @Override public ClientConnector getParent() { // TODO Auto-generated method stub return null; } + @Override public void requestRepaintAll() { // TODO Auto-generated method stub } + @Override public void setParent(ClientConnector parent) { // TODO Auto-generated method stub } + @Override public void attach() { // TODO Auto-generated method stub } + @Override public void detach() { // TODO Auto-generated method stub } + @Override public Collection<Extension> getExtensions() { // TODO Auto-generated method stub return Collections.emptySet(); } + @Override public void removeExtension(Extension extension) { // TODO Auto-generated method stub } @@ -287,4 +305,9 @@ public class DragAndDropService implements VariableOwner, ClientConnector { private Logger getLogger() { return Logger.getLogger(DragAndDropService.class.getName()); } + + @Override + public Root getRoot() { + return null; + } } diff --git a/src/com/vaadin/terminal/gwt/server/GAEApplicationServlet.java b/src/com/vaadin/terminal/gwt/server/GAEApplicationServlet.java index a6032fa98d..cc12c9cc43 100644 --- a/src/com/vaadin/terminal/gwt/server/GAEApplicationServlet.java +++ b/src/com/vaadin/terminal/gwt/server/GAEApplicationServlet.java @@ -121,8 +121,9 @@ public class GAEApplicationServlet extends ApplicationServlet { // appengine session expires-parameter private static final String PROPERTY_APPENGINE_EXPIRES = "_expires"; - protected void sendDeadlineExceededNotification(HttpServletRequest request, - HttpServletResponse response) throws IOException { + protected void sendDeadlineExceededNotification( + WrappedHttpServletRequest request, + WrappedHttpServletResponse response) throws IOException { criticalNotification( request, response, @@ -131,8 +132,9 @@ public class GAEApplicationServlet extends ApplicationServlet { "", null); } - protected void sendNotSerializableNotification(HttpServletRequest request, - HttpServletResponse response) throws IOException { + protected void sendNotSerializableNotification( + WrappedHttpServletRequest request, + WrappedHttpServletResponse response) throws IOException { criticalNotification( request, response, @@ -142,8 +144,9 @@ public class GAEApplicationServlet extends ApplicationServlet { + "?restartApplication"); } - protected void sendCriticalErrorNotification(HttpServletRequest request, - HttpServletResponse response) throws IOException { + protected void sendCriticalErrorNotification( + WrappedHttpServletRequest request, + WrappedHttpServletResponse response) throws IOException { criticalNotification( request, response, @@ -154,8 +157,13 @@ public class GAEApplicationServlet extends ApplicationServlet { } @Override - protected void service(HttpServletRequest request, - HttpServletResponse response) throws ServletException, IOException { + protected void service(HttpServletRequest unwrappedRequest, + HttpServletResponse unwrappedResponse) throws ServletException, + IOException { + WrappedHttpServletRequest request = new WrappedHttpServletRequest( + unwrappedRequest, getDeploymentConfiguration()); + WrappedHttpServletResponse response = new WrappedHttpServletResponse( + unwrappedResponse, getDeploymentConfiguration()); if (isCleanupRequest(request)) { cleanDatastore(); diff --git a/src/com/vaadin/terminal/gwt/server/JsonCodec.java b/src/com/vaadin/terminal/gwt/server/JsonCodec.java index d3a2ef56f8..8199bc6ada 100644 --- a/src/com/vaadin/terminal/gwt/server/JsonCodec.java +++ b/src/com/vaadin/terminal/gwt/server/JsonCodec.java @@ -9,10 +9,12 @@ import java.beans.Introspector; import java.beans.PropertyDescriptor; import java.io.Serializable; import java.lang.reflect.Array; +import java.lang.reflect.GenericArrayType; import java.lang.reflect.InvocationTargetException; import java.lang.reflect.Method; import java.lang.reflect.ParameterizedType; import java.lang.reflect.Type; +import java.lang.reflect.WildcardType; import java.util.ArrayList; import java.util.Arrays; import java.util.Collection; @@ -27,9 +29,9 @@ import java.util.Set; import com.vaadin.external.json.JSONArray; import com.vaadin.external.json.JSONException; import com.vaadin.external.json.JSONObject; -import com.vaadin.terminal.gwt.client.Connector; +import com.vaadin.shared.Connector; +import com.vaadin.shared.communication.UidlValue; import com.vaadin.terminal.gwt.client.communication.JsonEncoder; -import com.vaadin.terminal.gwt.client.communication.UidlValue; import com.vaadin.ui.Component; import com.vaadin.ui.ConnectorTracker; @@ -100,8 +102,10 @@ public class JsonCodec implements Serializable { private static Class<?> getClassForType(Type type) { if (type instanceof ParameterizedType) { return (Class<?>) (((ParameterizedType) type).getRawType()); - } else { + } else if (type instanceof Class<?>) { return (Class<?>) type; + } else { + return null; } } @@ -138,7 +142,13 @@ public class JsonCodec implements Serializable { && ((Class<?>) targetType).isArray()) { // Legacy Object[] and String[] handled elsewhere, this takes care // of generic arrays - return decodeArray((Class<?>) targetType, (JSONArray) value, + Class<?> componentType = ((Class<?>) targetType).getComponentType(); + return decodeArray(componentType, (JSONArray) value, + connectorTracker); + } else if (targetType instanceof GenericArrayType) { + Type componentType = ((GenericArrayType) targetType) + .getGenericComponentType(); + return decodeArray(componentType, (JSONArray) value, connectorTracker); } else if (targetType == JSONObject.class || targetType == JSONArray.class) { @@ -149,10 +159,10 @@ public class JsonCodec implements Serializable { } } - private static Object decodeArray(Class<?> targetType, JSONArray value, + private static Object decodeArray(Type componentType, JSONArray value, ConnectorTracker connectorTracker) throws JSONException { - Class<?> componentType = targetType.getComponentType(); - Object array = Array.newInstance(componentType, value.length()); + Class<?> componentClass = getClassForType(componentType); + Object array = Array.newInstance(componentClass, value.length()); for (int i = 0; i < value.length(); i++) { Object decodedValue = decodeInternalOrCustomType(componentType, value.get(i), connectorTracker); @@ -513,6 +523,11 @@ public class JsonCodec implements Serializable { throw new IllegalArgumentException("type must be defined"); } + if (valueType instanceof WildcardType) { + throw new IllegalStateException( + "Can not serialize type with wildcard: " + valueType); + } + if (null == value) { return encodeNull(); } @@ -540,7 +555,15 @@ public class JsonCodec implements Serializable { return jsonArray; } else if (valueType instanceof Class<?> && ((Class<?>) valueType).isArray()) { - JSONArray jsonArray = encodeArrayContents(value, connectorTracker); + JSONArray jsonArray = encodeArrayContents( + ((Class<?>) valueType).getComponentType(), value, + connectorTracker); + return jsonArray; + } else if (valueType instanceof GenericArrayType) { + Type componentType = ((GenericArrayType) valueType) + .getGenericComponentType(); + JSONArray jsonArray = encodeArrayContents(componentType, value, + connectorTracker); return jsonArray; } else if (value instanceof Map) { Object jsonMap = encodeMap(valueType, (Map<?, ?>) value, @@ -643,10 +666,10 @@ public class JsonCodec implements Serializable { return e.name(); } - private static JSONArray encodeArrayContents(Object array, - ConnectorTracker connectorTracker) throws JSONException { + private static JSONArray encodeArrayContents(Type componentType, + Object array, ConnectorTracker connectorTracker) + throws JSONException { JSONArray jsonArray = new JSONArray(); - Class<?> componentType = array.getClass().getComponentType(); for (int i = 0; i < Array.getLength(array); i++) { jsonArray.put(encode(Array.get(array, i), null, componentType, connectorTracker)); diff --git a/src/com/vaadin/terminal/gwt/server/JsonPaintTarget.java b/src/com/vaadin/terminal/gwt/server/JsonPaintTarget.java index 70ab452e4e..5a830ddb63 100644 --- a/src/com/vaadin/terminal/gwt/server/JsonPaintTarget.java +++ b/src/com/vaadin/terminal/gwt/server/JsonPaintTarget.java @@ -15,16 +15,11 @@ import java.util.Stack; import java.util.Vector; import java.util.logging.Logger; -import com.vaadin.Application; -import com.vaadin.terminal.ApplicationResource; -import com.vaadin.terminal.ExternalResource; import com.vaadin.terminal.PaintException; import com.vaadin.terminal.PaintTarget; import com.vaadin.terminal.Resource; import com.vaadin.terminal.StreamVariable; -import com.vaadin.terminal.ThemeResource; import com.vaadin.terminal.VariableOwner; -import com.vaadin.terminal.gwt.client.Connector; import com.vaadin.ui.Alignment; import com.vaadin.ui.Component; import com.vaadin.ui.CustomLayout; @@ -104,6 +99,7 @@ public class JsonPaintTarget implements PaintTarget { cacheEnabled = cachingRequired; } + @Override public void startTag(String tagName) throws PaintException { startTag(tagName, false); } @@ -160,6 +156,7 @@ public class JsonPaintTarget implements PaintTarget { * if the paint operation failed. */ + @Override public void endTag(String tagName) throws PaintException { // In case of null data output nothing: if (tagName == null) { @@ -327,59 +324,46 @@ public class JsonPaintTarget implements PaintTarget { * */ + @Override public void addText(String str) throws PaintException { tag.addData("\"" + escapeJSON(str) + "\""); } + @Override public void addAttribute(String name, boolean value) throws PaintException { tag.addAttribute("\"" + name + "\":" + (value ? "true" : "false")); } - @SuppressWarnings("deprecation") + @Override public void addAttribute(String name, Resource value) throws PaintException { - - if (value instanceof ExternalResource) { - addAttribute(name, ((ExternalResource) value).getURL()); - - } else if (value instanceof ApplicationResource) { - final ApplicationResource r = (ApplicationResource) value; - final Application a = r.getApplication(); - if (a == null) { - throw new PaintException( - "Application not specified for resorce " - + value.getClass().getName()); - } - final String uri = a.getRelativeLocation(r); - addAttribute(name, uri); - - } else if (value instanceof ThemeResource) { - final String uri = "theme://" - + ((ThemeResource) value).getResourceId(); - addAttribute(name, uri); - } else { - throw new PaintException("Ajax adapter does not " - + "support resources of type: " - + value.getClass().getName()); + if (value == null) { + throw new NullPointerException(); } - + ResourceReference reference = ResourceReference.create(value); + addAttribute(name, reference.getURL()); } + @Override public void addAttribute(String name, int value) throws PaintException { tag.addAttribute("\"" + name + "\":" + String.valueOf(value)); } + @Override public void addAttribute(String name, long value) throws PaintException { tag.addAttribute("\"" + name + "\":" + String.valueOf(value)); } + @Override public void addAttribute(String name, float value) throws PaintException { tag.addAttribute("\"" + name + "\":" + String.valueOf(value)); } + @Override public void addAttribute(String name, double value) throws PaintException { tag.addAttribute("\"" + name + "\":" + String.valueOf(value)); } + @Override public void addAttribute(String name, String value) throws PaintException { // In case of null data output nothing: if ((value == null) || (name == null)) { @@ -399,12 +383,14 @@ public class JsonPaintTarget implements PaintTarget { } + @Override public void addAttribute(String name, Component value) throws PaintException { final String id = value.getConnectorId(); addAttribute(name, id); } + @Override public void addAttribute(String name, Map<?, ?> value) throws PaintException { @@ -442,6 +428,7 @@ public class JsonPaintTarget implements PaintTarget { tag.addAttribute(sb.toString()); } + @Override public void addAttribute(String name, Object[] values) { // In case of null data output nothing: if ((values == null) || (name == null)) { @@ -462,41 +449,49 @@ public class JsonPaintTarget implements PaintTarget { tag.addAttribute(buf.toString()); } + @Override public void addVariable(VariableOwner owner, String name, String value) throws PaintException { tag.addVariable(new StringVariable(owner, name, escapeJSON(value))); } + @Override public void addVariable(VariableOwner owner, String name, Component value) throws PaintException { tag.addVariable(new StringVariable(owner, name, value.getConnectorId())); } + @Override public void addVariable(VariableOwner owner, String name, int value) throws PaintException { tag.addVariable(new IntVariable(owner, name, value)); } + @Override public void addVariable(VariableOwner owner, String name, long value) throws PaintException { tag.addVariable(new LongVariable(owner, name, value)); } + @Override public void addVariable(VariableOwner owner, String name, float value) throws PaintException { tag.addVariable(new FloatVariable(owner, name, value)); } + @Override public void addVariable(VariableOwner owner, String name, double value) throws PaintException { tag.addVariable(new DoubleVariable(owner, name, value)); } + @Override public void addVariable(VariableOwner owner, String name, boolean value) throws PaintException { tag.addVariable(new BooleanVariable(owner, name, value)); } + @Override public void addVariable(VariableOwner owner, String name, String[] value) throws PaintException { tag.addVariable(new ArrayVariable(owner, name, value)); @@ -516,6 +511,7 @@ public class JsonPaintTarget implements PaintTarget { * if the paint operation failed. */ + @Override public void addUploadStreamVariable(VariableOwner owner, String name) throws PaintException { startTag("uploadstream"); @@ -536,6 +532,7 @@ public class JsonPaintTarget implements PaintTarget { * if the paint operation failed. */ + @Override public void addSection(String sectionTagName, String sectionData) throws PaintException { tag.addData("{\"" + sectionTagName + "\":\"" + escapeJSON(sectionData) @@ -551,6 +548,7 @@ public class JsonPaintTarget implements PaintTarget { * if the paint operation failed. */ + @Override public void addUIDL(String xml) throws PaintException { // Ensure that the target is open @@ -585,6 +583,7 @@ public class JsonPaintTarget implements PaintTarget { * String) */ + @Override public void addXMLSection(String sectionTagName, String sectionData, String namespace) throws PaintException { @@ -650,6 +649,7 @@ public class JsonPaintTarget implements PaintTarget { * .Paintable, java.lang.String) */ + @Override public PaintStatus startPaintable(Component connector, String tagName) throws PaintException { boolean topLevelPaintable = openPaintables.isEmpty(); @@ -676,6 +676,7 @@ public class JsonPaintTarget implements PaintTarget { return PaintStatus.PAINTING; } + @Override public void endPaintable(Component paintable) throws PaintException { getLogger().fine( "endPaintable for " + paintable.getClass().getName() + "@" @@ -699,6 +700,7 @@ public class JsonPaintTarget implements PaintTarget { * @see com.vaadin.terminal.PaintTarget#addCharacterData(java.lang.String ) */ + @Override public void addCharacterData(String text) throws PaintException { if (text != null) { tag.addData(text); @@ -968,6 +970,7 @@ public class JsonPaintTarget implements PaintTarget { return usedResources; } + @Override @SuppressWarnings("unchecked") public String getTag(ClientConnector clientConnector) { Class<? extends ClientConnector> clientConnectorClass = clientConnector @@ -990,10 +993,11 @@ public class JsonPaintTarget implements PaintTarget { return usedClientConnectors; } + @Override public void addVariable(VariableOwner owner, String name, StreamVariable value) throws PaintException { - String url = manager.getStreamVariableTargetUrl((Connector) owner, - name, value); + String url = manager.getStreamVariableTargetUrl( + (ClientConnector) owner, name, value); if (url != null) { addVariable(owner, name, url); } // else { //NOP this was just a cleanup by component } @@ -1006,6 +1010,7 @@ public class JsonPaintTarget implements PaintTarget { * @see com.vaadin.terminal.PaintTarget#isFullRepaint() */ + @Override public boolean isFullRepaint() { return !cacheEnabled; } diff --git a/src/com/vaadin/terminal/gwt/server/LegacyChangeVariablesInvocation.java b/src/com/vaadin/terminal/gwt/server/LegacyChangeVariablesInvocation.java index 42fa3ab5a5..9dba05d2c1 100644 --- a/src/com/vaadin/terminal/gwt/server/LegacyChangeVariablesInvocation.java +++ b/src/com/vaadin/terminal/gwt/server/LegacyChangeVariablesInvocation.java @@ -6,8 +6,8 @@ package com.vaadin.terminal.gwt.server; import java.util.HashMap; import java.util.Map; +import com.vaadin.shared.communication.MethodInvocation; import com.vaadin.terminal.gwt.client.ApplicationConnection; -import com.vaadin.terminal.gwt.client.communication.MethodInvocation; public class LegacyChangeVariablesInvocation extends MethodInvocation { private Map<String, Object> variableChanges = new HashMap<String, Object>(); diff --git a/src/com/vaadin/terminal/gwt/server/PortletApplicationContext2.java b/src/com/vaadin/terminal/gwt/server/PortletApplicationContext2.java index de4f918b75..70505ab5f9 100644 --- a/src/com/vaadin/terminal/gwt/server/PortletApplicationContext2.java +++ b/src/com/vaadin/terminal/gwt/server/PortletApplicationContext2.java @@ -28,13 +28,12 @@ import javax.portlet.RenderRequest; import javax.portlet.RenderResponse; import javax.portlet.ResourceRequest; import javax.portlet.ResourceResponse; -import javax.portlet.ResourceURL; import javax.portlet.StateAwareResponse; import javax.servlet.http.HttpSessionBindingListener; import javax.xml.namespace.QName; import com.vaadin.Application; -import com.vaadin.terminal.ApplicationResource; +import com.vaadin.terminal.ExternalResource; import com.vaadin.ui.Root; /** @@ -63,6 +62,7 @@ public class PortletApplicationContext2 extends AbstractWebApplicationContext { private final Map<String, String> sharedParameterActionNameMap = new HashMap<String, String>(); private final Map<String, String> sharedParameterActionValueMap = new HashMap<String, String>(); + @Override public File getBaseDirectory() { String resultPath = session.getPortletContext().getRealPath("/"); if (resultPath != null) { @@ -253,27 +253,6 @@ public class PortletApplicationContext2 extends AbstractWebApplicationContext { this.response = response; } - @Override - public String generateApplicationResourceURL(ApplicationResource resource, - String mapKey) { - if (response instanceof MimeResponse) { - ResourceURL resourceURL = ((MimeResponse) response) - .createResourceURL(); - final String filename = resource.getFilename(); - if (filename == null) { - resourceURL.setResourceID("APP/" + mapKey + "/"); - } else { - resourceURL.setResourceID("APP/" + mapKey + "/" - + urlEncode(filename)); - } - return resourceURL.toString(); - } else { - // in a background thread or otherwise outside a request - // TODO exception ?? - return null; - } - } - /** * Creates a new action URL. * @@ -324,9 +303,7 @@ public class PortletApplicationContext2 extends AbstractWebApplicationContext { if (actionUrl != null) { eventActionDestinationMap.put(actionKey, name); eventActionValueMap.put(actionKey, value); - throw new RuntimeException( - "Root.open has not yet been implemented"); - // root.open(new ExternalResource(actionUrl.toString())); + root.getPage().open(new ExternalResource(actionUrl.toString())); } else { // this should never happen as we already know the response is a // MimeResponse @@ -372,9 +349,7 @@ public class PortletApplicationContext2 extends AbstractWebApplicationContext { if (actionUrl != null) { sharedParameterActionNameMap.put(actionKey, name); sharedParameterActionValueMap.put(actionKey, value); - throw new RuntimeException( - "Root.open has not yet been implemented"); - // root.open(new ExternalResource(actionUrl.toString())); + root.getPage().open(new ExternalResource(actionUrl.toString())); } else { // this should never happen as we already know the response is a // MimeResponse diff --git a/src/com/vaadin/terminal/gwt/server/PortletCommunicationManager.java b/src/com/vaadin/terminal/gwt/server/PortletCommunicationManager.java index d3fbf4d988..edd970a31f 100644 --- a/src/com/vaadin/terminal/gwt/server/PortletCommunicationManager.java +++ b/src/com/vaadin/terminal/gwt/server/PortletCommunicationManager.java @@ -5,9 +5,6 @@ package com.vaadin.terminal.gwt.server; import java.io.IOException; import java.io.InputStream; -import java.util.HashMap; -import java.util.Iterator; -import java.util.Map; import javax.portlet.MimeResponse; import javax.portlet.PortletContext; @@ -22,10 +19,9 @@ import com.vaadin.external.json.JSONException; import com.vaadin.external.json.JSONObject; import com.vaadin.terminal.DeploymentConfiguration; import com.vaadin.terminal.PaintException; -import com.vaadin.terminal.StreamVariable; import com.vaadin.terminal.WrappedRequest; import com.vaadin.terminal.WrappedResponse; -import com.vaadin.terminal.gwt.client.Connector; +import com.vaadin.terminal.gwt.client.ApplicationConfiguration; import com.vaadin.ui.Root; /** @@ -37,131 +33,10 @@ import com.vaadin.ui.Root; @SuppressWarnings("serial") public class PortletCommunicationManager extends AbstractCommunicationManager { - private transient MimeResponse currentMimeResponse; - public PortletCommunicationManager(Application application) { super(application); } - public void handleFileUpload(Root root, WrappedRequest request, - WrappedResponse response) throws IOException { - String contentType = request.getContentType(); - String name = request.getParameter("name"); - String ownerId = request.getParameter("rec-owner"); - Connector owner = getConnector(root, ownerId); - StreamVariable streamVariable = ownerToNameToStreamVariable.get(owner) - .get(name); - - if (contentType.contains("boundary")) { - doHandleSimpleMultipartFileUpload(request, response, - streamVariable, name, owner, - contentType.split("boundary=")[1]); - } else { - doHandleXhrFilePost(request, response, streamVariable, name, owner, - request.getContentLength()); - } - - } - - @Override - protected void postPaint(Root root) { - super.postPaint(root); - - Application application = root.getApplication(); - if (ownerToNameToStreamVariable != null) { - Iterator<Connector> iterator = ownerToNameToStreamVariable.keySet() - .iterator(); - while (iterator.hasNext()) { - Connector owner = iterator.next(); - if (getConnector(root, owner.getConnectorId()) == null) { - // Owner is no longer attached to the application - iterator.remove(); - } - } - } - } - - @Override - protected boolean handleApplicationRequest(WrappedRequest request, - WrappedResponse response) throws IOException { - setCurrentMimeReponse(response); - try { - return super.handleApplicationRequest(request, response); - } finally { - currentMimeResponse = null; - } - } - - private void setCurrentMimeReponse(WrappedResponse response) { - PortletResponse portletResponse = ((WrappedPortletResponse) response) - .getPortletResponse(); - if (portletResponse instanceof MimeResponse) { - currentMimeResponse = (MimeResponse) portletResponse; - } - - } - - @Override - public void handleUidlRequest(WrappedRequest request, - WrappedResponse response, Callback callback, Root root) - throws IOException, InvalidUIDLSecurityKeyException { - setCurrentMimeReponse(response); - super.handleUidlRequest(request, response, callback, root); - currentMimeResponse = null; - } - - @Override - public void handleBrowserDetailsRequest(WrappedRequest request, - WrappedResponse response, Application application) - throws IOException { - setCurrentMimeReponse(response); - super.handleBrowserDetailsRequest(request, response, application); - currentMimeResponse = null; - - } - - private Map<Connector, Map<String, StreamVariable>> ownerToNameToStreamVariable; - - @Override - String getStreamVariableTargetUrl(Connector owner, String name, - StreamVariable value) { - if (ownerToNameToStreamVariable == null) { - ownerToNameToStreamVariable = new HashMap<Connector, Map<String, StreamVariable>>(); - } - Map<String, StreamVariable> nameToReceiver = ownerToNameToStreamVariable - .get(owner); - if (nameToReceiver == null) { - nameToReceiver = new HashMap<String, StreamVariable>(); - ownerToNameToStreamVariable.put(owner, nameToReceiver); - } - nameToReceiver.put(name, value); - ResourceURL resurl = createResourceURL(); - resurl.setResourceID("UPLOAD"); - resurl.setParameter("name", name); - resurl.setParameter("rec-owner", owner.getConnectorId()); - resurl.setProperty("name", name); - resurl.setProperty("rec-owner", owner.getConnectorId()); - return resurl.toString(); - } - - private ResourceURL createResourceURL() { - if (currentMimeResponse == null) { - throw new RuntimeException( - "No reponse object available. Cannot create a resource URL"); - } - return currentMimeResponse.createResourceURL(); - } - - @Override - protected void cleanStreamVariable(Connector owner, String name) { - Map<String, StreamVariable> map = ownerToNameToStreamVariable - .get(owner); - map.remove(name); - if (map.isEmpty()) { - ownerToNameToStreamVariable.remove(owner); - } - } - @Override protected BootstrapHandler createBootstrapHandler() { return new BootstrapHandler() { @@ -211,12 +86,14 @@ public class PortletCommunicationManager extends AbstractCommunicationManager { * some other things */ JSONObject defaults = super.getDefaultParameters(context); - defaults.put("usePortletURLs", true); - ResourceURL uidlUrlBase = getRenderResponse(context) + ResourceURL portletResourceUrl = getRenderResponse(context) .createResourceURL(); - uidlUrlBase.setResourceID("UIDL"); - defaults.put("portletUidlURLBase", uidlUrlBase.toString()); + portletResourceUrl + .setResourceID(AbstractApplicationPortlet.RESOURCE_URL_ID); + defaults.put(ApplicationConfiguration.PORTLET_RESOUCE_URL_BASE, + portletResourceUrl.toString()); + defaults.put("pathInfo", ""); return defaults; @@ -253,7 +130,7 @@ public class PortletCommunicationManager extends AbstractCommunicationManager { @Override protected String getInitialUIDL(WrappedRequest request, Root root) - throws PaintException { + throws PaintException, JSONException { return PortletCommunicationManager.this.getInitialUIDL(request, root); } diff --git a/src/com/vaadin/terminal/gwt/server/ResourceReference.java b/src/com/vaadin/terminal/gwt/server/ResourceReference.java index 56f2bed896..2104ad4b87 100644 --- a/src/com/vaadin/terminal/gwt/server/ResourceReference.java +++ b/src/com/vaadin/terminal/gwt/server/ResourceReference.java @@ -4,11 +4,11 @@ package com.vaadin.terminal.gwt.server; import com.vaadin.Application; +import com.vaadin.shared.communication.URLReference; import com.vaadin.terminal.ApplicationResource; import com.vaadin.terminal.ExternalResource; import com.vaadin.terminal.Resource; import com.vaadin.terminal.ThemeResource; -import com.vaadin.terminal.gwt.client.communication.URLReference; public class ResourceReference extends URLReference { @@ -48,4 +48,20 @@ public class ResourceReference extends URLReference { } } + + public static ResourceReference create(Resource resource) { + if (resource == null) { + return null; + } else { + return new ResourceReference(resource); + } + } + + public static Resource getResource(URLReference reference) { + if (reference == null) { + return null; + } + assert reference instanceof ResourceReference; + return ((ResourceReference) reference).getResource(); + } } diff --git a/src/com/vaadin/terminal/gwt/server/RestrictedRenderResponse.java b/src/com/vaadin/terminal/gwt/server/RestrictedRenderResponse.java index c4ef3fc8e5..9fdffbf9a5 100644 --- a/src/com/vaadin/terminal/gwt/server/RestrictedRenderResponse.java +++ b/src/com/vaadin/terminal/gwt/server/RestrictedRenderResponse.java @@ -34,112 +34,137 @@ class RestrictedRenderResponse implements RenderResponse, Serializable { this.response = response; } + @Override public void addProperty(String key, String value) { response.addProperty(key, value); } + @Override public PortletURL createActionURL() { return response.createActionURL(); } + @Override public PortletURL createRenderURL() { return response.createRenderURL(); } + @Override public String encodeURL(String path) { return response.encodeURL(path); } + @Override public void flushBuffer() throws IOException { // NOP // TODO throw? } + @Override public int getBufferSize() { return response.getBufferSize(); } + @Override public String getCharacterEncoding() { return response.getCharacterEncoding(); } + @Override public String getContentType() { return response.getContentType(); } + @Override public Locale getLocale() { return response.getLocale(); } + @Override public String getNamespace() { return response.getNamespace(); } + @Override public OutputStream getPortletOutputStream() throws IOException { // write forbidden return null; } + @Override public PrintWriter getWriter() throws IOException { // write forbidden return null; } + @Override public boolean isCommitted() { return response.isCommitted(); } + @Override public void reset() { // NOP // TODO throw? } + @Override public void resetBuffer() { // NOP // TODO throw? } + @Override public void setBufferSize(int size) { // NOP // TODO throw? } + @Override public void setContentType(String type) { // NOP // TODO throw? } + @Override public void setProperty(String key, String value) { response.setProperty(key, value); } + @Override public void setTitle(String title) { response.setTitle(title); } + @Override public void setNextPossiblePortletModes(Collection<PortletMode> portletModes) { // NOP // TODO throw? } + @Override public ResourceURL createResourceURL() { return response.createResourceURL(); } + @Override public CacheControl getCacheControl() { return response.getCacheControl(); } + @Override public void addProperty(Cookie cookie) { // NOP // TODO throw? } + @Override public void addProperty(String key, Element element) { // NOP // TODO throw? } + @Override public Element createElement(String tagName) throws DOMException { // NOP return null; diff --git a/src/com/vaadin/terminal/gwt/server/ServerRpcManager.java b/src/com/vaadin/terminal/gwt/server/ServerRpcManager.java index d9931a9610..1c7af82a36 100644 --- a/src/com/vaadin/terminal/gwt/server/ServerRpcManager.java +++ b/src/com/vaadin/terminal/gwt/server/ServerRpcManager.java @@ -12,7 +12,7 @@ import java.util.Map; import java.util.logging.Level; import java.util.logging.Logger; -import com.vaadin.terminal.gwt.client.Connector; +import com.vaadin.shared.Connector; /** * Server side RPC manager that handles RPC calls coming from the client. @@ -111,6 +111,7 @@ public class ServerRpcManager<T> implements RpcManager { * @param invocation * method invocation to perform */ + @Override public void applyInvocation(ServerRpcMethodInvocation invocation) throws RpcInvocationException { Method method = invocation.getMethod(); diff --git a/src/com/vaadin/terminal/gwt/server/ServerRpcMethodInvocation.java b/src/com/vaadin/terminal/gwt/server/ServerRpcMethodInvocation.java index 95565c4379..ff81a27596 100644 --- a/src/com/vaadin/terminal/gwt/server/ServerRpcMethodInvocation.java +++ b/src/com/vaadin/terminal/gwt/server/ServerRpcMethodInvocation.java @@ -7,8 +7,8 @@ import java.lang.reflect.Method; import java.util.Map; import java.util.concurrent.ConcurrentHashMap; -import com.vaadin.terminal.gwt.client.communication.MethodInvocation; -import com.vaadin.terminal.gwt.client.communication.ServerRpc; +import com.vaadin.shared.communication.MethodInvocation; +import com.vaadin.shared.communication.ServerRpc; public class ServerRpcMethodInvocation extends MethodInvocation { diff --git a/src/com/vaadin/terminal/gwt/server/ServletPortletHelper.java b/src/com/vaadin/terminal/gwt/server/ServletPortletHelper.java index 9b1e60e621..b2b962b0fd 100644 --- a/src/com/vaadin/terminal/gwt/server/ServletPortletHelper.java +++ b/src/com/vaadin/terminal/gwt/server/ServletPortletHelper.java @@ -3,6 +3,9 @@ package com.vaadin.terminal.gwt.server; import java.io.Serializable; import com.vaadin.Application; +import com.vaadin.terminal.DeploymentConfiguration; +import com.vaadin.terminal.WrappedRequest; +import com.vaadin.terminal.gwt.client.ApplicationConnection; import com.vaadin.ui.Root; /* @@ -10,6 +13,8 @@ import com.vaadin.ui.Root; */ class ServletPortletHelper implements Serializable { + public static final String UPLOAD_URL_PREFIX = "APP/UPLOAD/"; + public static class ApplicationClassException extends Exception { public ApplicationClassException(String message, Throwable cause) { @@ -22,8 +27,15 @@ class ServletPortletHelper implements Serializable { } static Class<? extends Application> getApplicationClass( - String applicationParameter, String rootParameter, - ClassLoader classLoader) throws ApplicationClassException { + DeploymentConfiguration deploymentConfiguration) + throws ApplicationClassException { + String applicationParameter = deploymentConfiguration + .getInitParameters().getProperty("application"); + String rootParameter = deploymentConfiguration + .getInitParameters().getProperty( + Application.ROOT_PARAMETER); + ClassLoader classLoader = deploymentConfiguration.getClassLoader(); + if (applicationParameter == null) { // Validate the parameter value @@ -70,4 +82,40 @@ class ServletPortletHelper implements Serializable { + " doesn't have a public no-args constructor"); } } + + private static boolean hasPathPrefix(WrappedRequest request, String prefix) { + String pathInfo = request.getRequestPathInfo(); + + if (pathInfo == null) { + return false; + } + + if (!prefix.startsWith("/")) { + prefix = '/' + prefix; + } + + if (pathInfo.startsWith(prefix)) { + return true; + } + + return false; + } + + public static boolean isFileUploadRequest(WrappedRequest request) { + return hasPathPrefix(request, UPLOAD_URL_PREFIX); + } + + public static boolean isConnectorResourceRequest(WrappedRequest request) { + return hasPathPrefix(request, + ApplicationConnection.CONNECTOR_RESOURCE_PREFIX + "/"); + } + + public static boolean isUIDLRequest(WrappedRequest request) { + return hasPathPrefix(request, ApplicationConnection.UIDL_REQUEST_PATH); + } + + public static boolean isApplicationResourceRequest(WrappedRequest request) { + return hasPathPrefix(request, ApplicationConnection.APP_REQUEST_PATH); + } + } diff --git a/src/com/vaadin/terminal/gwt/server/StreamingErrorEventImpl.java b/src/com/vaadin/terminal/gwt/server/StreamingErrorEventImpl.java index 7418867fc8..6ab3df2789 100644 --- a/src/com/vaadin/terminal/gwt/server/StreamingErrorEventImpl.java +++ b/src/com/vaadin/terminal/gwt/server/StreamingErrorEventImpl.java @@ -17,6 +17,7 @@ final class StreamingErrorEventImpl extends AbstractStreamingEvent implements this.exception = exception; } + @Override public final Exception getException() { return exception; } diff --git a/src/com/vaadin/terminal/gwt/server/StreamingStartEventImpl.java b/src/com/vaadin/terminal/gwt/server/StreamingStartEventImpl.java index 6a7844abd0..274d05e111 100644 --- a/src/com/vaadin/terminal/gwt/server/StreamingStartEventImpl.java +++ b/src/com/vaadin/terminal/gwt/server/StreamingStartEventImpl.java @@ -16,6 +16,7 @@ final class StreamingStartEventImpl extends AbstractStreamingEvent implements super(filename, type, contentLength, 0); } + @Override public void disposeStreamVariable() { disposed = true; } diff --git a/src/com/vaadin/terminal/gwt/server/UnsupportedBrowserHandler.java b/src/com/vaadin/terminal/gwt/server/UnsupportedBrowserHandler.java index 334a7acf8d..5248af595e 100644 --- a/src/com/vaadin/terminal/gwt/server/UnsupportedBrowserHandler.java +++ b/src/com/vaadin/terminal/gwt/server/UnsupportedBrowserHandler.java @@ -26,6 +26,7 @@ public class UnsupportedBrowserHandler implements RequestHandler { /** Cookie used to ignore browser checks */ public static final String FORCE_LOAD_COOKIE = "vaadinforceload=1"; + @Override public boolean handleRequest(Application application, WrappedRequest request, WrappedResponse response) throws IOException { diff --git a/src/com/vaadin/terminal/gwt/server/WebApplicationContext.java b/src/com/vaadin/terminal/gwt/server/WebApplicationContext.java index 8a1ea792f5..36c08b2ed9 100644 --- a/src/com/vaadin/terminal/gwt/server/WebApplicationContext.java +++ b/src/com/vaadin/terminal/gwt/server/WebApplicationContext.java @@ -111,6 +111,7 @@ public class WebApplicationContext extends AbstractWebApplicationContext { * * @see com.vaadin.service.ApplicationContext#getBaseDirectory() */ + @Override public File getBaseDirectory() { final String realPath = ApplicationServlet.getResourcePath( session.getServletContext(), "/"); diff --git a/src/com/vaadin/terminal/gwt/server/WebBrowser.java b/src/com/vaadin/terminal/gwt/server/WebBrowser.java index 38b5409594..4b92b12b66 100644 --- a/src/com/vaadin/terminal/gwt/server/WebBrowser.java +++ b/src/com/vaadin/terminal/gwt/server/WebBrowser.java @@ -7,9 +7,9 @@ package com.vaadin.terminal.gwt.server; import java.util.Date; import java.util.Locale; +import com.vaadin.shared.VBrowserDetails; import com.vaadin.terminal.Terminal; import com.vaadin.terminal.WrappedRequest; -import com.vaadin.terminal.gwt.client.VBrowserDetails; /** * Class that provides information about the web browser the user is using. @@ -42,6 +42,7 @@ public class WebBrowser implements Terminal { * @return Always returns null. */ + @Override public String getDefaultTheme() { return null; } @@ -52,6 +53,7 @@ public class WebBrowser implements Terminal { * @see com.vaadin.terminal.Terminal#getScreenHeight() */ + @Override public int getScreenHeight() { return screenHeight; } @@ -62,6 +64,7 @@ public class WebBrowser implements Terminal { * @see com.vaadin.terminal.Terminal#getScreenWidth() */ + @Override public int getScreenWidth() { return screenWidth; } diff --git a/src/com/vaadin/terminal/gwt/server/WrappedHttpServletRequest.java b/src/com/vaadin/terminal/gwt/server/WrappedHttpServletRequest.java index 0774a79990..cf58f398af 100644 --- a/src/com/vaadin/terminal/gwt/server/WrappedHttpServletRequest.java +++ b/src/com/vaadin/terminal/gwt/server/WrappedHttpServletRequest.java @@ -41,18 +41,22 @@ public class WrappedHttpServletRequest extends HttpServletRequestWrapper this.deploymentConfiguration = deploymentConfiguration; } + @Override public String getRequestPathInfo() { return getPathInfo(); } + @Override public int getSessionMaxInactiveInterval() { return getSession().getMaxInactiveInterval(); } + @Override public Object getSessionAttribute(String name) { return getSession().getAttribute(name); } + @Override public void setSessionAttribute(String name, Object attribute) { getSession().setAttribute(name, attribute); } @@ -66,20 +70,25 @@ public class WrappedHttpServletRequest extends HttpServletRequestWrapper return this; } + @Override public DeploymentConfiguration getDeploymentConfiguration() { return deploymentConfiguration; } + @Override public BrowserDetails getBrowserDetails() { return new BrowserDetails() { + @Override public String getUriFragment() { return null; } + @Override public String getWindowName() { return null; } + @Override public WebBrowser getWebBrowser() { WebApplicationContext context = (WebApplicationContext) Application .getCurrent().getContext(); diff --git a/src/com/vaadin/terminal/gwt/server/WrappedHttpServletResponse.java b/src/com/vaadin/terminal/gwt/server/WrappedHttpServletResponse.java index 14a391b21f..32b2f352a8 100644 --- a/src/com/vaadin/terminal/gwt/server/WrappedHttpServletResponse.java +++ b/src/com/vaadin/terminal/gwt/server/WrappedHttpServletResponse.java @@ -47,6 +47,7 @@ public class WrappedHttpServletResponse extends HttpServletResponseWrapper return this; } + @Override public void setCacheTime(long milliseconds) { doSetCacheTime(this, milliseconds); } @@ -67,6 +68,7 @@ public class WrappedHttpServletResponse extends HttpServletResponseWrapper } } + @Override public DeploymentConfiguration getDeploymentConfiguration() { return deploymentConfiguration; } diff --git a/src/com/vaadin/terminal/gwt/server/WrappedPortletRequest.java b/src/com/vaadin/terminal/gwt/server/WrappedPortletRequest.java index 85d8d5c69c..a3fa172034 100644 --- a/src/com/vaadin/terminal/gwt/server/WrappedPortletRequest.java +++ b/src/com/vaadin/terminal/gwt/server/WrappedPortletRequest.java @@ -17,6 +17,7 @@ import com.vaadin.Application; import com.vaadin.terminal.CombinedRequest; import com.vaadin.terminal.DeploymentConfiguration; import com.vaadin.terminal.WrappedRequest; +import com.vaadin.terminal.gwt.client.ApplicationConnection; /** * Wrapper for {@link PortletRequest} and its subclasses. @@ -46,10 +47,12 @@ public class WrappedPortletRequest implements WrappedRequest { this.deploymentConfiguration = deploymentConfiguration; } + @Override public Object getAttribute(String name) { return request.getAttribute(name); } + @Override public int getContentLength() { try { return ((ClientDataRequest) request).getContentLength(); @@ -59,6 +62,7 @@ public class WrappedPortletRequest implements WrappedRequest { } } + @Override public InputStream getInputStream() throws IOException { try { return ((ClientDataRequest) request).getPortletInputStream(); @@ -68,34 +72,48 @@ public class WrappedPortletRequest implements WrappedRequest { } } + @Override public String getParameter(String name) { return request.getParameter(name); } + @Override public Map<String, String[]> getParameterMap() { return request.getParameterMap(); } + @Override public void setAttribute(String name, Object o) { request.setAttribute(name, o); } + @Override public String getRequestPathInfo() { if (request instanceof ResourceRequest) { - return ((ResourceRequest) request).getResourceID(); + ResourceRequest resourceRequest = (ResourceRequest) request; + String resourceID = resourceRequest.getResourceID(); + if (AbstractApplicationPortlet.RESOURCE_URL_ID.equals(resourceID)) { + String resourcePath = resourceRequest + .getParameter(ApplicationConnection.V_RESOURCE_PATH); + return resourcePath; + } + return resourceID; } else { return null; } } + @Override public int getSessionMaxInactiveInterval() { return request.getPortletSession().getMaxInactiveInterval(); } + @Override public Object getSessionAttribute(String name) { return request.getPortletSession().getAttribute(name); } + @Override public void setSessionAttribute(String name, Object attribute) { request.getPortletSession().setAttribute(name, attribute); } @@ -109,6 +127,7 @@ public class WrappedPortletRequest implements WrappedRequest { return request; } + @Override public String getContentType() { try { return ((ResourceRequest) request).getContentType(); @@ -118,16 +137,20 @@ public class WrappedPortletRequest implements WrappedRequest { } } + @Override public BrowserDetails getBrowserDetails() { return new BrowserDetails() { + @Override public String getUriFragment() { return null; } + @Override public String getWindowName() { return null; } + @Override public WebBrowser getWebBrowser() { PortletApplicationContext2 context = (PortletApplicationContext2) Application .getCurrent().getContext(); @@ -136,18 +159,22 @@ public class WrappedPortletRequest implements WrappedRequest { }; } + @Override public Locale getLocale() { return request.getLocale(); } + @Override public String getRemoteAddr() { return null; } + @Override public boolean isSecure() { return request.isSecure(); } + @Override public String getHeader(String string) { return null; } @@ -164,6 +191,7 @@ public class WrappedPortletRequest implements WrappedRequest { return request.getPortalContext().getProperty(name); } + @Override public DeploymentConfiguration getDeploymentConfiguration() { return deploymentConfiguration; } diff --git a/src/com/vaadin/terminal/gwt/server/WrappedPortletResponse.java b/src/com/vaadin/terminal/gwt/server/WrappedPortletResponse.java index 8824396352..f7ecf26f3c 100644 --- a/src/com/vaadin/terminal/gwt/server/WrappedPortletResponse.java +++ b/src/com/vaadin/terminal/gwt/server/WrappedPortletResponse.java @@ -53,6 +53,7 @@ public class WrappedPortletResponse implements WrappedResponse { this.deploymentConfiguration = deploymentConfiguration; } + @Override public OutputStream getOutputStream() throws IOException { return ((MimeResponse) response).getPortletOutputStream(); } @@ -66,36 +67,44 @@ public class WrappedPortletResponse implements WrappedResponse { return response; } + @Override public void setContentType(String type) { ((MimeResponse) response).setContentType(type); } + @Override public PrintWriter getWriter() throws IOException { return ((MimeResponse) response).getWriter(); } + @Override public void setStatus(int responseStatus) { response.setProperty(ResourceResponse.HTTP_STATUS_CODE, Integer.toString(responseStatus)); } + @Override public void setHeader(String name, String value) { response.setProperty(name, value); } + @Override public void setDateHeader(String name, long timestamp) { response.setProperty(name, HTTP_DATE_FORMAT.format(new Date(timestamp))); } + @Override public void setCacheTime(long milliseconds) { WrappedHttpServletResponse.doSetCacheTime(this, milliseconds); } + @Override public void sendError(int errorCode, String message) throws IOException { setStatus(errorCode); getWriter().write(message); } + @Override public DeploymentConfiguration getDeploymentConfiguration() { return deploymentConfiguration; } diff --git a/src/com/vaadin/terminal/gwt/widgetsetutils/AcceptCriteriaFactoryGenerator.java b/src/com/vaadin/terminal/gwt/widgetsetutils/AcceptCriteriaFactoryGenerator.java index 6d90a51761..e5e2ee1f2c 100644 --- a/src/com/vaadin/terminal/gwt/widgetsetutils/AcceptCriteriaFactoryGenerator.java +++ b/src/com/vaadin/terminal/gwt/widgetsetutils/AcceptCriteriaFactoryGenerator.java @@ -15,7 +15,7 @@ import com.google.gwt.core.ext.typeinfo.JClassType; import com.google.gwt.core.ext.typeinfo.TypeOracle; import com.google.gwt.user.rebind.ClassSourceFileComposerFactory; import com.google.gwt.user.rebind.SourceWriter; -import com.vaadin.terminal.gwt.client.ui.dd.AcceptCriterion; +import com.vaadin.shared.ui.dd.AcceptCriterion; import com.vaadin.terminal.gwt.client.ui.dd.VAcceptCriterion; import com.vaadin.terminal.gwt.client.ui.dd.VAcceptCriterionFactory; diff --git a/src/com/vaadin/terminal/gwt/widgetsetutils/ClassPathExplorer.java b/src/com/vaadin/terminal/gwt/widgetsetutils/ClassPathExplorer.java index 1c5b736492..6ee30183c1 100644 --- a/src/com/vaadin/terminal/gwt/widgetsetutils/ClassPathExplorer.java +++ b/src/com/vaadin/terminal/gwt/widgetsetutils/ClassPathExplorer.java @@ -49,6 +49,7 @@ public class ClassPathExplorer { * File filter that only accepts directories. */ private final static FileFilter DIRECTORIES_ONLY = new FileFilter() { + @Override public boolean accept(File f) { if (f.exists() && f.isDirectory()) { return true; diff --git a/src/com/vaadin/terminal/gwt/widgetsetutils/CustomWidgetMapGenerator.java b/src/com/vaadin/terminal/gwt/widgetsetutils/CustomWidgetMapGenerator.java index f0f3df20b0..89045c63b2 100644 --- a/src/com/vaadin/terminal/gwt/widgetsetutils/CustomWidgetMapGenerator.java +++ b/src/com/vaadin/terminal/gwt/widgetsetutils/CustomWidgetMapGenerator.java @@ -6,10 +6,10 @@ package com.vaadin.terminal.gwt.widgetsetutils; import java.util.Collection; import java.util.HashSet; +import com.vaadin.shared.ui.Connect; +import com.vaadin.shared.ui.Connect.LoadStyle; import com.vaadin.terminal.gwt.client.ComponentConnector; import com.vaadin.terminal.gwt.client.ServerConnector; -import com.vaadin.terminal.gwt.client.ui.Connect; -import com.vaadin.terminal.gwt.client.ui.Connect.LoadStyle; /** * An abstract helper class that can be used to easily build a widgetset with diff --git a/src/com/vaadin/terminal/gwt/widgetsetutils/EagerWidgetMapGenerator.java b/src/com/vaadin/terminal/gwt/widgetsetutils/EagerWidgetMapGenerator.java index 084e1c3857..4ff0592ede 100644 --- a/src/com/vaadin/terminal/gwt/widgetsetutils/EagerWidgetMapGenerator.java +++ b/src/com/vaadin/terminal/gwt/widgetsetutils/EagerWidgetMapGenerator.java @@ -3,8 +3,8 @@ */ package com.vaadin.terminal.gwt.widgetsetutils; +import com.vaadin.shared.ui.Connect.LoadStyle; import com.vaadin.terminal.gwt.client.ServerConnector; -import com.vaadin.terminal.gwt.client.ui.Connect.LoadStyle; /** * WidgetMap generator that builds a widgetset that packs all included widgets diff --git a/src/com/vaadin/terminal/gwt/widgetsetutils/GeneratedRpcMethodProviderGenerator.java b/src/com/vaadin/terminal/gwt/widgetsetutils/GeneratedRpcMethodProviderGenerator.java index b1d69b178b..e11a12a3b5 100644 --- a/src/com/vaadin/terminal/gwt/widgetsetutils/GeneratedRpcMethodProviderGenerator.java +++ b/src/com/vaadin/terminal/gwt/widgetsetutils/GeneratedRpcMethodProviderGenerator.java @@ -21,7 +21,7 @@ import com.google.gwt.core.ext.typeinfo.JType; import com.google.gwt.core.ext.typeinfo.TypeOracle; import com.google.gwt.user.rebind.ClassSourceFileComposerFactory; import com.google.gwt.user.rebind.SourceWriter; -import com.vaadin.terminal.gwt.client.communication.ClientRpc; +import com.vaadin.shared.communication.ClientRpc; import com.vaadin.terminal.gwt.client.communication.GeneratedRpcMethodProvider; import com.vaadin.terminal.gwt.client.communication.RpcManager; import com.vaadin.terminal.gwt.client.communication.RpcMethod; diff --git a/src/com/vaadin/terminal/gwt/widgetsetutils/LazyWidgetMapGenerator.java b/src/com/vaadin/terminal/gwt/widgetsetutils/LazyWidgetMapGenerator.java index f8366beb46..28f3dab482 100644 --- a/src/com/vaadin/terminal/gwt/widgetsetutils/LazyWidgetMapGenerator.java +++ b/src/com/vaadin/terminal/gwt/widgetsetutils/LazyWidgetMapGenerator.java @@ -3,8 +3,8 @@ */ package com.vaadin.terminal.gwt.widgetsetutils; +import com.vaadin.shared.ui.Connect.LoadStyle; import com.vaadin.terminal.gwt.client.ServerConnector; -import com.vaadin.terminal.gwt.client.ui.Connect.LoadStyle; /** * WidgetMap generator that builds a widgetset that optimizes the transferred diff --git a/src/com/vaadin/terminal/gwt/widgetsetutils/RpcProxyCreatorGenerator.java b/src/com/vaadin/terminal/gwt/widgetsetutils/RpcProxyCreatorGenerator.java index 040715fccf..8a6c374187 100644 --- a/src/com/vaadin/terminal/gwt/widgetsetutils/RpcProxyCreatorGenerator.java +++ b/src/com/vaadin/terminal/gwt/widgetsetutils/RpcProxyCreatorGenerator.java @@ -16,10 +16,10 @@ import com.google.gwt.core.ext.typeinfo.JClassType; import com.google.gwt.core.ext.typeinfo.TypeOracle; import com.google.gwt.user.rebind.ClassSourceFileComposerFactory; import com.google.gwt.user.rebind.SourceWriter; +import com.vaadin.shared.communication.ServerRpc; import com.vaadin.terminal.gwt.client.ServerConnector; import com.vaadin.terminal.gwt.client.communication.InitializableServerRpc; import com.vaadin.terminal.gwt.client.communication.RpcProxy.RpcProxyCreator; -import com.vaadin.terminal.gwt.client.communication.ServerRpc; public class RpcProxyCreatorGenerator extends Generator { @@ -31,13 +31,13 @@ public class RpcProxyCreatorGenerator extends Generator { assert (typeOracle != null); JClassType requestedType = typeOracle.findType(requestedClassName); - String packageName = requestedType.getPackage().getName(); - String className = requestedType.getSimpleSourceName() + "Impl"; if (requestedType == null) { logger.log(TreeLogger.ERROR, "Unable to find metadata for type '" + requestedClassName + "'", null); throw new UnableToCompleteException(); } + String packageName = requestedType.getPackage().getName(); + String className = requestedType.getSimpleSourceName() + "Impl"; createType(logger, ctx, packageName, className); return packageName + "." + className; diff --git a/src/com/vaadin/terminal/gwt/widgetsetutils/RpcProxyGenerator.java b/src/com/vaadin/terminal/gwt/widgetsetutils/RpcProxyGenerator.java index d9bc8bc832..7a908e5b4d 100644 --- a/src/com/vaadin/terminal/gwt/widgetsetutils/RpcProxyGenerator.java +++ b/src/com/vaadin/terminal/gwt/widgetsetutils/RpcProxyGenerator.java @@ -17,11 +17,11 @@ import com.google.gwt.core.ext.typeinfo.JParameter; import com.google.gwt.core.ext.typeinfo.TypeOracle; import com.google.gwt.user.rebind.ClassSourceFileComposerFactory; import com.google.gwt.user.rebind.SourceWriter; +import com.vaadin.shared.communication.MethodInvocation; +import com.vaadin.shared.communication.ServerRpc; import com.vaadin.terminal.gwt.client.ApplicationConnection; import com.vaadin.terminal.gwt.client.ServerConnector; import com.vaadin.terminal.gwt.client.communication.InitializableServerRpc; -import com.vaadin.terminal.gwt.client.communication.MethodInvocation; -import com.vaadin.terminal.gwt.client.communication.ServerRpc; /** * GWT generator that creates client side proxy classes for making RPC calls diff --git a/src/com/vaadin/terminal/gwt/widgetsetutils/SerializerMapGenerator.java b/src/com/vaadin/terminal/gwt/widgetsetutils/SerializerMapGenerator.java index 5e151323a0..3f1ad24066 100644 --- a/src/com/vaadin/terminal/gwt/widgetsetutils/SerializerMapGenerator.java +++ b/src/com/vaadin/terminal/gwt/widgetsetutils/SerializerMapGenerator.java @@ -22,17 +22,17 @@ import com.google.gwt.core.ext.typeinfo.JClassType; import com.google.gwt.core.ext.typeinfo.JMethod; import com.google.gwt.core.ext.typeinfo.JParameterizedType; import com.google.gwt.core.ext.typeinfo.JType; +import com.google.gwt.core.ext.typeinfo.NotFoundException; import com.google.gwt.core.ext.typeinfo.TypeOracle; -import com.google.gwt.json.client.JSONObject; +import com.google.gwt.json.client.JSONValue; import com.google.gwt.user.rebind.ClassSourceFileComposerFactory; import com.google.gwt.user.rebind.SourceWriter; +import com.vaadin.shared.communication.ClientRpc; +import com.vaadin.shared.communication.ServerRpc; +import com.vaadin.shared.communication.SharedState; import com.vaadin.terminal.gwt.client.ApplicationConnection; -import com.vaadin.terminal.gwt.client.ConnectorMap; -import com.vaadin.terminal.gwt.client.communication.ClientRpc; import com.vaadin.terminal.gwt.client.communication.JSONSerializer; import com.vaadin.terminal.gwt.client.communication.SerializerMap; -import com.vaadin.terminal.gwt.client.communication.ServerRpc; -import com.vaadin.terminal.gwt.client.communication.SharedState; /** * GWT generator that creates a {@link SerializerMap} implementation (mapper @@ -43,6 +43,7 @@ import com.vaadin.terminal.gwt.client.communication.SharedState; */ public class SerializerMapGenerator extends Generator { + private static final String FAIL_IF_NOT_SERIALIZABLE = "vFailIfNotSerializable"; private String packageName; private String className; @@ -54,7 +55,7 @@ public class SerializerMapGenerator extends Generator { TypeOracle typeOracle = context.getTypeOracle(); Set<JClassType> typesNeedingSerializers = findTypesNeedingSerializers( typeOracle, logger); - warnIfNotJavaSerializable(typesNeedingSerializers, typeOracle, + checkForUnserializableTypes(typesNeedingSerializers, typeOracle, logger); Set<JClassType> typesWithExistingSerializers = findTypesWithExistingSerializers( typeOracle, logger); @@ -90,10 +91,11 @@ public class SerializerMapGenerator extends Generator { * @param typesNeedingSerializers * @param typeOracle * @param logger + * @throws UnableToCompleteException */ - private void warnIfNotJavaSerializable( + private void checkForUnserializableTypes( Set<JClassType> typesNeedingSerializers, TypeOracle typeOracle, - TreeLogger logger) { + TreeLogger logger) throws UnableToCompleteException { JClassType javaSerializable = typeOracle.findType(Serializable.class .getName()); for (JClassType type : typesNeedingSerializers) { @@ -103,33 +105,59 @@ public class SerializerMapGenerator extends Generator { } boolean serializable = type.isAssignableTo(javaSerializable); if (!serializable) { + boolean abortCompile = "true".equals(System + .getProperty(FAIL_IF_NOT_SERIALIZABLE)); logger.log( - Type.ERROR, + abortCompile ? Type.ERROR : Type.WARN, type + " is used in RPC or shared state but does not implement " + Serializable.class.getName() - + ". Communication will work but the Application on server side cannot be serialized if it refers to objects of this type."); + + ". Communication will work but the Application on server side cannot be serialized if it refers to objects of this type. " + + "If the system property " + + FAIL_IF_NOT_SERIALIZABLE + + " is set to \"true\", this causes the compilation to fail instead of just emitting a warning."); + if (abortCompile) { + throw new UnableToCompleteException(); + } } } } private Set<JClassType> findTypesWithExistingSerializers( - TypeOracle typeOracle, TreeLogger logger) { + TypeOracle typeOracle, TreeLogger logger) + throws UnableToCompleteException { JClassType serializerInterface = typeOracle .findType(JSONSerializer.class.getName()); + JType[] deserializeParamTypes = new JType[] { + typeOracle + .findType(com.vaadin.terminal.gwt.client.communication.Type.class + .getName()), + typeOracle.findType(JSONValue.class.getName()), + typeOracle.findType(ApplicationConnection.class.getName()) }; + String deserializeMethodName = "deserialize"; + try { + serializerInterface.getMethod(deserializeMethodName, + deserializeParamTypes); + } catch (NotFoundException e) { + logger.log(Type.ERROR, "Could not find " + deserializeMethodName + + " in " + serializerInterface); + throw new UnableToCompleteException(); + } + Set<JClassType> types = new HashSet<JClassType>(); for (JClassType serializer : serializerInterface.getSubtypes()) { - JType[] deserializeParamTypes = new JType[] { - typeOracle.findType(JSONObject.class.getName()), - typeOracle.findType(ConnectorMap.class.getName()), - typeOracle.findType(ApplicationConnection.class.getName()) }; - JMethod deserializeMethod = serializer.findMethod("deserialize", - deserializeParamTypes); + JMethod deserializeMethod = serializer.findMethod( + deserializeMethodName, deserializeParamTypes); if (deserializeMethod == null) { + logger.log(Type.DEBUG, "Could not find " + + deserializeMethodName + " in " + serializer); continue; } + JType returnType = deserializeMethod.getReturnType(); + logger.log(Type.DEBUG, "Found " + deserializeMethodName + + " with return type " + returnType + " in " + serializer); - types.add(deserializeMethod.getReturnType().isClass()); + types.add(returnType.isClass()); } return types; } diff --git a/src/com/vaadin/terminal/gwt/widgetsetutils/WidgetMapGenerator.java b/src/com/vaadin/terminal/gwt/widgetsetutils/WidgetMapGenerator.java index b264a9c7fe..0d062ec4ff 100644 --- a/src/com/vaadin/terminal/gwt/widgetsetutils/WidgetMapGenerator.java +++ b/src/com/vaadin/terminal/gwt/widgetsetutils/WidgetMapGenerator.java @@ -22,10 +22,10 @@ import com.google.gwt.core.ext.typeinfo.JClassType; import com.google.gwt.core.ext.typeinfo.TypeOracle; import com.google.gwt.user.rebind.ClassSourceFileComposerFactory; import com.google.gwt.user.rebind.SourceWriter; -import com.vaadin.terminal.gwt.client.Connector; +import com.vaadin.shared.Connector; +import com.vaadin.shared.ui.Connect; +import com.vaadin.shared.ui.Connect.LoadStyle; import com.vaadin.terminal.gwt.client.ServerConnector; -import com.vaadin.terminal.gwt.client.ui.Connect; -import com.vaadin.terminal.gwt.client.ui.Connect.LoadStyle; import com.vaadin.terminal.gwt.client.ui.UnknownComponentConnector; import com.vaadin.terminal.gwt.client.ui.root.RootConnector; import com.vaadin.terminal.gwt.server.ClientConnector; diff --git a/src/com/vaadin/tools/WidgetsetCompiler.java b/src/com/vaadin/tools/WidgetsetCompiler.java index 407f0e2387..ecc1946e60 100644 --- a/src/com/vaadin/tools/WidgetsetCompiler.java +++ b/src/com/vaadin/tools/WidgetsetCompiler.java @@ -31,7 +31,8 @@ import com.vaadin.terminal.gwt.widgetsetutils.WidgetSetBuilder; * included in the classpath, as well as the gwt-dev-[platform].jar and other * relevant JARs. * - * @deprecated with Java 6, can use com.google.gwt.dev.Compiler directly (also in Eclipse plug-in etc.) + * @deprecated with Java 6, can use com.google.gwt.dev.Compiler directly (also + * in Eclipse plug-in etc.) */ @Deprecated public class WidgetsetCompiler { @@ -50,6 +51,7 @@ public class WidgetsetCompiler { // http://bugs.sun.com/bugdatabase/view_bug.do?bug_id=6316197) Runnable runCompiler = new Runnable() { + @Override public void run() { try { // GWTCompiler.main(args); diff --git a/src/com/vaadin/ui/AbsoluteLayout.java b/src/com/vaadin/ui/AbsoluteLayout.java index 7d8c402fc9..1c84ca2865 100644 --- a/src/com/vaadin/ui/AbsoluteLayout.java +++ b/src/com/vaadin/ui/AbsoluteLayout.java @@ -12,12 +12,12 @@ import java.util.Map; import com.vaadin.event.LayoutEvents.LayoutClickEvent; import com.vaadin.event.LayoutEvents.LayoutClickListener; import com.vaadin.event.LayoutEvents.LayoutClickNotifier; +import com.vaadin.shared.Connector; +import com.vaadin.shared.MouseEventDetails; +import com.vaadin.shared.ui.absolutelayout.AbsoluteLayoutServerRpc; +import com.vaadin.shared.ui.absolutelayout.AbsoluteLayoutState; import com.vaadin.terminal.Sizeable; -import com.vaadin.terminal.gwt.client.Connector; -import com.vaadin.terminal.gwt.client.MouseEventDetails; import com.vaadin.terminal.gwt.client.ui.LayoutClickEventHandler; -import com.vaadin.terminal.gwt.client.ui.absolutelayout.AbsoluteLayoutServerRpc; -import com.vaadin.terminal.gwt.client.ui.absolutelayout.AbsoluteLayoutState; /** * AbsoluteLayout is a layout implementation that mimics html absolute @@ -30,6 +30,7 @@ public class AbsoluteLayout extends AbstractLayout implements private AbsoluteLayoutServerRpc rpc = new AbsoluteLayoutServerRpc() { + @Override public void layoutClick(MouseEventDetails mouseDetails, Connector clickedConnector) { fireEvent(LayoutClickEvent.createEvent(AbsoluteLayout.this, @@ -56,6 +57,7 @@ public class AbsoluteLayout extends AbstractLayout implements * Gets an iterator for going through all components enclosed in the * absolute layout. */ + @Override public Iterator<Component> getComponentIterator() { return componentToCoordinates.keySet().iterator(); } @@ -66,6 +68,7 @@ public class AbsoluteLayout extends AbstractLayout implements * * @return the number of contained components */ + @Override public int getComponentCount() { return componentToCoordinates.size(); } @@ -74,6 +77,7 @@ public class AbsoluteLayout extends AbstractLayout implements * Replaces one component with another one. The new component inherits the * old components position. */ + @Override public void replaceComponent(Component oldComponent, Component newComponent) { ComponentPosition position = getPosition(oldComponent); removeComponent(oldComponent); @@ -612,12 +616,14 @@ public class AbsoluteLayout extends AbstractLayout implements } + @Override public void addListener(LayoutClickListener listener) { addListener(LayoutClickEventHandler.LAYOUT_CLICK_EVENT_IDENTIFIER, LayoutClickEvent.class, listener, LayoutClickListener.clickMethod); } + @Override public void removeListener(LayoutClickListener listener) { removeListener(LayoutClickEventHandler.LAYOUT_CLICK_EVENT_IDENTIFIER, LayoutClickEvent.class, listener); diff --git a/src/com/vaadin/ui/AbstractComponent.java b/src/com/vaadin/ui/AbstractComponent.java index ba0e5db89c..e7cb38256c 100644 --- a/src/com/vaadin/ui/AbstractComponent.java +++ b/src/com/vaadin/ui/AbstractComponent.java @@ -20,11 +20,11 @@ import com.vaadin.event.ActionManager; import com.vaadin.event.EventRouter; import com.vaadin.event.MethodEventSource; import com.vaadin.event.ShortcutListener; +import com.vaadin.shared.ComponentState; import com.vaadin.terminal.AbstractClientConnector; import com.vaadin.terminal.ErrorMessage; import com.vaadin.terminal.Resource; import com.vaadin.terminal.Terminal; -import com.vaadin.terminal.gwt.client.ComponentState; import com.vaadin.terminal.gwt.server.ClientConnector; import com.vaadin.terminal.gwt.server.ComponentSizeValidator; import com.vaadin.terminal.gwt.server.ResourceReference; @@ -101,10 +101,12 @@ public abstract class AbstractComponent extends AbstractClientConnector /* Get/Set component properties */ + @Override public void setDebugId(String id) { getState().setDebugId(id); } + @Override public String getDebugId() { return getState().getDebugId(); } @@ -141,6 +143,7 @@ public abstract class AbstractComponent extends AbstractClientConnector * Gets the component's style. Don't add a JavaDoc comment here, we use the * default documentation from implemented interface. */ + @Override public String getStyleName() { String s = ""; if (getState().getStyles() != null) { @@ -159,6 +162,7 @@ public abstract class AbstractComponent extends AbstractClientConnector * Sets the component's style. Don't add a JavaDoc comment here, we use the * default documentation from implemented interface. */ + @Override public void setStyleName(String style) { if (style == null || "".equals(style)) { getState().setStyles(null); @@ -179,6 +183,7 @@ public abstract class AbstractComponent extends AbstractClientConnector requestRepaint(); } + @Override public void addStyleName(String style) { if (style == null || "".equals(style)) { return; @@ -201,6 +206,7 @@ public abstract class AbstractComponent extends AbstractClientConnector } } + @Override public void removeStyleName(String style) { if (getState().getStyles() != null) { String[] styleParts = style.split(" +"); @@ -217,6 +223,7 @@ public abstract class AbstractComponent extends AbstractClientConnector * Get's the component's caption. Don't add a JavaDoc comment here, we use * the default documentation from implemented interface. */ + @Override public String getCaption() { return getState().getCaption(); } @@ -229,6 +236,7 @@ public abstract class AbstractComponent extends AbstractClientConnector * @param caption * the new caption <code>String</code> for the component. */ + @Override public void setCaption(String caption) { getState().setCaption(caption); requestRepaint(); @@ -238,6 +246,7 @@ public abstract class AbstractComponent extends AbstractClientConnector * Don't add a JavaDoc comment here, we use the default documentation from * implemented interface. */ + @Override public Locale getLocale() { if (locale != null) { return locale; @@ -283,13 +292,9 @@ public abstract class AbstractComponent extends AbstractClientConnector * Gets the component's icon resource. Don't add a JavaDoc comment here, we * use the default documentation from implemented interface. */ + @Override public Resource getIcon() { - ResourceReference ref = ((ResourceReference) getState().getIcon()); - if (ref == null) { - return null; - } else { - return ref.getResource(); - } + return ResourceReference.getResource(getState().getIcon()); } /** @@ -299,12 +304,9 @@ public abstract class AbstractComponent extends AbstractClientConnector * @param icon * the icon to be shown with the component's caption. */ + @Override public void setIcon(Resource icon) { - if (icon == null) { - getState().setIcon(null); - } else { - getState().setIcon(new ResourceReference(icon)); - } + getState().setIcon(ResourceReference.create(icon)); requestRepaint(); } @@ -313,6 +315,7 @@ public abstract class AbstractComponent extends AbstractClientConnector * * @see com.vaadin.ui.Component#isEnabled() */ + @Override public boolean isEnabled() { return getState().isEnabled(); } @@ -322,6 +325,7 @@ public abstract class AbstractComponent extends AbstractClientConnector * * @see com.vaadin.ui.Component#setEnabled(boolean) */ + @Override public void setEnabled(boolean enabled) { if (getState().isEnabled() != enabled) { getState().setEnabled(enabled); @@ -377,6 +381,7 @@ public abstract class AbstractComponent extends AbstractClientConnector * * @see com.vaadin.ui.Component#isVisible() */ + @Override public boolean isVisible() { return getState().isVisible(); } @@ -386,6 +391,7 @@ public abstract class AbstractComponent extends AbstractClientConnector * * @see com.vaadin.ui.Component#setVisible(boolean) */ + @Override public void setVisible(boolean visible) { if (getState().isVisible() == visible) { return; @@ -566,6 +572,7 @@ public abstract class AbstractComponent extends AbstractClientConnector * Tests if the component is in read-only mode. Don't add a JavaDoc comment * here, we use the default documentation from implemented interface. */ + @Override public boolean isReadOnly() { return getState().isReadOnly(); } @@ -574,6 +581,7 @@ public abstract class AbstractComponent extends AbstractClientConnector * Sets the component's read-only mode. Don't add a JavaDoc comment here, we * use the default documentation from implemented interface. */ + @Override public void setReadOnly(boolean readOnly) { getState().setReadOnly(readOnly); requestRepaint(); @@ -704,6 +712,7 @@ public abstract class AbstractComponent extends AbstractClientConnector * * @see com.vaadin.ui.Component#updateState() */ + @Override public void updateState() { // TODO This logic should be on the client side and the state should // simply be a data object with "width" and "height". @@ -863,6 +872,7 @@ public abstract class AbstractComponent extends AbstractClientConnector * @param method * the activation method. */ + @Override public void addListener(Class<?> eventType, Object target, Method method) { if (eventRouter == null) { eventRouter = new EventRouter(); @@ -904,6 +914,7 @@ public abstract class AbstractComponent extends AbstractClientConnector * @param methodName * the name of the activation method. */ + @Override public void addListener(Class<?> eventType, Object target, String methodName) { if (eventRouter == null) { eventRouter = new EventRouter(); @@ -929,6 +940,7 @@ public abstract class AbstractComponent extends AbstractClientConnector * the target object that has registered to listen to events of * type <code>eventType</code> with one or more methods. */ + @Override public void removeListener(Class<?> eventType, Object target) { if (eventRouter != null) { eventRouter.removeListener(eventType, target); @@ -954,6 +966,7 @@ public abstract class AbstractComponent extends AbstractClientConnector * the method owned by <code>target</code> that's registered to * listen to events of type <code>eventType</code>. */ + @Override public void removeListener(Class<?> eventType, Object target, Method method) { if (eventRouter != null) { eventRouter.removeListener(eventType, target, method); @@ -988,6 +1001,7 @@ public abstract class AbstractComponent extends AbstractClientConnector * the name of the method owned by <code>target</code> that's * registered to listen to events of type <code>eventType</code>. */ + @Override public void removeListener(Class<?> eventType, Object target, String methodName) { if (eventRouter != null) { @@ -1032,6 +1046,7 @@ public abstract class AbstractComponent extends AbstractClientConnector * Don't add a JavaDoc comment here, we use the default documentation from * implemented interface. */ + @Override public void addListener(Component.Listener listener) { addListener(Component.Event.class, listener, COMPONENT_EVENT_METHOD); } @@ -1041,6 +1056,7 @@ public abstract class AbstractComponent extends AbstractClientConnector * JavaDoc comment here, we use the default documentation from implemented * interface. */ + @Override public void removeListener(Component.Listener listener) { removeListener(Component.Event.class, listener, COMPONENT_EVENT_METHOD); } @@ -1090,6 +1106,7 @@ public abstract class AbstractComponent extends AbstractClientConnector * * @see com.vaadin.terminal.Sizeable#getHeight() */ + @Override public float getHeight() { return height; } @@ -1099,6 +1116,7 @@ public abstract class AbstractComponent extends AbstractClientConnector * * @see com.vaadin.terminal.Sizeable#getHeightUnits() */ + @Override public Unit getHeightUnits() { return heightUnit; } @@ -1108,6 +1126,7 @@ public abstract class AbstractComponent extends AbstractClientConnector * * @see com.vaadin.terminal.Sizeable#getWidth() */ + @Override public float getWidth() { return width; } @@ -1117,6 +1136,7 @@ public abstract class AbstractComponent extends AbstractClientConnector * * @see com.vaadin.terminal.Sizeable#getWidthUnits() */ + @Override public Unit getWidthUnits() { return widthUnit; } @@ -1126,6 +1146,7 @@ public abstract class AbstractComponent extends AbstractClientConnector * * @see com.vaadin.terminal.Sizeable#setHeight(float, Unit) */ + @Override public void setHeight(float height, Unit unit) { if (unit == null) { throw new IllegalArgumentException("Unit can not be null"); @@ -1141,6 +1162,7 @@ public abstract class AbstractComponent extends AbstractClientConnector * * @see com.vaadin.terminal.Sizeable#setSizeFull() */ + @Override public void setSizeFull() { setWidth(100, Unit.PERCENTAGE); setHeight(100, Unit.PERCENTAGE); @@ -1151,6 +1173,7 @@ public abstract class AbstractComponent extends AbstractClientConnector * * @see com.vaadin.terminal.Sizeable#setSizeUndefined() */ + @Override public void setSizeUndefined() { setWidth(-1, Unit.PIXELS); setHeight(-1, Unit.PIXELS); @@ -1161,6 +1184,7 @@ public abstract class AbstractComponent extends AbstractClientConnector * * @see com.vaadin.terminal.Sizeable#setWidth(float, Unit) */ + @Override public void setWidth(float width, Unit unit) { if (unit == null) { throw new IllegalArgumentException("Unit can not be null"); @@ -1176,6 +1200,7 @@ public abstract class AbstractComponent extends AbstractClientConnector * * @see com.vaadin.terminal.Sizeable#setWidth(java.lang.String) */ + @Override public void setWidth(String width) { Size size = parseStringSize(width); if (size != null) { @@ -1190,6 +1215,7 @@ public abstract class AbstractComponent extends AbstractClientConnector * * @see com.vaadin.terminal.Sizeable#setHeight(java.lang.String) */ + @Override public void setHeight(String height) { Size size = parseStringSize(height); if (size != null) { diff --git a/src/com/vaadin/ui/AbstractComponentContainer.java b/src/com/vaadin/ui/AbstractComponentContainer.java index 8ef458b704..bc27242bb8 100644 --- a/src/com/vaadin/ui/AbstractComponentContainer.java +++ b/src/com/vaadin/ui/AbstractComponentContainer.java @@ -38,6 +38,7 @@ public abstract class AbstractComponentContainer extends AbstractComponent * Removes all components from the container. This should probably be * re-implemented in extending classes for a more powerful implementation. */ + @Override public void removeAllComponents() { final LinkedList<Component> l = new LinkedList<Component>(); @@ -57,6 +58,7 @@ public abstract class AbstractComponentContainer extends AbstractComponent * add a JavaDoc comment here, we use the default documentation from * implemented interface. */ + @Override public void moveComponentsFrom(ComponentContainer source) { final LinkedList<Component> components = new LinkedList<Component>(); for (final Iterator<Component> i = source.getComponentIterator(); i @@ -93,24 +95,28 @@ public abstract class AbstractComponentContainer extends AbstractComponent } /* documented in interface */ + @Override public void addListener(ComponentAttachListener listener) { addListener(ComponentContainer.ComponentAttachEvent.class, listener, COMPONENT_ATTACHED_METHOD); } /* documented in interface */ + @Override public void addListener(ComponentDetachListener listener) { addListener(ComponentContainer.ComponentDetachEvent.class, listener, COMPONENT_DETACHED_METHOD); } /* documented in interface */ + @Override public void removeListener(ComponentAttachListener listener) { removeListener(ComponentContainer.ComponentAttachEvent.class, listener, COMPONENT_ATTACHED_METHOD); } /* documented in interface */ + @Override public void removeListener(ComponentDetachListener listener) { removeListener(ComponentContainer.ComponentDetachEvent.class, listener, COMPONENT_DETACHED_METHOD); @@ -147,6 +153,7 @@ public abstract class AbstractComponentContainer extends AbstractComponent * * @see com.vaadin.ui.ComponentContainer#addComponent(Component) */ + @Override public void addComponent(Component c) { if (c instanceof ComponentContainer) { // Make sure we're not adding the component inside it's own content @@ -177,6 +184,7 @@ public abstract class AbstractComponentContainer extends AbstractComponent * * @see com.vaadin.ui.ComponentContainer#removeComponent(Component) */ + @Override public void removeComponent(Component c) { if (c.getParent() == this) { c.setParent(null); @@ -325,6 +333,7 @@ public abstract class AbstractComponentContainer extends AbstractComponent true); } + @Override public Iterator<Component> iterator() { return getComponentIterator(); } @@ -335,6 +344,7 @@ public abstract class AbstractComponentContainer extends AbstractComponent * @see * com.vaadin.ui.HasComponents#isComponentVisible(com.vaadin.ui.Component) */ + @Override public boolean isComponentVisible(Component childComponent) { return true; } diff --git a/src/com/vaadin/ui/AbstractField.java b/src/com/vaadin/ui/AbstractField.java index ce62fb43ed..6fe7f54df5 100644 --- a/src/com/vaadin/ui/AbstractField.java +++ b/src/com/vaadin/ui/AbstractField.java @@ -25,10 +25,10 @@ import com.vaadin.data.util.converter.ConverterUtil; import com.vaadin.event.Action; import com.vaadin.event.ShortcutAction; import com.vaadin.event.ShortcutListener; +import com.vaadin.shared.AbstractFieldState; import com.vaadin.terminal.AbstractErrorMessage; import com.vaadin.terminal.CompositeErrorMessage; import com.vaadin.terminal.ErrorMessage; -import com.vaadin.terminal.gwt.client.AbstractFieldState; /** * <p> @@ -178,6 +178,7 @@ public abstract class AbstractField<T> extends AbstractComponent implements * * @return the type of the Field */ + @Override public abstract Class<? extends T> getType(); /** @@ -206,6 +207,7 @@ public abstract class AbstractField<T> extends AbstractComponent implements * * @see com.vaadin.data.BufferedValidatable#isInvalidCommitted() */ + @Override public boolean isInvalidCommitted() { return invalidCommitted; } @@ -215,6 +217,7 @@ public abstract class AbstractField<T> extends AbstractComponent implements * * @see com.vaadin.data.BufferedValidatable#setInvalidCommitted(boolean) */ + @Override public void setInvalidCommitted(boolean isCommitted) { invalidCommitted = isCommitted; } @@ -223,6 +226,7 @@ public abstract class AbstractField<T> extends AbstractComponent implements * Saves the current value to the data source Don't add a JavaDoc comment * here, we use the default documentation from the implemented interface. */ + @Override public void commit() throws Buffered.SourceException, InvalidValueException { if (dataSource != null && !dataSource.isReadOnly()) { if ((isInvalidCommitted() || isValid())) { @@ -271,6 +275,7 @@ public abstract class AbstractField<T> extends AbstractComponent implements * Updates the value from the data source. Don't add a JavaDoc comment here, * we use the default documentation from the implemented interface. */ + @Override public void discard() throws Buffered.SourceException { if (dataSource != null) { @@ -343,6 +348,7 @@ public abstract class AbstractField<T> extends AbstractComponent implements * comment here, we use the default documentation from the implemented * interface. */ + @Override public boolean isModified() { return getState().isModified(); } @@ -356,6 +362,7 @@ public abstract class AbstractField<T> extends AbstractComponent implements * Tests if the field is in write-through mode. Don't add a JavaDoc comment * here, we use the default documentation from the implemented interface. */ + @Override public boolean isWriteThrough() { return writeThroughMode; } @@ -381,6 +388,7 @@ public abstract class AbstractField<T> extends AbstractComponent implements * setReadThrough(true), setWriteThrough(true) equals * setBuffered(false) */ + @Override @Deprecated public void setWriteThrough(boolean writeThrough) throws Buffered.SourceException, InvalidValueException { @@ -397,6 +405,7 @@ public abstract class AbstractField<T> extends AbstractComponent implements * Tests if the field is in read-through mode. Don't add a JavaDoc comment * here, we use the default documentation from the implemented interface. */ + @Override public boolean isReadThrough() { return readThroughMode; } @@ -420,6 +429,7 @@ public abstract class AbstractField<T> extends AbstractComponent implements * setReadThrough(true), setWriteThrough(true) equals * setBuffered(false) */ + @Override @Deprecated public void setReadThrough(boolean readThrough) throws Buffered.SourceException { @@ -452,6 +462,7 @@ public abstract class AbstractField<T> extends AbstractComponent implements * @param buffered * true if buffered mode should be turned on, false otherwise */ + @Override public void setBuffered(boolean buffered) { setReadThrough(!buffered); setWriteThrough(!buffered); @@ -464,6 +475,7 @@ public abstract class AbstractField<T> extends AbstractComponent implements * * @return true if buffered mode is on, false otherwise */ + @Override public boolean isBuffered() { return !isReadThrough() && !isWriteThrough(); } @@ -517,6 +529,7 @@ public abstract class AbstractField<T> extends AbstractComponent implements * * @return the current value of the field. */ + @Override public T getValue() { return getFieldValue(); } @@ -528,6 +541,7 @@ public abstract class AbstractField<T> extends AbstractComponent implements * the New value of the field. * @throws Property.ReadOnlyException */ + @Override public void setValue(Object newFieldValue) throws Property.ReadOnlyException, Converter.ConversionException { // This check is needed as long as setValue accepts Object instead of T @@ -644,6 +658,7 @@ public abstract class AbstractField<T> extends AbstractComponent implements * @return the current data source as a Property, or <code>null</code> if * none defined. */ + @Override public Property getPropertyDataSource() { return dataSource; } @@ -686,6 +701,7 @@ public abstract class AbstractField<T> extends AbstractComponent implements * @param newDataSource * the new data source Property. */ + @Override public void setPropertyDataSource(Property newDataSource) { // Saves the old value @@ -863,6 +879,7 @@ public abstract class AbstractField<T> extends AbstractComponent implements * @param validator * the new validator to be added. */ + @Override public void addValidator(Validator validator) { if (validators == null) { validators = new LinkedList<Validator>(); @@ -877,6 +894,7 @@ public abstract class AbstractField<T> extends AbstractComponent implements * @return the Unmodifiable collection that holds all validators for the * field. */ + @Override public Collection<Validator> getValidators() { if (validators == null || validators.isEmpty()) { return null; @@ -890,6 +908,7 @@ public abstract class AbstractField<T> extends AbstractComponent implements * @param validator * the validator to remove. */ + @Override public void removeValidator(Validator validator) { if (validators != null) { validators.remove(validator); @@ -919,6 +938,7 @@ public abstract class AbstractField<T> extends AbstractComponent implements * current value is valid or if the field is empty and not required, * <code>false</code> otherwise. */ + @Override public boolean isValid() { try { @@ -943,6 +963,7 @@ public abstract class AbstractField<T> extends AbstractComponent implements * * @see com.vaadin.data.Validatable#validate() */ + @Override public void validate() throws Validator.InvalidValueException { if (isRequired() && isEmpty()) { @@ -1014,6 +1035,7 @@ public abstract class AbstractField<T> extends AbstractComponent implements * @return true iff the invalid values are allowed. * @see com.vaadin.data.Validatable#isInvalidAllowed() */ + @Override public boolean isInvalidAllowed() { return invalidAllowed; } @@ -1031,6 +1053,7 @@ public abstract class AbstractField<T> extends AbstractComponent implements * * @see com.vaadin.data.Validatable#setInvalidAllowed(boolean) */ + @Override public void setInvalidAllowed(boolean invalidAllowed) throws UnsupportedOperationException { this.invalidAllowed = invalidAllowed; @@ -1103,6 +1126,7 @@ public abstract class AbstractField<T> extends AbstractComponent implements * Adds a value change listener for the field. Don't add a JavaDoc comment * here, we use the default documentation from the implemented interface. */ + @Override public void addListener(Property.ValueChangeListener listener) { addListener(AbstractField.ValueChangeEvent.class, listener, VALUE_CHANGE_METHOD); @@ -1113,6 +1137,7 @@ public abstract class AbstractField<T> extends AbstractComponent implements * comment here, we use the default documentation from the implemented * interface. */ + @Override public void removeListener(Property.ValueChangeListener listener) { removeListener(AbstractField.ValueChangeEvent.class, listener, VALUE_CHANGE_METHOD); @@ -1152,6 +1177,7 @@ public abstract class AbstractField<T> extends AbstractComponent implements * * @see Property.ReadOnlyStatusChangeListener */ + @Override public void readOnlyStatusChange(Property.ReadOnlyStatusChangeEvent event) { getState().setPropertyReadOnly(event.getProperty().isReadOnly()); requestRepaint(); @@ -1184,6 +1210,7 @@ public abstract class AbstractField<T> extends AbstractComponent implements * * @return the Source of the event. */ + @Override public Property getProperty() { return (Property) getSource(); } @@ -1194,6 +1221,7 @@ public abstract class AbstractField<T> extends AbstractComponent implements * JavaDoc comment here, we use the default documentation from the * implemented interface. */ + @Override public void addListener(Property.ReadOnlyStatusChangeListener listener) { addListener(Property.ReadOnlyStatusChangeEvent.class, listener, READ_ONLY_STATUS_CHANGE_METHOD); @@ -1204,6 +1232,7 @@ public abstract class AbstractField<T> extends AbstractComponent implements * JavaDoc comment here, we use the default documentation from the * implemented interface. */ + @Override public void removeListener(Property.ReadOnlyStatusChangeListener listener) { removeListener(Property.ReadOnlyStatusChangeEvent.class, listener, READ_ONLY_STATUS_CHANGE_METHOD); @@ -1228,6 +1257,7 @@ public abstract class AbstractField<T> extends AbstractComponent implements * the value change event telling the data source contents have * changed. */ + @Override public void valueChange(Property.ValueChangeEvent event) { if (isReadThrough()) { if (committingValueToDataSource) { @@ -1271,6 +1301,7 @@ public abstract class AbstractField<T> extends AbstractComponent implements * * @see com.vaadin.ui.Component.Focusable#getTabIndex() */ + @Override public int getTabIndex() { return getState().getTabIndex(); } @@ -1280,6 +1311,7 @@ public abstract class AbstractField<T> extends AbstractComponent implements * * @see com.vaadin.ui.Component.Focusable#setTabIndex(int) */ + @Override public void setTabIndex(int tabIndex) { getState().setTabIndex(tabIndex); requestRepaint(); @@ -1362,6 +1394,7 @@ public abstract class AbstractField<T> extends AbstractComponent implements * @return <code>true</code> if the field is required, otherwise * <code>false</code>. */ + @Override public boolean isRequired() { return getState().isRequired(); } @@ -1381,6 +1414,7 @@ public abstract class AbstractField<T> extends AbstractComponent implements * @param required * Is the field required. */ + @Override public void setRequired(boolean required) { getState().setRequired(required); requestRepaint(); @@ -1395,11 +1429,13 @@ public abstract class AbstractField<T> extends AbstractComponent implements * @param requiredMessage * Message to be shown when this field is required, but empty. */ + @Override public void setRequiredError(String requiredMessage) { requiredError = requiredMessage; requestRepaint(); } + @Override public String getRequiredError() { return requiredError; } diff --git a/src/com/vaadin/ui/AbstractJavaScriptComponent.java b/src/com/vaadin/ui/AbstractJavaScriptComponent.java index 95c45f55f9..3668669d16 100644 --- a/src/com/vaadin/ui/AbstractJavaScriptComponent.java +++ b/src/com/vaadin/ui/AbstractJavaScriptComponent.java @@ -3,8 +3,9 @@ */ package com.vaadin.ui; +import com.vaadin.shared.ui.JavaScriptComponentState; import com.vaadin.terminal.JavaScriptCallbackHelper; -import com.vaadin.terminal.gwt.client.ui.JavaScriptComponentState; +import com.vaadin.terminal.gwt.client.ApplicationConnection; import com.vaadin.terminal.gwt.client.ui.JavaScriptWidget; /** @@ -37,9 +38,9 @@ import com.vaadin.terminal.gwt.client.ui.JavaScriptWidget; * the connector's parent. If <code>connectorId</code> is provided, the id of * the parent of the corresponding connector with the passed id is returned * instead.</li> - * <li><code>getWidgetElement([connectorId])</code> - returns the DOM Element - * that is the root of a connector's widget. <code>null</code> is returned if - * the connector can not be found or if the connector doesn't have a widget. If + * <li><code>getElement([connectorId])</code> - returns the DOM Element that is + * the root of a connector's widget. <code>null</code> is returned if the + * connector can not be found or if the connector doesn't have a widget. If * <code>connectorId</code> is not provided, the connector id of the current * connector will be used.</li> * <li><code>getState()</code> - returns an object corresponding to the shared @@ -66,6 +67,9 @@ import com.vaadin.terminal.gwt.client.ui.JavaScriptWidget; * exception when called. The scheme for conversion between Java types in the * RPC interface and the JavaScript values that should be passed to the * functions is described bellow.</li> + * <li><code>translateVaadinUri(uri)</code> - Translates a Vaadin URI to a URL + * that can be used in the browser. This is just way of accessing + * {@link ApplicationConnection#translateVaadinUri(String)}</li> * </ul> * The connector wrapper also supports these special functions: * <ul> @@ -110,7 +114,7 @@ import com.vaadin.terminal.gwt.client.ui.JavaScriptWidget; * @version @VERSION@ * @since 7.0.0 */ -public class AbstractJavaScriptComponent extends AbstractComponent { +public abstract class AbstractJavaScriptComponent extends AbstractComponent { private JavaScriptCallbackHelper callbackHelper = new JavaScriptCallbackHelper( this); @@ -142,8 +146,9 @@ public class AbstractJavaScriptComponent extends AbstractComponent { /** * Invoke a named function that the connector JavaScript has added to the * JavaScript connector wrapper object. The arguments should only contain - * data types that can be represented in JavaScript, including primitive - * boxing types, arrays, String, List, Set, Map, Connector and JavaBeans. + * data types that can be represented in JavaScript including primitives, + * their boxed types, arrays, String, List, Set, Map, Connector and + * JavaBeans. * * @param name * the name of the function diff --git a/src/com/vaadin/ui/AbstractLayout.java b/src/com/vaadin/ui/AbstractLayout.java index 4876b40265..7b3a537d06 100644 --- a/src/com/vaadin/ui/AbstractLayout.java +++ b/src/com/vaadin/ui/AbstractLayout.java @@ -4,7 +4,7 @@ package com.vaadin.ui; -import com.vaadin.terminal.gwt.client.ui.AbstractLayoutState; +import com.vaadin.shared.ui.AbstractLayoutState; import com.vaadin.ui.Layout.MarginHandler; /** @@ -32,6 +32,7 @@ public abstract class AbstractLayout extends AbstractComponentContainer * * @see com.vaadin.ui.Layout#setMargin(boolean) */ + @Override public void setMargin(boolean enabled) { margins.setMargins(enabled); getState().setMarginsBitmask(margins.getBitMask()); @@ -43,6 +44,7 @@ public abstract class AbstractLayout extends AbstractComponentContainer * * @see com.vaadin.ui.Layout.MarginHandler#getMargin() */ + @Override public MarginInfo getMargin() { return margins; } @@ -52,6 +54,7 @@ public abstract class AbstractLayout extends AbstractComponentContainer * * @see com.vaadin.ui.Layout.MarginHandler#setMargin(MarginInfo) */ + @Override public void setMargin(MarginInfo marginInfo) { margins.setMargins(marginInfo); getState().setMarginsBitmask(margins.getBitMask()); @@ -63,6 +66,7 @@ public abstract class AbstractLayout extends AbstractComponentContainer * * @see com.vaadin.ui.Layout#setMargin(boolean, boolean, boolean, boolean) */ + @Override public void setMargin(boolean topEnabled, boolean rightEnabled, boolean bottomEnabled, boolean leftEnabled) { margins.setMargins(topEnabled, rightEnabled, bottomEnabled, leftEnabled); diff --git a/src/com/vaadin/ui/AbstractMedia.java b/src/com/vaadin/ui/AbstractMedia.java index 760d9878ca..71b2e38ef3 100644 --- a/src/com/vaadin/ui/AbstractMedia.java +++ b/src/com/vaadin/ui/AbstractMedia.java @@ -7,10 +7,10 @@ package com.vaadin.ui; import java.util.ArrayList; import java.util.List; +import com.vaadin.shared.communication.URLReference; +import com.vaadin.shared.ui.AbstractMediaState; +import com.vaadin.shared.ui.MediaControl; import com.vaadin.terminal.Resource; -import com.vaadin.terminal.gwt.client.communication.URLReference; -import com.vaadin.terminal.gwt.client.ui.AbstractMediaState; -import com.vaadin.terminal.gwt.client.ui.MediaBaseConnector.MediaControl; import com.vaadin.terminal.gwt.server.ResourceReference; /** @@ -18,7 +18,7 @@ import com.vaadin.terminal.gwt.server.ResourceReference; * * @author Vaadin Ltd */ -public class AbstractMedia extends AbstractComponent { +public abstract class AbstractMedia extends AbstractComponent { @Override public AbstractMediaState getState() { diff --git a/src/com/vaadin/ui/AbstractOrderedLayout.java b/src/com/vaadin/ui/AbstractOrderedLayout.java index 2cd6fc2a9a..0581d0a279 100644 --- a/src/com/vaadin/ui/AbstractOrderedLayout.java +++ b/src/com/vaadin/ui/AbstractOrderedLayout.java @@ -10,13 +10,13 @@ import java.util.LinkedList; import com.vaadin.event.LayoutEvents.LayoutClickEvent; import com.vaadin.event.LayoutEvents.LayoutClickListener; import com.vaadin.event.LayoutEvents.LayoutClickNotifier; +import com.vaadin.shared.Connector; +import com.vaadin.shared.MouseEventDetails; +import com.vaadin.shared.ui.orderedlayout.AbstractOrderedLayoutServerRpc; +import com.vaadin.shared.ui.orderedlayout.AbstractOrderedLayoutState; +import com.vaadin.shared.ui.orderedlayout.AbstractOrderedLayoutState.ChildComponentData; import com.vaadin.terminal.Sizeable; -import com.vaadin.terminal.gwt.client.Connector; -import com.vaadin.terminal.gwt.client.MouseEventDetails; import com.vaadin.terminal.gwt.client.ui.LayoutClickEventHandler; -import com.vaadin.terminal.gwt.client.ui.orderedlayout.AbstractOrderedLayoutServerRpc; -import com.vaadin.terminal.gwt.client.ui.orderedlayout.AbstractOrderedLayoutState; -import com.vaadin.terminal.gwt.client.ui.orderedlayout.AbstractOrderedLayoutState.ChildComponentData; @SuppressWarnings("serial") public abstract class AbstractOrderedLayout extends AbstractLayout implements @@ -24,6 +24,7 @@ public abstract class AbstractOrderedLayout extends AbstractLayout implements private AbstractOrderedLayoutServerRpc rpc = new AbstractOrderedLayoutServerRpc() { + @Override public void layoutClick(MouseEventDetails mouseDetails, Connector clickedConnector) { fireEvent(LayoutClickEvent.createEvent(AbstractOrderedLayout.this, @@ -157,6 +158,7 @@ public abstract class AbstractOrderedLayout extends AbstractLayout implements * * @return the Iterator of the components inside the container. */ + @Override public Iterator<Component> getComponentIterator() { return components.iterator(); } @@ -167,11 +169,13 @@ public abstract class AbstractOrderedLayout extends AbstractLayout implements * * @return the number of contained components */ + @Override public int getComponentCount() { return components.size(); } /* Documented in superclass */ + @Override public void replaceComponent(Component oldComponent, Component newComponent) { // Gets the locations @@ -220,12 +224,14 @@ public abstract class AbstractOrderedLayout extends AbstractLayout implements * @see com.vaadin.ui.Layout.AlignmentHandler#setComponentAlignment(com * .vaadin.ui.Component, int, int) */ + @Override public void setComponentAlignment(Component childComponent, int horizontalAlignment, int verticalAlignment) { Alignment a = new Alignment(horizontalAlignment + verticalAlignment); setComponentAlignment(childComponent, a); } + @Override public void setComponentAlignment(Component childComponent, Alignment alignment) { ChildComponentData childData = getState().getChildData().get( @@ -247,6 +253,7 @@ public abstract class AbstractOrderedLayout extends AbstractLayout implements * @see com.vaadin.ui.Layout.AlignmentHandler#getComponentAlignment(com * .vaadin.ui.Component) */ + @Override public Alignment getComponentAlignment(Component childComponent) { ChildComponentData childData = getState().getChildData().get( childComponent); @@ -263,6 +270,7 @@ public abstract class AbstractOrderedLayout extends AbstractLayout implements * * @see com.vaadin.ui.Layout.SpacingHandler#setSpacing(boolean) */ + @Override public void setSpacing(boolean spacing) { getState().setSpacing(spacing); requestRepaint(); @@ -273,6 +281,7 @@ public abstract class AbstractOrderedLayout extends AbstractLayout implements * * @see com.vaadin.ui.Layout.SpacingHandler#isSpacing() */ + @Override public boolean isSpacing() { return getState().isSpacing(); } @@ -334,12 +343,14 @@ public abstract class AbstractOrderedLayout extends AbstractLayout implements return childData.getExpandRatio(); } + @Override public void addListener(LayoutClickListener listener) { addListener(LayoutClickEventHandler.LAYOUT_CLICK_EVENT_IDENTIFIER, LayoutClickEvent.class, listener, LayoutClickListener.clickMethod); } + @Override public void removeListener(LayoutClickListener listener) { removeListener(LayoutClickEventHandler.LAYOUT_CLICK_EVENT_IDENTIFIER, LayoutClickEvent.class, listener); diff --git a/src/com/vaadin/ui/AbstractSelect.java b/src/com/vaadin/ui/AbstractSelect.java index 6a927251af..0a97ceb649 100644 --- a/src/com/vaadin/ui/AbstractSelect.java +++ b/src/com/vaadin/ui/AbstractSelect.java @@ -27,12 +27,12 @@ import com.vaadin.event.dd.TargetDetailsImpl; import com.vaadin.event.dd.acceptcriteria.ClientSideCriterion; import com.vaadin.event.dd.acceptcriteria.ContainsDataFlavor; import com.vaadin.event.dd.acceptcriteria.TargetDetailIs; +import com.vaadin.shared.ui.dd.VerticalDropLocation; import com.vaadin.terminal.KeyMapper; import com.vaadin.terminal.PaintException; import com.vaadin.terminal.PaintTarget; import com.vaadin.terminal.Resource; import com.vaadin.terminal.Vaadin6Component; -import com.vaadin.terminal.gwt.client.ui.dd.VerticalDropLocation; import com.vaadin.ui.AbstractSelect.ItemCaptionMode; /** @@ -320,6 +320,7 @@ public abstract class AbstractSelect extends AbstractField<Object> implements * @throws PaintException * if the paint operation failed. */ + @Override public void paintContent(PaintTarget target) throws PaintException { // Paints select attributes @@ -422,6 +423,7 @@ public abstract class AbstractSelect extends AbstractField<Object> implements * @see com.vaadin.ui.AbstractComponent#changeVariables(java.lang.Object, * java.util.Map) */ + @Override public void changeVariables(Object source, Map<String, Object> variables) { // New option entered (and it is allowed) @@ -434,7 +436,8 @@ public abstract class AbstractSelect extends AbstractField<Object> implements // Selection change if (variables.containsKey("selected")) { - final String[] ka = (String[]) variables.get("selected"); + final String[] clientSideSelectedKeys = (String[]) variables + .get("selected"); // Multiselect mode if (isMultiSelect()) { @@ -442,19 +445,20 @@ public abstract class AbstractSelect extends AbstractField<Object> implements // TODO Optimize by adding repaintNotNeeded when applicable // Converts the key-array to id-set - final LinkedList<Object> s = new LinkedList<Object>(); - for (int i = 0; i < ka.length; i++) { - final Object id = itemIdMapper.get(ka[i]); + final LinkedList<Object> acceptedSelections = new LinkedList<Object>(); + for (int i = 0; i < clientSideSelectedKeys.length; i++) { + final Object id = itemIdMapper + .get(clientSideSelectedKeys[i]); if (!isNullSelectionAllowed() && (id == null || id == getNullSelectionItemId())) { // skip empty selection if nullselection is not allowed requestRepaint(); } else if (id != null && containsId(id)) { - s.add(id); + acceptedSelections.add(id); } } - if (!isNullSelectionAllowed() && s.size() < 1) { + if (!isNullSelectionAllowed() && acceptedSelections.size() < 1) { // empty selection not allowed, keep old value requestRepaint(); return; @@ -462,27 +466,32 @@ public abstract class AbstractSelect extends AbstractField<Object> implements // Limits the deselection to the set of visible items // (non-visible items can not be deselected) - final Collection<?> visible = getVisibleItemIds(); - if (visible != null) { + Collection<?> visibleNotSelected = getVisibleItemIds(); + if (visibleNotSelected != null) { + visibleNotSelected = new HashSet<Object>(visibleNotSelected); + // Don't remove those that will be added to preserve order + visibleNotSelected.removeAll(acceptedSelections); + @SuppressWarnings("unchecked") Set<Object> newsel = (Set<Object>) getValue(); if (newsel == null) { - newsel = new HashSet<Object>(); + newsel = new LinkedHashSet<Object>(); } else { - newsel = new HashSet<Object>(newsel); + newsel = new LinkedHashSet<Object>(newsel); } - newsel.removeAll(visible); - newsel.addAll(s); + newsel.removeAll(visibleNotSelected); + newsel.addAll(acceptedSelections); setValue(newsel, true); } } else { // Single select mode if (!isNullSelectionAllowed() - && (ka.length == 0 || ka[0] == null || ka[0] == getNullSelectionItemId())) { + && (clientSideSelectedKeys.length == 0 + || clientSideSelectedKeys[0] == null || clientSideSelectedKeys[0] == getNullSelectionItemId())) { requestRepaint(); return; } - if (ka.length == 0) { + if (clientSideSelectedKeys.length == 0) { // Allows deselection only if the deselected item is // visible final Object current = getValue(); @@ -491,7 +500,8 @@ public abstract class AbstractSelect extends AbstractField<Object> implements setValue(null, true); } } else { - final Object id = itemIdMapper.get(ka[0]); + final Object id = itemIdMapper + .get(clientSideSelectedKeys[0]); if (!isNullSelectionAllowed() && id == null) { requestRepaint(); } else if (id != null @@ -542,6 +552,7 @@ public abstract class AbstractSelect extends AbstractField<Object> implements * */ public class DefaultNewItemHandler implements NewItemHandler { + @Override public void addNewItem(String newItemCaption) { // Checks for readonly if (isReadOnly()) { @@ -672,10 +683,10 @@ public abstract class AbstractSelect extends AbstractField<Object> implements if (isMultiSelect()) { if (newValue == null) { - super.setValue(new HashSet<Object>(), repaintIsNotNeeded); + super.setValue(new LinkedHashSet<Object>(), repaintIsNotNeeded); } else if (Collection.class.isAssignableFrom(newValue.getClass())) { - super.setValue(new HashSet<Object>((Collection<?>) newValue), - repaintIsNotNeeded); + super.setValue(new LinkedHashSet<Object>( + (Collection<?>) newValue), repaintIsNotNeeded); } } else if (newValue == null || items.containsId(newValue)) { super.setValue(newValue, repaintIsNotNeeded); @@ -692,6 +703,7 @@ public abstract class AbstractSelect extends AbstractField<Object> implements * the item id. * @return the item from the container. */ + @Override public Item getItem(Object itemId) { return items.getItem(itemId); } @@ -701,6 +713,7 @@ public abstract class AbstractSelect extends AbstractField<Object> implements * * @return the Collection of item ids. */ + @Override public Collection<?> getItemIds() { return items.getItemIds(); } @@ -710,6 +723,7 @@ public abstract class AbstractSelect extends AbstractField<Object> implements * * @return the Collection of property ids. */ + @Override public Collection<?> getContainerPropertyIds() { return items.getContainerPropertyIds(); } @@ -721,6 +735,7 @@ public abstract class AbstractSelect extends AbstractField<Object> implements * the Id identifying the property. * @see com.vaadin.data.Container#getType(java.lang.Object) */ + @Override public Class<?> getType(Object propertyId) { return items.getType(propertyId); } @@ -732,6 +747,7 @@ public abstract class AbstractSelect extends AbstractField<Object> implements * * @see com.vaadin.data.Container#size() */ + @Override public int size() { return items.size(); } @@ -742,6 +758,7 @@ public abstract class AbstractSelect extends AbstractField<Object> implements * @param itemId * the Id the of item to be tested. */ + @Override public boolean containsId(Object itemId) { if (itemId != null) { return items.containsId(itemId); @@ -756,6 +773,7 @@ public abstract class AbstractSelect extends AbstractField<Object> implements * * @see com.vaadin.data.Container#getContainerProperty(Object, Object) */ + @Override public Property<?> getContainerProperty(Object itemId, Object propertyId) { return items.getContainerProperty(itemId, propertyId); } @@ -771,6 +789,7 @@ public abstract class AbstractSelect extends AbstractField<Object> implements * @see com.vaadin.data.Container#addContainerProperty(java.lang.Object, * java.lang.Class, java.lang.Object) */ + @Override public boolean addContainerProperty(Object propertyId, Class<?> type, Object defaultValue) throws UnsupportedOperationException { @@ -791,6 +810,7 @@ public abstract class AbstractSelect extends AbstractField<Object> implements * @return True if the operation succeeded. * @see com.vaadin.data.Container#removeAllItems() */ + @Override public boolean removeAllItems() throws UnsupportedOperationException { final boolean retval = items.removeAllItems(); @@ -812,6 +832,7 @@ public abstract class AbstractSelect extends AbstractField<Object> implements * @return the Id of the created item or null in case of failure. * @see com.vaadin.data.Container#addItem() */ + @Override public Object addItem() throws UnsupportedOperationException { final Object retval = items.addItem(); @@ -836,6 +857,7 @@ public abstract class AbstractSelect extends AbstractField<Object> implements * @return the Created item with the given id, or null in case of failure. * @see com.vaadin.data.Container#addItem(java.lang.Object) */ + @Override public Item addItem(Object itemId) throws UnsupportedOperationException { final Item retval = items.addItem(itemId); @@ -851,6 +873,7 @@ public abstract class AbstractSelect extends AbstractField<Object> implements * * @see com.vaadin.data.Container#removeItem(java.lang.Object) */ + @Override public boolean removeItem(Object itemId) throws UnsupportedOperationException { @@ -873,6 +896,7 @@ public abstract class AbstractSelect extends AbstractField<Object> implements * @return True if the operation succeeded. * @see com.vaadin.data.Container#removeContainerProperty(java.lang.Object) */ + @Override public boolean removeContainerProperty(Object propertyId) throws UnsupportedOperationException { @@ -896,6 +920,7 @@ public abstract class AbstractSelect extends AbstractField<Object> implements * @param newDataSource * the new data source. */ + @Override public void setContainerDataSource(Container newDataSource) { if (newDataSource == null) { newDataSource = new IndexedContainer(); @@ -950,6 +975,7 @@ public abstract class AbstractSelect extends AbstractField<Object> implements * * @see com.vaadin.data.Container.Viewer#getContainerDataSource() */ + @Override public Container getContainerDataSource() { return items; } @@ -1432,6 +1458,7 @@ public abstract class AbstractSelect extends AbstractField<Object> implements * * @see com.vaadin.data.Container.PropertySetChangeListener#containerPropertySetChange(com.vaadin.data.Container.PropertySetChangeEvent) */ + @Override public void containerPropertySetChange( Container.PropertySetChangeEvent event) { firePropertySetChange(); @@ -1442,6 +1469,7 @@ public abstract class AbstractSelect extends AbstractField<Object> implements * * @see com.vaadin.data.Container.PropertySetChangeNotifier#addListener(com.vaadin.data.Container.PropertySetChangeListener) */ + @Override public void addListener(Container.PropertySetChangeListener listener) { if (propertySetEventListeners == null) { propertySetEventListeners = new LinkedHashSet<Container.PropertySetChangeListener>(); @@ -1454,6 +1482,7 @@ public abstract class AbstractSelect extends AbstractField<Object> implements * * @see com.vaadin.data.Container.PropertySetChangeNotifier#removeListener(com.vaadin.data.Container.PropertySetChangeListener) */ + @Override public void removeListener(Container.PropertySetChangeListener listener) { if (propertySetEventListeners != null) { propertySetEventListeners.remove(listener); @@ -1468,6 +1497,7 @@ public abstract class AbstractSelect extends AbstractField<Object> implements * * @see com.vaadin.data.Container.ItemSetChangeNotifier#addListener(com.vaadin.data.Container.ItemSetChangeListener) */ + @Override public void addListener(Container.ItemSetChangeListener listener) { if (itemSetEventListeners == null) { itemSetEventListeners = new LinkedHashSet<Container.ItemSetChangeListener>(); @@ -1480,6 +1510,7 @@ public abstract class AbstractSelect extends AbstractField<Object> implements * * @see com.vaadin.data.Container.ItemSetChangeNotifier#removeListener(com.vaadin.data.Container.ItemSetChangeListener) */ + @Override public void removeListener(Container.ItemSetChangeListener listener) { if (itemSetEventListeners != null) { itemSetEventListeners.remove(listener); @@ -1516,6 +1547,7 @@ public abstract class AbstractSelect extends AbstractField<Object> implements * * @see com.vaadin.data.Container.ItemSetChangeListener#containerItemSetChange(com.vaadin.data.Container.ItemSetChangeEvent) */ + @Override public void containerItemSetChange(Container.ItemSetChangeEvent event) { // Clears the item id mapping table itemIdMapper.removeAll(); @@ -1566,6 +1598,7 @@ public abstract class AbstractSelect extends AbstractField<Object> implements * * @see com.vaadin.data.Container.ItemSetChangeEvent#getContainer() */ + @Override public Container getContainer() { return AbstractSelect.this; } @@ -1583,6 +1616,7 @@ public abstract class AbstractSelect extends AbstractField<Object> implements * * @see com.vaadin.data.Container.PropertySetChangeEvent#getContainer() */ + @Override public Container getContainer() { return AbstractSelect.this; } @@ -1778,10 +1812,12 @@ public abstract class AbstractSelect extends AbstractField<Object> implements captionChangeNotifiers.clear(); } + @Override public void valueChange(com.vaadin.data.Property.ValueChangeEvent event) { requestRepaint(); } + @Override public void itemPropertySetChange( com.vaadin.data.Item.PropertySetChangeEvent event) { requestRepaint(); @@ -1809,6 +1845,7 @@ public abstract class AbstractSelect extends AbstractField<Object> implements super(select, itemId); } + @Override public boolean accept(DragAndDropEvent dragEvent) { AbstractSelectTargetDetails dropTargetData = (AbstractSelectTargetDetails) dragEvent .getTargetDetails(); @@ -1875,6 +1912,7 @@ public abstract class AbstractSelect extends AbstractField<Object> implements super(select, itemId); } + @Override public boolean accept(DragAndDropEvent dragEvent) { DataBoundTransferable transferable = (DataBoundTransferable) dragEvent .getTransferable(); diff --git a/src/com/vaadin/ui/AbstractSplitPanel.java b/src/com/vaadin/ui/AbstractSplitPanel.java index 876d39f2ae..90dc38ff65 100644 --- a/src/com/vaadin/ui/AbstractSplitPanel.java +++ b/src/com/vaadin/ui/AbstractSplitPanel.java @@ -10,12 +10,12 @@ import java.util.Iterator; import com.vaadin.event.ComponentEventListener; import com.vaadin.event.MouseEvents.ClickEvent; +import com.vaadin.shared.MouseEventDetails; +import com.vaadin.shared.ui.splitpanel.AbstractSplitPanelRpc; +import com.vaadin.shared.ui.splitpanel.AbstractSplitPanelState; +import com.vaadin.shared.ui.splitpanel.AbstractSplitPanelState.SplitterState; import com.vaadin.terminal.Sizeable; -import com.vaadin.terminal.gwt.client.MouseEventDetails; import com.vaadin.terminal.gwt.client.ui.ClickEventHandler; -import com.vaadin.terminal.gwt.client.ui.splitpanel.AbstractSplitPanelRpc; -import com.vaadin.terminal.gwt.client.ui.splitpanel.AbstractSplitPanelState; -import com.vaadin.terminal.gwt.client.ui.splitpanel.AbstractSplitPanelState.SplitterState; import com.vaadin.tools.ReflectTools; /** @@ -38,11 +38,13 @@ public abstract class AbstractSplitPanel extends AbstractComponentContainer { private AbstractSplitPanelRpc rpc = new AbstractSplitPanelRpc() { + @Override public void splitterClick(MouseEventDetails mouseDetails) { fireEvent(new SplitterClickEvent(AbstractSplitPanel.this, mouseDetails)); } + @Override public void setSplitterPosition(float position) { getSplitterState().setPosition(position); } @@ -63,6 +65,7 @@ public abstract class AbstractSplitPanel extends AbstractComponentContainer { int i = 0; + @Override public boolean hasNext() { if (i < getComponentCount()) { return true; @@ -70,6 +73,7 @@ public abstract class AbstractSplitPanel extends AbstractComponentContainer { return false; } + @Override public Component next() { if (!hasNext()) { return null; @@ -84,6 +88,7 @@ public abstract class AbstractSplitPanel extends AbstractComponentContainer { return null; } + @Override public void remove() { if (i == 1) { if (getFirstComponent() != null) { @@ -211,6 +216,7 @@ public abstract class AbstractSplitPanel extends AbstractComponentContainer { * @see com.vaadin.ui.ComponentContainer#getComponentIterator() */ + @Override public Iterator<Component> getComponentIterator() { return new ComponentIterator(); } @@ -222,6 +228,7 @@ public abstract class AbstractSplitPanel extends AbstractComponentContainer { * @return the number of contained components (zero, one or two) */ + @Override public int getComponentCount() { int count = 0; if (getFirstComponent() != null) { @@ -235,6 +242,7 @@ public abstract class AbstractSplitPanel extends AbstractComponentContainer { /* Documented in superclass */ + @Override public void replaceComponent(Component oldComponent, Component newComponent) { if (oldComponent == getFirstComponent()) { setFirstComponent(newComponent); diff --git a/src/com/vaadin/ui/AbstractTextField.java b/src/com/vaadin/ui/AbstractTextField.java index d584374bda..2326c07d97 100644 --- a/src/com/vaadin/ui/AbstractTextField.java +++ b/src/com/vaadin/ui/AbstractTextField.java @@ -15,10 +15,10 @@ import com.vaadin.event.FieldEvents.FocusNotifier; import com.vaadin.event.FieldEvents.TextChangeEvent; import com.vaadin.event.FieldEvents.TextChangeListener; import com.vaadin.event.FieldEvents.TextChangeNotifier; +import com.vaadin.shared.ui.textfield.AbstractTextFieldState; import com.vaadin.terminal.PaintException; import com.vaadin.terminal.PaintTarget; import com.vaadin.terminal.Vaadin6Component; -import com.vaadin.terminal.gwt.client.ui.textfield.AbstractTextFieldState; import com.vaadin.terminal.gwt.client.ui.textfield.VTextField; public abstract class AbstractTextField extends AbstractField<String> implements @@ -95,6 +95,7 @@ public abstract class AbstractTextField extends AbstractField<String> implements getState().setText(value); } + @Override public void paintContent(PaintTarget target) throws PaintException { if (selectionPosition != -1) { @@ -123,6 +124,7 @@ public abstract class AbstractTextField extends AbstractField<String> implements } + @Override public void changeVariables(Object source, Map<String, Object> variables) { changingVariables = true; @@ -498,11 +500,13 @@ public abstract class AbstractTextField extends AbstractField<String> implements LAZY } + @Override public void addListener(TextChangeListener listener) { addListener(TextChangeListener.EVENT_ID, TextChangeEvent.class, listener, TextChangeListener.EVENT_METHOD); } + @Override public void removeListener(TextChangeListener listener) { removeListener(TextChangeListener.EVENT_ID, TextChangeEvent.class, listener); @@ -645,20 +649,24 @@ public abstract class AbstractTextField extends AbstractField<String> implements return lastKnownCursorPosition; } + @Override public void addListener(FocusListener listener) { addListener(FocusEvent.EVENT_ID, FocusEvent.class, listener, FocusListener.focusMethod); } + @Override public void removeListener(FocusListener listener) { removeListener(FocusEvent.EVENT_ID, FocusEvent.class, listener); } + @Override public void addListener(BlurListener listener) { addListener(BlurEvent.EVENT_ID, BlurEvent.class, listener, BlurListener.blurMethod); } + @Override public void removeListener(BlurListener listener) { removeListener(BlurEvent.EVENT_ID, BlurEvent.class, listener); } diff --git a/src/com/vaadin/ui/Alignment.java b/src/com/vaadin/ui/Alignment.java index eb9e75e4d2..0d73da8504 100644 --- a/src/com/vaadin/ui/Alignment.java +++ b/src/com/vaadin/ui/Alignment.java @@ -5,7 +5,7 @@ package com.vaadin.ui; import java.io.Serializable; -import com.vaadin.terminal.gwt.client.ui.AlignmentInfo.Bits; +import com.vaadin.shared.ui.AlignmentInfo.Bits; /** * Class containing information about alignment of a component. Use the diff --git a/src/com/vaadin/ui/Button.java b/src/com/vaadin/ui/Button.java index 0abc50f26f..0cb667d527 100644 --- a/src/com/vaadin/ui/Button.java +++ b/src/com/vaadin/ui/Button.java @@ -18,9 +18,9 @@ import com.vaadin.event.ShortcutAction; import com.vaadin.event.ShortcutAction.KeyCode; import com.vaadin.event.ShortcutAction.ModifierKey; import com.vaadin.event.ShortcutListener; -import com.vaadin.terminal.gwt.client.MouseEventDetails; -import com.vaadin.terminal.gwt.client.ui.button.ButtonServerRpc; -import com.vaadin.terminal.gwt.client.ui.button.ButtonState; +import com.vaadin.shared.MouseEventDetails; +import com.vaadin.shared.ui.button.ButtonServerRpc; +import com.vaadin.shared.ui.button.ButtonState; import com.vaadin.tools.ReflectTools; import com.vaadin.ui.Component.Focusable; @@ -39,10 +39,12 @@ public class Button extends AbstractComponent implements private ButtonServerRpc rpc = new ButtonServerRpc() { + @Override public void click(MouseEventDetails mouseEventDetails) { fireClick(mouseEventDetails); } + @Override public void disableOnClick() { // Could be optimized so the button is not repainted because of // this (client side has already disabled the button) @@ -332,20 +334,24 @@ public class Button extends AbstractComponent implements fireEvent(new Button.ClickEvent(this, details)); } + @Override public void addListener(BlurListener listener) { addListener(BlurEvent.EVENT_ID, BlurEvent.class, listener, BlurListener.blurMethod); } + @Override public void removeListener(BlurListener listener) { removeListener(BlurEvent.EVENT_ID, BlurEvent.class, listener); } + @Override public void addListener(FocusListener listener) { addListener(FocusEvent.EVENT_ID, FocusEvent.class, listener, FocusListener.focusMethod); } + @Override public void removeListener(FocusListener listener) { removeListener(FocusEvent.EVENT_ID, FocusEvent.class, listener); @@ -474,6 +480,7 @@ public class Button extends AbstractComponent implements * * @see com.vaadin.ui.Component.Focusable#getTabIndex() */ + @Override public int getTabIndex() { return getState().getTabIndex(); } @@ -483,6 +490,7 @@ public class Button extends AbstractComponent implements * * @see com.vaadin.ui.Component.Focusable#setTabIndex(int) */ + @Override public void setTabIndex(int tabIndex) { getState().setTabIndex(tabIndex); requestRepaint(); diff --git a/src/com/vaadin/ui/CheckBox.java b/src/com/vaadin/ui/CheckBox.java index 147a270059..30ac9b4626 100644 --- a/src/com/vaadin/ui/CheckBox.java +++ b/src/com/vaadin/ui/CheckBox.java @@ -10,14 +10,15 @@ import com.vaadin.event.FieldEvents.BlurListener; import com.vaadin.event.FieldEvents.FocusAndBlurServerRpcImpl; import com.vaadin.event.FieldEvents.FocusEvent; import com.vaadin.event.FieldEvents.FocusListener; -import com.vaadin.terminal.gwt.client.MouseEventDetails; -import com.vaadin.terminal.gwt.client.ui.checkbox.CheckBoxServerRpc; -import com.vaadin.terminal.gwt.client.ui.checkbox.CheckBoxState; +import com.vaadin.shared.MouseEventDetails; +import com.vaadin.shared.ui.checkbox.CheckBoxServerRpc; +import com.vaadin.shared.ui.checkbox.CheckBoxState; public class CheckBox extends AbstractField<Boolean> { private CheckBoxServerRpc rpc = new CheckBoxServerRpc() { + @Override public void setChecked(boolean checked, MouseEventDetails mouseEventDetails) { if (isReadOnly()) { diff --git a/src/com/vaadin/ui/Component.java b/src/com/vaadin/ui/Component.java index 81e0319880..a2c257ab68 100644 --- a/src/com/vaadin/ui/Component.java +++ b/src/com/vaadin/ui/Component.java @@ -11,11 +11,11 @@ import java.util.Locale; import com.vaadin.Application; import com.vaadin.event.FieldEvents; +import com.vaadin.shared.ComponentState; import com.vaadin.terminal.ErrorMessage; import com.vaadin.terminal.Resource; import com.vaadin.terminal.Sizeable; import com.vaadin.terminal.VariableOwner; -import com.vaadin.terminal.gwt.client.ComponentState; import com.vaadin.terminal.gwt.server.ClientConnector; /** @@ -305,6 +305,7 @@ public interface Component extends ClientConnector, Sizeable, Serializable { * * @return the parent component */ + @Override public HasComponents getParent(); /** @@ -507,6 +508,7 @@ public interface Component extends ClientConnector, Sizeable, Serializable { * @return the Root of the component or <code>null</code> if it is not * attached to a Root */ + @Override public Root getRoot(); /** @@ -520,8 +522,8 @@ public interface Component extends ClientConnector, Sizeable, Serializable { * <p> * Getting a null value is often a problem in constructors of regular * components and in the initializers of custom composite components. A - * standard workaround is to use {@link Application#getCurrent()} - * to retrieve the application instance that the current request relates to. + * standard workaround is to use {@link Application#getCurrent()} to + * retrieve the application instance that the current request relates to. * Another way is to move the problematic initialization to * {@link #attach()}, as described in the documentation of the method. * </p> @@ -585,6 +587,7 @@ public interface Component extends ClientConnector, Sizeable, Serializable { * } * </pre> */ + @Override public void attach(); /** @@ -620,6 +623,7 @@ public interface Component extends ClientConnector, Sizeable, Serializable { * * @since 7.0 */ + @Override public ComponentState getState(); /** diff --git a/src/com/vaadin/ui/ConnectorTracker.java b/src/com/vaadin/ui/ConnectorTracker.java index 75a75ad22a..e3d1bf86db 100644 --- a/src/com/vaadin/ui/ConnectorTracker.java +++ b/src/com/vaadin/ui/ConnectorTracker.java @@ -17,7 +17,7 @@ import com.vaadin.terminal.gwt.client.ServerConnector; import com.vaadin.terminal.gwt.server.ClientConnector; /** - * A class which takes care of book keeping of {@link ClientConnector}s for one + * A class which takes care of book keeping of {@link ClientConnector}s for a * Root. * <p> * Provides {@link #getConnector(String)} which can be used to lookup a @@ -53,6 +53,14 @@ public class ConnectorTracker implements Serializable { return Logger.getLogger(ConnectorTracker.class.getName()); } + /** + * Creates a new ConnectorTracker for the given root. A tracker is always + * attached to a root and the root cannot be changed during the lifetime of + * a {@link ConnectorTracker}. + * + * @param root + * The root to attach to. Cannot be null. + */ public ConnectorTracker(Root root) { this.root = root; } @@ -144,61 +152,134 @@ public class ConnectorTracker implements Serializable { while (iterator.hasNext()) { String connectorId = iterator.next(); ClientConnector connector = connectorIdToConnector.get(connectorId); - if (connector instanceof Component) { - Component component = (Component) connector; - if (component.getRoot() != root) { - // If component is no longer part of this application, - // remove it from the map. If it is re-attached to the - // application at some point it will be re-added through - // registerConnector(connector) - iterator.remove(); - } + if (getRootForConnector(connector) != root) { + // If connector is no longer part of this root, + // remove it from the map. If it is re-attached to the + // application at some point it will be re-added through + // registerConnector(connector) + + // This code should never be called as cleanup should take place + // in detach() + getLogger() + .warning( + "cleanConnectorMap unregistered connector " + + getConnectorAndParentInfo(connector) + + "). This should have been done when the connector was detached."); + iterator.remove(); } } } + /** + * Finds the root that the connector is attached to. + * + * @param connector + * The connector to lookup + * @return The root the connector is attached to or null if it is not + * attached to any root. + */ + private Root getRootForConnector(ClientConnector connector) { + if (connector == null) { + return null; + } + if (connector instanceof Component) { + return ((Component) connector).getRoot(); + } + + return getRootForConnector(connector.getParent()); + } + + /** + * Mark the connector as dirty. + * + * @see #getDirtyConnectors() + * + * @param connector + * The connector that should be marked clean. + */ public void markDirty(ClientConnector connector) { if (getLogger().isLoggable(Level.FINE)) { if (!dirtyConnectors.contains(connector)) { - getLogger() - .fine(getDebugInfo(connector) + " " + "is now dirty"); + getLogger().fine( + getConnectorAndParentInfo(connector) + " " + + "is now dirty"); } } dirtyConnectors.add(connector); } + /** + * Mark the connector as clean. + * + * @param connector + * The connector that should be marked clean. + */ public void markClean(ClientConnector connector) { if (getLogger().isLoggable(Level.FINE)) { if (dirtyConnectors.contains(connector)) { getLogger().fine( - getDebugInfo(connector) + " " + "is no longer dirty"); + getConnectorAndParentInfo(connector) + " " + + "is no longer dirty"); } } dirtyConnectors.remove(connector); } - private String getDebugInfo(ClientConnector connector) { - String message = getObjectString(connector); + /** + * Returns {@link #getConnectorString(ClientConnector)} for the connector + * and its parent (if it has a parent). + * + * @param connector + * The connector + * @return A string describing the connector and its parent + */ + private String getConnectorAndParentInfo(ClientConnector connector) { + String message = getConnectorString(connector); if (connector.getParent() != null) { - message += " (parent: " + getObjectString(connector.getParent()) + message += " (parent: " + getConnectorString(connector.getParent()) + ")"; } return message; } - private String getObjectString(Object connector) { - return connector.getClass().getName() + "@" - + Integer.toHexString(connector.hashCode()); + /** + * Returns a string with the connector name and id. Useful mostly for + * debugging and logging. + * + * @param connector + * The connector + * @return A string that describes the connector + */ + private String getConnectorString(ClientConnector connector) { + if (connector == null) { + return "(null)"; + } + + String connectorId; + try { + connectorId = connector.getConnectorId(); + } catch (RuntimeException e) { + // This happens if the connector is not attached to the application. + // SHOULD not happen in this case but theoretically can. + connectorId = "@" + Integer.toHexString(connector.hashCode()); + } + return connector.getClass().getName() + "(" + connectorId + ")"; } + /** + * Mark all connectors in this root as dirty. + */ public void markAllConnectorsDirty() { markConnectorsDirtyRecursively(root); getLogger().fine("All connectors are now dirty"); } + /** + * Mark all connectors in this root as clean. + */ public void markAllConnectorsClean() { dirtyConnectors.clear(); getLogger().fine("All connectors are now clean"); @@ -222,6 +303,16 @@ public class ConnectorTracker implements Serializable { } } + /** + * Returns a collection of all connectors which have been marked as dirty. + * <p> + * The state and pending RPC calls for dirty connectors are sent to the + * client in the following request. + * </p> + * + * @return A collection of all dirty connectors for this root. This list may + * contain invisible connectors. + */ public Collection<ClientConnector> getDirtyConnectors() { return dirtyConnectors; } diff --git a/src/com/vaadin/ui/CssLayout.java b/src/com/vaadin/ui/CssLayout.java index e8ec6bd041..356f0a3843 100644 --- a/src/com/vaadin/ui/CssLayout.java +++ b/src/com/vaadin/ui/CssLayout.java @@ -9,11 +9,11 @@ import java.util.LinkedList; import com.vaadin.event.LayoutEvents.LayoutClickEvent; import com.vaadin.event.LayoutEvents.LayoutClickListener; import com.vaadin.event.LayoutEvents.LayoutClickNotifier; -import com.vaadin.terminal.gwt.client.Connector; -import com.vaadin.terminal.gwt.client.MouseEventDetails; +import com.vaadin.shared.Connector; +import com.vaadin.shared.MouseEventDetails; +import com.vaadin.shared.ui.csslayout.CssLayoutServerRpc; +import com.vaadin.shared.ui.csslayout.CssLayoutState; import com.vaadin.terminal.gwt.client.ui.LayoutClickEventHandler; -import com.vaadin.terminal.gwt.client.ui.csslayout.CssLayoutServerRpc; -import com.vaadin.terminal.gwt.client.ui.csslayout.CssLayoutState; /** * CssLayout is a layout component that can be used in browser environment only. @@ -60,6 +60,7 @@ public class CssLayout extends AbstractLayout implements LayoutClickNotifier { private CssLayoutServerRpc rpc = new CssLayoutServerRpc() { + @Override public void layoutClick(MouseEventDetails mouseDetails, Connector clickedConnector) { fireEvent(LayoutClickEvent.createEvent(CssLayout.this, @@ -167,6 +168,7 @@ public class CssLayout extends AbstractLayout implements LayoutClickNotifier { * * @return the Iterator of the components inside the container. */ + @Override public Iterator<Component> getComponentIterator() { return components.iterator(); } @@ -177,6 +179,7 @@ public class CssLayout extends AbstractLayout implements LayoutClickNotifier { * * @return the number of contained components */ + @Override public int getComponentCount() { return components.size(); } @@ -223,6 +226,7 @@ public class CssLayout extends AbstractLayout implements LayoutClickNotifier { } /* Documented in superclass */ + @Override public void replaceComponent(Component oldComponent, Component newComponent) { // Gets the locations @@ -264,12 +268,14 @@ public class CssLayout extends AbstractLayout implements LayoutClickNotifier { } } + @Override public void addListener(LayoutClickListener listener) { addListener(LayoutClickEventHandler.LAYOUT_CLICK_EVENT_IDENTIFIER, LayoutClickEvent.class, listener, LayoutClickListener.clickMethod); } + @Override public void removeListener(LayoutClickListener listener) { removeListener(LayoutClickEventHandler.LAYOUT_CLICK_EVENT_IDENTIFIER, LayoutClickEvent.class, listener); diff --git a/src/com/vaadin/ui/CustomComponent.java b/src/com/vaadin/ui/CustomComponent.java index 98d650f6db..40b5dcd636 100644 --- a/src/com/vaadin/ui/CustomComponent.java +++ b/src/com/vaadin/ui/CustomComponent.java @@ -100,20 +100,24 @@ public class CustomComponent extends AbstractComponentContainer { Serializable { boolean first = getCompositionRoot() != null; + @Override public boolean hasNext() { return first; } + @Override public Component next() { first = false; return root; } + @Override public void remove() { throw new UnsupportedOperationException(); } } + @Override public Iterator<Component> getComponentIterator() { return new ComponentIterator(); } @@ -124,6 +128,7 @@ public class CustomComponent extends AbstractComponentContainer { * * @return the number of contained components (zero or one) */ + @Override public int getComponentCount() { return (root != null ? 1 : 0); } @@ -134,6 +139,7 @@ public class CustomComponent extends AbstractComponentContainer { * @see com.vaadin.ui.ComponentContainer#replaceComponent(com.vaadin.ui.Component, * com.vaadin.ui.Component) */ + @Override public void replaceComponent(Component oldComponent, Component newComponent) { throw new UnsupportedOperationException(); } diff --git a/src/com/vaadin/ui/CustomField.java b/src/com/vaadin/ui/CustomField.java index 0998c11612..ab3797a58c 100644 --- a/src/com/vaadin/ui/CustomField.java +++ b/src/com/vaadin/ui/CustomField.java @@ -123,28 +123,34 @@ public abstract class CustomField<T> extends AbstractField<T> implements Serializable { boolean first = (root != null); + @Override public boolean hasNext() { return first; } + @Override public Component next() { first = false; return getContent(); } + @Override public void remove() { throw new UnsupportedOperationException(); } } + @Override public Iterator<Component> getComponentIterator() { return new ComponentIterator(); } + @Override public Iterator<Component> iterator() { return getComponentIterator(); } + @Override public int getComponentCount() { return (null != getContent()) ? 1 : 0; } @@ -163,22 +169,27 @@ public abstract class CustomField<T> extends AbstractField<T> implements // TODO remove these methods when ComponentContainer interface is cleaned up + @Override public void addComponent(Component c) { throw new UnsupportedOperationException(); } + @Override public void removeComponent(Component c) { throw new UnsupportedOperationException(); } + @Override public void removeAllComponents() { throw new UnsupportedOperationException(); } + @Override public void replaceComponent(Component oldComponent, Component newComponent) { throw new UnsupportedOperationException(); } + @Override public void moveComponentsFrom(ComponentContainer source) { throw new UnsupportedOperationException(); } @@ -197,24 +208,29 @@ public abstract class CustomField<T> extends AbstractField<T> implements } } + @Override public void addListener(ComponentAttachListener listener) { addListener(ComponentContainer.ComponentAttachEvent.class, listener, COMPONENT_ATTACHED_METHOD); } + @Override public void removeListener(ComponentAttachListener listener) { removeListener(ComponentContainer.ComponentAttachEvent.class, listener, COMPONENT_ATTACHED_METHOD); } + @Override public void addListener(ComponentDetachListener listener) { // content never detached } + @Override public void removeListener(ComponentDetachListener listener) { // content never detached } + @Override public boolean isComponentVisible(Component childComponent) { return true; } diff --git a/src/com/vaadin/ui/CustomLayout.java b/src/com/vaadin/ui/CustomLayout.java index 97cea1c49d..d7830603f0 100644 --- a/src/com/vaadin/ui/CustomLayout.java +++ b/src/com/vaadin/ui/CustomLayout.java @@ -12,10 +12,10 @@ import java.util.Iterator; import java.util.Map; import java.util.Set; +import com.vaadin.shared.ui.customlayout.CustomLayoutState; import com.vaadin.terminal.PaintException; import com.vaadin.terminal.PaintTarget; import com.vaadin.terminal.Vaadin6Component; -import com.vaadin.terminal.gwt.client.ui.customlayout.CustomLayoutState; import com.vaadin.terminal.gwt.server.JsonPaintTarget; /** @@ -185,6 +185,7 @@ public class CustomLayout extends AbstractLayout implements Vaadin6Component { * * @return the Iterator of the components inside the container. */ + @Override public Iterator<Component> getComponentIterator() { return slots.values().iterator(); } @@ -195,6 +196,7 @@ public class CustomLayout extends AbstractLayout implements Vaadin6Component { * * @return the number of contained components */ + @Override public int getComponentCount() { return slots.values().size(); } @@ -212,6 +214,7 @@ public class CustomLayout extends AbstractLayout implements Vaadin6Component { } /* Documented in superclass */ + @Override public void replaceComponent(Component oldComponent, Component newComponent) { // Gets the locations @@ -305,10 +308,12 @@ public class CustomLayout extends AbstractLayout implements Vaadin6Component { "CustomLayout does not support margins."); } + @Override public void changeVariables(Object source, Map<String, Object> variables) { // Nothing to see here } + @Override public void paintContent(PaintTarget target) throws PaintException { // Workaround to make the CommunicationManager read the template file // and send it to the client diff --git a/src/com/vaadin/ui/DateField.java b/src/com/vaadin/ui/DateField.java index 55ff67229c..d0a22f3c29 100644 --- a/src/com/vaadin/ui/DateField.java +++ b/src/com/vaadin/ui/DateField.java @@ -286,6 +286,7 @@ public class DateField extends AbstractField<Date> implements * Paints this component. Don't add a JavaDoc comment here, we use the * default documentation from implemented interface. */ + @Override public void paintContent(PaintTarget target) throws PaintException { // Adds the locale as attribute @@ -339,6 +340,7 @@ public class DateField extends AbstractField<Date> implements * comment here, we use the default documentation from implemented * interface. */ + @Override public void changeVariables(Object source, Map<String, Object> variables) { if (!isReadOnly() @@ -729,20 +731,24 @@ public class DateField extends AbstractField<Date> implements return lenient; } + @Override public void addListener(FocusListener listener) { addListener(FocusEvent.EVENT_ID, FocusEvent.class, listener, FocusListener.focusMethod); } + @Override public void removeListener(FocusListener listener) { removeListener(FocusEvent.EVENT_ID, FocusEvent.class, listener); } + @Override public void addListener(BlurListener listener) { addListener(BlurEvent.EVENT_ID, BlurEvent.class, listener, BlurListener.blurMethod); } + @Override public void removeListener(BlurListener listener) { removeListener(BlurEvent.EVENT_ID, BlurEvent.class, listener); } diff --git a/src/com/vaadin/ui/DefaultFieldFactory.java b/src/com/vaadin/ui/DefaultFieldFactory.java index 9d096094e3..e17f08c1c6 100644 --- a/src/com/vaadin/ui/DefaultFieldFactory.java +++ b/src/com/vaadin/ui/DefaultFieldFactory.java @@ -35,6 +35,7 @@ public class DefaultFieldFactory implements FormFieldFactory, TableFieldFactory protected DefaultFieldFactory() { } + @Override public Field<?> createField(Item item, Object propertyId, Component uiContext) { Class<?> type = item.getItemProperty(propertyId).getType(); @@ -43,6 +44,7 @@ public class DefaultFieldFactory implements FormFieldFactory, TableFieldFactory return field; } + @Override public Field<?> createField(Container container, Object itemId, Object propertyId, Component uiContext) { Property<?> containerProperty = container.getContainerProperty(itemId, diff --git a/src/com/vaadin/ui/DragAndDropWrapper.java b/src/com/vaadin/ui/DragAndDropWrapper.java index b623197a4c..67229a45fe 100644 --- a/src/com/vaadin/ui/DragAndDropWrapper.java +++ b/src/com/vaadin/ui/DragAndDropWrapper.java @@ -17,13 +17,13 @@ import com.vaadin.event.dd.DropHandler; import com.vaadin.event.dd.DropTarget; import com.vaadin.event.dd.TargetDetails; import com.vaadin.event.dd.TargetDetailsImpl; +import com.vaadin.shared.MouseEventDetails; +import com.vaadin.shared.ui.dd.HorizontalDropLocation; +import com.vaadin.shared.ui.dd.VerticalDropLocation; import com.vaadin.terminal.PaintException; import com.vaadin.terminal.PaintTarget; import com.vaadin.terminal.StreamVariable; import com.vaadin.terminal.Vaadin6Component; -import com.vaadin.terminal.gwt.client.MouseEventDetails; -import com.vaadin.terminal.gwt.client.ui.dd.HorizontalDropLocation; -import com.vaadin.terminal.gwt.client.ui.dd.VerticalDropLocation; import com.vaadin.terminal.gwt.client.ui.draganddropwrapper.VDragAndDropWrapper; @SuppressWarnings("serial") @@ -214,10 +214,12 @@ public class DragAndDropWrapper extends CustomComponent implements DropTarget, requestRepaint(); } + @Override public void changeVariables(Object source, Map<String, Object> variables) { // TODO Remove once Vaadin6Component is no longer implemented } + @Override public void paintContent(PaintTarget target) throws PaintException { target.addAttribute(VDragAndDropWrapper.DRAG_START_MODE, dragStartMode.ordinal()); @@ -249,6 +251,7 @@ public class DragAndDropWrapper extends CustomComponent implements DropTarget, private DropHandler dropHandler; + @Override public DropHandler getDropHandler() { return dropHandler; } @@ -258,11 +261,13 @@ public class DragAndDropWrapper extends CustomComponent implements DropTarget, requestRepaint(); } + @Override public TargetDetails translateDropTargetDetails( Map<String, Object> clientVariables) { return new WrapperTargetDetails(clientVariables); } + @Override public Transferable getTransferable(final Map<String, Object> rawVariables) { return new WrapperTransferable(this, rawVariables); } @@ -286,6 +291,7 @@ public class DragAndDropWrapper extends CustomComponent implements DropTarget, private boolean listenProgressOfUploadedFile; + @Override public OutputStream getOutputStream() { if (file.getStreamVariable() == null) { return null; @@ -293,15 +299,18 @@ public class DragAndDropWrapper extends CustomComponent implements DropTarget, return file.getStreamVariable().getOutputStream(); } + @Override public boolean listenProgress() { return file.getStreamVariable().listenProgress(); } + @Override public void onProgress(StreamingProgressEvent event) { file.getStreamVariable().onProgress( new ReceivingEventWrapper(event)); } + @Override public void streamingStarted(StreamingStartEvent event) { listenProgressOfUploadedFile = file.getStreamVariable() != null; if (listenProgressOfUploadedFile) { @@ -315,6 +324,7 @@ public class DragAndDropWrapper extends CustomComponent implements DropTarget, event.disposeStreamVariable(); } + @Override public void streamingFinished(StreamingEndEvent event) { if (listenProgressOfUploadedFile) { file.getStreamVariable().streamingFinished( @@ -322,6 +332,7 @@ public class DragAndDropWrapper extends CustomComponent implements DropTarget, } } + @Override public void streamingFailed(final StreamingErrorEvent event) { if (listenProgressOfUploadedFile) { file.getStreamVariable().streamingFailed( @@ -329,6 +340,7 @@ public class DragAndDropWrapper extends CustomComponent implements DropTarget, } } + @Override public boolean isInterrupted() { return file.getStreamVariable().isInterrupted(); } @@ -348,14 +360,17 @@ public class DragAndDropWrapper extends CustomComponent implements DropTarget, wrappedEvent = e; } + @Override public String getMimeType() { return file.getType(); } + @Override public String getFileName() { return file.getFileName(); } + @Override public long getContentLength() { return file.getFileSize(); } @@ -364,6 +379,7 @@ public class DragAndDropWrapper extends CustomComponent implements DropTarget, return ProxyReceiver.this; } + @Override public Exception getException() { if (wrappedEvent instanceof StreamingErrorEvent) { return ((StreamingErrorEvent) wrappedEvent).getException(); @@ -371,6 +387,7 @@ public class DragAndDropWrapper extends CustomComponent implements DropTarget, return null; } + @Override public long getBytesReceived() { return wrappedEvent.getBytesReceived(); } @@ -379,6 +396,7 @@ public class DragAndDropWrapper extends CustomComponent implements DropTarget, * Calling this method has no effect. DD files are receive only once * anyway. */ + @Override public void disposeStreamVariable() { } diff --git a/src/com/vaadin/ui/Embedded.java b/src/com/vaadin/ui/Embedded.java index 1bcd984666..6088c5aa66 100644 --- a/src/com/vaadin/ui/Embedded.java +++ b/src/com/vaadin/ui/Embedded.java @@ -10,14 +10,14 @@ import java.util.Map; import com.vaadin.event.MouseEvents.ClickEvent; import com.vaadin.event.MouseEvents.ClickListener; +import com.vaadin.shared.MouseEventDetails; +import com.vaadin.shared.ui.embedded.EmbeddedServerRpc; import com.vaadin.terminal.PaintException; import com.vaadin.terminal.PaintTarget; import com.vaadin.terminal.Resource; import com.vaadin.terminal.Vaadin6Component; -import com.vaadin.terminal.gwt.client.MouseEventDetails; import com.vaadin.terminal.gwt.client.ui.ClickEventHandler; import com.vaadin.terminal.gwt.client.ui.embedded.EmbeddedConnector; -import com.vaadin.terminal.gwt.client.ui.embedded.EmbeddedServerRpc; /** * Component for embedding external objects. @@ -81,6 +81,7 @@ public class Embedded extends AbstractComponent implements Vaadin6Component { private String altText; private EmbeddedServerRpc rpc = new EmbeddedServerRpc() { + @Override public void click(MouseEventDetails mouseDetails) { fireEvent(new ClickEvent(Embedded.this, mouseDetails)); } @@ -120,6 +121,7 @@ public class Embedded extends AbstractComponent implements Vaadin6Component { /** * Invoked when the component state should be painted. */ + @Override public void paintContent(PaintTarget target) throws PaintException { switch (type) { @@ -521,6 +523,7 @@ public class Embedded extends AbstractComponent implements Vaadin6Component { ClickEvent.class, listener); } + @Override public void changeVariables(Object source, Map<String, Object> variables) { // TODO Remove once Vaadin6Component is no longer implemented } diff --git a/src/com/vaadin/ui/Field.java b/src/com/vaadin/ui/Field.java index 3a66db47b0..6dc40d192f 100644 --- a/src/com/vaadin/ui/Field.java +++ b/src/com/vaadin/ui/Field.java @@ -89,6 +89,7 @@ public interface Field<T> extends Component, BufferedValidatable, Property<T>, * * @return the Source Property of the event. */ + @Override public Property getProperty() { return (Property) getSource(); } diff --git a/src/com/vaadin/ui/Form.java b/src/com/vaadin/ui/Form.java index 796ad17448..fbc4d5a8e6 100644 --- a/src/com/vaadin/ui/Form.java +++ b/src/com/vaadin/ui/Form.java @@ -24,6 +24,7 @@ import com.vaadin.event.Action; import com.vaadin.event.Action.Handler; import com.vaadin.event.Action.ShortcutNotifier; import com.vaadin.event.ActionManager; +import com.vaadin.shared.ui.form.FormState; import com.vaadin.terminal.AbstractErrorMessage; import com.vaadin.terminal.CompositeErrorMessage; import com.vaadin.terminal.ErrorMessage; @@ -31,7 +32,6 @@ import com.vaadin.terminal.PaintException; import com.vaadin.terminal.PaintTarget; import com.vaadin.terminal.UserError; import com.vaadin.terminal.Vaadin6Component; -import com.vaadin.terminal.gwt.client.ui.form.FormState; /** * Form component provides easy way of creating and managing sets fields. @@ -126,6 +126,7 @@ public class Form extends AbstractField<Object> implements Item.Editor, * See e.g. DateField#notifyFormOfValidityChange(). */ private final ValueChangeListener fieldValueChangeListener = new ValueChangeListener() { + @Override public void valueChange(com.vaadin.data.Property.ValueChangeEvent event) { requestRepaint(); } @@ -194,12 +195,14 @@ public class Form extends AbstractField<Object> implements Item.Editor, } /* Documented in interface */ + @Override public void paintContent(PaintTarget target) throws PaintException { if (ownActionManager != null) { ownActionManager.paintActions(null, target); } } + @Override public void changeVariables(Object source, Map<String, Object> variables) { // Actions if (ownActionManager != null) { @@ -467,6 +470,7 @@ public class Form extends AbstractField<Object> implements Item.Editor, * * @see com.vaadin.data.Item#addItemProperty(Object, Property) */ + @Override public boolean addItemProperty(Object id, Property property) { // Checks inputs @@ -598,6 +602,7 @@ public class Form extends AbstractField<Object> implements Item.Editor, * * @see com.vaadin.data.Item#getItemProperty(Object) */ + @Override public Property<?> getItemProperty(Object id) { final Field<?> field = fields.get(id); if (field == null) { @@ -624,6 +629,7 @@ public class Form extends AbstractField<Object> implements Item.Editor, } /* Documented in interface */ + @Override public Collection<?> getItemPropertyIds() { return Collections.unmodifiableCollection(propertyIds); } @@ -633,6 +639,7 @@ public class Form extends AbstractField<Object> implements Item.Editor, * * @see com.vaadin.data.Item#removeItemProperty(Object) */ + @Override public boolean removeItemProperty(Object id) { ownProperties.remove(id); @@ -687,6 +694,7 @@ public class Form extends AbstractField<Object> implements Item.Editor, } /* Documented in the interface */ + @Override public Item getItemDataSource() { return itemDatasource; } @@ -701,6 +709,7 @@ public class Form extends AbstractField<Object> implements Item.Editor, * * @see com.vaadin.data.Item.Viewer#setItemDataSource(Item) */ + @Override public void setItemDataSource(Item newDataSource) { setItemDataSource(newDataSource, newDataSource != null ? newDataSource.getItemPropertyIds() @@ -1301,10 +1310,12 @@ public class Form extends AbstractField<Object> implements Item.Editor, return ownActionManager; } + @Override public void addActionHandler(Handler actionHandler) { getOwnActionManager().addActionHandler(actionHandler); } + @Override public void removeActionHandler(Handler actionHandler) { if (ownActionManager != null) { ownActionManager.removeActionHandler(actionHandler); @@ -1320,11 +1331,13 @@ public class Form extends AbstractField<Object> implements Item.Editor, } } + @Override public <T extends Action & com.vaadin.event.Action.Listener> void addAction( T action) { getOwnActionManager().addAction(action); } + @Override public <T extends Action & com.vaadin.event.Action.Listener> void removeAction( T action) { if (ownActionManager != null) { @@ -1332,6 +1345,7 @@ public class Form extends AbstractField<Object> implements Item.Editor, } } + @Override public Iterator<Component> iterator() { return getComponentIterator(); } @@ -1345,6 +1359,7 @@ public class Form extends AbstractField<Object> implements Item.Editor, int i = 0; + @Override public boolean hasNext() { if (i < getComponentCount()) { return true; @@ -1352,6 +1367,7 @@ public class Form extends AbstractField<Object> implements Item.Editor, return false; } + @Override public Component next() { if (!hasNext()) { return null; @@ -1365,6 +1381,7 @@ public class Form extends AbstractField<Object> implements Item.Editor, return null; } + @Override public void remove() { if (i == 1) { if (getLayout() != null) { @@ -1379,6 +1396,7 @@ public class Form extends AbstractField<Object> implements Item.Editor, } } + @Override public Iterator<Component> getComponentIterator() { return new ComponentIterator(); } @@ -1395,6 +1413,7 @@ public class Form extends AbstractField<Object> implements Item.Editor, return count; } + @Override public boolean isComponentVisible(Component childComponent) { return true; }; diff --git a/src/com/vaadin/ui/GridLayout.java b/src/com/vaadin/ui/GridLayout.java index 0ab729ce5c..2391a9cd3a 100644 --- a/src/com/vaadin/ui/GridLayout.java +++ b/src/com/vaadin/ui/GridLayout.java @@ -15,15 +15,15 @@ import java.util.Map.Entry; import com.vaadin.event.LayoutEvents.LayoutClickEvent; import com.vaadin.event.LayoutEvents.LayoutClickListener; import com.vaadin.event.LayoutEvents.LayoutClickNotifier; +import com.vaadin.shared.Connector; +import com.vaadin.shared.MouseEventDetails; +import com.vaadin.shared.ui.gridlayout.GridLayoutServerRpc; +import com.vaadin.shared.ui.gridlayout.GridLayoutState; import com.vaadin.terminal.LegacyPaint; import com.vaadin.terminal.PaintException; import com.vaadin.terminal.PaintTarget; import com.vaadin.terminal.Vaadin6Component; -import com.vaadin.terminal.gwt.client.Connector; -import com.vaadin.terminal.gwt.client.MouseEventDetails; import com.vaadin.terminal.gwt.client.ui.LayoutClickEventHandler; -import com.vaadin.terminal.gwt.client.ui.gridlayout.GridLayoutServerRpc; -import com.vaadin.terminal.gwt.client.ui.gridlayout.GridLayoutState; /** * A layout where the components are laid out on a grid using cell coordinates. @@ -58,6 +58,7 @@ public class GridLayout extends AbstractLayout implements private GridLayoutServerRpc rpc = new GridLayoutServerRpc() { + @Override public void layoutClick(MouseEventDetails mouseDetails, Connector clickedConnector) { fireEvent(LayoutClickEvent.createEvent(GridLayout.this, @@ -417,6 +418,7 @@ public class GridLayout extends AbstractLayout implements * * @return the Iterator of the components inside the layout. */ + @Override public Iterator<Component> getComponentIterator() { return Collections.unmodifiableCollection(components).iterator(); } @@ -427,10 +429,12 @@ public class GridLayout extends AbstractLayout implements * * @return the number of contained components */ + @Override public int getComponentCount() { return components.size(); } + @Override public void changeVariables(Object source, Map<String, Object> variables) { // TODO Remove once Vaadin6Component is no longer implemented } @@ -443,6 +447,7 @@ public class GridLayout extends AbstractLayout implements * @throws PaintException * if the paint operation failed. */ + @Override public void paintContent(PaintTarget target) throws PaintException { // TODO refactor attribute names in future release. target.addAttribute("structuralChange", structuralChange); @@ -668,6 +673,7 @@ public class GridLayout extends AbstractLayout implements * @see com.vaadin.ui.Layout.AlignmentHandler#getComponentAlignment(com * .vaadin.ui.Component) */ + @Override public Alignment getComponentAlignment(Component childComponent) { Alignment alignment = componentToAlignment.get(childComponent); if (alignment == null) { @@ -1094,6 +1100,7 @@ public class GridLayout extends AbstractLayout implements } /* Documented in superclass */ + @Override public void replaceComponent(Component oldComponent, Component newComponent) { // Gets the locations @@ -1143,6 +1150,7 @@ public class GridLayout extends AbstractLayout implements * @see com.vaadin.ui.Layout.AlignmentHandler#setComponentAlignment(com * .vaadin.ui.Component, int, int) */ + @Override public void setComponentAlignment(Component childComponent, int horizontalAlignment, int verticalAlignment) { componentToAlignment.put(childComponent, new Alignment( @@ -1150,6 +1158,7 @@ public class GridLayout extends AbstractLayout implements requestRepaint(); } + @Override public void setComponentAlignment(Component childComponent, Alignment alignment) { componentToAlignment.put(childComponent, alignment); @@ -1161,6 +1170,7 @@ public class GridLayout extends AbstractLayout implements * * @see com.vaadin.ui.Layout.SpacingHandler#setSpacing(boolean) */ + @Override public void setSpacing(boolean spacing) { getState().setSpacing(spacing); requestRepaint(); @@ -1171,6 +1181,7 @@ public class GridLayout extends AbstractLayout implements * * @see com.vaadin.ui.Layout.SpacingHandler#isSpacing() */ + @Override public boolean isSpacing() { return getState().isSpacing(); } @@ -1388,12 +1399,14 @@ public class GridLayout extends AbstractLayout implements return null; } + @Override public void addListener(LayoutClickListener listener) { addListener(LayoutClickEventHandler.LAYOUT_CLICK_EVENT_IDENTIFIER, LayoutClickEvent.class, listener, LayoutClickListener.clickMethod); } + @Override public void removeListener(LayoutClickListener listener) { removeListener(LayoutClickEventHandler.LAYOUT_CLICK_EVENT_IDENTIFIER, LayoutClickEvent.class, listener); diff --git a/src/com/vaadin/ui/JavaScript.java b/src/com/vaadin/ui/JavaScript.java index d256717711..53efb62965 100644 --- a/src/com/vaadin/ui/JavaScript.java +++ b/src/com/vaadin/ui/JavaScript.java @@ -9,11 +9,11 @@ import java.util.Map; import com.vaadin.external.json.JSONArray; import com.vaadin.external.json.JSONException; +import com.vaadin.shared.communication.ServerRpc; +import com.vaadin.shared.extension.javascriptmanager.ExecuteJavaScriptRpc; +import com.vaadin.shared.extension.javascriptmanager.JavaScriptManagerState; import com.vaadin.terminal.AbstractExtension; import com.vaadin.terminal.Page; -import com.vaadin.terminal.gwt.client.communication.ServerRpc; -import com.vaadin.terminal.gwt.client.extensions.javascriptmanager.ExecuteJavaScriptRpc; -import com.vaadin.terminal.gwt.client.extensions.javascriptmanager.JavaScriptManagerState; /** * Provides access to JavaScript functionality in the web browser. To get an @@ -41,6 +41,7 @@ public class JavaScript extends AbstractExtension { */ public JavaScript() { registerRpc(new JavaScriptCallbackRpc() { + @Override public void call(String name, JSONArray arguments) { JavaScriptCallback callback = callbacks.get(name); // TODO handle situation if name is not registered @@ -115,6 +116,16 @@ public class JavaScript extends AbstractExtension { } /** + * Executes the given JavaScript code in the browser. + * + * @param script + * The JavaScript code to run. + */ + public static void eval(String script) { + getCurrent().execute(script); + } + + /** * Get the JavaScript object for the current Page, or null if there is no * current page. * diff --git a/src/com/vaadin/ui/Label.java b/src/com/vaadin/ui/Label.java index e1c64605d7..7e50a37805 100644 --- a/src/com/vaadin/ui/Label.java +++ b/src/com/vaadin/ui/Label.java @@ -5,12 +5,13 @@ package com.vaadin.ui; import java.lang.reflect.Method; +import java.util.logging.Logger; import com.vaadin.data.Property; import com.vaadin.data.util.converter.Converter; import com.vaadin.data.util.converter.ConverterUtil; -import com.vaadin.terminal.gwt.client.ui.label.ContentMode; -import com.vaadin.terminal.gwt.client.ui.label.LabelState; +import com.vaadin.shared.ui.label.ContentMode; +import com.vaadin.shared.ui.label.LabelState; /** * Label component for showing non-editable short texts. @@ -41,6 +42,9 @@ public class Label extends AbstractComponent implements Property<String>, Property.Viewer, Property.ValueChangeListener, Property.ValueChangeNotifier, Comparable<Label> { + private static final Logger logger = Logger + .getLogger(Label.class.getName()); + /** * @deprecated From 7.0, use {@link ContentMode#TEXT} instead */ @@ -142,11 +146,15 @@ public class Label extends AbstractComponent implements Property<String>, } /** - * Gets the value of the label. Value of the label is the XML contents of - * the label. + * Gets the value of the label. + * <p> + * The value of the label is the text that is shown to the end user. + * Depending on the {@link ContentMode} it is plain text or markup. + * </p> * - * @return the Value of the label. + * @return the value of the label. */ + @Override public String getValue() { if (getPropertyDataSource() == null) { // Use internal value if we are running without a data source @@ -163,6 +171,7 @@ public class Label extends AbstractComponent implements Property<String>, * @param newStringValue * the New value of the label. */ + @Override public void setValue(Object newStringValue) { if (newStringValue != null && newStringValue.getClass() != String.class) { throw new Converter.ConversionException("Value of type " @@ -179,15 +188,20 @@ public class Label extends AbstractComponent implements Property<String>, } /** + * Returns the value displayed by this label. + * * @see java.lang.Object#toString() - * @deprecated use the data source value or {@link #getStringValue()} - * instead + * @deprecated As of 7.0.0, use {@link #getValue()} to get the value of the + * label or {@link #getPropertyDataSource()} .getValue() to get + * the value of the data source. */ @Deprecated @Override public String toString() { - throw new UnsupportedOperationException( - "Use getValue() instead of Label.toString()"); + logger.warning("You are using Label.toString() to get the value for a " + + getClass().getSimpleName() + + ". This is not recommended and will not be supported in future versions."); + return getValue(); } /** @@ -195,6 +209,7 @@ public class Label extends AbstractComponent implements Property<String>, * * @see com.vaadin.data.Property#getType() */ + @Override public Class<String> getType() { return String.class; } @@ -205,6 +220,7 @@ public class Label extends AbstractComponent implements Property<String>, * @return the data source property. * @see com.vaadin.data.Property.Viewer#getPropertyDataSource() */ + @Override public Property getPropertyDataSource() { return dataSource; } @@ -216,6 +232,7 @@ public class Label extends AbstractComponent implements Property<String>, * the new data source Property * @see com.vaadin.data.Property.Viewer#setPropertyDataSource(com.vaadin.data.Property) */ + @Override public void setPropertyDataSource(Property newDataSource) { // Stops listening the old data source changes if (dataSource != null @@ -312,6 +329,7 @@ public class Label extends AbstractComponent implements Property<String>, * * @see com.vaadin.data.Property.ValueChangeEvent#getProperty() */ + @Override public Property getProperty() { return (Property) getSource(); } @@ -324,6 +342,7 @@ public class Label extends AbstractComponent implements Property<String>, * the Listener to be added. * @see com.vaadin.data.Property.ValueChangeNotifier#addListener(com.vaadin.data.Property.ValueChangeListener) */ + @Override public void addListener(Property.ValueChangeListener listener) { addListener(Label.ValueChangeEvent.class, listener, VALUE_CHANGE_METHOD); } @@ -335,6 +354,7 @@ public class Label extends AbstractComponent implements Property<String>, * the Listener to be removed. * @see com.vaadin.data.Property.ValueChangeNotifier#removeListener(com.vaadin.data.Property.ValueChangeListener) */ + @Override public void removeListener(Property.ValueChangeListener listener) { removeListener(Label.ValueChangeEvent.class, listener, VALUE_CHANGE_METHOD); @@ -353,6 +373,7 @@ public class Label extends AbstractComponent implements Property<String>, * * @see com.vaadin.data.Property.ValueChangeListener#valueChange(Property.ValueChangeEvent) */ + @Override public void valueChange(Property.ValueChangeEvent event) { // Update the internal value from the data source getState().setText(getValue()); @@ -397,6 +418,7 @@ public class Label extends AbstractComponent implements Property<String>, * less than, equal to, or greater than the specified object. * @see java.lang.Comparable#compareTo(java.lang.Object) */ + @Override public int compareTo(Label other) { String thisValue = getComparableValue(); diff --git a/src/com/vaadin/ui/Layout.java b/src/com/vaadin/ui/Layout.java index 67bfaa75ff..d083f9afdc 100644 --- a/src/com/vaadin/ui/Layout.java +++ b/src/com/vaadin/ui/Layout.java @@ -6,8 +6,8 @@ package com.vaadin.ui; import java.io.Serializable; -import com.vaadin.terminal.gwt.client.ui.AlignmentInfo.Bits; -import com.vaadin.terminal.gwt.client.ui.VMarginInfo; +import com.vaadin.shared.ui.VMarginInfo; +import com.vaadin.shared.ui.AlignmentInfo.Bits; /** * Extension to the {@link ComponentContainer} interface which adds the diff --git a/src/com/vaadin/ui/Link.java b/src/com/vaadin/ui/Link.java index db0dc58e6b..fd105f3255 100644 --- a/src/com/vaadin/ui/Link.java +++ b/src/com/vaadin/ui/Link.java @@ -96,6 +96,7 @@ public class Link extends AbstractComponent implements Vaadin6Component { * @throws PaintException * if the paint operation failed. */ + @Override public void paintContent(PaintTarget target) throws PaintException { if (resource != null) { @@ -234,6 +235,7 @@ public class Link extends AbstractComponent implements Vaadin6Component { requestRepaint(); } + @Override public void changeVariables(Object source, Map<String, Object> variables) { // TODO Remove once Vaadin6Component is no longer implemented } diff --git a/src/com/vaadin/ui/LoginForm.java b/src/com/vaadin/ui/LoginForm.java index 1d5203bc6b..db7e5f9dd9 100644 --- a/src/com/vaadin/ui/LoginForm.java +++ b/src/com/vaadin/ui/LoginForm.java @@ -48,33 +48,40 @@ public class LoginForm extends CustomComponent { private ApplicationResource loginPage = new ApplicationResource() { + @Override public Application getApplication() { return LoginForm.this.getApplication(); } + @Override public int getBufferSize() { return getLoginHTML().length; } + @Override public long getCacheTime() { return -1; } + @Override public String getFilename() { return "login"; } + @Override public DownloadStream getStream() { return new DownloadStream(new ByteArrayInputStream(getLoginHTML()), getMIMEType(), getFilename()); } + @Override public String getMIMEType() { return "text/html; charset=utf-8"; } }; private final RequestHandler requestHandler = new RequestHandler() { + @Override public boolean handleRequest(Application application, WrappedRequest request, WrappedResponse response) throws IOException { @@ -84,7 +91,7 @@ public class LoginForm extends CustomComponent { response.setContentType("text/html; charset=utf-8"); response.getWriter() .write("<html><body>Login form handled." - + "<script type='text/javascript'>top.vaadin.forceSync();" + + "<script type='text/javascript'>parent.parent.vaadin.forceSync();" + "</script></body></html>"); Map<String, String[]> parameters = request.getParameterMap(); diff --git a/src/com/vaadin/ui/MenuBar.java b/src/com/vaadin/ui/MenuBar.java index f94bd7ea64..5b5dc13e20 100644 --- a/src/com/vaadin/ui/MenuBar.java +++ b/src/com/vaadin/ui/MenuBar.java @@ -39,6 +39,7 @@ public class MenuBar extends AbstractComponent implements Vaadin6Component { private boolean htmlContentAllowed; /** Paint (serialise) the component for the client. */ + @Override public void paintContent(PaintTarget target) throws PaintException { target.addAttribute(VMenuBar.OPEN_ROOT_MENU_ON_HOWER, openRootOnHover); @@ -125,6 +126,7 @@ public class MenuBar extends AbstractComponent implements Vaadin6Component { } /** Deserialize changes received from client. */ + @Override public void changeVariables(Object source, Map<String, Object> variables) { Stack<MenuItem> items = new Stack<MenuItem>(); boolean found = false; diff --git a/src/com/vaadin/ui/Notification.java b/src/com/vaadin/ui/Notification.java index 0358283cb4..502e5ff788 100644 --- a/src/com/vaadin/ui/Notification.java +++ b/src/com/vaadin/ui/Notification.java @@ -76,8 +76,7 @@ public class Notification implements Serializable { /** * Creates a "humanized" notification message. * - * Care should be taken to to avoid XSS vulnerabilities as the caption is by - * default rendered as html. + * The caption is rendered as plain text with HTML automatically escaped. * * @param caption * The message to show @@ -89,8 +88,7 @@ public class Notification implements Serializable { /** * Creates a notification message of the specified type. * - * Care should be taken to to avoid XSS vulnerabilities as the caption is by - * default rendered as html. + * The caption is rendered as plain text with HTML automatically escaped. * * @param caption * The message to show @@ -105,8 +103,8 @@ public class Notification implements Serializable { * Creates a "humanized" notification message with a bigger caption and * smaller description. * - * Care should be taken to to avoid XSS vulnerabilities as the caption and - * description are by default rendered as html. + * The caption and description are rendered as plain text with HTML + * automatically escaped. * * @param caption * The message caption @@ -121,8 +119,8 @@ public class Notification implements Serializable { * Creates a notification message of the specified type, with a bigger * caption and smaller description. * - * Care should be taken to to avoid XSS vulnerabilities as the caption and - * description are by default rendered as html. + * The caption and description are rendered as plain text with HTML + * automatically escaped. * * @param caption * The message caption @@ -132,7 +130,7 @@ public class Notification implements Serializable { * The type of message */ public Notification(String caption, String description, int type) { - this(caption, description, type, true); + this(caption, description, type, false); } /** @@ -335,8 +333,7 @@ public class Notification implements Serializable { * Shows a notification message on the middle of the current page. The * message automatically disappears ("humanized message"). * - * Care should be taken to to avoid XSS vulnerabilities as the caption is - * rendered as html. + * The caption is rendered as plain text with HTML automatically escaped. * * @see #Notification(String) * @see #show(Page) @@ -354,8 +351,7 @@ public class Notification implements Serializable { * defined in {@link Notification}, for instance * Notification.TYPE_WARNING_MESSAGE. * - * Care should be taken to to avoid XSS vulnerabilities as the caption is - * rendered as html. + * The caption is rendered as plain text with HTML automatically escaped. * * @see #Notification(String, int) * @see #show(Page) diff --git a/src/com/vaadin/ui/OptionGroup.java b/src/com/vaadin/ui/OptionGroup.java index a4aaf7ec99..e3bcdd61b7 100644 --- a/src/com/vaadin/ui/OptionGroup.java +++ b/src/com/vaadin/ui/OptionGroup.java @@ -75,20 +75,24 @@ public class OptionGroup extends AbstractSelect implements } } + @Override public void addListener(BlurListener listener) { addListener(BlurEvent.EVENT_ID, BlurEvent.class, listener, BlurListener.blurMethod); } + @Override public void removeListener(BlurListener listener) { removeListener(BlurEvent.EVENT_ID, BlurEvent.class, listener); } + @Override public void addListener(FocusListener listener) { addListener(FocusEvent.EVENT_ID, FocusEvent.class, listener, FocusListener.focusMethod); } + @Override public void removeListener(FocusListener listener) { removeListener(FocusEvent.EVENT_ID, FocusEvent.class, listener); diff --git a/src/com/vaadin/ui/Panel.java b/src/com/vaadin/ui/Panel.java index c339100cda..3c26b73f09 100644 --- a/src/com/vaadin/ui/Panel.java +++ b/src/com/vaadin/ui/Panel.java @@ -13,14 +13,14 @@ import com.vaadin.event.Action.Handler; import com.vaadin.event.ActionManager; import com.vaadin.event.MouseEvents.ClickEvent; import com.vaadin.event.MouseEvents.ClickListener; +import com.vaadin.shared.MouseEventDetails; +import com.vaadin.shared.ui.panel.PanelServerRpc; +import com.vaadin.shared.ui.panel.PanelState; import com.vaadin.terminal.PaintException; import com.vaadin.terminal.PaintTarget; import com.vaadin.terminal.Scrollable; import com.vaadin.terminal.Vaadin6Component; -import com.vaadin.terminal.gwt.client.MouseEventDetails; import com.vaadin.terminal.gwt.client.ui.ClickEventHandler; -import com.vaadin.terminal.gwt.client.ui.panel.PanelServerRpc; -import com.vaadin.terminal.gwt.client.ui.panel.PanelState; import com.vaadin.ui.Component.Focusable; /** @@ -49,6 +49,7 @@ public class Panel extends AbstractComponentContainer implements Scrollable, protected ActionManager actionManager; private PanelServerRpc rpc = new PanelServerRpc() { + @Override public void click(MouseEventDetails mouseDetails) { fireEvent(new ClickEvent(Panel.this, mouseDetails)); } @@ -188,6 +189,7 @@ public class Panel extends AbstractComponentContainer implements Scrollable, * com.vaadin.terminal.Vaadin6Component#paintContent(com.vaadin.terminal * .PaintTarget) */ + @Override public void paintContent(PaintTarget target) throws PaintException { if (actionManager != null) { actionManager.paintActions(null, target); @@ -229,6 +231,7 @@ public class Panel extends AbstractComponentContainer implements Scrollable, * @return the Iterator of the components inside the container. * @see com.vaadin.ui.ComponentContainer#getComponentIterator() */ + @Override public Iterator<Component> getComponentIterator() { return Collections.singleton((Component) content).iterator(); } @@ -239,6 +242,7 @@ public class Panel extends AbstractComponentContainer implements Scrollable, * * @see com.vaadin.terminal.VariableOwner#changeVariables(Object, Map) */ + @Override @SuppressWarnings("unchecked") public void changeVariables(Object source, Map<String, Object> variables) { // Get new size @@ -277,6 +281,7 @@ public class Panel extends AbstractComponentContainer implements Scrollable, * * @see com.vaadin.terminal.Scrollable#setScrollable(boolean) */ + @Override public int getScrollLeft() { return getState().getScrollLeft(); } @@ -286,6 +291,7 @@ public class Panel extends AbstractComponentContainer implements Scrollable, * * @see com.vaadin.terminal.Scrollable#setScrollable(boolean) */ + @Override public int getScrollTop() { return getState().getScrollTop(); } @@ -295,6 +301,7 @@ public class Panel extends AbstractComponentContainer implements Scrollable, * * @see com.vaadin.terminal.Scrollable#setScrollLeft(int) */ + @Override public void setScrollLeft(int scrollLeft) { if (scrollLeft < 0) { throw new IllegalArgumentException( @@ -309,6 +316,7 @@ public class Panel extends AbstractComponentContainer implements Scrollable, * * @see com.vaadin.terminal.Scrollable#setScrollTop(int) */ + @Override public void setScrollTop(int scrollTop) { if (scrollTop < 0) { throw new IllegalArgumentException( @@ -319,6 +327,7 @@ public class Panel extends AbstractComponentContainer implements Scrollable, } /* Documented in superclass */ + @Override public void replaceComponent(Component oldComponent, Component newComponent) { content.replaceComponent(oldComponent, newComponent); @@ -329,6 +338,7 @@ public class Panel extends AbstractComponentContainer implements Scrollable, * * @see com.vaadin.ui.ComponentContainer.ComponentAttachListener#componentAttachedToContainer(com.vaadin.ui.ComponentContainer.ComponentAttachEvent) */ + @Override public void componentAttachedToContainer(ComponentAttachEvent event) { if (event.getContainer() == content) { fireComponentAttachEvent(event.getAttachedComponent()); @@ -340,6 +350,7 @@ public class Panel extends AbstractComponentContainer implements Scrollable, * * @see com.vaadin.ui.ComponentContainer.ComponentDetachListener#componentDetachedFromContainer(com.vaadin.ui.ComponentContainer.ComponentDetachEvent) */ + @Override public void componentDetachedFromContainer(ComponentDetachEvent event) { if (event.getContainer() == content) { fireComponentDetachEvent(event.getDetachedComponent()); @@ -367,11 +378,13 @@ public class Panel extends AbstractComponentContainer implements Scrollable, return actionManager; } + @Override public <T extends Action & com.vaadin.event.Action.Listener> void addAction( T action) { getActionManager().addAction(action); } + @Override public <T extends Action & com.vaadin.event.Action.Listener> void removeAction( T action) { if (actionManager != null) { @@ -379,10 +392,12 @@ public class Panel extends AbstractComponentContainer implements Scrollable, } } + @Override public void addActionHandler(Handler actionHandler) { getActionManager().addActionHandler(actionHandler); } + @Override public void removeActionHandler(Handler actionHandler) { if (actionManager != null) { actionManager.removeActionHandler(actionHandler); @@ -429,6 +444,7 @@ public class Panel extends AbstractComponentContainer implements Scrollable, /** * {@inheritDoc} */ + @Override public int getTabIndex() { return getState().getTabIndex(); } @@ -436,6 +452,7 @@ public class Panel extends AbstractComponentContainer implements Scrollable, /** * {@inheritDoc} */ + @Override public void setTabIndex(int tabIndex) { getState().setTabIndex(tabIndex); requestRepaint(); @@ -455,6 +472,7 @@ public class Panel extends AbstractComponentContainer implements Scrollable, * * @see com.vaadin.ui.ComponentContainer#getComponentCount() */ + @Override public int getComponentCount() { // This is so wrong... (#2924) return content.getComponentCount(); diff --git a/src/com/vaadin/ui/PopupView.java b/src/com/vaadin/ui/PopupView.java index 911d926053..766181b50f 100644 --- a/src/com/vaadin/ui/PopupView.java +++ b/src/com/vaadin/ui/PopupView.java @@ -58,10 +58,12 @@ public class PopupView extends AbstractComponentContainer implements first = (component == null); } + @Override public boolean hasNext() { return !first; } + @Override public Component next() { if (!first) { first = true; @@ -71,6 +73,7 @@ public class PopupView extends AbstractComponentContainer implements } } + @Override public void remove() { throw new UnsupportedOperationException(); } @@ -90,10 +93,12 @@ public class PopupView extends AbstractComponentContainer implements */ public PopupView(final java.lang.String small, final Component large) { this(new PopupView.Content() { + @Override public java.lang.String getMinimizedValueAsHTML() { return small; } + @Override public Component getPopupComponent() { return large; } @@ -223,6 +228,7 @@ public class PopupView extends AbstractComponentContainer implements * * @see com.vaadin.ui.ComponentContainer#getComponentIterator() */ + @Override public Iterator<Component> getComponentIterator() { return new SingleComponentIterator(visibleComponent); } @@ -233,6 +239,7 @@ public class PopupView extends AbstractComponentContainer implements * * @return the number of contained components (zero or one) */ + @Override public int getComponentCount() { return (visibleComponent != null ? 1 : 0); } @@ -280,6 +287,7 @@ public class PopupView extends AbstractComponentContainer implements * com.vaadin.ui.Component) * @throws UnsupportedOperationException */ + @Override public void replaceComponent(Component oldComponent, Component newComponent) throws UnsupportedOperationException { @@ -307,6 +315,7 @@ public class PopupView extends AbstractComponentContainer implements * * @see com.vaadin.ui.AbstractComponent#paintContent(com.vaadin.terminal.PaintTarget) */ + @Override public void paintContent(PaintTarget target) throws PaintException { String html = content.getMinimizedValueAsHTML(); if (html == null) { @@ -331,6 +340,7 @@ public class PopupView extends AbstractComponentContainer implements * @see com.vaadin.ui.AbstractComponent#changeVariables(java.lang.Object, * java.util.Map) */ + @Override public void changeVariables(Object source, Map<String, Object> variables) { if (variables.containsKey("popupVisibility")) { setPopupVisible(((Boolean) variables.get("popupVisibility")) diff --git a/src/com/vaadin/ui/ProgressIndicator.java b/src/com/vaadin/ui/ProgressIndicator.java index 4d585cfdd7..fef54a267c 100644 --- a/src/com/vaadin/ui/ProgressIndicator.java +++ b/src/com/vaadin/ui/ProgressIndicator.java @@ -111,6 +111,7 @@ public class ProgressIndicator extends AbstractField<Number> implements * @throws PaintException * if the Paint Operation fails. */ + @Override public void paintContent(PaintTarget target) throws PaintException { target.addAttribute("indeterminate", indeterminate); target.addAttribute("pollinginterval", pollingInterval); @@ -247,6 +248,7 @@ public class ProgressIndicator extends AbstractField<Number> implements return pollingInterval; } + @Override public void changeVariables(Object source, Map<String, Object> variables) { // TODO Remove once Vaadin6Component is no longer implemented diff --git a/src/com/vaadin/ui/RichTextArea.java b/src/com/vaadin/ui/RichTextArea.java index 16d4761b40..cec952926b 100644 --- a/src/com/vaadin/ui/RichTextArea.java +++ b/src/com/vaadin/ui/RichTextArea.java @@ -103,6 +103,7 @@ public class RichTextArea extends AbstractField<String> implements setCaption(caption); } + @Override public void paintContent(PaintTarget target) throws PaintException { if (selectAll) { target.addAttribute("selectAll", true); @@ -185,6 +186,7 @@ public class RichTextArea extends AbstractField<String> implements } } + @Override public void changeVariables(Object source, Map<String, Object> variables) { // Sets the text if (variables.containsKey("text") && !isReadOnly()) { diff --git a/src/com/vaadin/ui/Root.java b/src/com/vaadin/ui/Root.java index 7ae687be79..bd4842632b 100644 --- a/src/com/vaadin/ui/Root.java +++ b/src/com/vaadin/ui/Root.java @@ -20,6 +20,9 @@ import com.vaadin.event.Action.Handler; import com.vaadin.event.ActionManager; import com.vaadin.event.MouseEvents.ClickEvent; import com.vaadin.event.MouseEvents.ClickListener; +import com.vaadin.shared.MouseEventDetails; +import com.vaadin.shared.ui.root.RootServerRpc; +import com.vaadin.shared.ui.root.RootState; import com.vaadin.terminal.Page; import com.vaadin.terminal.Page.BrowserWindowResizeEvent; import com.vaadin.terminal.Page.BrowserWindowResizeListener; @@ -29,9 +32,6 @@ import com.vaadin.terminal.Resource; import com.vaadin.terminal.Vaadin6Component; import com.vaadin.terminal.WrappedRequest; import com.vaadin.terminal.WrappedRequest.BrowserDetails; -import com.vaadin.terminal.gwt.client.MouseEventDetails; -import com.vaadin.terminal.gwt.client.ui.root.RootServerRpc; -import com.vaadin.terminal.gwt.client.ui.root.RootState; import com.vaadin.terminal.gwt.client.ui.root.VRoot; import com.vaadin.ui.Window.CloseListener; @@ -419,6 +419,7 @@ public abstract class Root extends AbstractComponentContainer implements private Page page = new Page(this); private RootServerRpc rpc = new RootServerRpc() { + @Override public void click(MouseEventDetails mouseDetails) { fireEvent(new ClickEvent(Root.this, mouseDetails)); } @@ -502,6 +503,7 @@ public abstract class Root extends AbstractComponentContainer implements return this; } + @Override public void replaceComponent(Component oldComponent, Component newComponent) { throw new UnsupportedOperationException(); } @@ -511,6 +513,7 @@ public abstract class Root extends AbstractComponentContainer implements return application; } + @Override public void paintContent(PaintTarget target) throws PaintException { page.paintContent(target); @@ -550,6 +553,7 @@ public abstract class Root extends AbstractComponentContainer implements fireEvent(new ClickEvent(this, mouseDetails)); } + @Override @SuppressWarnings("unchecked") public void changeVariables(Object source, Map<String, Object> variables) { if (variables.containsKey(CLICK_EVENT_ID)) { @@ -578,6 +582,7 @@ public abstract class Root extends AbstractComponentContainer implements * * @see com.vaadin.ui.ComponentContainer#getComponentIterator() */ + @Override public Iterator<Component> getComponentIterator() { // TODO could directly create some kind of combined iterator instead of // creating a new ArrayList @@ -597,6 +602,7 @@ public abstract class Root extends AbstractComponentContainer implements * * @see com.vaadin.ui.ComponentContainer#getComponentCount() */ + @Override public int getComponentCount() { return windows.size() + (getContent() == null ? 0 : 1); } @@ -956,11 +962,13 @@ public abstract class Root extends AbstractComponentContainer implements return actionManager; } + @Override public <T extends Action & com.vaadin.event.Action.Listener> void addAction( T action) { getActionManager().addAction(action); } + @Override public <T extends Action & com.vaadin.event.Action.Listener> void removeAction( T action) { if (actionManager != null) { @@ -968,10 +976,12 @@ public abstract class Root extends AbstractComponentContainer implements } } + @Override public void addActionHandler(Handler actionHandler) { getActionManager().addActionHandler(actionHandler); } + @Override public void removeActionHandler(Handler actionHandler) { if (actionManager != null) { actionManager.removeActionHandler(actionHandler); @@ -1071,11 +1081,14 @@ public abstract class Root extends AbstractComponentContainer implements * @param caption * The message * - * @deprecated As of 7.0, use Notification.show instead + * @deprecated As of 7.0, use Notification.show instead but be aware that + * Notification.show does not allow HTML. */ @Deprecated public void showNotification(String caption) { - getPage().showNotification(new Notification(caption)); + Notification notification = new Notification(caption); + notification.setHtmlContentAllowed(true);// Backwards compatibility + getPage().showNotification(notification); } /** @@ -1094,11 +1107,14 @@ public abstract class Root extends AbstractComponentContainer implements * @param type * The message type * - * @deprecated As of 7.0, use Notification.show instead + * @deprecated As of 7.0, use Notification.show instead but be aware that + * Notification.show does not allow HTML. */ @Deprecated public void showNotification(String caption, int type) { - getPage().showNotification(new Notification(caption, type)); + Notification notification = new Notification(caption, type); + notification.setHtmlContentAllowed(true);// Backwards compatibility + getPage().showNotification(notification); } /** @@ -1117,11 +1133,14 @@ public abstract class Root extends AbstractComponentContainer implements * @param description * The message description * - * @deprecated As of 7.0, use Notification.show instead + * @deprecated As of 7.0, use new Notification(...).show(Page) instead but + * be aware that HTML by default not allowed. */ @Deprecated public void showNotification(String caption, String description) { - getPage().showNotification(new Notification(caption, description)); + Notification notification = new Notification(caption, description); + notification.setHtmlContentAllowed(true);// Backwards compatibility + getPage().showNotification(notification); } /** @@ -1143,12 +1162,14 @@ public abstract class Root extends AbstractComponentContainer implements * @param type * The message type * - * @deprecated As of 7.0, use Notification.show instead + * @deprecated As of 7.0, use new Notification(...).show(Page) instead but + * be aware that HTML by default not allowed. */ @Deprecated public void showNotification(String caption, String description, int type) { - getPage() - .showNotification(new Notification(caption, description, type)); + Notification notification = new Notification(caption, description, type); + notification.setHtmlContentAllowed(true);// Backwards compatibility + getPage().showNotification(notification); } /** @@ -1173,7 +1194,7 @@ public abstract class Root extends AbstractComponentContainer implements * Whether html in the caption and description should be * displayed as html or as plain text * - * @deprecated As of 7.0, use Notification.show instead + * @deprecated As of 7.0, use new Notification(...).show(Page). */ @Deprecated public void showNotification(String caption, String description, int type, diff --git a/src/com/vaadin/ui/Select.java b/src/com/vaadin/ui/Select.java index 5398f11391..f60935c64b 100644 --- a/src/com/vaadin/ui/Select.java +++ b/src/com/vaadin/ui/Select.java @@ -677,10 +677,12 @@ public class Select extends AbstractSelect implements AbstractSelect.Filtering, super.requestRepaint(); } + @Override public void setFilteringMode(int filteringMode) { this.filteringMode = filteringMode; } + @Override public int getFilteringMode() { return filteringMode; } @@ -719,20 +721,24 @@ public class Select extends AbstractSelect implements AbstractSelect.Filtering, return columns; } + @Override public void addListener(BlurListener listener) { addListener(BlurEvent.EVENT_ID, BlurEvent.class, listener, BlurListener.blurMethod); } + @Override public void removeListener(BlurListener listener) { removeListener(BlurEvent.EVENT_ID, BlurEvent.class, listener); } + @Override public void addListener(FocusListener listener) { addListener(FocusEvent.EVENT_ID, FocusEvent.class, listener, FocusListener.focusMethod); } + @Override public void removeListener(FocusListener listener) { removeListener(FocusEvent.EVENT_ID, FocusEvent.class, listener); diff --git a/src/com/vaadin/ui/Slider.java b/src/com/vaadin/ui/Slider.java index dc5dc0be98..94afe4e2bd 100644 --- a/src/com/vaadin/ui/Slider.java +++ b/src/com/vaadin/ui/Slider.java @@ -278,6 +278,7 @@ public class Slider extends AbstractField<Double> implements Vaadin6Component { super.setValue(newFieldValue); } + @Override public void paintContent(PaintTarget target) throws PaintException { target.addAttribute("min", min); @@ -307,6 +308,7 @@ public class Slider extends AbstractField<Double> implements Vaadin6Component { * @param source * @param variables */ + @Override public void changeVariables(Object source, Map<String, Object> variables) { if (variables.containsKey("value")) { final Object value = variables.get("value"); diff --git a/src/com/vaadin/ui/TabSheet.java b/src/com/vaadin/ui/TabSheet.java index 061809de67..c52e9394c0 100644 --- a/src/com/vaadin/ui/TabSheet.java +++ b/src/com/vaadin/ui/TabSheet.java @@ -109,6 +109,7 @@ public class TabSheet extends AbstractComponentContainer implements Focusable, setImmediate(true); setCloseHandler(new CloseHandler() { + @Override public void onTabClose(TabSheet tabsheet, Component c) { tabsheet.removeComponent(c); } @@ -122,6 +123,7 @@ public class TabSheet extends AbstractComponentContainer implements Focusable, * @return the unmodifiable Iterator of the tab content components */ + @Override public Iterator<Component> getComponentIterator() { return Collections.unmodifiableList(components).iterator(); } @@ -133,6 +135,7 @@ public class TabSheet extends AbstractComponentContainer implements Focusable, * @return the number of contained components */ + @Override public int getComponentCount() { return components.size(); } @@ -366,6 +369,7 @@ public class TabSheet extends AbstractComponentContainer implements Focusable, * if the paint operation failed. */ + @Override public void paintContent(PaintTarget target) throws PaintException { if (areTabsHidden()) { @@ -691,6 +695,7 @@ public class TabSheet extends AbstractComponentContainer implements Focusable, // inherits javadoc + @Override public void changeVariables(Object source, Map<String, Object> variables) { if (variables.containsKey("selected")) { setSelectedTab(keyMapper.get((String) variables.get("selected"))); @@ -728,6 +733,7 @@ public class TabSheet extends AbstractComponentContainer implements Focusable, * {@inheritDoc} */ + @Override public void replaceComponent(Component oldComponent, Component newComponent) { if (selected == oldComponent) { @@ -1083,28 +1089,34 @@ public class TabSheet extends AbstractComponentContainer implements Focusable, * Returns the tab caption. Can never be null. */ + @Override public String getCaption() { return caption; } + @Override public void setCaption(String caption) { this.caption = caption; requestRepaint(); } + @Override public Resource getIcon() { return icon; } + @Override public void setIcon(Resource icon) { this.icon = icon; requestRepaint(); } + @Override public boolean isEnabled() { return enabled; } + @Override public void setEnabled(boolean enabled) { this.enabled = enabled; if (updateSelection()) { @@ -1113,10 +1125,12 @@ public class TabSheet extends AbstractComponentContainer implements Focusable, requestRepaint(); } + @Override public boolean isVisible() { return visible; } + @Override public void setVisible(boolean visible) { this.visible = visible; if (updateSelection()) { @@ -1125,10 +1139,12 @@ public class TabSheet extends AbstractComponentContainer implements Focusable, requestRepaint(); } + @Override public boolean isClosable() { return closable; } + @Override public void setClosable(boolean closable) { this.closable = closable; requestRepaint(); @@ -1138,24 +1154,29 @@ public class TabSheet extends AbstractComponentContainer implements Focusable, } + @Override public String getDescription() { return description; } + @Override public void setDescription(String description) { this.description = description; requestRepaint(); } + @Override public ErrorMessage getComponentError() { return componentError; } + @Override public void setComponentError(ErrorMessage componentError) { this.componentError = componentError; requestRepaint(); } + @Override public Component getComponent() { for (Map.Entry<Component, Tab> entry : tabs.entrySet()) { if (entry.getValue() == this) { @@ -1165,11 +1186,13 @@ public class TabSheet extends AbstractComponentContainer implements Focusable, return null; } + @Override public void setStyleName(String styleName) { this.styleName = styleName; requestRepaint(); } + @Override public String getStyleName() { return styleName; } @@ -1245,29 +1268,35 @@ public class TabSheet extends AbstractComponentContainer implements Focusable, super.focus(); } + @Override public int getTabIndex() { return tabIndex; } + @Override public void setTabIndex(int tabIndex) { this.tabIndex = tabIndex; requestRepaint(); } + @Override public void addListener(BlurListener listener) { addListener(BlurEvent.EVENT_ID, BlurEvent.class, listener, BlurListener.blurMethod); } + @Override public void removeListener(BlurListener listener) { removeListener(BlurEvent.EVENT_ID, BlurEvent.class, listener); } + @Override public void addListener(FocusListener listener) { addListener(FocusEvent.EVENT_ID, FocusEvent.class, listener, FocusListener.focusMethod); } + @Override public void removeListener(FocusListener listener) { removeListener(FocusEvent.EVENT_ID, FocusEvent.class, listener); diff --git a/src/com/vaadin/ui/Table.java b/src/com/vaadin/ui/Table.java index a1cc4f95fe..39b7fb7473 100644 --- a/src/com/vaadin/ui/Table.java +++ b/src/com/vaadin/ui/Table.java @@ -40,12 +40,12 @@ import com.vaadin.event.dd.DragSource; import com.vaadin.event.dd.DropHandler; import com.vaadin.event.dd.DropTarget; import com.vaadin.event.dd.acceptcriteria.ServerSideCriterion; +import com.vaadin.shared.MouseEventDetails; import com.vaadin.terminal.KeyMapper; import com.vaadin.terminal.LegacyPaint; import com.vaadin.terminal.PaintException; import com.vaadin.terminal.PaintTarget; import com.vaadin.terminal.Resource; -import com.vaadin.terminal.gwt.client.MouseEventDetails; import com.vaadin.terminal.gwt.client.ui.table.VScrollTable; /** @@ -538,6 +538,13 @@ public class Table extends AbstractSelect implements Action.Container, private HashMap<Object, Converter<String, Object>> propertyValueConverters = new HashMap<Object, Converter<String, Object>>(); + /** + * Set to true if the client-side should be informed that the key mapper has + * been reset so it can avoid sending back references to keys that are no + * longer present. + */ + private boolean keyMapperReset; + /* Table constructors */ /** @@ -1587,9 +1594,10 @@ public class Table extends AbstractSelect implements Action.Container, // Collects the basic facts about the table page final int pagelen = getPageLength(); - int firstIndex = getCurrentPageFirstItemIndex(); int rows, totalRows; rows = totalRows = size(); + int firstIndex = Math + .min(getCurrentPageFirstItemIndex(), totalRows - 1); if (rows > 0 && firstIndex >= 0) { rows -= firstIndex; } @@ -2409,8 +2417,9 @@ public class Table extends AbstractSelect implements Action.Container, * The end key * @return */ - private Set<Object> getItemIdsInRange(Object itemId, final int length) { - HashSet<Object> ids = new HashSet<Object>(); + private LinkedHashSet<Object> getItemIdsInRange(Object itemId, + final int length) { + LinkedHashSet<Object> ids = new LinkedHashSet<Object>(); for (int i = 0; i < length; i++) { assert itemId != null; // should not be null unless client-server // are out of sync @@ -2430,21 +2439,15 @@ public class Table extends AbstractSelect implements Action.Container, final String[] ka = (String[]) variables.get("selected"); final String[] ranges = (String[]) variables.get("selectedRanges"); - Set<Object> renderedItemIds = getCurrentlyRenderedItemIds(); + Set<Object> renderedButNotSelectedItemIds = getCurrentlyRenderedItemIds(); @SuppressWarnings("unchecked") - HashSet<Object> newValue = new HashSet<Object>( + HashSet<Object> newValue = new LinkedHashSet<Object>( (Collection<Object>) getValue()); if (variables.containsKey("clearSelections")) { // the client side has instructed to swipe all previous selections newValue.clear(); - } else { - /* - * first clear all selections that are currently rendered rows (the - * ones that the client side counterpart is aware of) - */ - newValue.removeAll(renderedItemIds); } /* @@ -2461,6 +2464,7 @@ public class Table extends AbstractSelect implements Action.Container, requestRepaint(); } else if (id != null && containsId(id)) { newValue.add(id); + renderedButNotSelectedItemIds.remove(id); } } @@ -2470,9 +2474,17 @@ public class Table extends AbstractSelect implements Action.Container, String[] split = range.split("-"); Object startItemId = itemIdMapper.get(split[0]); int length = Integer.valueOf(split[1]); - newValue.addAll(getItemIdsInRange(startItemId, length)); + LinkedHashSet<Object> itemIdsInRange = getItemIdsInRange( + startItemId, length); + newValue.addAll(itemIdsInRange); + renderedButNotSelectedItemIds.removeAll(itemIdsInRange); } } + /* + * finally clear all currently rendered rows (the ones that the client + * side counterpart is aware of) that the client didn't send as selected + */ + newValue.removeAll(renderedButNotSelectedItemIds); if (!isNullSelectionAllowed() && newValue.isEmpty()) { // empty selection not allowed, keep old value @@ -2885,6 +2897,11 @@ public class Table extends AbstractSelect implements Action.Container, paintVisibleColumns(target); + if (keyMapperReset) { + keyMapperReset = false; + target.addAttribute(VScrollTable.ATTRIBUTE_KEY_MAPPER_RESET, true); + } + if (dropHandler != null) { dropHandler.getAcceptCriterion().paint(target); } @@ -3681,6 +3698,7 @@ public class Table extends AbstractSelect implements Action.Container, * @see com.vaadin.event.Action.Container#addActionHandler(Action.Handler) */ + @Override public void addActionHandler(Action.Handler actionHandler) { if (actionHandler != null) { @@ -3708,6 +3726,7 @@ public class Table extends AbstractSelect implements Action.Container, * @see com.vaadin.event.Action.Container#removeActionHandler(Action.Handler) */ + @Override public void removeActionHandler(Action.Handler actionHandler) { if (actionHandlers != null && actionHandlers.contains(actionHandler)) { @@ -4046,6 +4065,10 @@ public class Table extends AbstractSelect implements Action.Container, public void containerItemSetChange(Container.ItemSetChangeEvent event) { super.containerItemSetChange(event); + // super method clears the key map, must inform client about this to + // avoid getting invalid keys back (#8584) + keyMapperReset = true; + // ensure that page still has first item in page, ignore buffer refresh // (forced in this method) setCurrentPageFirstItemIndex(getCurrentPageFirstItemIndex(), false); @@ -4117,6 +4140,7 @@ public class Table extends AbstractSelect implements Action.Container, * @see com.vaadin.data.Container.Ordered#nextItemId(java.lang.Object) */ + @Override public Object nextItemId(Object itemId) { return ((Container.Ordered) items).nextItemId(itemId); } @@ -4128,6 +4152,7 @@ public class Table extends AbstractSelect implements Action.Container, * @see com.vaadin.data.Container.Ordered#prevItemId(java.lang.Object) */ + @Override public Object prevItemId(Object itemId) { return ((Container.Ordered) items).prevItemId(itemId); } @@ -4138,6 +4163,7 @@ public class Table extends AbstractSelect implements Action.Container, * @see com.vaadin.data.Container.Ordered#firstItemId() */ + @Override public Object firstItemId() { return ((Container.Ordered) items).firstItemId(); } @@ -4148,6 +4174,7 @@ public class Table extends AbstractSelect implements Action.Container, * @see com.vaadin.data.Container.Ordered#lastItemId() */ + @Override public Object lastItemId() { return ((Container.Ordered) items).lastItemId(); } @@ -4159,6 +4186,7 @@ public class Table extends AbstractSelect implements Action.Container, * @see com.vaadin.data.Container.Ordered#isFirstId(java.lang.Object) */ + @Override public boolean isFirstId(Object itemId) { return ((Container.Ordered) items).isFirstId(itemId); } @@ -4170,6 +4198,7 @@ public class Table extends AbstractSelect implements Action.Container, * @see com.vaadin.data.Container.Ordered#isLastId(java.lang.Object) */ + @Override public boolean isLastId(Object itemId) { return ((Container.Ordered) items).isLastId(itemId); } @@ -4180,6 +4209,7 @@ public class Table extends AbstractSelect implements Action.Container, * @see com.vaadin.data.Container.Ordered#addItemAfter(java.lang.Object) */ + @Override public Object addItemAfter(Object previousItemId) throws UnsupportedOperationException { Object itemId = ((Container.Ordered) items) @@ -4197,6 +4227,7 @@ public class Table extends AbstractSelect implements Action.Container, * java.lang.Object) */ + @Override public Item addItemAfter(Object previousItemId, Object newItemId) throws UnsupportedOperationException { Item item = ((Container.Ordered) items).addItemAfter(previousItemId, @@ -4290,6 +4321,7 @@ public class Table extends AbstractSelect implements Action.Container, * */ + @Override public void sort(Object[] propertyId, boolean[] ascending) throws UnsupportedOperationException { final Container c = getContainerDataSource(); @@ -4331,6 +4363,7 @@ public class Table extends AbstractSelect implements Action.Container, * @see com.vaadin.data.Container.Sortable#getSortableContainerPropertyIds() */ + @Override public Collection<?> getSortableContainerPropertyIds() { final Container c = getContainerDataSource(); if (c instanceof Container.Sortable && isSortEnabled()) { @@ -4544,11 +4577,13 @@ public class Table extends AbstractSelect implements Action.Container, public abstract String getStyle(Object itemId, Object propertyId); } + @Override public void addListener(ItemClickListener listener) { addListener(VScrollTable.ITEM_CLICK_EVENT_ID, ItemClickEvent.class, listener, ItemClickEvent.ITEM_CLICK_METHOD); } + @Override public void removeListener(ItemClickListener listener) { removeListener(VScrollTable.ITEM_CLICK_EVENT_ID, ItemClickEvent.class, listener); @@ -4625,11 +4660,13 @@ public class Table extends AbstractSelect implements Action.Container, } + @Override public TableTransferable getTransferable(Map<String, Object> rawVariables) { TableTransferable transferable = new TableTransferable(rawVariables); return transferable; } + @Override public DropHandler getDropHandler() { return dropHandler; } @@ -4638,6 +4675,7 @@ public class Table extends AbstractSelect implements Action.Container, this.dropHandler = dropHandler; } + @Override public AbstractSelectTargetDetails translateDropTargetDetails( Map<String, Object> clientVariables) { return new AbstractSelectTargetDetails(clientVariables); @@ -4706,6 +4744,7 @@ public class Table extends AbstractSelect implements Action.Container, * com.vaadin.event.dd.acceptcriteria.AcceptCriterion#accepts(com.vaadin * .event.dd.DragAndDropEvent) */ + @Override @SuppressWarnings("unchecked") public boolean accept(DragAndDropEvent dragEvent) { AbstractSelectTargetDetails dropTargetData = (AbstractSelectTargetDetails) dragEvent @@ -5381,10 +5420,12 @@ public class Table extends AbstractSelect implements Action.Container, super.setVisible(visible); } + @Override public Iterator<Component> iterator() { return getComponentIterator(); } + @Override public Iterator<Component> getComponentIterator() { if (visibleComponents == null) { Collection<Component> empty = Collections.emptyList(); @@ -5394,6 +5435,7 @@ public class Table extends AbstractSelect implements Action.Container, return visibleComponents.iterator(); } + @Override public boolean isComponentVisible(Component childComponent) { return true; } diff --git a/src/com/vaadin/ui/TextArea.java b/src/com/vaadin/ui/TextArea.java index 4c0b563b00..d7837dd33f 100644 --- a/src/com/vaadin/ui/TextArea.java +++ b/src/com/vaadin/ui/TextArea.java @@ -5,7 +5,7 @@ package com.vaadin.ui; import com.vaadin.data.Property; -import com.vaadin.terminal.gwt.client.ui.textarea.TextAreaState; +import com.vaadin.shared.ui.textarea.TextAreaState; /** * A text field that supports multi line editing. diff --git a/src/com/vaadin/ui/Tree.java b/src/com/vaadin/ui/Tree.java index dacb3a2027..c15975d879 100644 --- a/src/com/vaadin/ui/Tree.java +++ b/src/com/vaadin/ui/Tree.java @@ -37,12 +37,12 @@ import com.vaadin.event.dd.TargetDetails; import com.vaadin.event.dd.acceptcriteria.ClientSideCriterion; import com.vaadin.event.dd.acceptcriteria.ServerSideCriterion; import com.vaadin.event.dd.acceptcriteria.TargetDetailIs; +import com.vaadin.shared.MouseEventDetails; +import com.vaadin.shared.ui.dd.VerticalDropLocation; import com.vaadin.terminal.KeyMapper; import com.vaadin.terminal.PaintException; import com.vaadin.terminal.PaintTarget; import com.vaadin.terminal.Resource; -import com.vaadin.terminal.gwt.client.MouseEventDetails; -import com.vaadin.terminal.gwt.client.ui.dd.VerticalDropLocation; import com.vaadin.terminal.gwt.client.ui.tree.TreeConnector; import com.vaadin.terminal.gwt.client.ui.tree.VTree; import com.vaadin.tools.ReflectTools; @@ -721,6 +721,7 @@ public class Tree extends AbstractSelect implements Container.Hierarchical, * * @see com.vaadin.data.Container.Hierarchical#areChildrenAllowed(Object) */ + @Override public boolean areChildrenAllowed(Object itemId) { return ((Container.Hierarchical) items).areChildrenAllowed(itemId); } @@ -730,6 +731,7 @@ public class Tree extends AbstractSelect implements Container.Hierarchical, * * @see com.vaadin.data.Container.Hierarchical#getChildren(Object) */ + @Override public Collection<?> getChildren(Object itemId) { return ((Container.Hierarchical) items).getChildren(itemId); } @@ -739,6 +741,7 @@ public class Tree extends AbstractSelect implements Container.Hierarchical, * * @see com.vaadin.data.Container.Hierarchical#getParent(Object) */ + @Override public Object getParent(Object itemId) { return ((Container.Hierarchical) items).getParent(itemId); } @@ -748,6 +751,7 @@ public class Tree extends AbstractSelect implements Container.Hierarchical, * * @see com.vaadin.data.Container.Hierarchical#hasChildren(Object) */ + @Override public boolean hasChildren(Object itemId) { return ((Container.Hierarchical) items).hasChildren(itemId); } @@ -757,6 +761,7 @@ public class Tree extends AbstractSelect implements Container.Hierarchical, * * @see com.vaadin.data.Container.Hierarchical#isRoot(Object) */ + @Override public boolean isRoot(Object itemId) { return ((Container.Hierarchical) items).isRoot(itemId); } @@ -766,6 +771,7 @@ public class Tree extends AbstractSelect implements Container.Hierarchical, * * @see com.vaadin.data.Container.Hierarchical#rootItemIds() */ + @Override public Collection<?> rootItemIds() { return ((Container.Hierarchical) items).rootItemIds(); } @@ -776,6 +782,7 @@ public class Tree extends AbstractSelect implements Container.Hierarchical, * @see com.vaadin.data.Container.Hierarchical#setChildrenAllowed(Object, * boolean) */ + @Override public boolean setChildrenAllowed(Object itemId, boolean areChildrenAllowed) { final boolean success = ((Container.Hierarchical) items) .setChildrenAllowed(itemId, areChildrenAllowed); @@ -791,6 +798,7 @@ public class Tree extends AbstractSelect implements Container.Hierarchical, * @see com.vaadin.data.Container.Hierarchical#setParent(java.lang.Object , * java.lang.Object) */ + @Override public boolean setParent(Object itemId, Object newParentId) { final boolean success = ((Container.Hierarchical) items).setParent( itemId, newParentId); @@ -1015,6 +1023,7 @@ public class Tree extends AbstractSelect implements Container.Hierarchical, * * @see com.vaadin.event.Action.Container#addActionHandler(Action.Handler) */ + @Override public void addActionHandler(Action.Handler actionHandler) { if (actionHandler != null) { @@ -1036,6 +1045,7 @@ public class Tree extends AbstractSelect implements Container.Hierarchical, * * @see com.vaadin.event.Action.Container#removeActionHandler(Action.Handler) */ + @Override public void removeActionHandler(Action.Handler actionHandler) { if (actionHandlers != null && actionHandlers.contains(actionHandler)) { @@ -1150,11 +1160,13 @@ public class Tree extends AbstractSelect implements Container.Hierarchical, private DropHandler dropHandler; + @Override public void addListener(ItemClickListener listener) { addListener(VTree.ITEM_CLICK_EVENT_ID, ItemClickEvent.class, listener, ItemClickEvent.ITEM_CLICK_METHOD); } + @Override public void removeListener(ItemClickListener listener) { removeListener(VTree.ITEM_CLICK_EVENT_ID, ItemClickEvent.class, listener); @@ -1206,6 +1218,7 @@ public class Tree extends AbstractSelect implements Container.Hierarchical, return super.removeItem(itemId); } + @Override public DropHandler getDropHandler() { return dropHandler; } @@ -1304,6 +1317,7 @@ public class Tree extends AbstractSelect implements Container.Hierarchical, * @see * com.vaadin.event.dd.DropTarget#translateDropTargetDetails(java.util.Map) */ + @Override public TreeTargetDetails translateDropTargetDetails( Map<String, Object> clientVariables) { return new TreeTargetDetails(clientVariables); @@ -1371,6 +1385,7 @@ public class Tree extends AbstractSelect implements Container.Hierarchical, * * @see com.vaadin.event.dd.DragSource#getTransferable(java.util.Map) */ + @Override public Transferable getTransferable(Map<String, Object> payload) { TreeTransferable transferable = new TreeTransferable(this, payload); // updating drag source variables @@ -1418,6 +1433,7 @@ public class Tree extends AbstractSelect implements Container.Hierarchical, * com.vaadin.event.dd.acceptCriteria.AcceptCriterion#accepts(com.vaadin * .event.dd.DragAndDropEvent) */ + @Override public boolean accept(DragAndDropEvent dragEvent) { AbstractSelectTargetDetails dropTargetData = (AbstractSelectTargetDetails) dragEvent .getTargetDetails(); @@ -1541,6 +1557,7 @@ public class Tree extends AbstractSelect implements Container.Hierarchical, this.depthToCheck = depthToCheck; } + @Override public boolean accept(DragAndDropEvent dragEvent) { try { TreeTargetDetails eventDetails = (TreeTargetDetails) dragEvent diff --git a/src/com/vaadin/ui/TreeTable.java b/src/com/vaadin/ui/TreeTable.java index 3294f6fab0..6132b652f7 100644 --- a/src/com/vaadin/ui/TreeTable.java +++ b/src/com/vaadin/ui/TreeTable.java @@ -82,6 +82,7 @@ public class TreeTable extends Table implements Hierarchical { * scalability with some container implementations. */ + @Override public int getDepth(Object itemId) { int depth = 0; Hierarchical hierarchicalContainer = getContainerDataSource(); @@ -92,6 +93,7 @@ public class TreeTable extends Table implements Hierarchical { return depth; } + @Override public void containerItemSetChange(ItemSetChangeEvent event) { } @@ -110,44 +112,54 @@ public class TreeTable extends Table implements Hierarchical { return (Collapsible) getContainerDataSource(); } + @Override public void toggleChildVisibility(Object itemId) { c().setCollapsed(itemId, !c().isCollapsed(itemId)); } + @Override public boolean isNodeOpen(Object itemId) { return !c().isCollapsed(itemId); } + @Override public int size() { return TreeTable.super.size(); } + @Override public Object getIdByIndex(int index) { return TreeTable.super.getIdByIndex(index); } + @Override public int indexOfId(Object id) { return TreeTable.super.indexOfId(id); } + @Override public boolean isLastId(Object itemId) { // using the default impl return TreeTable.super.isLastId(itemId); } + @Override public Object lastItemId() { // using the default impl return TreeTable.super.lastItemId(); } + @Override public Object nextItemId(Object itemId) { return TreeTable.super.nextItemId(itemId); } + @Override public Object prevItemId(Object itemId) { return TreeTable.super.prevItemId(itemId); } + @Override public Collection<?> getItemIds() { return TreeTable.super.getItemIds(); } @@ -165,18 +177,22 @@ public class TreeTable extends Table implements Hierarchical { private final HashSet<Object> openItems = new HashSet<Object>(); + @Override public boolean isNodeOpen(Object itemId) { return openItems.contains(itemId); } + @Override public int size() { return getPreOrder().size(); } + @Override public Collection<Object> getItemIds() { return Collections.unmodifiableCollection(getPreOrder()); } + @Override public boolean isLastId(Object itemId) { if (itemId == null) { return false; @@ -185,6 +201,7 @@ public class TreeTable extends Table implements Hierarchical { return itemId.equals(lastItemId()); } + @Override public Object lastItemId() { if (getPreOrder().size() > 0) { return getPreOrder().get(getPreOrder().size() - 1); @@ -193,6 +210,7 @@ public class TreeTable extends Table implements Hierarchical { } } + @Override public Object nextItemId(Object itemId) { int indexOf = getPreOrder().indexOf(itemId); if (indexOf == -1) { @@ -206,6 +224,7 @@ public class TreeTable extends Table implements Hierarchical { } } + @Override public Object prevItemId(Object itemId) { int indexOf = getPreOrder().indexOf(itemId); indexOf--; @@ -216,6 +235,7 @@ public class TreeTable extends Table implements Hierarchical { } } + @Override public void toggleChildVisibility(Object itemId) { boolean removed = openItems.remove(itemId); if (!removed) { @@ -265,10 +285,12 @@ public class TreeTable extends Table implements Hierarchical { } + @Override public int indexOfId(Object id) { return getPreOrder().indexOf(id); } + @Override public Object getIdByIndex(int index) { return getPreOrder().get(index); } @@ -610,36 +632,44 @@ public class TreeTable extends Table implements Hierarchical { return getContainerStrategy().getItemIds(); } + @Override public boolean areChildrenAllowed(Object itemId) { return getContainerDataSource().areChildrenAllowed(itemId); } + @Override public Collection<?> getChildren(Object itemId) { return getContainerDataSource().getChildren(itemId); } + @Override public Object getParent(Object itemId) { return getContainerDataSource().getParent(itemId); } + @Override public boolean hasChildren(Object itemId) { return getContainerDataSource().hasChildren(itemId); } + @Override public boolean isRoot(Object itemId) { return getContainerDataSource().isRoot(itemId); } + @Override public Collection<?> rootItemIds() { return getContainerDataSource().rootItemIds(); } + @Override public boolean setChildrenAllowed(Object itemId, boolean areChildrenAllowed) throws UnsupportedOperationException { return getContainerDataSource().setChildrenAllowed(itemId, areChildrenAllowed); } + @Override public boolean setParent(Object itemId, Object newParentId) throws UnsupportedOperationException { return getContainerDataSource().setParent(itemId, newParentId); diff --git a/src/com/vaadin/ui/Upload.java b/src/com/vaadin/ui/Upload.java index 4dff71e45b..9d533b67f6 100644 --- a/src/com/vaadin/ui/Upload.java +++ b/src/com/vaadin/ui/Upload.java @@ -122,6 +122,7 @@ public class Upload extends AbstractComponent implements Component.Focusable, * @see com.vaadin.ui.AbstractComponent#changeVariables(java.lang.Object, * java.util.Map) */ + @Override public void changeVariables(Object source, Map<String, Object> variables) { if (variables.containsKey("pollForStart")) { int id = (Integer) variables.get("pollForStart"); @@ -141,6 +142,7 @@ public class Upload extends AbstractComponent implements Component.Focusable, * @throws PaintException * if the paint operation failed. */ + @Override public void paintContent(PaintTarget target) throws PaintException { if (notStarted) { target.addAttribute("notStarted", true); @@ -782,6 +784,7 @@ public class Upload extends AbstractComponent implements Component.Focusable, * * @see com.vaadin.ui.Component.Focusable#getTabIndex() */ + @Override public int getTabIndex() { return tabIndex; } @@ -791,6 +794,7 @@ public class Upload extends AbstractComponent implements Component.Focusable, * * @see com.vaadin.ui.Component.Focusable#setTabIndex(int) */ + @Override public void setTabIndex(int tabIndex) { this.tabIndex = tabIndex; } @@ -974,20 +978,24 @@ public class Upload extends AbstractComponent implements Component.Focusable, streamVariable = new com.vaadin.terminal.StreamVariable() { private StreamingStartEvent lastStartedEvent; + @Override public boolean listenProgress() { return (progressListeners != null && !progressListeners .isEmpty()); } + @Override public void onProgress(StreamingProgressEvent event) { fireUpdateProgress(event.getBytesReceived(), event.getContentLength()); } + @Override public boolean isInterrupted() { return interrupted; } + @Override public OutputStream getOutputStream() { OutputStream receiveUpload = receiver.receiveUpload( lastStartedEvent.getFileName(), @@ -996,6 +1004,7 @@ public class Upload extends AbstractComponent implements Component.Focusable, return receiveUpload; } + @Override public void streamingStarted(StreamingStartEvent event) { startUpload(); contentLength = event.getContentLength(); @@ -1003,6 +1012,7 @@ public class Upload extends AbstractComponent implements Component.Focusable, lastStartedEvent = event; } + @Override public void streamingFinished(StreamingEndEvent event) { fireUploadSuccess(event.getFileName(), event.getMimeType(), event.getContentLength()); @@ -1010,6 +1020,7 @@ public class Upload extends AbstractComponent implements Component.Focusable, requestRepaint(); } + @Override public void streamingFailed(StreamingErrorEvent event) { Exception exception = event.getException(); if (exception instanceof NoInputStreamException) { diff --git a/src/com/vaadin/ui/Video.java b/src/com/vaadin/ui/Video.java index 0a2eccca0f..d4f95a5be3 100644 --- a/src/com/vaadin/ui/Video.java +++ b/src/com/vaadin/ui/Video.java @@ -4,8 +4,8 @@ package com.vaadin.ui; +import com.vaadin.shared.ui.video.VideoState; import com.vaadin.terminal.Resource; -import com.vaadin.terminal.gwt.client.ui.video.VideoState; import com.vaadin.terminal.gwt.server.ResourceReference; /** @@ -67,7 +67,7 @@ public class Video extends AbstractMedia { * @param poster */ public void setPoster(Resource poster) { - getState().setPoster(new ResourceReference(poster)); + getState().setPoster(ResourceReference.create(poster)); requestRepaint(); } @@ -75,7 +75,7 @@ public class Video extends AbstractMedia { * @return The poster image. */ public Resource getPoster() { - return ((ResourceReference) getState().getPoster()).getResource(); + return ResourceReference.getResource(getState().getPoster()); } } diff --git a/src/com/vaadin/ui/Window.java b/src/com/vaadin/ui/Window.java index 8866362587..e413d35e6d 100644 --- a/src/com/vaadin/ui/Window.java +++ b/src/com/vaadin/ui/Window.java @@ -19,13 +19,13 @@ import com.vaadin.event.ShortcutAction; import com.vaadin.event.ShortcutAction.KeyCode; import com.vaadin.event.ShortcutAction.ModifierKey; import com.vaadin.event.ShortcutListener; +import com.vaadin.shared.MouseEventDetails; +import com.vaadin.shared.ui.window.WindowServerRpc; +import com.vaadin.shared.ui.window.WindowState; import com.vaadin.terminal.PaintException; import com.vaadin.terminal.PaintTarget; import com.vaadin.terminal.Vaadin6Component; -import com.vaadin.terminal.gwt.client.MouseEventDetails; import com.vaadin.terminal.gwt.client.ui.root.VRoot; -import com.vaadin.terminal.gwt.client.ui.window.WindowServerRpc; -import com.vaadin.terminal.gwt.client.ui.window.WindowState; /** * A component that represents a floating popup window that can be added to a @@ -44,6 +44,10 @@ import com.vaadin.terminal.gwt.client.ui.window.WindowState; * <p> * The caption is displayed in the window header. * </p> + * <p> + * In Vaadin versions prior to 7.0.0, Window was also used as application level + * windows. This function is now covered by the {@link Root} class. + * </p> * * @author Vaadin Ltd. * @version @@ -56,6 +60,7 @@ public class Window extends Panel implements FocusNotifier, BlurNotifier, private WindowServerRpc rpc = new WindowServerRpc() { + @Override public void click(MouseEventDetails mouseDetails) { fireEvent(new ClickEvent(Window.this, mouseDetails)); } @@ -793,11 +798,13 @@ public class Window extends Panel implements FocusNotifier, BlurNotifier, * @see com.vaadin.event.FieldEvents.FocusNotifier#addListener(com.vaadin.event.FieldEvents.FocusListener) */ + @Override public void addListener(FocusListener listener) { addListener(FocusEvent.EVENT_ID, FocusEvent.class, listener, FocusListener.focusMethod); } + @Override public void removeListener(FocusListener listener) { removeListener(FocusEvent.EVENT_ID, FocusEvent.class, listener); } @@ -810,11 +817,13 @@ public class Window extends Panel implements FocusNotifier, BlurNotifier, * @see com.vaadin.event.FieldEvents.BlurNotifier#addListener(com.vaadin.event.FieldEvents.BlurListener) */ + @Override public void addListener(BlurListener listener) { addListener(BlurEvent.EVENT_ID, BlurEvent.class, listener, BlurListener.blurMethod); } + @Override public void removeListener(BlurListener listener) { removeListener(BlurEvent.EVENT_ID, BlurEvent.class, listener); } diff --git a/tests/client-side/com/vaadin/terminal/gwt/client/TestVBrowserDetailsUserAgentParser.java b/tests/client-side/com/vaadin/terminal/gwt/client/TestVBrowserDetailsUserAgentParser.java index fedce98ecf..34b64606a5 100644 --- a/tests/client-side/com/vaadin/terminal/gwt/client/TestVBrowserDetailsUserAgentParser.java +++ b/tests/client-side/com/vaadin/terminal/gwt/client/TestVBrowserDetailsUserAgentParser.java @@ -1,5 +1,7 @@ package com.vaadin.terminal.gwt.client; +import com.vaadin.shared.VBrowserDetails; + import junit.framework.TestCase; public class TestVBrowserDetailsUserAgentParser extends TestCase { diff --git a/tests/client-side/com/vaadin/terminal/gwt/server/JSONSerializerTest.java b/tests/client-side/com/vaadin/terminal/gwt/server/JSONSerializerTest.java index fefc2d927c..6e39f17599 100644 --- a/tests/client-side/com/vaadin/terminal/gwt/server/JSONSerializerTest.java +++ b/tests/client-side/com/vaadin/terminal/gwt/server/JSONSerializerTest.java @@ -13,9 +13,9 @@ import java.util.Map; import junit.framework.TestCase; +import com.vaadin.shared.ui.splitpanel.AbstractSplitPanelState; import com.vaadin.terminal.gwt.client.communication.JsonDecoder; import com.vaadin.terminal.gwt.client.communication.JsonEncoder; -import com.vaadin.terminal.gwt.client.ui.splitpanel.AbstractSplitPanelState; /** * Tests for {@link JsonCodec}, {@link JsonEncoder}, {@link JsonDecoder} diff --git a/tests/integration-testscripts/GateIn-3/integration-test-GateIn-3.1.0-portlet2.html b/tests/integration-testscripts/GateIn-3/integration-test-GateIn-3.1.0-portlet2.html index 85258d7036..4bc3e6a2cf 100644 --- a/tests/integration-testscripts/GateIn-3/integration-test-GateIn-3.1.0-portlet2.html +++ b/tests/integration-testscripts/GateIn-3/integration-test-GateIn-3.1.0-portlet2.html @@ -93,7 +93,7 @@ </tr> <tr> <td>mouseClick</td> - <td>//div[3]/div</td> + <td>//div[@onclick="javascript:ajaxGet('/portal/private/classic/home?portal:componentId=UIApplicationList&portal:action=SelectCategory&objectId=demo&ajaxRequest=true')"]</td> <td>51,11</td> </tr> <tr> @@ -156,7 +156,6 @@ <td></td> <td>done</td> </tr> - </tbody></table> </body> </html> diff --git a/tests/integration-testscripts/Liferay-5/integration-test-liferay-5.2.3-portlet2.html b/tests/integration-testscripts/Liferay-5/integration-test-liferay-5.2.3-portlet2.html index 3cb45d252a..55c9d18eb8 100644 --- a/tests/integration-testscripts/Liferay-5/integration-test-liferay-5.2.3-portlet2.html +++ b/tests/integration-testscripts/Liferay-5/integration-test-liferay-5.2.3-portlet2.html @@ -123,7 +123,7 @@ </tr> <tr> <td>mouseClickAndWait</td> - <td>vaadin=v-JSR286TestPortlet_WAR_demo_LAYOUT_10706::/VVerticalLayout[0]/ChildComponentContainer[6]/VLink[0]/domChild[0]/domChild[0]</td> + <td>vaadin=v-JSR286TestPortlet_WAR_demo_LAYOUT_10706::/VVerticalLayout[0]/ChildComponentContainer[7]/VLink[0]/domChild[0]/domChild[0]</td> <td>28,7</td> </tr> <tr> @@ -166,7 +166,6 @@ <td>Maximize</td> <td></td> </tr> - </tbody></table> </body> </html> diff --git a/tests/integration-testscripts/Liferay-6/Liferay6-theme.html b/tests/integration-testscripts/Liferay-6/Liferay6-theme.html index 34919fe543..c61adb0dd7 100644 --- a/tests/integration-testscripts/Liferay-6/Liferay6-theme.html +++ b/tests/integration-testscripts/Liferay-6/Liferay6-theme.html @@ -313,7 +313,7 @@ </tr> <tr> <td>click</td> - <td>vaadin=v-VaadinLiferayThemePortlet_WAR_demo_LAYOUT_11352::/VVerticalLayout[0]/ChildComponentContainer[1]/VCssLayout[0]/VCssLayout$FlowPane[0]/VTabsheet[0]/VTabsheetPanel[0]/VGridLayout[9]/AbsolutePanel[0]/ChildComponentContainer[0]/VButton[0]/domChild[0]/domChild[0]</td> + <td>vaadin=v-VaadinLiferayThemePortlet_WAR_demo_LAYOUT_11352::/VVerticalLayout[0]/VCssLayout[0]/VCssLayout$FlowPane[0]/VTabsheet[0]/VTabsheetPanel[0]/VGridLayout[0]/VButton[0]/domChild[0]/domChild[0]</td> <td></td> </tr> <tr> @@ -323,12 +323,12 @@ </tr> <tr> <td>closeNotification</td> - <td>//body/div[2]</td> + <td>vaadin=v-VaadinLiferayThemePortlet_WAR_demo_LAYOUT_11352::Root/VNotification[0]</td> <td>0,0</td> </tr> <tr> <td>click</td> - <td>vaadin=v-VaadinLiferayThemePortlet_WAR_demo_LAYOUT_11352::/VVerticalLayout[0]/ChildComponentContainer[1]/VCssLayout[0]/VCssLayout$FlowPane[0]/VTabsheet[0]/VTabsheetPanel[0]/VGridLayout[9]/AbsolutePanel[0]/ChildComponentContainer[1]/VButton[0]/domChild[0]/domChild[0]</td> + <td>vaadin=v-VaadinLiferayThemePortlet_WAR_demo_LAYOUT_11352::/VVerticalLayout[0]/VCssLayout[0]/VCssLayout$FlowPane[0]/VTabsheet[0]/VTabsheetPanel[0]/VGridLayout[0]/VButton[1]/domChild[0]/domChild[0]</td> <td></td> </tr> <tr> @@ -338,12 +338,12 @@ </tr> <tr> <td>closeNotification</td> - <td>//body/div[2]</td> + <td>vaadin=v-VaadinLiferayThemePortlet_WAR_demo_LAYOUT_11352::Root/VNotification[0]</td> <td>0,0</td> </tr> <tr> <td>click</td> - <td>vaadin=v-VaadinLiferayThemePortlet_WAR_demo_LAYOUT_11352::/VVerticalLayout[0]/ChildComponentContainer[1]/VCssLayout[0]/VCssLayout$FlowPane[0]/VTabsheet[0]/VTabsheetPanel[0]/VGridLayout[9]/AbsolutePanel[0]/ChildComponentContainer[2]/VButton[0]/domChild[0]/domChild[0]</td> + <td>vaadin=v-VaadinLiferayThemePortlet_WAR_demo_LAYOUT_11352::/VVerticalLayout[0]/VCssLayout[0]/VCssLayout$FlowPane[0]/VTabsheet[0]/VTabsheetPanel[0]/VGridLayout[0]/VButton[2]/domChild[0]/domChild[0]</td> <td></td> </tr> <tr> @@ -353,7 +353,7 @@ </tr> <tr> <td>closeNotification</td> - <td>//body/div[2]</td> + <td>vaadin=v-VaadinLiferayThemePortlet_WAR_demo_LAYOUT_11352::Root/VNotification[0]</td> <td>0,0</td> </tr> <!-- @@ -365,7 +365,7 @@ --> <tr> <td>click</td> - <td>vaadin=v-VaadinLiferayThemePortlet_WAR_demo_LAYOUT_11352::/VVerticalLayout[0]/ChildComponentContainer[1]/VCssLayout[0]/VCssLayout$FlowPane[0]/VTabsheet[0]/VTabsheetPanel[0]/VGridLayout[9]/AbsolutePanel[0]/ChildComponentContainer[3]/VButton[0]/domChild[0]/domChild[0]</td> + <td>vaadin=v-VaadinLiferayThemePortlet_WAR_demo_LAYOUT_11352::/VVerticalLayout[0]/VCssLayout[0]/VCssLayout$FlowPane[0]/VTabsheet[0]/VTabsheetPanel[0]/VGridLayout[0]/VButton[3]/domChild[0]/domChild[0]</td> <td></td> </tr> <tr> @@ -375,7 +375,7 @@ </tr> <tr> <td>closeNotification</td> - <td>//body/div[2]</td> + <td>vaadin=v-VaadinLiferayThemePortlet_WAR_demo_LAYOUT_11352::Root/VNotification[0]</td> <td>0,0</td> </tr> <tr> diff --git a/tests/integration-testscripts/Liferay-6EE/Liferay6EE-theme.html b/tests/integration-testscripts/Liferay-6EE/Liferay6EE-theme.html index ddd01d4e3f..f4772ef7ad 100644 --- a/tests/integration-testscripts/Liferay-6EE/Liferay6EE-theme.html +++ b/tests/integration-testscripts/Liferay-6EE/Liferay6EE-theme.html @@ -314,7 +314,7 @@ </tr> <tr> <td>click</td> - <td>vaadin=v-VaadinLiferayThemePortlet_WAR_demo_LAYOUT_10413::/VVerticalLayout[0]/ChildComponentContainer[1]/VCssLayout[0]/VCssLayout$FlowPane[0]/VTabsheet[0]/VTabsheetPanel[0]/VGridLayout[9]/AbsolutePanel[0]/ChildComponentContainer[0]/VButton[0]/domChild[0]/domChild[0]</td> + <td>vaadin=v-VaadinLiferayThemePortlet_WAR_demo_LAYOUT_10413::/VVerticalLayout[0]/VCssLayout[0]/VCssLayout$FlowPane[0]/VTabsheet[0]/VTabsheetPanel[0]/VGridLayout[0]/VButton[0]/domChild[0]/domChild[0]</td> <td></td> </tr> <tr> @@ -324,12 +324,12 @@ </tr> <tr> <td>closeNotification</td> - <td>//body/div[2]</td> + <td>vaadin=v-VaadinLiferayThemePortlet_WAR_demo_LAYOUT_10413::Root/VNotification[0]</td> <td>0,0</td> </tr> <tr> <td>click</td> - <td>vaadin=v-VaadinLiferayThemePortlet_WAR_demo_LAYOUT_10413::/VVerticalLayout[0]/ChildComponentContainer[1]/VCssLayout[0]/VCssLayout$FlowPane[0]/VTabsheet[0]/VTabsheetPanel[0]/VGridLayout[9]/AbsolutePanel[0]/ChildComponentContainer[1]/VButton[0]/domChild[0]/domChild[0]</td> + <td>vaadin=v-VaadinLiferayThemePortlet_WAR_demo_LAYOUT_10413::/VVerticalLayout[0]/VCssLayout[0]/VCssLayout$FlowPane[0]/VTabsheet[0]/VTabsheetPanel[0]/VGridLayout[0]/VButton[1]/domChild[0]/domChild[0]</td> <td></td> </tr> <tr> @@ -339,12 +339,12 @@ </tr> <tr> <td>closeNotification</td> - <td>//body/div[2]</td> + <td>vaadin=v-VaadinLiferayThemePortlet_WAR_demo_LAYOUT_10413::Root/VNotification[0]</td> <td>0,0</td> </tr> <tr> <td>click</td> - <td>vaadin=v-VaadinLiferayThemePortlet_WAR_demo_LAYOUT_10413::/VVerticalLayout[0]/ChildComponentContainer[1]/VCssLayout[0]/VCssLayout$FlowPane[0]/VTabsheet[0]/VTabsheetPanel[0]/VGridLayout[9]/AbsolutePanel[0]/ChildComponentContainer[2]/VButton[0]/domChild[0]/domChild[0]</td> + <td>vaadin=v-VaadinLiferayThemePortlet_WAR_demo_LAYOUT_10413::/VVerticalLayout[0]/VCssLayout[0]/VCssLayout$FlowPane[0]/VTabsheet[0]/VTabsheetPanel[0]/VGridLayout[0]/VButton[2]/domChild[0]/domChild[0]</td> <td></td> </tr> <tr> @@ -354,7 +354,7 @@ </tr> <tr> <td>closeNotification</td> - <td>//body/div[2]</td> + <td>vaadin=v-VaadinLiferayThemePortlet_WAR_demo_LAYOUT_10413::Root/VNotification[0]</td> <td>0,0</td> </tr> <!-- @@ -366,7 +366,7 @@ --> <tr> <td>click</td> - <td>vaadin=v-VaadinLiferayThemePortlet_WAR_demo_LAYOUT_10413::/VVerticalLayout[0]/ChildComponentContainer[1]/VCssLayout[0]/VCssLayout$FlowPane[0]/VTabsheet[0]/VTabsheetPanel[0]/VGridLayout[9]/AbsolutePanel[0]/ChildComponentContainer[3]/VButton[0]/domChild[0]/domChild[0]</td> + <td>vaadin=v-VaadinLiferayThemePortlet_WAR_demo_LAYOUT_10413::/VVerticalLayout[0]/VCssLayout[0]/VCssLayout$FlowPane[0]/VTabsheet[0]/VTabsheetPanel[0]/VGridLayout[0]/VButton[3]/domChild[0]/domChild[0]</td> <td></td> </tr> <tr> @@ -376,7 +376,7 @@ </tr> <tr> <td>closeNotification</td> - <td>//body/div[2]</td> + <td>vaadin=v-VaadinLiferayThemePortlet_WAR_demo_LAYOUT_10413::Root/VNotification[0]</td> <td>0,0</td> </tr> <tr> diff --git a/tests/integration-testscripts/eXo-3/integration-test-eXo-3.0.3-portlet2.html b/tests/integration-testscripts/eXo-3/integration-test-eXo-3.0.3-portlet2.html index 958c109e06..af85dfd161 100644 --- a/tests/integration-testscripts/eXo-3/integration-test-eXo-3.0.3-portlet2.html +++ b/tests/integration-testscripts/eXo-3/integration-test-eXo-3.0.3-portlet2.html @@ -13,15 +13,10 @@ </thead><tbody> <tr> <td>open</td> - <td>/portal/public/default/</td> + <td>/portal/public/intranet/</td> <td></td> </tr> <tr> - <td>mouseClick</td> - <td>link=Visit the Acme Social Intranet</td> - <td>121,7</td> -</tr> -<tr> <td>setTimeout</td> <td>60000</td> <td></td> @@ -47,13 +42,18 @@ <td></td> </tr> <tr> - <td>mouseClickAndWait</td> - <td>link=Applications Registry</td> + <td>open</td> + <td>/portal/private/intranet/administration/registry</td> <td>138,17</td> </tr> <tr> + <td>waitForElementPresent</td> + <td>//div[@id='UIApplicationOrganizer']/div[1]/div[2]</td> + <td></td> +</tr> +<tr> <td>expectDialog</td> - <td>//div[@onclick="javascript:if(confirm('This action will automatically create categories and import all the gadgets and portlets on it.'))ajaxGet('/portal/private/intranet/administration/registry?portal:componentId=09e0ea8b-7d6e-410d-9ed0-871e3e7bc17f&portal:type=action&uicomponent=UIApplicationOrganizer&op=ImportAllApplications&ajaxRequest=true')"]</td> + <td>//div[@id='UIApplicationOrganizer']/div[1]/div[2]</td> <td>36,15</td> </tr> <tr> @@ -153,7 +153,7 @@ </tr> <tr> <td>mouseClickAndWait</td> - <td>//div[@id='UIPage']/div/div/div[2]/div/div/div/div/div/div/div[2]/div/div[5]/div/div/a</td> + <td>//div[@id='UIPage']/div/div/div[2]/div/div/div/div/div/div/div[2]/div[5]/div/a</td> <td>10,10</td> </tr> <tr> @@ -173,7 +173,7 @@ </tr> <tr> <td>mouseClickAndWait</td> - <td>//div[@id='UIPage']/div/div/div[2]/div/div/div/div/div/div/div[2]/div/div[5]/div/div/a</td> + <td>//div[@id='UIPage']/div/div/div[2]/div/div/div/div/div/div/div[2]/div[5]/div/a</td> <td>15,8</td> </tr> <tr> @@ -191,7 +191,6 @@ <td></td> <td>done</td> </tr> - </tbody></table> </body> </html> diff --git a/tests/integration_tests.xml b/tests/integration_tests.xml index 7f72758a37..e8e978c1ea 100644 --- a/tests/integration_tests.xml +++ b/tests/integration_tests.xml @@ -221,7 +221,7 @@ <pathconvert pathsep=" " property="testfiles" refid="html-test-files" /> <antcall target="run-generic-integration-test"> <param name="startDelay" value="600" /> - <param name="test_browsers" value="winxp-firefox36" /> + <param name="test_browsers" value="winxp-googlechrome19" /> <param name="target-server" value="gatein3" /> </antcall> </target> @@ -231,7 +231,7 @@ <pathconvert pathsep=" " property="testfiles" refid="html-test-files" /> <antcall target="run-generic-integration-test"> <param name="startDelay" value="600" /> - <param name="test_browsers" value="winxp-firefox36" /> + <param name="test_browsers" value="winxp-googlechrome19" /> <param name="target-server" value="exo3" /> </antcall> </target> diff --git a/tests/server-side/com/vaadin/data/util/AbstractContainerTest.java b/tests/server-side/com/vaadin/data/util/AbstractContainerTest.java index 6cbe675fa1..d703fb0364 100644 --- a/tests/server-side/com/vaadin/data/util/AbstractContainerTest.java +++ b/tests/server-side/com/vaadin/data/util/AbstractContainerTest.java @@ -62,6 +62,7 @@ public abstract class AbstractContainerTest extends TestCase { protected static class ItemSetChangeCounter extends AbstractEventCounter implements ItemSetChangeListener { + @Override public void containerItemSetChange(ItemSetChangeEvent event) { increment(); } diff --git a/tests/server-side/com/vaadin/data/util/BeanContainerTest.java b/tests/server-side/com/vaadin/data/util/BeanContainerTest.java index d9fa8d896e..9037e303a8 100644 --- a/tests/server-side/com/vaadin/data/util/BeanContainerTest.java +++ b/tests/server-side/com/vaadin/data/util/BeanContainerTest.java @@ -18,6 +18,7 @@ public class BeanContainerTest extends AbstractBeanContainerTest { protected static class PersonNameResolver implements BeanIdResolver<String, Person> { + @Override public String getIdForBean(Person bean) { return bean != null ? bean.getName() : null; } @@ -27,6 +28,7 @@ public class BeanContainerTest extends AbstractBeanContainerTest { protected static class NullResolver implements BeanIdResolver<String, Person> { + @Override public String getIdForBean(Person bean) { return null; } @@ -332,6 +334,7 @@ public class BeanContainerTest extends AbstractBeanContainerTest { container .setBeanIdResolver(new BeanIdResolver<String, AbstractBeanContainerTest.Person>() { + @Override public String getIdForBean(Person bean) { return bean.getName(); } diff --git a/tests/server-side/com/vaadin/data/util/BeanItemTest.java b/tests/server-side/com/vaadin/data/util/BeanItemTest.java index 51e11260f5..e1ad75796c 100644 --- a/tests/server-side/com/vaadin/data/util/BeanItemTest.java +++ b/tests/server-side/com/vaadin/data/util/BeanItemTest.java @@ -127,6 +127,7 @@ public class BeanItemTest extends TestCase { public void setSub(int i); + @Override public int getOverride(); public void setOverride(int i); diff --git a/tests/server-side/com/vaadin/data/util/TestContainerSorting.java b/tests/server-side/com/vaadin/data/util/TestContainerSorting.java index 9e69b94fbb..497699605a 100644 --- a/tests/server-side/com/vaadin/data/util/TestContainerSorting.java +++ b/tests/server-side/com/vaadin/data/util/TestContainerSorting.java @@ -205,6 +205,7 @@ public class TestContainerSorting extends TestCase { public class MyObject implements Comparable<MyObject> { private String data; + @Override public int compareTo(MyObject o) { if (o == null) { return 1; diff --git a/tests/server-side/com/vaadin/data/util/TestHierarchicalContainer.java b/tests/server-side/com/vaadin/data/util/TestHierarchicalContainer.java index 60894dbe6f..9e0558a122 100644 --- a/tests/server-side/com/vaadin/data/util/TestHierarchicalContainer.java +++ b/tests/server-side/com/vaadin/data/util/TestHierarchicalContainer.java @@ -176,11 +176,13 @@ public class TestHierarchicalContainer extends // Dummy filter that does not remove any items c.addContainerFilter(new Filter() { + @Override public boolean passesFilter(Object itemId, Item item) throws UnsupportedOperationException { return true; } + @Override public boolean appliesToProperty(Object propertyId) { return true; } diff --git a/tests/server-side/com/vaadin/data/util/filter/AbstractFilterTest.java b/tests/server-side/com/vaadin/data/util/filter/AbstractFilterTest.java index efc31f0bd4..6f96c3a51a 100644 --- a/tests/server-side/com/vaadin/data/util/filter/AbstractFilterTest.java +++ b/tests/server-side/com/vaadin/data/util/filter/AbstractFilterTest.java @@ -24,22 +24,27 @@ public abstract class AbstractFilterTest<FILTERTYPE extends Filter> extends protected static class NullProperty implements Property<String> { + @Override public String getValue() { return null; } + @Override public void setValue(Object newValue) throws ReadOnlyException { throw new ReadOnlyException(); } + @Override public Class<String> getType() { return String.class; } + @Override public boolean isReadOnly() { return true; } + @Override public void setReadOnly(boolean newStatus) { // do nothing } @@ -60,11 +65,13 @@ public abstract class AbstractFilterTest<FILTERTYPE extends Filter> extends this.propertyId = propertyId; } + @Override public boolean passesFilter(Object itemId, Item item) throws UnsupportedOperationException { return this.item == item; } + @Override public boolean appliesToProperty(Object propertyId) { return this.propertyId != null ? this.propertyId.equals(propertyId) : true; diff --git a/tests/server-side/com/vaadin/data/util/sqlcontainer/SQLContainerTest.java b/tests/server-side/com/vaadin/data/util/sqlcontainer/SQLContainerTest.java index c273bbf590..6649bc16e8 100644 --- a/tests/server-side/com/vaadin/data/util/sqlcontainer/SQLContainerTest.java +++ b/tests/server-side/com/vaadin/data/util/sqlcontainer/SQLContainerTest.java @@ -323,6 +323,7 @@ public class SQLContainerTest { EasyMock.expect( delegate.getQueryString(EasyMock.anyInt(), EasyMock.anyInt())) .andAnswer(new IAnswer<String>() { + @Override public String answer() throws Throwable { Object[] args = EasyMock.getCurrentArguments(); int offset = (Integer) (args[0]); @@ -1132,6 +1133,7 @@ public class SQLContainerTest { delegate.storeRow(EasyMock.isA(Connection.class), EasyMock.isA(RowItem.class))) .andAnswer(new IAnswer<Integer>() { + @Override public Integer answer() throws Throwable { Connection conn = (Connection) EasyMock .getCurrentArguments()[0]; @@ -1163,6 +1165,7 @@ public class SQLContainerTest { EasyMock.expect( delegate.getQueryString(EasyMock.anyInt(), EasyMock.anyInt())) .andAnswer(new IAnswer<String>() { + @Override public String answer() throws Throwable { Object[] args = EasyMock.getCurrentArguments(); int offset = (Integer) (args[0]); @@ -1231,6 +1234,7 @@ public class SQLContainerTest { delegate.storeRow(EasyMock.isA(Connection.class), EasyMock.isA(RowItem.class))) .andAnswer(new IAnswer<Integer>() { + @Override public Integer answer() throws Throwable { Connection conn = (Connection) EasyMock .getCurrentArguments()[0]; @@ -1262,6 +1266,7 @@ public class SQLContainerTest { EasyMock.expect( delegate.getQueryString(EasyMock.anyInt(), EasyMock.anyInt())) .andAnswer(new IAnswer<String>() { + @Override public String answer() throws Throwable { Object[] args = EasyMock.getCurrentArguments(); int offset = (Integer) (args[0]); @@ -1337,6 +1342,7 @@ public class SQLContainerTest { delegate.removeRow(EasyMock.isA(Connection.class), EasyMock.isA(RowItem.class))) .andAnswer(new IAnswer<Boolean>() { + @Override public Boolean answer() throws Throwable { Connection conn = (Connection) EasyMock .getCurrentArguments()[0]; @@ -1352,6 +1358,7 @@ public class SQLContainerTest { EasyMock.expect( delegate.getQueryString(EasyMock.anyInt(), EasyMock.anyInt())) .andAnswer(new IAnswer<String>() { + @Override public String answer() throws Throwable { Object[] args = EasyMock.getCurrentArguments(); int offset = (Integer) (args[0]); @@ -1414,6 +1421,7 @@ public class SQLContainerTest { delegate.storeRow(EasyMock.isA(Connection.class), EasyMock.isA(RowItem.class))) .andAnswer(new IAnswer<Integer>() { + @Override public Integer answer() throws Throwable { Connection conn = (Connection) EasyMock .getCurrentArguments()[0]; @@ -1432,6 +1440,7 @@ public class SQLContainerTest { EasyMock.expect( delegate.getQueryString(EasyMock.anyInt(), EasyMock.anyInt())) .andAnswer(new IAnswer<String>() { + @Override public String answer() throws Throwable { Object[] args = EasyMock.getCurrentArguments(); int offset = (Integer) (args[0]); @@ -1644,6 +1653,7 @@ public class SQLContainerTest { EasyMock.expectLastCall().anyTimes(); delegate.setOrderBy(EasyMock.isA(List.class)); EasyMock.expectLastCall().andAnswer(new IAnswer<Object>() { + @Override public Object answer() throws Throwable { List<OrderBy> orders = (List<OrderBy>) EasyMock .getCurrentArguments()[0]; @@ -1655,6 +1665,7 @@ public class SQLContainerTest { EasyMock.expect( delegate.getQueryString(EasyMock.anyInt(), EasyMock.anyInt())) .andAnswer(new IAnswer<String>() { + @Override public String answer() throws Throwable { Object[] args = EasyMock.getCurrentArguments(); int offset = (Integer) (args[0]); @@ -1756,6 +1767,7 @@ public class SQLContainerTest { EasyMock.expectLastCall().anyTimes(); delegate.setOrderBy(EasyMock.isA(List.class)); EasyMock.expectLastCall().andAnswer(new IAnswer<Object>() { + @Override public Object answer() throws Throwable { List<OrderBy> orders = (List<OrderBy>) EasyMock .getCurrentArguments()[0]; @@ -1767,6 +1779,7 @@ public class SQLContainerTest { EasyMock.expect( delegate.getQueryString(EasyMock.anyInt(), EasyMock.anyInt())) .andAnswer(new IAnswer<String>() { + @Override public String answer() throws Throwable { Object[] args = EasyMock.getCurrentArguments(); int offset = (Integer) (args[0]); @@ -1861,6 +1874,7 @@ public class SQLContainerTest { EasyMock.expectLastCall().anyTimes(); delegate.setFilters(EasyMock.isA(List.class)); EasyMock.expectLastCall().andAnswer(new IAnswer<Object>() { + @Override public Object answer() throws Throwable { List<Filter> orders = (List<Filter>) EasyMock .getCurrentArguments()[0]; @@ -1872,6 +1886,7 @@ public class SQLContainerTest { EasyMock.expect( delegate.getQueryStatement(EasyMock.anyInt(), EasyMock.anyInt())) .andAnswer(new IAnswer<StatementHelper>() { + @Override public StatementHelper answer() throws Throwable { Object[] args = EasyMock.getCurrentArguments(); int offset = (Integer) (args[0]); @@ -1882,6 +1897,7 @@ public class SQLContainerTest { }).anyTimes(); EasyMock.expect(delegate.getCountStatement()) .andAnswer(new IAnswer<StatementHelper>() { + @Override @SuppressWarnings("deprecation") public StatementHelper answer() throws Throwable { StatementHelper sh = new StatementHelper(); @@ -1931,6 +1947,7 @@ public class SQLContainerTest { EasyMock.expectLastCall().anyTimes(); delegate.setFilters(EasyMock.isA(List.class)); EasyMock.expectLastCall().andAnswer(new IAnswer<Object>() { + @Override public Object answer() throws Throwable { List<Filter> orders = (List<Filter>) EasyMock .getCurrentArguments()[0]; @@ -1942,6 +1959,7 @@ public class SQLContainerTest { EasyMock.expect( delegate.getQueryStatement(EasyMock.anyInt(), EasyMock.anyInt())) .andAnswer(new IAnswer<StatementHelper>() { + @Override public StatementHelper answer() throws Throwable { Object[] args = EasyMock.getCurrentArguments(); int offset = (Integer) (args[0]); @@ -1952,6 +1970,7 @@ public class SQLContainerTest { }).anyTimes(); EasyMock.expect(delegate.getCountStatement()) .andAnswer(new IAnswer<StatementHelper>() { + @Override @SuppressWarnings("deprecation") public StatementHelper answer() throws Throwable { StatementHelper sh = new StatementHelper(); @@ -2000,6 +2019,7 @@ public class SQLContainerTest { EasyMock.expectLastCall().anyTimes(); delegate.setFilters(EasyMock.isA(List.class)); EasyMock.expectLastCall().andAnswer(new IAnswer<Object>() { + @Override public Object answer() throws Throwable { List<Filter> orders = (List<Filter>) EasyMock .getCurrentArguments()[0]; @@ -2011,6 +2031,7 @@ public class SQLContainerTest { EasyMock.expect( delegate.getQueryStatement(EasyMock.anyInt(), EasyMock.anyInt())) .andAnswer(new IAnswer<StatementHelper>() { + @Override public StatementHelper answer() throws Throwable { Object[] args = EasyMock.getCurrentArguments(); int offset = (Integer) (args[0]); @@ -2021,6 +2042,7 @@ public class SQLContainerTest { }).anyTimes(); EasyMock.expect(delegate.getCountStatement()) .andAnswer(new IAnswer<StatementHelper>() { + @Override public StatementHelper answer() throws Throwable { StatementHelper sh = new StatementHelper(); StringBuffer query = new StringBuffer( @@ -2069,6 +2091,7 @@ public class SQLContainerTest { EasyMock.expectLastCall().anyTimes(); delegate.setFilters(EasyMock.isA(List.class)); EasyMock.expectLastCall().andAnswer(new IAnswer<Object>() { + @Override public Object answer() throws Throwable { List<Filter> orders = (List<Filter>) EasyMock .getCurrentArguments()[0]; @@ -2080,6 +2103,7 @@ public class SQLContainerTest { EasyMock.expect( delegate.getQueryStatement(EasyMock.anyInt(), EasyMock.anyInt())) .andAnswer(new IAnswer<StatementHelper>() { + @Override public StatementHelper answer() throws Throwable { Object[] args = EasyMock.getCurrentArguments(); int offset = (Integer) (args[0]); @@ -2090,6 +2114,7 @@ public class SQLContainerTest { }).anyTimes(); EasyMock.expect(delegate.getCountStatement()) .andAnswer(new IAnswer<StatementHelper>() { + @Override @SuppressWarnings("deprecation") public StatementHelper answer() throws Throwable { StatementHelper sh = new StatementHelper(); @@ -2145,6 +2170,7 @@ public class SQLContainerTest { EasyMock.expectLastCall().anyTimes(); delegate.setFilters(EasyMock.isA(List.class)); EasyMock.expectLastCall().andAnswer(new IAnswer<Object>() { + @Override public Object answer() throws Throwable { List<Filter> orders = (List<Filter>) EasyMock .getCurrentArguments()[0]; @@ -2156,6 +2182,7 @@ public class SQLContainerTest { EasyMock.expect( delegate.getQueryStatement(EasyMock.anyInt(), EasyMock.anyInt())) .andAnswer(new IAnswer<StatementHelper>() { + @Override public StatementHelper answer() throws Throwable { Object[] args = EasyMock.getCurrentArguments(); int offset = (Integer) (args[0]); @@ -2166,6 +2193,7 @@ public class SQLContainerTest { }).anyTimes(); EasyMock.expect(delegate.getCountStatement()) .andAnswer(new IAnswer<StatementHelper>() { + @Override @SuppressWarnings("deprecation") public StatementHelper answer() throws Throwable { StatementHelper sh = new StatementHelper(); @@ -2221,6 +2249,7 @@ public class SQLContainerTest { EasyMock.expectLastCall().anyTimes(); delegate.setFilters(EasyMock.isA(List.class)); EasyMock.expectLastCall().andAnswer(new IAnswer<Object>() { + @Override public Object answer() throws Throwable { List<Filter> orders = (List<Filter>) EasyMock .getCurrentArguments()[0]; @@ -2232,6 +2261,7 @@ public class SQLContainerTest { EasyMock.expect( delegate.getQueryStatement(EasyMock.anyInt(), EasyMock.anyInt())) .andAnswer(new IAnswer<StatementHelper>() { + @Override public StatementHelper answer() throws Throwable { Object[] args = EasyMock.getCurrentArguments(); int offset = (Integer) (args[0]); @@ -2242,6 +2272,7 @@ public class SQLContainerTest { }).anyTimes(); EasyMock.expect(delegate.getCountStatement()) .andAnswer(new IAnswer<StatementHelper>() { + @Override @SuppressWarnings("deprecation") public StatementHelper answer() throws Throwable { StatementHelper sh = new StatementHelper(); @@ -2323,6 +2354,7 @@ public class SQLContainerTest { EasyMock.expectLastCall().anyTimes(); delegate.setOrderBy(EasyMock.isA(List.class)); EasyMock.expectLastCall().andAnswer(new IAnswer<Object>() { + @Override public Object answer() throws Throwable { List<OrderBy> orders = (List<OrderBy>) EasyMock .getCurrentArguments()[0]; @@ -2334,6 +2366,7 @@ public class SQLContainerTest { EasyMock.expect( delegate.getQueryString(EasyMock.anyInt(), EasyMock.anyInt())) .andAnswer(new IAnswer<String>() { + @Override public String answer() throws Throwable { Object[] args = EasyMock.getCurrentArguments(); int offset = (Integer) (args[0]); diff --git a/tests/server-side/com/vaadin/data/util/sqlcontainer/TicketTests.java b/tests/server-side/com/vaadin/data/util/sqlcontainer/TicketTests.java index 75ab455678..a12786f13a 100644 --- a/tests/server-side/com/vaadin/data/util/sqlcontainer/TicketTests.java +++ b/tests/server-side/com/vaadin/data/util/sqlcontainer/TicketTests.java @@ -64,6 +64,7 @@ public class TicketTests { EasyMock.expectLastCall().anyTimes(); delegate.setFilters(EasyMock.isA(List.class)); EasyMock.expectLastCall().andAnswer(new IAnswer<Object>() { + @Override public Object answer() throws Throwable { List<Filter> orders = (List<Filter>) EasyMock .getCurrentArguments()[0]; @@ -75,6 +76,7 @@ public class TicketTests { EasyMock.expect( delegate.getQueryStatement(EasyMock.anyInt(), EasyMock.anyInt())) .andAnswer(new IAnswer<StatementHelper>() { + @Override public StatementHelper answer() throws Throwable { Object[] args = EasyMock.getCurrentArguments(); int offset = (Integer) (args[0]); @@ -85,6 +87,7 @@ public class TicketTests { }).anyTimes(); EasyMock.expect(delegate.getCountStatement()) .andAnswer(new IAnswer<StatementHelper>() { + @Override @SuppressWarnings("deprecation") public StatementHelper answer() throws Throwable { StatementHelper sh = new StatementHelper(); diff --git a/tests/server-side/com/vaadin/data/util/sqlcontainer/connection/MockInitialContextFactory.java b/tests/server-side/com/vaadin/data/util/sqlcontainer/connection/MockInitialContextFactory.java index 3ee260245a..324899e373 100644 --- a/tests/server-side/com/vaadin/data/util/sqlcontainer/connection/MockInitialContextFactory.java +++ b/tests/server-side/com/vaadin/data/util/sqlcontainer/connection/MockInitialContextFactory.java @@ -22,6 +22,7 @@ public class MockInitialContextFactory implements InitialContextFactory { mockCtx = ctx; } + @Override public Context getInitialContext(java.util.Hashtable<?, ?> environment) throws NamingException { if (mockCtx == null) { diff --git a/tests/server-side/com/vaadin/terminal/gwt/server/TestAbstractApplicationServletStaticFilesLocation.java b/tests/server-side/com/vaadin/terminal/gwt/server/TestAbstractApplicationServletStaticFilesLocation.java index 7e45ea50d7..38fca09157 100644 --- a/tests/server-side/com/vaadin/terminal/gwt/server/TestAbstractApplicationServletStaticFilesLocation.java +++ b/tests/server-side/com/vaadin/terminal/gwt/server/TestAbstractApplicationServletStaticFilesLocation.java @@ -46,29 +46,35 @@ public class TestAbstractApplicationServletStaticFilesLocation extends TestCase public class DummyServletConfig implements ServletConfig { // public DummyServletConfig(Map<String,String> initParameters, ) + @Override public String getInitParameter(String name) { // TODO Auto-generated method stub return null; } + @Override public Enumeration<Object> getInitParameterNames() { return new Enumeration<Object>() { + @Override public boolean hasMoreElements() { return false; } + @Override public Object nextElement() { return null; } }; } + @Override public ServletContext getServletContext() { // TODO Auto-generated method stub return null; } + @Override public String getServletName() { // TODO Auto-generated method stub return null; diff --git a/tests/server-side/com/vaadin/tests/VaadinClasses.java b/tests/server-side/com/vaadin/tests/VaadinClasses.java index 0ee193e8f1..2f937bf58d 100644 --- a/tests/server-side/com/vaadin/tests/VaadinClasses.java +++ b/tests/server-side/com/vaadin/tests/VaadinClasses.java @@ -164,6 +164,7 @@ public class VaadinClasses { Collections.sort(classes, new Comparator<Class<? extends T>>() { + @Override public int compare(Class<? extends T> o1, Class<? extends T> o2) { return o1.getName().compareTo(o2.getName()); } diff --git a/tests/server-side/com/vaadin/tests/data/converter/ConverterFactory.java b/tests/server-side/com/vaadin/tests/data/converter/ConverterFactory.java index 4bd9cf0cf7..19a470d816 100644 --- a/tests/server-side/com/vaadin/tests/data/converter/ConverterFactory.java +++ b/tests/server-side/com/vaadin/tests/data/converter/ConverterFactory.java @@ -16,20 +16,24 @@ public class ConverterFactory extends TestCase { public static class ConvertTo42 implements Converter<String, Integer> { + @Override public Integer convertToModel(String value, Locale locale) throws com.vaadin.data.util.converter.Converter.ConversionException { return 42; } + @Override public String convertToPresentation(Integer value, Locale locale) throws com.vaadin.data.util.converter.Converter.ConversionException { return "42"; } + @Override public Class<Integer> getModelType() { return Integer.class; } + @Override public Class<String> getPresentationType() { return String.class; } diff --git a/tests/server-side/com/vaadin/tests/server/SourceFileChecker.java b/tests/server-side/com/vaadin/tests/server/SourceFileChecker.java index 9906990165..f02e5d2932 100644 --- a/tests/server-side/com/vaadin/tests/server/SourceFileChecker.java +++ b/tests/server-side/com/vaadin/tests/server/SourceFileChecker.java @@ -148,6 +148,7 @@ public class SourceFileChecker extends TestCase { } abstract class FileContentsValidator implements FileValidator { + @Override public void validateFile(File f) throws Exception { FileInputStream fis = new FileInputStream(f); String contents = IOUtils.toString(fis); diff --git a/tests/server-side/com/vaadin/tests/server/TestEventRouter.java b/tests/server-side/com/vaadin/tests/server/TestEventRouter.java index dc388a66ac..a8f5039042 100644 --- a/tests/server-side/com/vaadin/tests/server/TestEventRouter.java +++ b/tests/server-side/com/vaadin/tests/server/TestEventRouter.java @@ -15,9 +15,11 @@ public class TestEventRouter extends TestCase { final ValueChangeListener outer = new ValueChangeListener() { + @Override public void valueChange(ValueChangeEvent event) { ValueChangeListener inner = new ValueChangeListener() { + @Override public void valueChange(ValueChangeEvent event) { innerListenerCalls++; System.out.println("The inner listener was called"); diff --git a/tests/server-side/com/vaadin/tests/server/TestStreamVariableMapping.java b/tests/server-side/com/vaadin/tests/server/TestStreamVariableMapping.java new file mode 100644 index 0000000000..ca1bb45330 --- /dev/null +++ b/tests/server-side/com/vaadin/tests/server/TestStreamVariableMapping.java @@ -0,0 +1,77 @@ +package com.vaadin.tests.server; + +import junit.framework.TestCase; + +import org.easymock.EasyMock; + +import com.vaadin.Application; +import com.vaadin.terminal.StreamVariable; +import com.vaadin.terminal.WrappedRequest; +import com.vaadin.terminal.gwt.server.CommunicationManager; +import com.vaadin.ui.Root; +import com.vaadin.ui.Upload; + +public class TestStreamVariableMapping extends TestCase { + private static final String variableName = "myName"; + + private Upload owner; + private StreamVariable streamVariable; + + private CommunicationManager cm; + + @Override + protected void setUp() throws Exception { + final Application application = new Application(); + final Root root = new Root() { + @Override + protected void init(WrappedRequest request) { + // TODO Auto-generated method stub + + } + + @Override + public Application getApplication() { + return application; + } + }; + owner = new Upload() { + @Override + public Root getRoot() { + return root; + } + }; + streamVariable = EasyMock.createMock(StreamVariable.class); + cm = createCommunicationManager(); + + super.setUp(); + } + + public void testAddStreamVariable() { + String targetUrl = cm.getStreamVariableTargetUrl(owner, variableName, + streamVariable); + assertTrue(targetUrl.startsWith("app://APP/UPLOAD/-1/1/myName/")); + + StreamVariable streamVariable2 = cm.getStreamVariable( + owner.getConnectorId(), variableName); + assertSame(streamVariable, streamVariable2); + } + + public void testRemoverVariable() { + cm.getStreamVariableTargetUrl(owner, variableName, streamVariable); + assertNotNull(cm + .getStreamVariable(owner.getConnectorId(), variableName)); + + cm.cleanStreamVariable(owner, variableName); + assertNull(cm.getStreamVariable(owner.getConnectorId(), variableName)); + } + + private CommunicationManager createCommunicationManager() { + return new CommunicationManager(new Application() { + @Override + public void init() { + // TODO Auto-generated method stub + } + }); + } + +} diff --git a/tests/server-side/com/vaadin/tests/server/TransactionListenersConcurrency.java b/tests/server-side/com/vaadin/tests/server/TransactionListenersConcurrency.java index 8cc26a5c7f..b567617fdd 100644 --- a/tests/server-side/com/vaadin/tests/server/TransactionListenersConcurrency.java +++ b/tests/server-side/com/vaadin/tests/server/TransactionListenersConcurrency.java @@ -46,6 +46,7 @@ public class TransactionListenersConcurrency extends TestCase { for (int i = 0; i < 5; i++) { Thread t = new Thread(new Runnable() { + @Override public void run() { Application app = new Application() { @@ -98,6 +99,7 @@ public class TransactionListenersConcurrency extends TestCase { threads.add(t); t.setUncaughtExceptionHandler(new UncaughtExceptionHandler() { + @Override public void uncaughtException(Thread t, Throwable e) { e = e.getCause(); exceptions.add(e); @@ -163,6 +165,7 @@ public class TransactionListenersConcurrency extends TestCase { this.delay = delay; } + @Override public void transactionStart(Application application, Object transactionData) { try { @@ -173,6 +176,7 @@ public class TransactionListenersConcurrency extends TestCase { } + @Override public void transactionEnd(Application application, Object transactionData) { try { diff --git a/tests/server-side/com/vaadin/tests/server/component/abstractfield/AbstractFieldValueConversions.java b/tests/server-side/com/vaadin/tests/server/component/abstractfield/AbstractFieldValueConversions.java index 446228583a..57af748247 100644 --- a/tests/server-side/com/vaadin/tests/server/component/abstractfield/AbstractFieldValueConversions.java +++ b/tests/server-side/com/vaadin/tests/server/component/abstractfield/AbstractFieldValueConversions.java @@ -37,18 +37,22 @@ public class AbstractFieldValueConversions extends TestCase { TextField tf = new TextField(); tf.setConverter(new Converter<String, String>() { + @Override public String convertToModel(String value, Locale locale) { return value; } + @Override public String convertToPresentation(String value, Locale locale) { return value; } + @Override public Class<String> getModelType() { return String.class; } + @Override public Class<String> getPresentationType() { return String.class; } @@ -67,19 +71,23 @@ public class AbstractFieldValueConversions extends TestCase { TextField tf = new TextField(); tf.setConverter(new Converter<String, Integer>() { + @Override public Integer convertToModel(String value, Locale locale) { throw new ConversionException("Failed"); } + @Override public String convertToPresentation(Integer value, Locale locale) { throw new ConversionException("Failed"); } + @Override public Class<Integer> getModelType() { // TODO Auto-generated method stub return null; } + @Override public Class<String> getPresentationType() { // TODO Auto-generated method stub return null; @@ -112,6 +120,7 @@ public class AbstractFieldValueConversions extends TestCase { CheckBox cb = new CheckBox(); cb.setConverter(new Converter<Boolean, Boolean>() { + @Override public Boolean convertToModel(Boolean value, Locale locale) { // value from a CheckBox should never be null as long as it is // not set to null (handled by conversion below). @@ -119,6 +128,7 @@ public class AbstractFieldValueConversions extends TestCase { return value; } + @Override public Boolean convertToPresentation(Boolean value, Locale locale) { // Datamodel -> field if (value == null) { @@ -128,10 +138,12 @@ public class AbstractFieldValueConversions extends TestCase { return value; } + @Override public Class<Boolean> getModelType() { return Boolean.class; } + @Override public Class<Boolean> getPresentationType() { return Boolean.class; } diff --git a/tests/server-side/com/vaadin/tests/server/component/abstractfield/RemoveListenersOnDetach.java b/tests/server-side/com/vaadin/tests/server/component/abstractfield/RemoveListenersOnDetach.java index 94385700d8..f66f523770 100644 --- a/tests/server-side/com/vaadin/tests/server/component/abstractfield/RemoveListenersOnDetach.java +++ b/tests/server-side/com/vaadin/tests/server/component/abstractfield/RemoveListenersOnDetach.java @@ -60,15 +60,18 @@ public class RemoveListenersOnDetach { }; Property property = new AbstractProperty() { + @Override public Object getValue() { return null; } + @Override public void setValue(Object newValue) throws ReadOnlyException, ConversionException { fireValueChange(); } + @Override public Class<?> getType() { return String.class; } diff --git a/tests/server-side/com/vaadin/tests/server/component/button/ButtonClick.java b/tests/server-side/com/vaadin/tests/server/component/button/ButtonClick.java index 464d131996..4fe499a0a0 100644 --- a/tests/server-side/com/vaadin/tests/server/component/button/ButtonClick.java +++ b/tests/server-side/com/vaadin/tests/server/component/button/ButtonClick.java @@ -38,6 +38,7 @@ public class ButtonClick { private Button getButton() { Button b = new Button(); b.addListener(new Button.ClickListener() { + @Override public void buttonClick(ClickEvent ev) { clicked = true; } diff --git a/tests/server-side/com/vaadin/tests/server/component/menubar/MenuBarIds.java b/tests/server-side/com/vaadin/tests/server/component/menubar/MenuBarIds.java index a0dadf8cc6..f304315ebc 100644 --- a/tests/server-side/com/vaadin/tests/server/component/menubar/MenuBarIds.java +++ b/tests/server-side/com/vaadin/tests/server/component/menubar/MenuBarIds.java @@ -87,6 +87,7 @@ public class MenuBarIds extends TestCase implements Command { } } + @Override public void menuSelected(MenuItem selectedItem) { assertNull("lastSelectedItem was not cleared before selecting an item", lastSelectedItem); diff --git a/tests/server-side/com/vaadin/tests/server/component/table/TableSerialization.java b/tests/server-side/com/vaadin/tests/server/component/table/TableSerialization.java index 44dcd60fa5..ee6349093c 100644 --- a/tests/server-side/com/vaadin/tests/server/component/table/TableSerialization.java +++ b/tests/server-side/com/vaadin/tests/server/component/table/TableSerialization.java @@ -12,8 +12,9 @@ public class TableSerialization extends TestCase { Table t = new Table(); byte[] ser = SerializationUtils.serialize(t); Table t2 = (Table) SerializationUtils.deserialize(ser); - + } + public void testSerializationWithRowHeaders() { Table t = new Table(); t.setRowHeaderMode(Table.ROW_HEADER_MODE_EXPLICIT); diff --git a/tests/server-side/com/vaadin/tests/server/component/textfield/TextFieldWithPropertyFormatter.java b/tests/server-side/com/vaadin/tests/server/component/textfield/TextFieldWithPropertyFormatter.java index c6af98a873..bd6dd6c7b1 100644 --- a/tests/server-side/com/vaadin/tests/server/component/textfield/TextFieldWithPropertyFormatter.java +++ b/tests/server-side/com/vaadin/tests/server/component/textfield/TextFieldWithPropertyFormatter.java @@ -57,6 +57,7 @@ public class TextFieldWithPropertyFormatter extends TestCase { listener = new Property.ValueChangeListener() { + @Override public void valueChange(ValueChangeEvent event) { listenerCalled++; assertEquals(1, listenerCalled); diff --git a/tests/server-side/com/vaadin/tests/server/component/tree/TestListeners.java b/tests/server-side/com/vaadin/tests/server/component/tree/TestListeners.java index 49610ff293..4984cf161b 100644 --- a/tests/server-side/com/vaadin/tests/server/component/tree/TestListeners.java +++ b/tests/server-side/com/vaadin/tests/server/component/tree/TestListeners.java @@ -121,12 +121,14 @@ public class TestListeners extends TestCase implements ExpandListener, assertEquals(0, collapseCalled); } + @Override public void nodeExpand(ExpandEvent event) { lastExpanded = event.getItemId(); expandCalled++; } + @Override public void nodeCollapse(CollapseEvent event) { lastCollapsed = event.getItemId(); collapseCalled++; diff --git a/tests/server-side/com/vaadin/tests/server/component/window/AttachDetachWindow.java b/tests/server-side/com/vaadin/tests/server/component/window/AttachDetachWindow.java index 7423ba8669..e1435ea2ab 100644 --- a/tests/server-side/com/vaadin/tests/server/component/window/AttachDetachWindow.java +++ b/tests/server-side/com/vaadin/tests/server/component/window/AttachDetachWindow.java @@ -47,14 +47,17 @@ public class AttachDetachWindow { windowDetachCalled = true; } + @Override public boolean attachCalled() { return windowAttachCalled; } + @Override public boolean detachCalled() { return windowDetachCalled; } + @Override public TestContent getTestContent() { return testContent; } @@ -111,14 +114,17 @@ public class AttachDetachWindow { // Do nothing } + @Override public boolean attachCalled() { return rootAttachCalled; } + @Override public boolean detachCalled() { return rootDetachCalled; } + @Override public TestContent getTestContent() { return testContent; } diff --git a/tests/server-side/com/vaadin/tests/server/components/ComponentAttachDetachListenerTest.java b/tests/server-side/com/vaadin/tests/server/components/ComponentAttachDetachListenerTest.java index 1e01d9a55f..3ba1c4c7f1 100644 --- a/tests/server-side/com/vaadin/tests/server/components/ComponentAttachDetachListenerTest.java +++ b/tests/server-side/com/vaadin/tests/server/components/ComponentAttachDetachListenerTest.java @@ -46,6 +46,7 @@ public class ComponentAttachDetachListenerTest extends TestCase { private ComponentPosition componentPosition = null; private class MyAttachListener implements ComponentAttachListener { + @Override public void componentAttachedToContainer(ComponentAttachEvent event) { attachCounter++; attachedComponent = event.getAttachedComponent(); @@ -75,6 +76,7 @@ public class ComponentAttachDetachListenerTest extends TestCase { } private class MyDetachListener implements ComponentDetachListener { + @Override public void componentDetachedFromContainer(ComponentDetachEvent event) { detachCounter++; detachedComponent = event.getDetachedComponent(); diff --git a/tests/server-side/com/vaadin/tests/server/navigator/ClassBasedViewProviderTest.java b/tests/server-side/com/vaadin/tests/server/navigator/ClassBasedViewProviderTest.java index fc0d1b60a0..58bc2c4d4c 100644 --- a/tests/server-side/com/vaadin/tests/server/navigator/ClassBasedViewProviderTest.java +++ b/tests/server-side/com/vaadin/tests/server/navigator/ClassBasedViewProviderTest.java @@ -15,6 +15,7 @@ public class ClassBasedViewProviderTest extends TestCase { public static class TestView extends Label implements View { public String parameters = null; + @Override public void navigateTo(String parameters) { this.parameters = parameters; } diff --git a/tests/server-side/com/vaadin/tests/server/navigator/NavigatorTest.java b/tests/server-side/com/vaadin/tests/server/navigator/NavigatorTest.java index 03f49d4ab6..0507db6700 100644 --- a/tests/server-side/com/vaadin/tests/server/navigator/NavigatorTest.java +++ b/tests/server-side/com/vaadin/tests/server/navigator/NavigatorTest.java @@ -13,13 +13,11 @@ import org.easymock.IMocksControl; import com.vaadin.navigator.FragmentManager; import com.vaadin.navigator.Navigator; -import com.vaadin.navigator.Navigator.SimpleViewDisplay; import com.vaadin.navigator.View; import com.vaadin.navigator.ViewChangeListener; import com.vaadin.navigator.ViewChangeListener.ViewChangeEvent; import com.vaadin.navigator.ViewDisplay; import com.vaadin.navigator.ViewProvider; -import com.vaadin.terminal.Page; import com.vaadin.tests.server.navigator.ClassBasedViewProviderTest.TestView; import com.vaadin.tests.server.navigator.ClassBasedViewProviderTest.TestView2; @@ -29,16 +27,19 @@ public class NavigatorTest extends TestCase { // TODO test listeners blocking navigation, multiple listeners public static class NullDisplay implements ViewDisplay { + @Override public void showView(View view) { // do nothing } } public static class NullFragmentManager implements FragmentManager { + @Override public String getFragment() { return null; } + @Override public void setFragment(String fragment) { // do nothing } @@ -47,6 +48,7 @@ public class NavigatorTest extends TestCase { public static class TestDisplay implements ViewDisplay { private View currentView; + @Override public void showView(View view) { currentView = view; } @@ -120,6 +122,7 @@ public class NavigatorTest extends TestCase { } } + @Override public boolean isViewChangeAllowed(ViewChangeEvent event) { if (referenceEvents.isEmpty()) { fail("Unexpected call to isViewChangeAllowed()"); @@ -138,6 +141,7 @@ public class NavigatorTest extends TestCase { return returnValue; } + @Override public void navigatorViewChanged(ViewChangeEvent event) { if (referenceEvents.isEmpty()) { fail("Unexpected call to navigatorViewChanged()"); @@ -364,16 +368,6 @@ public class NavigatorTest extends TestCase { } } - public void testDefaultDisplayType() { - IMocksControl control = EasyMock.createControl(); - Page page = control.createMock(Page.class); - - Navigator navigator = new Navigator(page); - - assertEquals("Default display should be a SimpleViewDisplay", - SimpleViewDisplay.class, navigator.getDisplay().getClass()); - } - public void testAddViewInstance() throws Exception { View view = new TestView(); diff --git a/tests/server-side/com/vaadin/tests/server/navigator/UriFragmentManagerTest.java b/tests/server-side/com/vaadin/tests/server/navigator/UriFragmentManagerTest.java index 65294b2913..37c9a7ecd5 100644 --- a/tests/server-side/com/vaadin/tests/server/navigator/UriFragmentManagerTest.java +++ b/tests/server-side/com/vaadin/tests/server/navigator/UriFragmentManagerTest.java @@ -22,7 +22,7 @@ public class UriFragmentManagerTest extends TestCase { // prepare mock EasyMock.expect(page.getFragment()).andReturn(""); - page.setFragment("test"); + page.setFragment("test", false); EasyMock.expect(page.getFragment()).andReturn("test"); EasyMock.replay(page); diff --git a/tests/test.xml b/tests/test.xml index 222fe0a452..9b879ec789 100644 --- a/tests/test.xml +++ b/tests/test.xml @@ -11,7 +11,7 @@ <!-- Configuration --> <!-- ================================================================== --> <!-- Browsers to use for testing --> - <property name="browsers-windows" value="winxp-ie8,win7-ie9,winxp-firefox12,winxp-safari5,winxp-googlechrome19,winxp-opera11" /> + <property name="browsers-windows" value="winxp-ie8,win7-ie9,winxp-firefox12,winxp-safari5,winxp-googlechrome21,winxp-opera11" /> <property name="browsers-linux" value="linux-firefox3,linux-opera10,linux-googlechrome8" /> <property name="browsers-mac" value="osx-firefox3,osx-opera10,osx-googlechrome8,osx-safari4,osx-safari5" /> diff --git a/tests/testbench/com/vaadin/launcher/ApplicationRunnerServlet.java b/tests/testbench/com/vaadin/launcher/ApplicationRunnerServlet.java index dd93b1a8b6..b2148c8f08 100644 --- a/tests/testbench/com/vaadin/launcher/ApplicationRunnerServlet.java +++ b/tests/testbench/com/vaadin/launcher/ApplicationRunnerServlet.java @@ -61,7 +61,8 @@ public class ApplicationRunnerServlet extends AbstractApplicationServlet { Collections.addAll(defaultPackages, initParameter.split(",")); } String str = TestBase.class.getName().replace('.', '/') + ".class"; - URL url = getClassLoader().getResource(str); + URL url = getDeploymentConfiguration().getClassLoader() + .getResource(str); if ("file".equals(url.getProtocol())) { File comVaadinTests = new File(url.getPath()).getParentFile() .getParentFile(); diff --git a/tests/testbench/com/vaadin/launcher/DemoLauncher.java b/tests/testbench/com/vaadin/launcher/DemoLauncher.java index 2b2f73abd6..91cdd343c7 100644 --- a/tests/testbench/com/vaadin/launcher/DemoLauncher.java +++ b/tests/testbench/com/vaadin/launcher/DemoLauncher.java @@ -75,6 +75,7 @@ public class DemoLauncher { * dispatch thread. */ java.awt.EventQueue.invokeLater(new Runnable() { + @Override public void run() { try { openServerControlDialog(url); @@ -125,6 +126,7 @@ public class DemoLauncher { // List for close verify buttons final ActionListener buttonListener = new ActionListener() { + @Override public void actionPerformed(ActionEvent e) { if (e.getSource() == okButton) { System.exit(0); diff --git a/tests/testbench/com/vaadin/launcher/DevelopmentServerLauncher.java b/tests/testbench/com/vaadin/launcher/DevelopmentServerLauncher.java index 05658e74b1..cd465bc7cc 100644 --- a/tests/testbench/com/vaadin/launcher/DevelopmentServerLauncher.java +++ b/tests/testbench/com/vaadin/launcher/DevelopmentServerLauncher.java @@ -13,14 +13,14 @@ import java.net.Socket; import java.util.HashMap; import java.util.Map; -import com.vaadin.launcher.util.BrowserLauncher; - import org.mortbay.jetty.Connector; import org.mortbay.jetty.Server; import org.mortbay.jetty.nio.SelectChannelConnector; import org.mortbay.jetty.security.SslSocketConnector; import org.mortbay.jetty.webapp.WebAppContext; +import com.vaadin.launcher.util.BrowserLauncher; + /** * Class for running Jetty servlet container within Eclipse project. * @@ -40,6 +40,7 @@ public class DevelopmentServerLauncher { * @throws Exception */ public static void main(String[] args) { + System.setProperty("java.awt.headless", "true"); // Pass-through of arguments for Jetty final Map<String, String> serverArgs = parseArguments(args); diff --git a/tests/testbench/com/vaadin/tests/Components.java b/tests/testbench/com/vaadin/tests/Components.java index 4352072ccf..f4fa1b6608 100644 --- a/tests/testbench/com/vaadin/tests/Components.java +++ b/tests/testbench/com/vaadin/tests/Components.java @@ -15,9 +15,9 @@ import com.vaadin.data.util.DefaultItemSorter; import com.vaadin.data.util.HierarchicalContainer; import com.vaadin.event.ItemClickEvent; import com.vaadin.event.ItemClickEvent.ItemClickListener; +import com.vaadin.shared.ui.label.ContentMode; import com.vaadin.terminal.ExternalResource; import com.vaadin.terminal.Sizeable; -import com.vaadin.terminal.gwt.client.ui.label.ContentMode; import com.vaadin.tests.components.AbstractComponentTest; import com.vaadin.ui.AbstractComponent; import com.vaadin.ui.Component; @@ -137,6 +137,7 @@ public class Components extends Application.LegacyApplication { naviTree = new Tree(); naviTree.setItemStyleGenerator(new ItemStyleGenerator() { + @Override public String getStyle(Object itemId) { Class<?> cls = (Class<?>) itemId; if (!isAbstract(cls)) { @@ -182,6 +183,7 @@ public class Components extends Application.LegacyApplication { naviTree.addListener(new ItemClickListener() { + @Override public void itemClick(ItemClickEvent event) { Class<?> cls = (Class<?>) event.getItemId(); if (!isAbstract(cls)) { diff --git a/tests/testbench/com/vaadin/tests/CustomLayoutDemo.java b/tests/testbench/com/vaadin/tests/CustomLayoutDemo.java index 73282cc1fb..6991b669a8 100644 --- a/tests/testbench/com/vaadin/tests/CustomLayoutDemo.java +++ b/tests/testbench/com/vaadin/tests/CustomLayoutDemo.java @@ -4,7 +4,7 @@ package com.vaadin.tests; -import com.vaadin.terminal.gwt.client.ui.label.ContentMode; +import com.vaadin.shared.ui.label.ContentMode; import com.vaadin.ui.Button; import com.vaadin.ui.Button.ClickEvent; import com.vaadin.ui.Component.Event; @@ -45,6 +45,7 @@ public class CustomLayoutDemo extends com.vaadin.Application.LegacyApplication private final Button loginButton = new Button("Login", new Button.ClickListener() { + @Override public void buttonClick(ClickEvent event) { loginClicked(); } @@ -131,6 +132,7 @@ public class CustomLayoutDemo extends com.vaadin.Application.LegacyApplication * Handle all menu events. Updates body panel contents if menu item is * clicked. */ + @Override public void componentEvent(Event event) { // Check if event occured at fsTree component if (event.getSource() == menu) { diff --git a/tests/testbench/com/vaadin/tests/FocusingComponents.java b/tests/testbench/com/vaadin/tests/FocusingComponents.java index e74a935830..f63989fafb 100644 --- a/tests/testbench/com/vaadin/tests/FocusingComponents.java +++ b/tests/testbench/com/vaadin/tests/FocusingComponents.java @@ -54,6 +54,7 @@ public class FocusingComponents extends CustomComponent { Button focus = new Button("focus"); focus.addListener(new Button.ClickListener() { + @Override public void buttonClick(ClickEvent event) { f.focus(); } diff --git a/tests/testbench/com/vaadin/tests/LayoutDemo.java b/tests/testbench/com/vaadin/tests/LayoutDemo.java index d838283cf1..e2d858560a 100644 --- a/tests/testbench/com/vaadin/tests/LayoutDemo.java +++ b/tests/testbench/com/vaadin/tests/LayoutDemo.java @@ -4,8 +4,8 @@ package com.vaadin.tests; +import com.vaadin.shared.ui.label.ContentMode; import com.vaadin.terminal.ClassResource; -import com.vaadin.terminal.gwt.client.ui.label.ContentMode; import com.vaadin.ui.Component; import com.vaadin.ui.Embedded; import com.vaadin.ui.GridLayout; diff --git a/tests/testbench/com/vaadin/tests/ListenerOrder.java b/tests/testbench/com/vaadin/tests/ListenerOrder.java index 797561eb00..7f136b10ed 100644 --- a/tests/testbench/com/vaadin/tests/ListenerOrder.java +++ b/tests/testbench/com/vaadin/tests/ListenerOrder.java @@ -59,6 +59,7 @@ public class ListenerOrder extends com.vaadin.Application.LegacyApplication b1.removeListener(b1Listener); // remove non-existing listener b1.removeListener(new Button.ClickListener() { + @Override public void buttonClick(ClickEvent event) { } }); @@ -107,6 +108,7 @@ public class ListenerOrder extends com.vaadin.Application.LegacyApplication return listener; } + @Override public void buttonClick(ClickEvent event) { System.out.println("ClickEvent from Test1"); s1.addItem("new item " + System.currentTimeMillis()); @@ -133,6 +135,7 @@ public class ListenerOrder extends com.vaadin.Application.LegacyApplication System.out.println("Created listener " + name + ", id=" + count); } + @Override public void buttonClick(ClickEvent event) { String msg = "ClickEvent from MyClickListener " + name + ", id=" + count; @@ -142,18 +145,21 @@ public class ListenerOrder extends com.vaadin.Application.LegacyApplication } + @Override public void containerPropertySetChange(PropertySetChangeEvent event) { String msg = "containerPropertySetChange from " + this; System.out.println(msg); getMainWindow().showNotification(msg); } + @Override public void containerItemSetChange(ItemSetChangeEvent event) { String msg = "containerItemSetChange from " + this; System.out.println(msg); getMainWindow().showNotification(msg); } + @Override public void valueChange(ValueChangeEvent event) { String msg = "valueChange from " + this; System.out.println(msg); diff --git a/tests/testbench/com/vaadin/tests/ModalWindow.java b/tests/testbench/com/vaadin/tests/ModalWindow.java index c848803642..340571cd37 100644 --- a/tests/testbench/com/vaadin/tests/ModalWindow.java +++ b/tests/testbench/com/vaadin/tests/ModalWindow.java @@ -54,6 +54,7 @@ public class ModalWindow extends com.vaadin.Application.LegacyApplication } + @Override public void buttonClick(ClickEvent event) { if (event.getButton() == reopen) { openSubWindow(); diff --git a/tests/testbench/com/vaadin/tests/NativeWindowing.java b/tests/testbench/com/vaadin/tests/NativeWindowing.java index 6a561dd861..36cbe48935 100644 --- a/tests/testbench/com/vaadin/tests/NativeWindowing.java +++ b/tests/testbench/com/vaadin/tests/NativeWindowing.java @@ -8,7 +8,7 @@ import java.net.MalformedURLException; import java.net.URL; import com.vaadin.Application; -import com.vaadin.terminal.gwt.client.ui.label.ContentMode; +import com.vaadin.shared.ui.label.ContentMode; import com.vaadin.ui.Button; import com.vaadin.ui.Button.ClickEvent; import com.vaadin.ui.Label; @@ -26,6 +26,7 @@ public class NativeWindowing extends Application.LegacyApplication { main.addComponent(new Button("Add new subwindow", new Button.ClickListener() { + @Override public void buttonClick(ClickEvent event) { final Window w = new Window("sw " + System.currentTimeMillis()); @@ -40,6 +41,7 @@ public class NativeWindowing extends Application.LegacyApplication { final Button closebutton = new Button("Close " + w.getCaption(), new Button.ClickListener() { + @Override public void buttonClick(ClickEvent event) { main.removeWindow(w); } @@ -78,6 +80,7 @@ public class NativeWindowing extends Application.LegacyApplication { main.addComponent(new Button( "Open a currently uncreated application level window", new Button.ClickListener() { + @Override public void buttonClick(ClickEvent event) { try { main.open( @@ -114,6 +117,7 @@ public class NativeWindowing extends Application.LegacyApplication { ww.addComponent(new Button("Click me", new Button.ClickListener() { int state = 0; + @Override public void buttonClick(ClickEvent event) { ww.addComponent(new Label("Button clicked " + (++state) + " times")); diff --git a/tests/testbench/com/vaadin/tests/OrderedLayoutSwapComponents.java b/tests/testbench/com/vaadin/tests/OrderedLayoutSwapComponents.java index 93e6290ee4..af73bdc652 100644 --- a/tests/testbench/com/vaadin/tests/OrderedLayoutSwapComponents.java +++ b/tests/testbench/com/vaadin/tests/OrderedLayoutSwapComponents.java @@ -60,6 +60,7 @@ public class OrderedLayoutSwapComponents extends CustomComponent { ol.addComponent(new Label(name)); up = new Button("up"); up.addListener(new Button.ClickListener() { + @Override public void buttonClick(ClickEvent event) { int newIndex = order.indexOf(MyComponent.this) - 1; MyComponent old = order.get(newIndex); @@ -77,6 +78,7 @@ public class OrderedLayoutSwapComponents extends CustomComponent { down = new Button("down"); down.addListener(new Button.ClickListener() { + @Override public void buttonClick(ClickEvent event) { int newIndex = order.indexOf(MyComponent.this) + 1; MyComponent old = order.get(newIndex); diff --git a/tests/testbench/com/vaadin/tests/Parameters.java b/tests/testbench/com/vaadin/tests/Parameters.java index 8d940101c3..1e8ca53875 100644 --- a/tests/testbench/com/vaadin/tests/Parameters.java +++ b/tests/testbench/com/vaadin/tests/Parameters.java @@ -93,6 +93,7 @@ public class Parameters extends com.vaadin.Application.LegacyApplication main.setContent(layout); } + @Override public boolean handleRequest(Application application, WrappedRequest request, WrappedResponse response) throws IOException { diff --git a/tests/testbench/com/vaadin/tests/PerformanceTestBasicComponentRendering.java b/tests/testbench/com/vaadin/tests/PerformanceTestBasicComponentRendering.java index 0d588a3306..e93ebc52f3 100644 --- a/tests/testbench/com/vaadin/tests/PerformanceTestBasicComponentRendering.java +++ b/tests/testbench/com/vaadin/tests/PerformanceTestBasicComponentRendering.java @@ -7,8 +7,8 @@ package com.vaadin.tests; import java.util.Date; import java.util.Map; +import com.vaadin.shared.ui.label.ContentMode; import com.vaadin.terminal.UserError; -import com.vaadin.terminal.gwt.client.ui.label.ContentMode; import com.vaadin.ui.Button; import com.vaadin.ui.ComboBox; import com.vaadin.ui.CustomComponent; diff --git a/tests/testbench/com/vaadin/tests/PerformanceTestLabelsAndOrderedLayouts.java b/tests/testbench/com/vaadin/tests/PerformanceTestLabelsAndOrderedLayouts.java index b3f232f24d..66c20009e0 100644 --- a/tests/testbench/com/vaadin/tests/PerformanceTestLabelsAndOrderedLayouts.java +++ b/tests/testbench/com/vaadin/tests/PerformanceTestLabelsAndOrderedLayouts.java @@ -6,7 +6,7 @@ package com.vaadin.tests; import java.util.Date; -import com.vaadin.terminal.gwt.client.ui.label.ContentMode; +import com.vaadin.shared.ui.label.ContentMode; import com.vaadin.ui.AbstractOrderedLayout; import com.vaadin.ui.Button; import com.vaadin.ui.Button.ClickEvent; @@ -39,6 +39,7 @@ public class PerformanceTestLabelsAndOrderedLayouts extends CustomComponent { main.addComponent(new Button("click when rendered", new ClickListener() { + @Override public void buttonClick(ClickEvent event) { endTest(); } @@ -47,6 +48,7 @@ public class PerformanceTestLabelsAndOrderedLayouts extends CustomComponent { main.addComponent(new Button( "Click for layout repaint (cached components)", new ClickListener() { + @Override public void buttonClick(ClickEvent event) { testContainer.requestRepaint(); } diff --git a/tests/testbench/com/vaadin/tests/PerformanceTestSubTreeCaching.java b/tests/testbench/com/vaadin/tests/PerformanceTestSubTreeCaching.java index 882b776d5d..e0a7e2c90c 100644 --- a/tests/testbench/com/vaadin/tests/PerformanceTestSubTreeCaching.java +++ b/tests/testbench/com/vaadin/tests/PerformanceTestSubTreeCaching.java @@ -6,7 +6,7 @@ package com.vaadin.tests; import java.util.Date; -import com.vaadin.terminal.gwt.client.ui.label.ContentMode; +import com.vaadin.shared.ui.label.ContentMode; import com.vaadin.ui.Button; import com.vaadin.ui.Button.ClickEvent; import com.vaadin.ui.CustomComponent; @@ -39,6 +39,7 @@ public class PerformanceTestSubTreeCaching extends CustomComponent { addInfo(); Button b = new Button("start test", new Button.ClickListener() { + @Override public void buttonClick(ClickEvent event) { startTest(); } @@ -46,6 +47,7 @@ public class PerformanceTestSubTreeCaching extends CustomComponent { b.setDescription("Push this button to start test. A test label will be rendered above existing components."); main.addComponent(b); b = new Button("end test", new Button.ClickListener() { + @Override public void buttonClick(ClickEvent event) { endTest(); } diff --git a/tests/testbench/com/vaadin/tests/ScrollbarStressTest.java b/tests/testbench/com/vaadin/tests/ScrollbarStressTest.java index bd40a7fb7b..9cd27e9d5c 100644 --- a/tests/testbench/com/vaadin/tests/ScrollbarStressTest.java +++ b/tests/testbench/com/vaadin/tests/ScrollbarStressTest.java @@ -73,6 +73,7 @@ public class ScrollbarStressTest extends Application.LegacyApplication { height.setValue("100%"); final Button set = new Button("Set", new ClickListener() { + @Override public void buttonClick(ClickEvent event) { getTable = testComponent.getValue().equals("Table"); diff --git a/tests/testbench/com/vaadin/tests/StressComponentsInTable.java b/tests/testbench/com/vaadin/tests/StressComponentsInTable.java index 9c2703822e..87ab7fa1d4 100644 --- a/tests/testbench/com/vaadin/tests/StressComponentsInTable.java +++ b/tests/testbench/com/vaadin/tests/StressComponentsInTable.java @@ -37,6 +37,7 @@ public class StressComponentsInTable extends CustomComponent { } content.add(new Button("b" + i, new Button.ClickListener() { + @Override public void buttonClick(ClickEvent event) { Button b = event.getButton(); System.out.println(b.getCaption() + " click: " diff --git a/tests/testbench/com/vaadin/tests/TableChangingDatasource.java b/tests/testbench/com/vaadin/tests/TableChangingDatasource.java index fa7edc3a45..3f87f2fe4c 100644 --- a/tests/testbench/com/vaadin/tests/TableChangingDatasource.java +++ b/tests/testbench/com/vaadin/tests/TableChangingDatasource.java @@ -45,6 +45,7 @@ public class TableChangingDatasource extends CustomComponent implements } + @Override public void buttonClick(ClickEvent event) { int i = mode % 4; t.setContainerDataSource(ta[i].getContainerDataSource()); diff --git a/tests/testbench/com/vaadin/tests/TableSelectTest.java b/tests/testbench/com/vaadin/tests/TableSelectTest.java index 62070c4b97..823bdfb3c4 100644 --- a/tests/testbench/com/vaadin/tests/TableSelectTest.java +++ b/tests/testbench/com/vaadin/tests/TableSelectTest.java @@ -113,6 +113,7 @@ public class TableSelectTest extends CustomComponent implements return id; } + @Override public void valueChange(ValueChangeEvent event) { final Object val = event.getProperty().getValue(); diff --git a/tests/testbench/com/vaadin/tests/TestBench.java b/tests/testbench/com/vaadin/tests/TestBench.java index 1ac497e574..04f71ce535 100644 --- a/tests/testbench/com/vaadin/tests/TestBench.java +++ b/tests/testbench/com/vaadin/tests/TestBench.java @@ -120,6 +120,7 @@ public class TestBench extends com.vaadin.Application.LegacyApplication lo.addComponent(menu); mainWindow.getPage().addListener(new Page.FragmentChangedListener() { + @Override public void fragmentChanged(FragmentChangedEvent source) { String fragment = source.getFragment(); if (fragment != null && !"".equals(fragment)) { @@ -238,6 +239,7 @@ public class TestBench extends com.vaadin.Application.LegacyApplication } // Handle menu selection and update body + @Override public void valueChange(Property.ValueChangeEvent event) { bodyLayout.removeAllComponents(); bodyLayout.setCaption(null); diff --git a/tests/testbench/com/vaadin/tests/TestCaptionWrapper.java b/tests/testbench/com/vaadin/tests/TestCaptionWrapper.java index 0e49fdd8ae..d086e0a665 100644 --- a/tests/testbench/com/vaadin/tests/TestCaptionWrapper.java +++ b/tests/testbench/com/vaadin/tests/TestCaptionWrapper.java @@ -4,11 +4,11 @@ package com.vaadin.tests; +import com.vaadin.shared.ui.label.ContentMode; import com.vaadin.terminal.ClassResource; import com.vaadin.terminal.ErrorMessage; import com.vaadin.terminal.ExternalResource; import com.vaadin.terminal.UserError; -import com.vaadin.terminal.gwt.client.ui.label.ContentMode; import com.vaadin.ui.AbstractComponent; import com.vaadin.ui.Button; import com.vaadin.ui.CheckBox; @@ -195,6 +195,7 @@ public class TestCaptionWrapper extends CustomComponent implements Listener { layout.addComponent(c); } + @Override public void componentEvent(Event event) { final String feedback = eventListenerString + " source=" + event.getSource() + ", toString()=" + event.toString(); diff --git a/tests/testbench/com/vaadin/tests/TestComponentAddAndRecursion.java b/tests/testbench/com/vaadin/tests/TestComponentAddAndRecursion.java index 3adaff93ea..e13b907f77 100644 --- a/tests/testbench/com/vaadin/tests/TestComponentAddAndRecursion.java +++ b/tests/testbench/com/vaadin/tests/TestComponentAddAndRecursion.java @@ -43,6 +43,7 @@ public class TestComponentAddAndRecursion extends CustomComponent { Button b = new Button("use gridlayout", new Button.ClickListener() { + @Override public void buttonClick(ClickEvent event) { p.setContent(new GridLayout()); p2.setContent(new GridLayout()); @@ -53,6 +54,7 @@ public class TestComponentAddAndRecursion extends CustomComponent { main.addComponent(b); b = new Button("use orderedlayout", new Button.ClickListener() { + @Override public void buttonClick(ClickEvent event) { p.setContent(new VerticalLayout()); p2.setContent(new VerticalLayout()); @@ -63,6 +65,7 @@ public class TestComponentAddAndRecursion extends CustomComponent { main.addComponent(b); b = new Button("move B", new Button.ClickListener() { + @Override public void buttonClick(ClickEvent event) { p2.addComponent(l2); } @@ -71,6 +74,7 @@ public class TestComponentAddAndRecursion extends CustomComponent { main.addComponent(b); b = new Button("move p", new Button.ClickListener() { + @Override public void buttonClick(ClickEvent event) { p3.addComponent(p); } @@ -79,6 +83,7 @@ public class TestComponentAddAndRecursion extends CustomComponent { main.addComponent(b); b = new Button("add to both", new Button.ClickListener() { + @Override public void buttonClick(ClickEvent event) { Label l = new Label("both"); p.addComponent(l); @@ -89,6 +94,7 @@ public class TestComponentAddAndRecursion extends CustomComponent { main.addComponent(b); b = new Button("recurse", new Button.ClickListener() { + @Override public void buttonClick(ClickEvent event) { try { p3.addComponent(p2); @@ -106,6 +112,7 @@ public class TestComponentAddAndRecursion extends CustomComponent { main.addComponent(b); b = new Button("recurse2", new Button.ClickListener() { + @Override public void buttonClick(ClickEvent event) { Panel p = new Panel("dynamic"); p.addComponent(p2); diff --git a/tests/testbench/com/vaadin/tests/TestContainerChanges.java b/tests/testbench/com/vaadin/tests/TestContainerChanges.java index b7f24abd8b..87251c0d65 100644 --- a/tests/testbench/com/vaadin/tests/TestContainerChanges.java +++ b/tests/testbench/com/vaadin/tests/TestContainerChanges.java @@ -70,6 +70,7 @@ public class TestContainerChanges extends CustomComponent { tbl2.setMultiSelect(false); tbl2.setImmediate(true); tbl2.addListener(new Table.ValueChangeListener() { + @Override public void valueChange(ValueChangeEvent event) { System.err.println("Value now " + event.getProperty().getValue()); @@ -85,6 +86,7 @@ public class TestContainerChanges extends CustomComponent { Button b = new Button("table.commit()", new Button.ClickListener() { + @Override public void buttonClick(ClickEvent event) { tbl.commit(); } @@ -95,6 +97,7 @@ public class TestContainerChanges extends CustomComponent { b = new Button("indexedcontainer.addItem()", new Button.ClickListener() { + @Override public void buttonClick(ClickEvent event) { cont.addItem(new Integer(cnt++)); } @@ -104,6 +107,7 @@ public class TestContainerChanges extends CustomComponent { b = new Button("indexedcontainer.addItem(null)", new Button.ClickListener() { + @Override public void buttonClick(ClickEvent event) { cont.addItem(null); } @@ -113,6 +117,7 @@ public class TestContainerChanges extends CustomComponent { b = new Button("indexedcontainer.removeItem(table.lastItemId()", new Button.ClickListener() { + @Override public void buttonClick(ClickEvent event) { cont.removeItem(tbl.lastItemId()); } @@ -123,6 +128,7 @@ public class TestContainerChanges extends CustomComponent { b = new Button("indexedcontainer.addContainerProperty()", new Button.ClickListener() { + @Override public void buttonClick(ClickEvent event) { cont.addContainerProperty("prop" + cnt, String.class, "#" + cnt++); @@ -133,6 +139,7 @@ public class TestContainerChanges extends CustomComponent { b = new Button("indexedcontainer.clear()", new Button.ClickListener() { + @Override public void buttonClick(ClickEvent event) { cont.removeAllItems(); } @@ -142,6 +149,7 @@ public class TestContainerChanges extends CustomComponent { b = new Button("table.setContainerDataSource(indexedcontainer)", new Button.ClickListener() { + @Override public void buttonClick(ClickEvent event) { tbl.setContainerDataSource(cont); } @@ -151,6 +159,7 @@ public class TestContainerChanges extends CustomComponent { b = new Button("table.setContainerDataSource(orderedwrapper)", new Button.ClickListener() { + @Override public void buttonClick(ClickEvent event) { tbl.setContainerDataSource(ordered); } @@ -160,6 +169,7 @@ public class TestContainerChanges extends CustomComponent { b = new Button("table.setContainerDataSource(hierarchicalwrapper)", new Button.ClickListener() { + @Override public void buttonClick(ClickEvent event) { tbl.setContainerDataSource(hierarchical); } diff --git a/tests/testbench/com/vaadin/tests/TestForBasicApplicationLayout.java b/tests/testbench/com/vaadin/tests/TestForBasicApplicationLayout.java index 67370039bb..eadc787ad8 100644 --- a/tests/testbench/com/vaadin/tests/TestForBasicApplicationLayout.java +++ b/tests/testbench/com/vaadin/tests/TestForBasicApplicationLayout.java @@ -30,6 +30,7 @@ public class TestForBasicApplicationLayout extends CustomComponent { click = new Button("Set height -1", new ClickListener() { + @Override public void buttonClick(ClickEvent event) { tab.setHeight(null); } @@ -38,6 +39,7 @@ public class TestForBasicApplicationLayout extends CustomComponent { click2 = new Button("Set height 100%", new ClickListener() { + @Override public void buttonClick(ClickEvent event) { tab.setHeight(100, TabSheet.UNITS_PERCENTAGE); } diff --git a/tests/testbench/com/vaadin/tests/TestForChildComponentRendering.java b/tests/testbench/com/vaadin/tests/TestForChildComponentRendering.java index e90231eefd..3852c5f13f 100644 --- a/tests/testbench/com/vaadin/tests/TestForChildComponentRendering.java +++ b/tests/testbench/com/vaadin/tests/TestForChildComponentRendering.java @@ -53,6 +53,7 @@ public class TestForChildComponentRendering extends CustomComponent { se.addItem("Valinta 2"); Button b = new Button("refresh view", new Button.ClickListener() { + @Override public void buttonClick(ClickEvent event) { createNewView(); } @@ -60,6 +61,7 @@ public class TestForChildComponentRendering extends CustomComponent { main.addComponent(b); b = new Button("reorder view", new Button.ClickListener() { + @Override public void buttonClick(ClickEvent event) { randomReorder(); } @@ -68,6 +70,7 @@ public class TestForChildComponentRendering extends CustomComponent { b = new Button("remove randomly one component", new Button.ClickListener() { + @Override public void buttonClick(ClickEvent event) { removeRandomComponent(); } diff --git a/tests/testbench/com/vaadin/tests/TestForContainerFilterable.java b/tests/testbench/com/vaadin/tests/TestForContainerFilterable.java index 92b7ae4f62..f3bd5ab227 100644 --- a/tests/testbench/com/vaadin/tests/TestForContainerFilterable.java +++ b/tests/testbench/com/vaadin/tests/TestForContainerFilterable.java @@ -60,6 +60,7 @@ public class TestForContainerFilterable extends CustomComponent { // Handler filterButton.addListener(new Button.ClickListener() { + @Override public void buttonClick(ClickEvent event) { ic.removeAllContainerFilters(); if (fooFilter.getValue().length() > 0) { @@ -77,6 +78,7 @@ public class TestForContainerFilterable extends CustomComponent { // Resetbutton lo.addComponent(new Button("Rebind table datasource", new Button.ClickListener() { + @Override public void buttonClick(ClickEvent event) { t.setContainerDataSource(ic); } diff --git a/tests/testbench/com/vaadin/tests/TestForGridLayoutChildComponentRendering.java b/tests/testbench/com/vaadin/tests/TestForGridLayoutChildComponentRendering.java index 6adcf49ec6..982c86781c 100644 --- a/tests/testbench/com/vaadin/tests/TestForGridLayoutChildComponentRendering.java +++ b/tests/testbench/com/vaadin/tests/TestForGridLayoutChildComponentRendering.java @@ -54,6 +54,7 @@ public class TestForGridLayoutChildComponentRendering extends CustomComponent { main.addComponent(se, 0, 1, 1, 1); Button b = new Button("refresh view", new Button.ClickListener() { + @Override public void buttonClick(ClickEvent event) { createNewView(); } @@ -61,6 +62,7 @@ public class TestForGridLayoutChildComponentRendering extends CustomComponent { main.addComponent(b); b = new Button("reorder view", new Button.ClickListener() { + @Override public void buttonClick(ClickEvent event) { randomReorder(); } @@ -69,6 +71,7 @@ public class TestForGridLayoutChildComponentRendering extends CustomComponent { b = new Button("remove randomly one component", new Button.ClickListener() { + @Override public void buttonClick(ClickEvent event) { removeRandomComponent(); } diff --git a/tests/testbench/com/vaadin/tests/TestForMultipleStyleNames.java b/tests/testbench/com/vaadin/tests/TestForMultipleStyleNames.java index e192d2738d..17c118803b 100644 --- a/tests/testbench/com/vaadin/tests/TestForMultipleStyleNames.java +++ b/tests/testbench/com/vaadin/tests/TestForMultipleStyleNames.java @@ -65,6 +65,7 @@ public class TestForMultipleStyleNames extends CustomComponent implements } + @Override public void valueChange(ValueChangeEvent event) { final String currentStyle = l.getStyleName(); diff --git a/tests/testbench/com/vaadin/tests/TestForNativeWindowing.java b/tests/testbench/com/vaadin/tests/TestForNativeWindowing.java index 8e4ec17738..ea66ed1ab2 100644 --- a/tests/testbench/com/vaadin/tests/TestForNativeWindowing.java +++ b/tests/testbench/com/vaadin/tests/TestForNativeWindowing.java @@ -8,7 +8,7 @@ import java.net.MalformedURLException; import java.net.URL; import com.vaadin.Application; -import com.vaadin.terminal.gwt.client.ui.label.ContentMode; +import com.vaadin.shared.ui.label.ContentMode; import com.vaadin.ui.Button; import com.vaadin.ui.Button.ClickEvent; import com.vaadin.ui.Label; @@ -26,6 +26,7 @@ public class TestForNativeWindowing extends Application.LegacyApplication { main.addComponent(new Button("Add new subwindow", new Button.ClickListener() { + @Override public void buttonClick(ClickEvent event) { final Window w = new Window("sw " + System.currentTimeMillis()); @@ -40,6 +41,7 @@ public class TestForNativeWindowing extends Application.LegacyApplication { final Button closebutton = new Button("Close " + w.getCaption(), new Button.ClickListener() { + @Override public void buttonClick(ClickEvent event) { main.removeWindow(w); } @@ -78,6 +80,7 @@ public class TestForNativeWindowing extends Application.LegacyApplication { main.addComponent(new Button( "Open a currently uncreated application level window", new Button.ClickListener() { + @Override public void buttonClick(ClickEvent event) { try { main.open( @@ -114,6 +117,7 @@ public class TestForNativeWindowing extends Application.LegacyApplication { ww.addComponent(new Button("Click me", new Button.ClickListener() { int state = 0; + @Override public void buttonClick(ClickEvent event) { ww.addComponent(new Label("Button clicked " + (++state) + " times")); diff --git a/tests/testbench/com/vaadin/tests/TestForPreconfiguredComponents.java b/tests/testbench/com/vaadin/tests/TestForPreconfiguredComponents.java index 74fdb0c35f..9a41d719d4 100644 --- a/tests/testbench/com/vaadin/tests/TestForPreconfiguredComponents.java +++ b/tests/testbench/com/vaadin/tests/TestForPreconfiguredComponents.java @@ -91,6 +91,7 @@ public class TestForPreconfiguredComponents extends CustomComponent implements main.addComponent(test); final Button b = new Button("refresh view", new Button.ClickListener() { + @Override public void buttonClick(ClickEvent event) { createNewView(); } @@ -146,6 +147,7 @@ public class TestForPreconfiguredComponents extends CustomComponent implements final Panel status = new Panel("Events"); final Button clear = new Button("clear event log"); clear.addListener(new ClickListener() { + @Override public void buttonClick(ClickEvent event) { status.removeAllComponents(); status.addComponent(ol2); @@ -162,6 +164,7 @@ public class TestForPreconfiguredComponents extends CustomComponent implements ol.addComponent(status); t.addListener(new Listener() { + @Override public void componentEvent(Event event) { status.addComponent(new Label(event.getClass().getName())); // TODO should not use Field.toString() @@ -173,10 +176,12 @@ public class TestForPreconfiguredComponents extends CustomComponent implements return ol; } + @Override public Action[] getActions(Object target, Object sender) { return actions; } + @Override public void handleAction(Action action, Object sender, Object target) { if (action == actions[1]) { al.addComponent(new Label("Delete selected on " + target)); diff --git a/tests/testbench/com/vaadin/tests/TestForRichTextEditor.java b/tests/testbench/com/vaadin/tests/TestForRichTextEditor.java index 992222cb9a..417dde71c8 100644 --- a/tests/testbench/com/vaadin/tests/TestForRichTextEditor.java +++ b/tests/testbench/com/vaadin/tests/TestForRichTextEditor.java @@ -7,7 +7,7 @@ package com.vaadin.tests; import com.vaadin.data.Property; import com.vaadin.data.Property.ValueChangeEvent; import com.vaadin.data.Property.ValueChangeListener; -import com.vaadin.terminal.gwt.client.ui.label.ContentMode; +import com.vaadin.shared.ui.label.ContentMode; import com.vaadin.ui.Button; import com.vaadin.ui.CheckBox; import com.vaadin.ui.CustomComponent; @@ -53,6 +53,7 @@ public class TestForRichTextEditor extends CustomComponent implements b.setImmediate(true); b.addListener(new Property.ValueChangeListener() { + @Override public void valueChange(ValueChangeEvent event) { rte.setEnabled(!rte.isEnabled()); } @@ -61,6 +62,7 @@ public class TestForRichTextEditor extends CustomComponent implements } + @Override public void valueChange(ValueChangeEvent event) { l.setValue(rte.getValue()); } diff --git a/tests/testbench/com/vaadin/tests/TestForStyledUpload.java b/tests/testbench/com/vaadin/tests/TestForStyledUpload.java index 1fc20fe3e2..2526941ed1 100644 --- a/tests/testbench/com/vaadin/tests/TestForStyledUpload.java +++ b/tests/testbench/com/vaadin/tests/TestForStyledUpload.java @@ -15,8 +15,8 @@ import java.lang.management.ManagementFactory; import java.lang.management.MemoryMXBean; import com.vaadin.Application; +import com.vaadin.shared.ui.label.ContentMode; import com.vaadin.terminal.StreamResource; -import com.vaadin.terminal.gwt.client.ui.label.ContentMode; import com.vaadin.ui.Button; import com.vaadin.ui.Button.ClickEvent; import com.vaadin.ui.Label; @@ -70,6 +70,7 @@ public class TestForStyledUpload extends Application.LegacyApplication up.addListener(new Upload.ProgressListener() { + @Override public void updateProgress(long readBytes, long contentLenght) { pi.setValue(new Float(readBytes / (float) contentLenght)); @@ -83,6 +84,7 @@ public class TestForStyledUpload extends Application.LegacyApplication final Button b = new Button("Update status", new Button.ClickListener() { + @Override public void buttonClick(ClickEvent event) { readState(); } @@ -90,6 +92,7 @@ public class TestForStyledUpload extends Application.LegacyApplication final Button c = new Button("Update status with gc", new Button.ClickListener() { + @Override public void buttonClick(ClickEvent event) { gc(); } @@ -112,6 +115,7 @@ public class TestForStyledUpload extends Application.LegacyApplication Button cancel = new Button("Cancel current upload"); cancel.addListener(new Button.ClickListener() { + @Override public void buttonClick(ClickEvent event) { buffer.cancel(); } @@ -122,6 +126,7 @@ public class TestForStyledUpload extends Application.LegacyApplication final Button restart = new Button("Restart demo application"); restart.addListener(new Button.ClickListener() { + @Override public void buttonClick(ClickEvent event) { TestForStyledUpload.this.close(); } @@ -156,6 +161,7 @@ public class TestForStyledUpload extends Application.LegacyApplication refreshMemUsage(); } + @Override public void uploadFinished(FinishedEvent event) { status.removeAllComponents(); final InputStream stream = buffer.getStream(); @@ -208,6 +214,7 @@ public class TestForStyledUpload extends Application.LegacyApplication up.interruptUpload(); } + @Override public InputStream getStream() { if (file == null) { return null; @@ -225,6 +232,7 @@ public class TestForStyledUpload extends Application.LegacyApplication /** * @see com.vaadin.ui.Upload.Receiver#receiveUpload(String, String) */ + @Override public OutputStream receiveUpload(String filename, String MIMEType) { fileName = filename; mimeType = MIMEType; @@ -242,6 +250,7 @@ public class TestForStyledUpload extends Application.LegacyApplication * * @return String */ + @Override public String getFileName() { return fileName; } @@ -257,11 +266,13 @@ public class TestForStyledUpload extends Application.LegacyApplication } + @Override public void uploadFailed(FailedEvent event) { pi.setVisible(false); l.setValue("Upload was interrupted"); } + @Override public void uploadSucceeded(SucceededEvent event) { pi.setVisible(false); l.setValue("Finished upload, idle"); @@ -280,6 +291,7 @@ public class TestForStyledUpload extends Application.LegacyApplication } + @Override public void uploadStarted(StartedEvent event) { pi.setVisible(true); l.setValue("Started uploading file " + event.getFilename()); diff --git a/tests/testbench/com/vaadin/tests/TestForTabSheet.java b/tests/testbench/com/vaadin/tests/TestForTabSheet.java index 938bf43115..d180bd4be3 100644 --- a/tests/testbench/com/vaadin/tests/TestForTabSheet.java +++ b/tests/testbench/com/vaadin/tests/TestForTabSheet.java @@ -32,6 +32,7 @@ public class TestForTabSheet extends CustomComponent implements tabsheet.addTab(tab3_root, "Third tab", null); } + @Override public void buttonClick(ClickEvent event) { System.out.println("tab2=" + tab2_root.isEnabled() + " tab3=" + tab3_root.isEnabled()); @@ -39,6 +40,7 @@ public class TestForTabSheet extends CustomComponent implements tab3_root.setEnabled(true); } + @Override public void selectedTabChange(SelectedTabChangeEvent event) { /* * Cast to a TabSheet. This isn't really necessary in this example, as diff --git a/tests/testbench/com/vaadin/tests/TestForTablesInitialColumnWidthLogicRendering.java b/tests/testbench/com/vaadin/tests/TestForTablesInitialColumnWidthLogicRendering.java index 48c056ff58..a8d42184a0 100644 --- a/tests/testbench/com/vaadin/tests/TestForTablesInitialColumnWidthLogicRendering.java +++ b/tests/testbench/com/vaadin/tests/TestForTablesInitialColumnWidthLogicRendering.java @@ -103,6 +103,7 @@ public class TestForTablesInitialColumnWidthLogicRendering extends main.addComponent(t); final Button b = new Button("refresh view", new Button.ClickListener() { + @Override public void buttonClick(ClickEvent event) { createNewView(); } @@ -125,6 +126,7 @@ public class TestForTablesInitialColumnWidthLogicRendering extends } Button button = new Button("b", new Button.ClickListener() { + @Override public void buttonClick(ClickEvent event) { System.out.println("b click"); diff --git a/tests/testbench/com/vaadin/tests/TestForTrees.java b/tests/testbench/com/vaadin/tests/TestForTrees.java index 37030a25c2..24d6102f80 100644 --- a/tests/testbench/com/vaadin/tests/TestForTrees.java +++ b/tests/testbench/com/vaadin/tests/TestForTrees.java @@ -87,6 +87,7 @@ public class TestForTrees extends CustomComponent implements Handler { contextTree = t; final Button b = new Button("refresh view", new Button.ClickListener() { + @Override public void buttonClick(ClickEvent event) { createNewView(); } @@ -131,6 +132,7 @@ public class TestForTrees extends CustomComponent implements Handler { final Panel status = new Panel("Events"); final Button clear = new Button("c"); clear.addListener(new ClickListener() { + @Override public void buttonClick(ClickEvent event) { status.removeAllComponents(); status.addComponent(clear); @@ -144,6 +146,7 @@ public class TestForTrees extends CustomComponent implements Handler { ol.addComponent(status); t.addListener(new Listener() { + @Override public void componentEvent(Event event) { status.addComponent(new Label(event.getClass().getName())); // TODO should not use Field.toString() @@ -155,10 +158,12 @@ public class TestForTrees extends CustomComponent implements Handler { return ol; } + @Override public Action[] getActions(Object target, Object sender) { return actions; } + @Override public void handleAction(Action action, Object sender, Object target) { if (action == actions[1]) { al.addComponent(new Label("Delete selected on " + target)); diff --git a/tests/testbench/com/vaadin/tests/TestForUpload.java b/tests/testbench/com/vaadin/tests/TestForUpload.java index c254198add..cfb40fc854 100644 --- a/tests/testbench/com/vaadin/tests/TestForUpload.java +++ b/tests/testbench/com/vaadin/tests/TestForUpload.java @@ -17,8 +17,8 @@ import java.lang.management.ManagementFactory; import java.lang.management.MemoryMXBean; import com.vaadin.data.Property.ValueChangeEvent; +import com.vaadin.shared.ui.label.ContentMode; import com.vaadin.terminal.StreamResource; -import com.vaadin.terminal.gwt.client.ui.label.ContentMode; import com.vaadin.ui.AbstractField; import com.vaadin.ui.Button; import com.vaadin.ui.Button.ClickEvent; @@ -95,6 +95,7 @@ public class TestForUpload extends CustomComponent implements up.addListener(new Listener() { private static final long serialVersionUID = -8319074730512324303L; + @Override public void componentEvent(Event event) { // print out all events fired by upload for debug purposes System.out.println("Upload fired event | " + event); @@ -104,6 +105,7 @@ public class TestForUpload extends CustomComponent implements up.addListener(new StartedListener() { private static final long serialVersionUID = 5508883803861085154L; + @Override public void uploadStarted(StartedEvent event) { pi.setVisible(true); pi2.setVisible(true); @@ -117,6 +119,7 @@ public class TestForUpload extends CustomComponent implements up.addListener(new Upload.FinishedListener() { private static final long serialVersionUID = -3773034195991947371L; + @Override public void uploadFinished(FinishedEvent event) { pi.setVisible(false); pi2.setVisible(false); @@ -156,6 +159,7 @@ public class TestForUpload extends CustomComponent implements up.addListener(new Upload.ProgressListener() { + @Override public void updateProgress(long readBytes, long contentLenght) { pi2.setValue(new Float(readBytes / (float) contentLenght)); @@ -166,12 +170,14 @@ public class TestForUpload extends CustomComponent implements final Button b = new Button("Reed state from upload", new Button.ClickListener() { + @Override public void buttonClick(ClickEvent event) { readState(); } }); final Button c = new Button("Force GC", new Button.ClickListener() { + @Override public void buttonClick(ClickEvent event) { gc(); } @@ -183,6 +189,7 @@ public class TestForUpload extends CustomComponent implements main.addComponent(throwExecption); main.addComponent(interrupt); interrupt.addListener(new Button.ClickListener() { + @Override public void buttonClick(ClickEvent event) { up.interruptUpload(); } @@ -195,6 +202,7 @@ public class TestForUpload extends CustomComponent implements uploadBufferSelector.addItem("tempfile"); uploadBufferSelector .addListener(new AbstractField.ValueChangeListener() { + @Override public void valueChange(ValueChangeEvent event) { setBuffer(); } @@ -222,6 +230,7 @@ public class TestForUpload extends CustomComponent implements final Button restart = new Button("R"); restart.addListener(new Button.ClickListener() { + @Override public void buttonClick(ClickEvent event) { getApplication().close(); } @@ -280,6 +289,7 @@ public class TestForUpload extends CustomComponent implements } + @Override public InputStream getStream() { if (outputBuffer == null) { return null; @@ -290,6 +300,7 @@ public class TestForUpload extends CustomComponent implements /** * @see com.vaadin.ui.Upload.Receiver#receiveUpload(String, String) */ + @Override public OutputStream receiveUpload(String filename, String MIMEType) { fileName = filename; mimeType = MIMEType; @@ -310,6 +321,7 @@ public class TestForUpload extends CustomComponent implements * * @return String */ + @Override public String getFileName() { return fileName; } @@ -344,6 +356,7 @@ public class TestForUpload extends CustomComponent implements } + @Override public InputStream getStream() { if (file == null) { return null; @@ -360,6 +373,7 @@ public class TestForUpload extends CustomComponent implements /** * @see com.vaadin.ui.Upload.Receiver#receiveUpload(String, String) */ + @Override public OutputStream receiveUpload(String filename, String MIMEType) { fileName = filename; mimeType = MIMEType; @@ -387,6 +401,7 @@ public class TestForUpload extends CustomComponent implements * * @return String */ + @Override public String getFileName() { return fileName; } @@ -402,6 +417,7 @@ public class TestForUpload extends CustomComponent implements } + @Override public void updateProgress(long readBytes, long contentLenght) { pi.setValue(new Float(readBytes / (float) contentLenght)); diff --git a/tests/testbench/com/vaadin/tests/TestForWindowOpen.java b/tests/testbench/com/vaadin/tests/TestForWindowOpen.java index 75395f0d5c..761d9bc106 100644 --- a/tests/testbench/com/vaadin/tests/TestForWindowOpen.java +++ b/tests/testbench/com/vaadin/tests/TestForWindowOpen.java @@ -21,6 +21,7 @@ public class TestForWindowOpen extends CustomComponent { main.addComponent(new Button("Open in this window", new Button.ClickListener() { + @Override public void buttonClick(ClickEvent event) { final ExternalResource r = new ExternalResource( "http://www.google.com"); @@ -33,6 +34,7 @@ public class TestForWindowOpen extends CustomComponent { main.addComponent(new Button("Open in target \"mytarget\"", new Button.ClickListener() { + @Override public void buttonClick(ClickEvent event) { final ExternalResource r = new ExternalResource( "http://www.google.com"); @@ -45,6 +47,7 @@ public class TestForWindowOpen extends CustomComponent { main.addComponent(new Button("Open in target \"secondtarget\"", new Button.ClickListener() { + @Override public void buttonClick(ClickEvent event) { final ExternalResource r = new ExternalResource( "http://www.google.com"); diff --git a/tests/testbench/com/vaadin/tests/TestForWindowing.java b/tests/testbench/com/vaadin/tests/TestForWindowing.java index b9e14608f5..bbd523c0fd 100644 --- a/tests/testbench/com/vaadin/tests/TestForWindowing.java +++ b/tests/testbench/com/vaadin/tests/TestForWindowing.java @@ -37,6 +37,7 @@ public class TestForWindowing extends CustomComponent { final Button create = new Button("Create a new window", new ClickListener() { + @Override public void buttonClick(ClickEvent event) { Window w = new Window("Testing Window"); @@ -59,6 +60,7 @@ public class TestForWindowing extends CustomComponent { s1.addListener(new ValueChangeListener() { + @Override public void valueChange(ValueChangeEvent event) { String v = (String) event.getProperty() .getValue(); diff --git a/tests/testbench/com/vaadin/tests/TestIFrames.java b/tests/testbench/com/vaadin/tests/TestIFrames.java index ccddc7f557..48c4027a79 100644 --- a/tests/testbench/com/vaadin/tests/TestIFrames.java +++ b/tests/testbench/com/vaadin/tests/TestIFrames.java @@ -4,7 +4,7 @@ package com.vaadin.tests; -import com.vaadin.terminal.gwt.client.ui.label.ContentMode; +import com.vaadin.shared.ui.label.ContentMode; import com.vaadin.ui.CustomComponent; import com.vaadin.ui.Label; import com.vaadin.ui.VerticalLayout; diff --git a/tests/testbench/com/vaadin/tests/TestSetVisibleAndCaching.java b/tests/testbench/com/vaadin/tests/TestSetVisibleAndCaching.java index a46253598f..064a04847a 100644 --- a/tests/testbench/com/vaadin/tests/TestSetVisibleAndCaching.java +++ b/tests/testbench/com/vaadin/tests/TestSetVisibleAndCaching.java @@ -50,6 +50,7 @@ public class TestSetVisibleAndCaching extends selectPanel(selectedPanel); buttonNextPanel.addListener(new ClickListener() { + @Override public void buttonClick(ClickEvent event) { selectedPanel++; if (selectedPanel > 2) { diff --git a/tests/testbench/com/vaadin/tests/TestSizeableIncomponents.java b/tests/testbench/com/vaadin/tests/TestSizeableIncomponents.java index a9005e7fd3..50028137df 100644 --- a/tests/testbench/com/vaadin/tests/TestSizeableIncomponents.java +++ b/tests/testbench/com/vaadin/tests/TestSizeableIncomponents.java @@ -56,6 +56,7 @@ public class TestSizeableIncomponents extends Application.LegacyApplication { prev = new Button("<<-|"); prev.addListener(new Button.ClickListener() { + @Override public void buttonClick(ClickEvent event) { Object cur = select.getValue(); Testable prev = (Testable) cont.prevItemId(cur); @@ -71,6 +72,7 @@ public class TestSizeableIncomponents extends Application.LegacyApplication { }); next = new Button("|->>"); next.addListener(new Button.ClickListener() { + @Override public void buttonClick(ClickEvent event) { Object cur = select.getValue(); Testable next = (Testable) cont.nextItemId(cur); @@ -93,6 +95,7 @@ public class TestSizeableIncomponents extends Application.LegacyApplication { select.setContainerDataSource(cont); select.addListener(new ComboBox.ValueChangeListener() { + @Override public void valueChange(ValueChangeEvent event) { Testable t = (Testable) select.getValue(); if (t != null) { diff --git a/tests/testbench/com/vaadin/tests/TreeFilesystem.java b/tests/testbench/com/vaadin/tests/TreeFilesystem.java index e451d2ced7..f43bcfb576 100644 --- a/tests/testbench/com/vaadin/tests/TreeFilesystem.java +++ b/tests/testbench/com/vaadin/tests/TreeFilesystem.java @@ -7,7 +7,7 @@ package com.vaadin.tests; import java.io.File; import com.vaadin.data.Item; -import com.vaadin.terminal.gwt.client.ui.label.ContentMode; +import com.vaadin.shared.ui.label.ContentMode; import com.vaadin.tests.util.SampleDirectory; import com.vaadin.ui.Label; import com.vaadin.ui.Panel; @@ -60,6 +60,7 @@ public class TreeFilesystem extends com.vaadin.Application.LegacyApplication * Handle tree expand event, populate expanded node's childs with new files * and directories. */ + @Override public void nodeExpand(ExpandEvent event) { final Item i = tree.getItem(event.getItemId()); if (!tree.hasChildren(i)) { diff --git a/tests/testbench/com/vaadin/tests/TreeFilesystemContainer.java b/tests/testbench/com/vaadin/tests/TreeFilesystemContainer.java index 1b32a35a38..2458f2dfa1 100644 --- a/tests/testbench/com/vaadin/tests/TreeFilesystemContainer.java +++ b/tests/testbench/com/vaadin/tests/TreeFilesystemContainer.java @@ -80,6 +80,7 @@ public class TreeFilesystemContainer extends * Listener for any component events. This class has been registered as an * listener for component fsTree. */ + @Override public void componentEvent(Event event) { // Check if event occured at fsTree component if (event.getSource() == filesystem) { diff --git a/tests/testbench/com/vaadin/tests/UpgradingSample.java b/tests/testbench/com/vaadin/tests/UpgradingSample.java index 0db63ca789..3090962b71 100644 --- a/tests/testbench/com/vaadin/tests/UpgradingSample.java +++ b/tests/testbench/com/vaadin/tests/UpgradingSample.java @@ -94,6 +94,7 @@ public class UpgradingSample extends Application.LegacyApplication implements } // Handle menu selection and update visible page + @Override public void valueChange(Property.ValueChangeEvent event) { layout.removeComponent(1, 0); final String title = (String) menu.getValue(); @@ -116,6 +117,7 @@ public class UpgradingSample extends Application.LegacyApplication implements private final Button loginButton = new Button("Enter", new Button.ClickListener() { + @Override public void buttonClick(ClickEvent event) { login(); } @@ -127,6 +129,7 @@ public class UpgradingSample extends Application.LegacyApplication implements private final Button logoutButton = new Button("Logout", new Button.ClickListener() { + @Override public void buttonClick(ClickEvent event) { close(); } @@ -163,6 +166,7 @@ public class UpgradingSample extends Application.LegacyApplication implements } // Update login status on application user change events + @Override public void applicationUserChanged(Application.UserChangeEvent event) { updateStatus(); } diff --git a/tests/testbench/com/vaadin/tests/UsingCustomNewItemHandlerInSelect.java b/tests/testbench/com/vaadin/tests/UsingCustomNewItemHandlerInSelect.java index 54a7d3d080..94635d17c4 100644 --- a/tests/testbench/com/vaadin/tests/UsingCustomNewItemHandlerInSelect.java +++ b/tests/testbench/com/vaadin/tests/UsingCustomNewItemHandlerInSelect.java @@ -51,6 +51,7 @@ public class UsingCustomNewItemHandlerInSelect extends CustomComponent { } public class MyNewItemHandler implements AbstractSelect.NewItemHandler { + @Override public void addNewItem(String newItemCaption) { // here could be db insert or other backend operation Integer id = new Integer(sequence++); diff --git a/tests/testbench/com/vaadin/tests/UsingObjectsInSelect.java b/tests/testbench/com/vaadin/tests/UsingObjectsInSelect.java index 13918ace90..db17148549 100644 --- a/tests/testbench/com/vaadin/tests/UsingObjectsInSelect.java +++ b/tests/testbench/com/vaadin/tests/UsingObjectsInSelect.java @@ -9,7 +9,7 @@ import java.util.Random; import com.vaadin.data.Property.ValueChangeEvent; import com.vaadin.data.Property.ValueChangeListener; -import com.vaadin.terminal.gwt.client.ui.label.ContentMode; +import com.vaadin.shared.ui.label.ContentMode; import com.vaadin.ui.Label; import com.vaadin.ui.Panel; import com.vaadin.ui.Root.LegacyWindow; @@ -60,6 +60,7 @@ public class UsingObjectsInSelect extends } } + @Override public void valueChange(ValueChangeEvent event) { final Task task = (Task) select.getValue(); selectedTask.setValue("<b>Type:</b> " + task.getType() diff --git a/tests/testbench/com/vaadin/tests/appengine/GAESyncTest.java b/tests/testbench/com/vaadin/tests/appengine/GAESyncTest.java index 58faec35f0..fbf9e7b46e 100644 --- a/tests/testbench/com/vaadin/tests/appengine/GAESyncTest.java +++ b/tests/testbench/com/vaadin/tests/appengine/GAESyncTest.java @@ -59,6 +59,7 @@ public class GAESyncTest extends Application.LegacyApplication { tf = new TextField("Echo thingie"); tf.setImmediate(true); tf.addListener(new Property.ValueChangeListener() { + @Override public void valueChange(ValueChangeEvent event) { IntrWindow.this.showNotification((String) event .getProperty().getValue()); @@ -73,6 +74,7 @@ public class GAESyncTest extends Application.LegacyApplication { { Button b = new Button("Slow", new Button.ClickListener() { + @Override public void buttonClick(ClickEvent event) { try { Thread.sleep(15000); @@ -89,6 +91,7 @@ public class GAESyncTest extends Application.LegacyApplication { { Button b = new Button("Add", new Button.ClickListener() { + @Override public void buttonClick(ClickEvent event) { if (getRoot() == getMainWindow()) { getRoot().getPage().showNotification( diff --git a/tests/testbench/com/vaadin/tests/application/ApplicationCloseTest.java b/tests/testbench/com/vaadin/tests/application/ApplicationCloseTest.java index ce41a895c4..cfbb4045a2 100644 --- a/tests/testbench/com/vaadin/tests/application/ApplicationCloseTest.java +++ b/tests/testbench/com/vaadin/tests/application/ApplicationCloseTest.java @@ -1,7 +1,7 @@ package com.vaadin.tests.application; import com.vaadin.Application; -import com.vaadin.terminal.gwt.client.ui.label.ContentMode; +import com.vaadin.shared.ui.label.ContentMode; import com.vaadin.terminal.gwt.server.WebApplicationContext; import com.vaadin.tests.components.TestBase; import com.vaadin.ui.Button; @@ -27,6 +27,7 @@ public class ApplicationCloseTest extends TestBase { Label thisApp = new Label("This applications: " + this); Button close = new Button("Close this", new Button.ClickListener() { + @Override public void buttonClick(ClickEvent event) { event.getButton().getApplication().close(); } diff --git a/tests/testbench/com/vaadin/tests/application/ErrorInUnloadEvent.java b/tests/testbench/com/vaadin/tests/application/ErrorInUnloadEvent.java index fcc4e26b55..690df3f360 100644 --- a/tests/testbench/com/vaadin/tests/application/ErrorInUnloadEvent.java +++ b/tests/testbench/com/vaadin/tests/application/ErrorInUnloadEvent.java @@ -50,6 +50,7 @@ public class ErrorInUnloadEvent extends AbstractTestCase { mainWindow.setContent(formLayout); login.addListener(new ClickListener() { + @Override public void buttonClick(final ClickEvent event) { String username = userField.getValue(); String password = passwordField.getValue(); @@ -81,6 +82,7 @@ public class ErrorInUnloadEvent extends AbstractTestCase { header.addComponent(title); Button logout = new Button("Logout"); logout.addListener(new ClickListener() { + @Override public void buttonClick(final ClickEvent event) { setUser(null); showLoginWindow(); diff --git a/tests/testbench/com/vaadin/tests/application/TerminalErrorNotification.java b/tests/testbench/com/vaadin/tests/application/TerminalErrorNotification.java index f2ae7a3891..4a029e3373 100644 --- a/tests/testbench/com/vaadin/tests/application/TerminalErrorNotification.java +++ b/tests/testbench/com/vaadin/tests/application/TerminalErrorNotification.java @@ -16,6 +16,7 @@ public class TerminalErrorNotification extends TestBase { Button button = new Button("Throw exception", new Button.ClickListener() { + @Override public void buttonClick(ClickEvent event) { throw new RuntimeException("You asked for it"); } diff --git a/tests/testbench/com/vaadin/tests/application/ThreadLocalInstances.java b/tests/testbench/com/vaadin/tests/application/ThreadLocalInstances.java index fd65adf209..def68a7357 100644 --- a/tests/testbench/com/vaadin/tests/application/ThreadLocalInstances.java +++ b/tests/testbench/com/vaadin/tests/application/ThreadLocalInstances.java @@ -61,6 +61,7 @@ public class ThreadLocalInstances extends AbstractTestApplication { mainWindow.addComponent(log); mainWindow.addComponent(new Embedded("Icon", resource)); mainWindow.addComponent(new Button("Sync", new Button.ClickListener() { + @Override public void buttonClick(ClickEvent event) { reportCurrentStatus("button listener"); } @@ -92,8 +93,7 @@ public class ThreadLocalInstances extends AbstractTestApplication { } private void reportCurrentStatus(String phase) { - reportStatus(phase, Application.getCurrent(), - Root.getCurrent()); + reportStatus(phase, Application.getCurrent(), Root.getCurrent()); } private void reportStatus(String phase, Application application, Root root) { diff --git a/tests/testbench/com/vaadin/tests/application/WebBrowserSizeTest.java b/tests/testbench/com/vaadin/tests/application/WebBrowserSizeTest.java index a3f11f2cd3..817acf20b5 100644 --- a/tests/testbench/com/vaadin/tests/application/WebBrowserSizeTest.java +++ b/tests/testbench/com/vaadin/tests/application/WebBrowserSizeTest.java @@ -18,6 +18,7 @@ public class WebBrowserSizeTest extends TestBase { final Button update = new Button("Refresh", new Button.ClickListener() { + @Override public void buttonClick(ClickEvent event) { screenSizeLabel.setValue(getBrowser().getScreenWidth() + " x " + getBrowser().getScreenHeight()); diff --git a/tests/testbench/com/vaadin/tests/application/WebBrowserTest.java b/tests/testbench/com/vaadin/tests/application/WebBrowserTest.java index 35235bbe1f..004c8f1c91 100644 --- a/tests/testbench/com/vaadin/tests/application/WebBrowserTest.java +++ b/tests/testbench/com/vaadin/tests/application/WebBrowserTest.java @@ -38,6 +38,7 @@ public class WebBrowserTest extends TestBase { final Button update = new Button("Get TimeZone from browser", new Button.ClickListener() { + @Override public void buttonClick(ClickEvent event) { TimeZone hkiTZ = TimeZone .getTimeZone("Europe/Helsinki"); diff --git a/tests/testbench/com/vaadin/tests/applicationcontext/ChangeSessionId.java b/tests/testbench/com/vaadin/tests/applicationcontext/ChangeSessionId.java index 17ac74e5a3..abcdf232cd 100644 --- a/tests/testbench/com/vaadin/tests/applicationcontext/ChangeSessionId.java +++ b/tests/testbench/com/vaadin/tests/applicationcontext/ChangeSessionId.java @@ -22,6 +22,7 @@ public class ChangeSessionId extends AbstractTestCase { mainWindow.addComponent(new Button("Show session id", new Button.ClickListener() { + @Override public void buttonClick(ClickEvent event) { logSessionId(); } @@ -29,6 +30,7 @@ public class ChangeSessionId extends AbstractTestCase { setMainWindow(mainWindow); loginButton.addListener(new ClickListener() { + @Override public void buttonClick(ClickEvent event) { WebApplicationContext context = ((WebApplicationContext) getContext()); diff --git a/tests/testbench/com/vaadin/tests/applicationcontext/RemoveTransactionListener.java b/tests/testbench/com/vaadin/tests/applicationcontext/RemoveTransactionListener.java index 8723e23a2a..f1730ed5f5 100644 --- a/tests/testbench/com/vaadin/tests/applicationcontext/RemoveTransactionListener.java +++ b/tests/testbench/com/vaadin/tests/applicationcontext/RemoveTransactionListener.java @@ -15,10 +15,12 @@ public class RemoveTransactionListener extends TestBase { // Add one listener that will remove itself from within transactionEnd getMainWindow().getApplication().getContext() .addTransactionListener(new TransactionListener() { + @Override public void transactionStart(Application application, Object transactionData) { } + @Override public void transactionEnd(Application application, Object transactionData) { removeListener(this); @@ -29,12 +31,14 @@ public class RemoveTransactionListener extends TestBase { // Add one listener that will remove itself from within transactionStart getMainWindow().getApplication().getContext() .addTransactionListener(new TransactionListener() { + @Override public void transactionStart(Application application, Object transactionData) { removeListener(this); log.log("Listener removed in transactionStart"); } + @Override public void transactionEnd(Application application, Object transactionData) { } @@ -45,11 +49,13 @@ public class RemoveTransactionListener extends TestBase { // ignored getMainWindow().getApplication().getContext() .addTransactionListener(new TransactionListener() { + @Override public void transactionStart(Application application, Object transactionData) { log.log("transactionStart from last listener"); } + @Override public void transactionEnd(Application application, Object transactionData) { log.log("transactionEnd from last listener"); diff --git a/tests/testbench/com/vaadin/tests/components/AbstractComponentContainerTest.java b/tests/testbench/com/vaadin/tests/components/AbstractComponentContainerTest.java index 6e9e4e8930..be3b7760f2 100644 --- a/tests/testbench/com/vaadin/tests/components/AbstractComponentContainerTest.java +++ b/tests/testbench/com/vaadin/tests/components/AbstractComponentContainerTest.java @@ -29,6 +29,7 @@ public abstract class AbstractComponentContainerTest<T extends AbstractComponent private String CATEGORY_COMPONENT_CONTAINER_FEATURES = "Component container features"; private Command<T, ComponentSize> addButtonCommand = new Command<T, ComponentSize>() { + @Override public void execute(T c, ComponentSize size, Object data) { Button b = new Button("A button"); c.addComponent(b); @@ -38,6 +39,7 @@ public abstract class AbstractComponentContainerTest<T extends AbstractComponent private Command<T, ComponentSize> addNativeButtonCommand = new Command<T, ComponentSize>() { + @Override public void execute(T c, ComponentSize size, Object data) { NativeButton b = new NativeButton("Native button"); c.addComponent(b); @@ -46,6 +48,7 @@ public abstract class AbstractComponentContainerTest<T extends AbstractComponent }; private Command<T, ComponentSize> addTextAreaCommand = new Command<T, ComponentSize>() { + @Override public void execute(T c, ComponentSize size, Object data) { TextArea ta = new TextArea(); c.addComponent(ta); @@ -54,6 +57,7 @@ public abstract class AbstractComponentContainerTest<T extends AbstractComponent }; private Command<T, ComponentSize> addRichTextAreaCommand = new Command<T, ComponentSize>() { + @Override public void execute(T c, ComponentSize size, Object data) { RichTextArea ta = new RichTextArea(); c.addComponent(ta); @@ -62,6 +66,7 @@ public abstract class AbstractComponentContainerTest<T extends AbstractComponent }; private Command<T, ComponentSize> addTextFieldCommand = new Command<T, ComponentSize>() { + @Override public void execute(T c, ComponentSize size, Object data) { TextField tf = new TextField(); c.addComponent(tf); @@ -70,6 +75,7 @@ public abstract class AbstractComponentContainerTest<T extends AbstractComponent }; private Command<T, ComponentSize> addInlineDateFieldCommand = new Command<T, ComponentSize>() { + @Override public void execute(T c, ComponentSize size, Object data) { InlineDateField tf = new InlineDateField(); c.addComponent(tf); @@ -77,6 +83,7 @@ public abstract class AbstractComponentContainerTest<T extends AbstractComponent } }; private Command<T, ComponentSize> addPopupDateFieldCommand = new Command<T, ComponentSize>() { + @Override public void execute(T c, ComponentSize size, Object data) { PopupDateField tf = new PopupDateField(); c.addComponent(tf); @@ -85,6 +92,7 @@ public abstract class AbstractComponentContainerTest<T extends AbstractComponent }; private Command<T, ComponentSize> addVerticalSplitPanelCommand = new Command<T, ComponentSize>() { + @Override public void execute(T c, ComponentSize size, Object data) { VerticalSplitPanel vsp = new VerticalSplitPanel(); c.addComponent(vsp); @@ -93,6 +101,7 @@ public abstract class AbstractComponentContainerTest<T extends AbstractComponent }; private Command<T, ComponentSize> addHorizontalSplitPanelCommand = new Command<T, ComponentSize>() { + @Override public void execute(T c, ComponentSize size, Object data) { HorizontalSplitPanel vsp = new HorizontalSplitPanel(); c.addComponent(vsp); @@ -101,6 +110,7 @@ public abstract class AbstractComponentContainerTest<T extends AbstractComponent }; private Command<T, ComponentSize> addTabSheetCommand = new Command<T, ComponentSize>() { + @Override public void execute(T c, ComponentSize size, Object data) { TabSheet ts = createTabSheet(); c.addComponent(ts); @@ -110,6 +120,7 @@ public abstract class AbstractComponentContainerTest<T extends AbstractComponent private Command<T, ComponentSize> addTableCommand = new Command<T, ComponentSize>() { + @Override public void execute(T c, ComponentSize size, Object data) { Table t = createTable(); c.addComponent(t); @@ -117,12 +128,14 @@ public abstract class AbstractComponentContainerTest<T extends AbstractComponent } }; private Command<T, Object> removeAllComponentsCommand = new Command<T, Object>() { + @Override public void execute(T c, Object value, Object data) { c.removeAllComponents(); } }; private Command<T, Integer> removeComponentByIndexCommand = new Command<T, Integer>() { + @Override public void execute(T c, Integer value, Object data) { Component child = getComponentAtIndex(c, value); c.removeComponent(child); @@ -131,6 +144,7 @@ public abstract class AbstractComponentContainerTest<T extends AbstractComponent }; private Command<T, Boolean> componentAttachListenerCommand = new Command<T, Boolean>() { + @Override public void execute(T c, Boolean value, Object data) { if (value) { c.addListener((ComponentAttachListener) AbstractComponentContainerTest.this); @@ -142,6 +156,7 @@ public abstract class AbstractComponentContainerTest<T extends AbstractComponent private Command<T, Boolean> componentDetachListenerCommand = new Command<T, Boolean>() { + @Override public void execute(T c, Boolean value, Object data) { if (value) { c.addListener((ComponentDetachListener) AbstractComponentContainerTest.this); @@ -153,6 +168,7 @@ public abstract class AbstractComponentContainerTest<T extends AbstractComponent private Command<T, Integer> setComponentHeight = new Command<T, Integer>() { + @Override public void execute(T c, Integer value, Object data) { Component child = getComponentAtIndex(c, value); child.setHeight((String) data); @@ -162,6 +178,7 @@ public abstract class AbstractComponentContainerTest<T extends AbstractComponent private Command<T, Integer> setComponentWidth = new Command<T, Integer>() { + @Override public void execute(T c, Integer value, Object data) { Component child = getComponentAtIndex(c, value); child.setWidth((String) data); @@ -348,6 +365,7 @@ public abstract class AbstractComponentContainerTest<T extends AbstractComponent } + @Override public void componentDetachedFromContainer(ComponentDetachEvent event) { log(event.getClass().getSimpleName() + ": " + event.getDetachedComponent().getClass().getSimpleName() @@ -355,6 +373,7 @@ public abstract class AbstractComponentContainerTest<T extends AbstractComponent + event.getContainer().getClass().getSimpleName()); } + @Override public void componentAttachedToContainer(ComponentAttachEvent event) { log(event.getClass().getSimpleName() + ": " + event.getAttachedComponent().getClass().getSimpleName() diff --git a/tests/testbench/com/vaadin/tests/components/AbstractComponentTest.java b/tests/testbench/com/vaadin/tests/components/AbstractComponentTest.java index 60ce941565..38bba7721c 100644 --- a/tests/testbench/com/vaadin/tests/components/AbstractComponentTest.java +++ b/tests/testbench/com/vaadin/tests/components/AbstractComponentTest.java @@ -120,6 +120,7 @@ public abstract class AbstractComponentTest<T extends AbstractComponent> MenuItem showEventLog = settingsMenu.addItem("Show event log", new MenuBar.Command() { + @Override public void menuSelected(MenuItem selectedItem) { boolean selected = !isSelected(selectedItem); setLogVisible(selected); @@ -131,6 +132,7 @@ public abstract class AbstractComponentTest<T extends AbstractComponent> settingsMenu.addItem("Clear log", new MenuBar.Command() { + @Override public void menuSelected(MenuItem selectedItem) { log.clear(); } @@ -140,6 +142,7 @@ public abstract class AbstractComponentTest<T extends AbstractComponent> MenuItem layoutHeight = layoutSize.addItem("Height", null); for (final String name : sizeOptions.keySet()) { layoutWidth.addItem(name, new MenuBar.Command() { + @Override public void menuSelected(MenuItem selectedItem) { getTestComponents().get(0).getParent() .setWidth(sizeOptions.get(name)); @@ -147,6 +150,7 @@ public abstract class AbstractComponentTest<T extends AbstractComponent> } }); layoutHeight.addItem(name, new MenuBar.Command() { + @Override public void menuSelected(MenuItem selectedItem) { getTestComponents().get(0).getParent() .setHeight(sizeOptions.get(name)); @@ -243,6 +247,7 @@ public abstract class AbstractComponentTest<T extends AbstractComponent> protected Command<T, Boolean> focusListenerCommand = new Command<T, Boolean>() { + @Override public void execute(T c, Boolean value, Object data) { if (value) { ((FocusNotifier) c).addListener(AbstractComponentTest.this); @@ -253,6 +258,7 @@ public abstract class AbstractComponentTest<T extends AbstractComponent> }; protected Command<T, Boolean> blurListenerCommand = new Command<T, Boolean>() { + @Override public void execute(T c, Boolean value, Object data) { if (value) { ((BlurNotifier) c).addListener(AbstractComponentTest.this); @@ -469,6 +475,7 @@ public abstract class AbstractComponentTest<T extends AbstractComponent> final Object data) { return new MenuBar.Command() { + @Override public void menuSelected(MenuItem selectedItem) { boolean selected = !isSelected(selectedItem); doCommand(getText(selectedItem), booleanCommand, selected, data); @@ -483,6 +490,7 @@ public abstract class AbstractComponentTest<T extends AbstractComponent> final DATATYPE value, final Object data) { return new MenuBar.Command() { + @Override public void menuSelected(MenuItem selectedItem) { doCommand(getText(selectedItem), command, value, data); } @@ -506,6 +514,7 @@ public abstract class AbstractComponentTest<T extends AbstractComponent> final com.vaadin.tests.components.ComponentTestCase.Command<T, VALUETYPE> cmd, final VALUETYPE object, final Object data) { return new MenuBar.Command() { + @Override public void menuSelected(MenuItem selectedItem) { doCommand(getText(selectedItem), cmd, object, data); @@ -722,10 +731,12 @@ public abstract class AbstractComponentTest<T extends AbstractComponent> } + @Override public void focus(FocusEvent event) { log(event.getClass().getSimpleName()); } + @Override public void blur(BlurEvent event) { log(event.getClass().getSimpleName()); } diff --git a/tests/testbench/com/vaadin/tests/components/AbstractComponentTestCase.java b/tests/testbench/com/vaadin/tests/components/AbstractComponentTestCase.java index 57a32aafc4..d8ae43fd6d 100644 --- a/tests/testbench/com/vaadin/tests/components/AbstractComponentTestCase.java +++ b/tests/testbench/com/vaadin/tests/components/AbstractComponentTestCase.java @@ -71,12 +71,14 @@ public abstract class AbstractComponentTestCase<T extends AbstractComponent> protected Command<T, String> widthCommand = new Command<T, String>() { + @Override public void execute(T t, String value, Object data) { t.setWidth(value); } }; protected Command<T, String> heightCommand = new Command<T, String>() { + @Override public void execute(T t, String value, Object data) { t.setHeight(value); } @@ -84,6 +86,7 @@ public abstract class AbstractComponentTestCase<T extends AbstractComponent> protected Command<T, Boolean> enabledCommand = new Command<T, Boolean>() { + @Override public void execute(T c, Boolean enabled, Object data) { c.setEnabled(enabled); } @@ -91,6 +94,7 @@ public abstract class AbstractComponentTestCase<T extends AbstractComponent> protected Command<T, Boolean> immediateCommand = new Command<T, Boolean>() { + @Override public void execute(T c, Boolean immediate, Object data) { c.setImmediate(immediate); } @@ -98,6 +102,7 @@ public abstract class AbstractComponentTestCase<T extends AbstractComponent> protected Command<T, Boolean> errorIndicatorCommand = new Command<T, Boolean>() { + @Override public void execute(T c, Boolean enabled, Object data) { if (enabled) { c.setComponentError(new UserError(errorMessage)); @@ -111,6 +116,7 @@ public abstract class AbstractComponentTestCase<T extends AbstractComponent> protected Command<T, String> errorMessageCommand = new Command<T, String>() { + @Override public void execute(T c, String value, Object data) { errorMessage = value; if (c.getComponentError() != null) { @@ -124,6 +130,7 @@ public abstract class AbstractComponentTestCase<T extends AbstractComponent> // TODO Move to AbstractFieldTestCase protected Command<T, Boolean> requiredCommand = new Command<T, Boolean>() { + @Override public void execute(T c, Boolean enabled, Object data) { if (c instanceof Field) { ((Field<?>) c).setRequired(enabled); @@ -135,6 +142,7 @@ public abstract class AbstractComponentTestCase<T extends AbstractComponent> }; protected Command<T, String> requiredErrorMessageCommand = new Command<T, String>() { + @Override public void execute(T c, String value, Object data) { ((Field<?>) c).setRequiredError(value); } @@ -142,6 +150,7 @@ public abstract class AbstractComponentTestCase<T extends AbstractComponent> }; protected Command<T, String> descriptionCommand = new Command<T, String>() { + @Override public void execute(T c, String value, Object data) { c.setDescription(value); } @@ -149,6 +158,7 @@ public abstract class AbstractComponentTestCase<T extends AbstractComponent> protected Command<T, Boolean> readonlyCommand = new Command<T, Boolean>() { + @Override public void execute(T c, Boolean enabled, Object data) { c.setReadOnly(enabled); } @@ -156,6 +166,7 @@ public abstract class AbstractComponentTestCase<T extends AbstractComponent> protected Command<T, Boolean> visibleCommand = new Command<T, Boolean>() { + @Override public void execute(T c, Boolean enabled, Object data) { c.setVisible(enabled); } @@ -163,6 +174,7 @@ public abstract class AbstractComponentTestCase<T extends AbstractComponent> protected Command<T, Resource> iconCommand = new Command<T, Resource>() { + @Override public void execute(T c, Resource value, Object data) { c.setIcon(value); } @@ -170,6 +182,7 @@ public abstract class AbstractComponentTestCase<T extends AbstractComponent> }; protected Command<T, String> captionCommand = new Command<T, String>() { + @Override public void execute(T c, String value, Object data) { c.setCaption(value); } @@ -178,6 +191,7 @@ public abstract class AbstractComponentTestCase<T extends AbstractComponent> protected Command<T, Locale> localeCommand = new Command<T, Locale>() { + @Override public void execute(T c, Locale value, Object data) { c.setLocale(value); } @@ -206,6 +220,7 @@ public abstract class AbstractComponentTestCase<T extends AbstractComponent> } protected Command<T, String> styleNameCommand = new Command<T, String>() { + @Override public void execute(T c, String value, Object data) { c.setStyleName(value); } diff --git a/tests/testbench/com/vaadin/tests/components/AbstractLayoutTest.java b/tests/testbench/com/vaadin/tests/components/AbstractLayoutTest.java index 5c25359e28..af62e5e4a4 100644 --- a/tests/testbench/com/vaadin/tests/components/AbstractLayoutTest.java +++ b/tests/testbench/com/vaadin/tests/components/AbstractLayoutTest.java @@ -15,6 +15,7 @@ public abstract class AbstractLayoutTest<T extends AbstractLayout> extends protected static final String CATEGORY_LAYOUT_FEATURES = "Layout features"; private Command<T, MarginInfo> marginCommand = new Command<T, MarginInfo>() { + @Override public void execute(T c, MarginInfo value, Object data) { c.setMargin(value); @@ -22,6 +23,7 @@ public abstract class AbstractLayoutTest<T extends AbstractLayout> extends }; protected Command<T, Boolean> spacingCommand = new Command<T, Boolean>() { + @Override public void execute(T c, Boolean value, Object data) { ((SpacingHandler) c).setSpacing(value); } @@ -29,6 +31,7 @@ public abstract class AbstractLayoutTest<T extends AbstractLayout> extends private Command<T, Integer> setComponentAlignment = new Command<T, Integer>() { + @Override public void execute(T c, Integer value, Object alignment) { Component child = getComponentAtIndex(c, value); ((AlignmentHandler) c).setComponentAlignment(child, diff --git a/tests/testbench/com/vaadin/tests/components/AbstractOrderedLayoutTest.java b/tests/testbench/com/vaadin/tests/components/AbstractOrderedLayoutTest.java index fd323d2156..1d18cba952 100644 --- a/tests/testbench/com/vaadin/tests/components/AbstractOrderedLayoutTest.java +++ b/tests/testbench/com/vaadin/tests/components/AbstractOrderedLayoutTest.java @@ -12,6 +12,7 @@ public abstract class AbstractOrderedLayoutTest<T extends AbstractOrderedLayout> private Command<T, Boolean> layoutClickListenerCommand = new Command<T, Boolean>() { + @Override public void execute(T c, Boolean value, Object data) { if (value) { c.addListener((LayoutClickListener) AbstractOrderedLayoutTest.this); @@ -24,6 +25,7 @@ public abstract class AbstractOrderedLayoutTest<T extends AbstractOrderedLayout> private Command<T, Integer> setComponentExpandRatio = new Command<T, Integer>() { + @Override public void execute(T c, Integer value, Object ratio) { Component child = getComponentAtIndex(c, value); c.setExpandRatio(child, (Float) ratio); @@ -74,6 +76,7 @@ public abstract class AbstractOrderedLayoutTest<T extends AbstractOrderedLayout> } + @Override public void layoutClick(LayoutClickEvent event) { log(event.getClass().getSimpleName() + ": button=" + event.getButtonName() + ", childComponent=" diff --git a/tests/testbench/com/vaadin/tests/components/AbstractTestRoot.java b/tests/testbench/com/vaadin/tests/components/AbstractTestRoot.java index 875d2b1df8..d20f7a4a21 100644 --- a/tests/testbench/com/vaadin/tests/components/AbstractTestRoot.java +++ b/tests/testbench/com/vaadin/tests/components/AbstractTestRoot.java @@ -2,8 +2,8 @@ package com.vaadin.tests.components; import com.vaadin.Application; import com.vaadin.service.ApplicationContext; +import com.vaadin.shared.ui.label.ContentMode; import com.vaadin.terminal.WrappedRequest; -import com.vaadin.terminal.gwt.client.ui.label.ContentMode; import com.vaadin.terminal.gwt.server.AbstractWebApplicationContext; import com.vaadin.terminal.gwt.server.WebBrowser; import com.vaadin.ui.Component; @@ -57,8 +57,7 @@ public abstract class AbstractTestRoot extends Root { protected abstract Integer getTicketNumber(); protected WebBrowser getBrowser() { - ApplicationContext context = Application.getCurrent() - .getContext(); + ApplicationContext context = Application.getCurrent().getContext(); if (context instanceof AbstractWebApplicationContext) { AbstractWebApplicationContext webContext = (AbstractWebApplicationContext) context; return webContext.getBrowser(); diff --git a/tests/testbench/com/vaadin/tests/components/AddRemoveSetStyleNamesTest.html b/tests/testbench/com/vaadin/tests/components/AddRemoveSetStyleNamesTest.html new file mode 100644 index 0000000000..512140cc6d --- /dev/null +++ b/tests/testbench/com/vaadin/tests/components/AddRemoveSetStyleNamesTest.html @@ -0,0 +1,456 @@ +<?xml version="1.0" encoding="UTF-8"?> +<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd"> +<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en" lang="en"> +<head profile="http://selenium-ide.openqa.org/profiles/test-case"> +<meta http-equiv="Content-Type" content="text/html; charset=UTF-8" /> +<link rel="selenium.base" href="http://localhost:8888/" /> +<title>AddRemoveSetStyleNamesTest</title> +</head> +<body> +<table cellpadding="1" cellspacing="1" border="1"> +<thead> +<tr><td rowspan="1" colspan="3">AddRemoveSetStyleNamesTest</td></tr> +</thead><tbody> +<tr> + <td>open</td> + <td>run/com.vaadin.tests.components.AddRemoveSetStyleNamesTest?restartApplication</td> + <td></td> +</tr> +<!--add style 1. assert style1--> +<tr> + <td>mouseClick</td> + <td>vaadin=runcomvaadintestscomponentsAddRemoveSetStyleNamesTest::/VVerticalLayout[0]/VVerticalLayout[0]/VButton[0]/domChild[0]/domChild[0]</td> + <td></td> +</tr> +<tr> + <td>assertCSSClass</td> + <td>vaadin=runcomvaadintestscomponentsAddRemoveSetStyleNamesTest::/VVerticalLayout[0]/VVerticalLayout[0]/VPopupCalendar[0]</td> + <td>v-datefield-style1</td> +</tr> +<tr> + <td>assertCSSClass</td> + <td>vaadin=runcomvaadintestscomponentsAddRemoveSetStyleNamesTest::/VVerticalLayout[0]/VVerticalLayout[0]/VPopupCalendar[0]</td> + <td>style1</td> +</tr> +<tr> + <td>mouseClick</td> + <td>vaadin=runcomvaadintestscomponentsAddRemoveSetStyleNamesTest::/VVerticalLayout[0]/VVerticalLayout[0]/VPopupCalendar[0]#popupButton</td> + <td></td> +</tr> +<tr> + <td>assertCSSClass</td> + <td>vaadin=runcomvaadintestscomponentsAddRemoveSetStyleNamesTest::Root/VOverlay[0]</td> + <td>v-datefield-popup-style1</td> +</tr> +<tr> + <td>assertCSSClass</td> + <td>vaadin=runcomvaadintestscomponentsAddRemoveSetStyleNamesTest::Root/VOverlay[0]</td> + <td>style1</td> +</tr> +<!--add style 2. assert style1, style2--> +<tr> + <td>mouseClick</td> + <td>vaadin=runcomvaadintestscomponentsAddRemoveSetStyleNamesTest::/VVerticalLayout[0]/VVerticalLayout[0]/VButton[1]/domChild[0]/domChild[0]</td> + <td></td> +</tr> +<tr> + <td>assertCSSClass</td> + <td>vaadin=runcomvaadintestscomponentsAddRemoveSetStyleNamesTest::/VVerticalLayout[0]/VVerticalLayout[0]/VPopupCalendar[0]</td> + <td>v-datefield-style1</td> +</tr> +<tr> + <td>assertCSSClass</td> + <td>vaadin=runcomvaadintestscomponentsAddRemoveSetStyleNamesTest::/VVerticalLayout[0]/VVerticalLayout[0]/VPopupCalendar[0]</td> + <td>style1</td> +</tr> +<tr> + <td>assertCSSClass</td> + <td>vaadin=runcomvaadintestscomponentsAddRemoveSetStyleNamesTest::/VVerticalLayout[0]/VVerticalLayout[0]/VPopupCalendar[0]</td> + <td>v-datefield-style2</td> +</tr> +<tr> + <td>assertCSSClass</td> + <td>vaadin=runcomvaadintestscomponentsAddRemoveSetStyleNamesTest::/VVerticalLayout[0]/VVerticalLayout[0]/VPopupCalendar[0]</td> + <td>style2</td> +</tr> +<tr> + <td>mouseClick</td> + <td>vaadin=runcomvaadintestscomponentsAddRemoveSetStyleNamesTest::/VVerticalLayout[0]/VVerticalLayout[0]/VPopupCalendar[0]#popupButton</td> + <td></td> +</tr> +<tr> + <td>assertCSSClass</td> + <td>vaadin=runcomvaadintestscomponentsAddRemoveSetStyleNamesTest::Root/VOverlay[0]</td> + <td>v-datefield-popup-style1</td> +</tr> +<tr> + <td>assertCSSClass</td> + <td>vaadin=runcomvaadintestscomponentsAddRemoveSetStyleNamesTest::Root/VOverlay[0]</td> + <td>style1</td> +</tr> +<tr> + <td>assertCSSClass</td> + <td>vaadin=runcomvaadintestscomponentsAddRemoveSetStyleNamesTest::Root/VOverlay[0]</td> + <td>v-datefield-popup-style2</td> +</tr> +<tr> + <td>assertCSSClass</td> + <td>vaadin=runcomvaadintestscomponentsAddRemoveSetStyleNamesTest::Root/VOverlay[0]</td> + <td>style2</td> +</tr> +<!--remove style 1. assertNot style1. assert style2--> +<tr> + <td>mouseClick</td> + <td>vaadin=runcomvaadintestscomponentsAddRemoveSetStyleNamesTest::/VVerticalLayout[0]/VVerticalLayout[0]/VButton[0]/domChild[0]/domChild[0]</td> + <td></td> +</tr> +<tr> + <td>assertNotCSSClass</td> + <td>vaadin=runcomvaadintestscomponentsAddRemoveSetStyleNamesTest::/VVerticalLayout[0]/VVerticalLayout[0]/VPopupCalendar[0]</td> + <td>v-datefield-style1</td> +</tr> +<tr> + <td>assertNotCSSClass</td> + <td>vaadin=runcomvaadintestscomponentsAddRemoveSetStyleNamesTest::/VVerticalLayout[0]/VVerticalLayout[0]/VPopupCalendar[0]</td> + <td>style1</td> +</tr> +<tr> + <td>assertCSSClass</td> + <td>vaadin=runcomvaadintestscomponentsAddRemoveSetStyleNamesTest::/VVerticalLayout[0]/VVerticalLayout[0]/VPopupCalendar[0]</td> + <td>v-datefield-style2</td> +</tr> +<tr> + <td>assertCSSClass</td> + <td>vaadin=runcomvaadintestscomponentsAddRemoveSetStyleNamesTest::/VVerticalLayout[0]/VVerticalLayout[0]/VPopupCalendar[0]</td> + <td>style2</td> +</tr> +<tr> + <td>mouseClick</td> + <td>vaadin=runcomvaadintestscomponentsAddRemoveSetStyleNamesTest::/VVerticalLayout[0]/VVerticalLayout[0]/VPopupCalendar[0]#popupButton</td> + <td></td> +</tr> +<tr> + <td>assertNotCSSClass</td> + <td>vaadin=runcomvaadintestscomponentsAddRemoveSetStyleNamesTest::Root/VOverlay[0]</td> + <td>v-datefield-popup-style1</td> +</tr> +<tr> + <td>assertNotCSSClass</td> + <td>vaadin=runcomvaadintestscomponentsAddRemoveSetStyleNamesTest::Root/VOverlay[0]</td> + <td>style1</td> +</tr> +<tr> + <td>assertCSSClass</td> + <td>vaadin=runcomvaadintestscomponentsAddRemoveSetStyleNamesTest::Root/VOverlay[0]</td> + <td>v-datefield-popup-style2</td> +</tr> +<tr> + <td>assertCSSClass</td> + <td>vaadin=runcomvaadintestscomponentsAddRemoveSetStyleNamesTest::Root/VOverlay[0]</td> + <td>style2</td> +</tr> +<!--remove style 2. assertNot style1, style2--> +<tr> + <td>mouseClick</td> + <td>vaadin=runcomvaadintestscomponentsAddRemoveSetStyleNamesTest::/VVerticalLayout[0]/VVerticalLayout[0]/VButton[1]/domChild[0]/domChild[0]</td> + <td></td> +</tr> +<tr> + <td>assertNotCSSClass</td> + <td>vaadin=runcomvaadintestscomponentsAddRemoveSetStyleNamesTest::/VVerticalLayout[0]/VVerticalLayout[0]/VPopupCalendar[0]</td> + <td>v-datefield-style1</td> +</tr> +<tr> + <td>assertNotCSSClass</td> + <td>vaadin=runcomvaadintestscomponentsAddRemoveSetStyleNamesTest::/VVerticalLayout[0]/VVerticalLayout[0]/VPopupCalendar[0]</td> + <td>style1</td> +</tr> +<tr> + <td>assertNotCSSClass</td> + <td>vaadin=runcomvaadintestscomponentsAddRemoveSetStyleNamesTest::/VVerticalLayout[0]/VVerticalLayout[0]/VPopupCalendar[0]</td> + <td>v-datefield-style2</td> +</tr> +<tr> + <td>assertNotCSSClass</td> + <td>vaadin=runcomvaadintestscomponentsAddRemoveSetStyleNamesTest::/VVerticalLayout[0]/VVerticalLayout[0]/VPopupCalendar[0]</td> + <td>style2</td> +</tr> +<tr> + <td>mouseClick</td> + <td>vaadin=runcomvaadintestscomponentsAddRemoveSetStyleNamesTest::/VVerticalLayout[0]/VVerticalLayout[0]/VPopupCalendar[0]#popupButton</td> + <td></td> +</tr> +<tr> + <td>assertNotCSSClass</td> + <td>vaadin=runcomvaadintestscomponentsAddRemoveSetStyleNamesTest::Root/VOverlay[0]</td> + <td>v-datefield-popup-style1</td> +</tr> +<tr> + <td>assertNotCSSClass</td> + <td>vaadin=runcomvaadintestscomponentsAddRemoveSetStyleNamesTest::Root/VOverlay[0]</td> + <td>style1</td> +</tr> +<tr> + <td>assertNotCSSClass</td> + <td>vaadin=runcomvaadintestscomponentsAddRemoveSetStyleNamesTest::Root/VOverlay[0]</td> + <td>v-datefield-popup-style2</td> +</tr> +<tr> + <td>assertNotCSSClass</td> + <td>vaadin=runcomvaadintestscomponentsAddRemoveSetStyleNamesTest::Root/VOverlay[0]</td> + <td>style2</td> +</tr> +<!--add style1. set thestyle. assertNot style1. assert thestyle.--> +<tr> + <td>mouseClick</td> + <td>vaadin=runcomvaadintestscomponentsAddRemoveSetStyleNamesTest::/VVerticalLayout[0]/VVerticalLayout[0]/VButton[0]/domChild[0]/domChild[0]</td> + <td></td> +</tr> +<tr> + <td>mouseClick</td> + <td>vaadin=runcomvaadintestscomponentsAddRemoveSetStyleNamesTest::/VVerticalLayout[0]/VVerticalLayout[0]/VButton[2]/domChild[0]/domChild[0]</td> + <td></td> +</tr> +<tr> + <td>assertNotCSSClass</td> + <td>vaadin=runcomvaadintestscomponentsAddRemoveSetStyleNamesTest::/VVerticalLayout[0]/VVerticalLayout[0]/VPopupCalendar[0]</td> + <td>v-datefield-style1</td> +</tr> +<tr> + <td>assertNotCSSClass</td> + <td>vaadin=runcomvaadintestscomponentsAddRemoveSetStyleNamesTest::/VVerticalLayout[0]/VVerticalLayout[0]/VPopupCalendar[0]</td> + <td>style1</td> +</tr> +<tr> + <td>assertCSSClass</td> + <td>vaadin=runcomvaadintestscomponentsAddRemoveSetStyleNamesTest::/VVerticalLayout[0]/VVerticalLayout[0]/VPopupCalendar[0]</td> + <td>thestyle</td> +</tr> +<tr> + <td>assertCSSClass</td> + <td>vaadin=runcomvaadintestscomponentsAddRemoveSetStyleNamesTest::/VVerticalLayout[0]/VVerticalLayout[0]/VPopupCalendar[0]</td> + <td>v-datefield-thestyle</td> +</tr> +<tr> + <td>mouseClick</td> + <td>vaadin=runcomvaadintestscomponentsAddRemoveSetStyleNamesTest::/VVerticalLayout[0]/VVerticalLayout[0]/VPopupCalendar[0]#popupButton</td> + <td></td> +</tr> +<tr> + <td>assertNotCSSClass</td> + <td>vaadin=runcomvaadintestscomponentsAddRemoveSetStyleNamesTest::Root/VOverlay[0]</td> + <td>v-datefield-popup-style1</td> +</tr> +<tr> + <td>assertNotCSSClass</td> + <td>vaadin=runcomvaadintestscomponentsAddRemoveSetStyleNamesTest::Root/VOverlay[0]</td> + <td>style1</td> +</tr> +<tr> + <td>assertCSSClass</td> + <td>vaadin=runcomvaadintestscomponentsAddRemoveSetStyleNamesTest::Root/VOverlay[0]</td> + <td>v-datefield-popup-thestyle</td> +</tr> +<tr> + <td>assertCSSClass</td> + <td>vaadin=runcomvaadintestscomponentsAddRemoveSetStyleNamesTest::Root/VOverlay[0]</td> + <td>thestyle</td> +</tr> +<!--remove thestyle. assertNot thestyle--> +<tr> + <td>mouseClick</td> + <td>vaadin=runcomvaadintestscomponentsAddRemoveSetStyleNamesTest::/VVerticalLayout[0]/VVerticalLayout[0]/VButton[2]/domChild[0]/domChild[0]</td> + <td></td> +</tr> +<tr> + <td>assertNotCSSClass</td> + <td>vaadin=runcomvaadintestscomponentsAddRemoveSetStyleNamesTest::/VVerticalLayout[0]/VVerticalLayout[0]/VPopupCalendar[0]</td> + <td>thestyle</td> +</tr> +<tr> + <td>assertNotCSSClass</td> + <td>vaadin=runcomvaadintestscomponentsAddRemoveSetStyleNamesTest::/VVerticalLayout[0]/VVerticalLayout[0]/VPopupCalendar[0]</td> + <td>v-datefield-thestyle</td> +</tr> +<tr> + <td>mouseClick</td> + <td>vaadin=runcomvaadintestscomponentsAddRemoveSetStyleNamesTest::/VVerticalLayout[0]/VVerticalLayout[0]/VPopupCalendar[0]#popupButton</td> + <td></td> +</tr> +<tr> + <td>assertNotCSSClass</td> + <td>vaadin=runcomvaadintestscomponentsAddRemoveSetStyleNamesTest::Root/VOverlay[0]</td> + <td>v-datefield-popup-thestyle</td> +</tr> +<tr> + <td>assertNotCSSClass</td> + <td>vaadin=runcomvaadintestscomponentsAddRemoveSetStyleNamesTest::Root/VOverlay[0]</td> + <td>thestyle</td> +</tr> +<!--set thestyle. add style1. assert thestyle, style1--> +<tr> + <td>mouseClick</td> + <td>vaadin=runcomvaadintestscomponentsAddRemoveSetStyleNamesTest::/VVerticalLayout[0]/VVerticalLayout[0]/VButton[2]/domChild[0]/domChild[0]</td> + <td></td> +</tr> +<tr> + <td>mouseClick</td> + <td>vaadin=runcomvaadintestscomponentsAddRemoveSetStyleNamesTest::/VVerticalLayout[0]/VVerticalLayout[0]/VButton[0]/domChild[0]/domChild[0]</td> + <td></td> +</tr> +<tr> + <td>assertCSSClass</td> + <td>vaadin=runcomvaadintestscomponentsAddRemoveSetStyleNamesTest::/VVerticalLayout[0]/VVerticalLayout[0]/VPopupCalendar[0]</td> + <td>thestyle</td> +</tr> +<tr> + <td>assertCSSClass</td> + <td>vaadin=runcomvaadintestscomponentsAddRemoveSetStyleNamesTest::/VVerticalLayout[0]/VVerticalLayout[0]/VPopupCalendar[0]</td> + <td>v-datefield-thestyle</td> +</tr> +<tr> + <td>assertCSSClass</td> + <td>vaadin=runcomvaadintestscomponentsAddRemoveSetStyleNamesTest::/VVerticalLayout[0]/VVerticalLayout[0]/VPopupCalendar[0]</td> + <td>v-datefield-style1</td> +</tr> +<tr> + <td>assertCSSClass</td> + <td>vaadin=runcomvaadintestscomponentsAddRemoveSetStyleNamesTest::/VVerticalLayout[0]/VVerticalLayout[0]/VPopupCalendar[0]</td> + <td>style1</td> +</tr> +<tr> + <td>mouseClick</td> + <td>vaadin=runcomvaadintestscomponentsAddRemoveSetStyleNamesTest::/VVerticalLayout[0]/VVerticalLayout[0]/VPopupCalendar[0]#popupButton</td> + <td></td> +</tr> +<tr> + <td>assertCSSClass</td> + <td>vaadin=runcomvaadintestscomponentsAddRemoveSetStyleNamesTest::Root/VOverlay[0]</td> + <td>v-datefield-popup-style1</td> +</tr> +<tr> + <td>assertCSSClass</td> + <td>vaadin=runcomvaadintestscomponentsAddRemoveSetStyleNamesTest::Root/VOverlay[0]</td> + <td>style1</td> +</tr> +<tr> + <td>assertCSSClass</td> + <td>vaadin=runcomvaadintestscomponentsAddRemoveSetStyleNamesTest::Root/VOverlay[0]</td> + <td>v-datefield-popup-thestyle</td> +</tr> +<tr> + <td>assertCSSClass</td> + <td>vaadin=runcomvaadintestscomponentsAddRemoveSetStyleNamesTest::Root/VOverlay[0]</td> + <td>thestyle</td> +</tr> +<!--remove style 1. assertNot style1. assert thestyle--> +<tr> + <td>mouseClick</td> + <td>vaadin=runcomvaadintestscomponentsAddRemoveSetStyleNamesTest::/VVerticalLayout[0]/VVerticalLayout[0]/VButton[0]/domChild[0]/domChild[0]</td> + <td></td> +</tr> +<tr> + <td>assertNotCSSClass</td> + <td>vaadin=runcomvaadintestscomponentsAddRemoveSetStyleNamesTest::/VVerticalLayout[0]/VVerticalLayout[0]/VPopupCalendar[0]</td> + <td>v-datefield-style1</td> +</tr> +<tr> + <td>assertNotCSSClass</td> + <td>vaadin=runcomvaadintestscomponentsAddRemoveSetStyleNamesTest::/VVerticalLayout[0]/VVerticalLayout[0]/VPopupCalendar[0]</td> + <td>style1</td> +</tr> +<tr> + <td>assertCSSClass</td> + <td>vaadin=runcomvaadintestscomponentsAddRemoveSetStyleNamesTest::/VVerticalLayout[0]/VVerticalLayout[0]/VPopupCalendar[0]</td> + <td>v-datefield-thestyle</td> +</tr> +<tr> + <td>assertCSSClass</td> + <td>vaadin=runcomvaadintestscomponentsAddRemoveSetStyleNamesTest::/VVerticalLayout[0]/VVerticalLayout[0]/VPopupCalendar[0]</td> + <td>thestyle</td> +</tr> +<tr> + <td>mouseClick</td> + <td>vaadin=runcomvaadintestscomponentsAddRemoveSetStyleNamesTest::/VVerticalLayout[0]/VVerticalLayout[0]/VPopupCalendar[0]#popupButton</td> + <td></td> +</tr> +<tr> + <td>assertNotCSSClass</td> + <td>vaadin=runcomvaadintestscomponentsAddRemoveSetStyleNamesTest::Root/VOverlay[0]</td> + <td>v-datefield-popup-style1</td> +</tr> +<tr> + <td>assertNotCSSClass</td> + <td>vaadin=runcomvaadintestscomponentsAddRemoveSetStyleNamesTest::Root/VOverlay[0]</td> + <td>style1</td> +</tr> +<tr> + <td>assertCSSClass</td> + <td>vaadin=runcomvaadintestscomponentsAddRemoveSetStyleNamesTest::Root/VOverlay[0]</td> + <td>v-datefield-popup-thestyle</td> +</tr> +<tr> + <td>assertCSSClass</td> + <td>vaadin=runcomvaadintestscomponentsAddRemoveSetStyleNamesTest::Root/VOverlay[0]</td> + <td>thestyle</td> +</tr> +<!--add style 1. remove thestyle. assertNot style1, thestyle--> +<tr> + <td>mouseClick</td> + <td>vaadin=runcomvaadintestscomponentsAddRemoveSetStyleNamesTest::/VVerticalLayout[0]/VVerticalLayout[0]/VButton[0]/domChild[0]/domChild[0]</td> + <td></td> +</tr> +<tr> + <td>mouseClick</td> + <td>vaadin=runcomvaadintestscomponentsAddRemoveSetStyleNamesTest::/VVerticalLayout[0]/VVerticalLayout[0]/VButton[2]/domChild[0]/domChild[0]</td> + <td></td> +</tr> +<tr> + <td>assertCSSClass</td> + <td>vaadin=runcomvaadintestscomponentsAddRemoveSetStyleNamesTest::/VVerticalLayout[0]/VVerticalLayout[0]/VPopupCalendar[0]</td> + <td>v-datefield-style1</td> +</tr> +<tr> + <td>assertCSSClass</td> + <td>vaadin=runcomvaadintestscomponentsAddRemoveSetStyleNamesTest::/VVerticalLayout[0]/VVerticalLayout[0]/VPopupCalendar[0]</td> + <td>style1</td> +</tr> +<tr> + <td>assertNotCSSClass</td> + <td>vaadin=runcomvaadintestscomponentsAddRemoveSetStyleNamesTest::/VVerticalLayout[0]/VVerticalLayout[0]/VPopupCalendar[0]</td> + <td>v-datefield-thestyle</td> +</tr> +<tr> + <td>assertNotCSSClass</td> + <td>vaadin=runcomvaadintestscomponentsAddRemoveSetStyleNamesTest::/VVerticalLayout[0]/VVerticalLayout[0]/VPopupCalendar[0]</td> + <td>thestyle</td> +</tr> +<tr> + <td>mouseClick</td> + <td>vaadin=runcomvaadintestscomponentsAddRemoveSetStyleNamesTest::/VVerticalLayout[0]/VVerticalLayout[0]/VPopupCalendar[0]#popupButton</td> + <td></td> +</tr> +<tr> + <td>assertCSSClass</td> + <td>vaadin=runcomvaadintestscomponentsAddRemoveSetStyleNamesTest::Root/VOverlay[0]</td> + <td>v-datefield-popup-style1</td> +</tr> +<tr> + <td>assertCSSClass</td> + <td>vaadin=runcomvaadintestscomponentsAddRemoveSetStyleNamesTest::Root/VOverlay[0]</td> + <td>style1</td> +</tr> +<tr> + <td>assertNotCSSClass</td> + <td>vaadin=runcomvaadintestscomponentsAddRemoveSetStyleNamesTest::Root/VOverlay[0]</td> + <td>v-datefield-popup-thestyle</td> +</tr> +<tr> + <td>assertNotCSSClass</td> + <td>vaadin=runcomvaadintestscomponentsAddRemoveSetStyleNamesTest::Root/VOverlay[0]</td> + <td>thestyle</td> +</tr> + +</tbody></table> +</body> +</html> diff --git a/tests/testbench/com/vaadin/tests/components/AddRemoveSetStyleNamesTest.java b/tests/testbench/com/vaadin/tests/components/AddRemoveSetStyleNamesTest.java new file mode 100644 index 0000000000..926af72a2f --- /dev/null +++ b/tests/testbench/com/vaadin/tests/components/AddRemoveSetStyleNamesTest.java @@ -0,0 +1,83 @@ +package com.vaadin.tests.components; + +import com.vaadin.ui.Button; +import com.vaadin.ui.Button.ClickEvent; +import com.vaadin.ui.PopupDateField; + +public class AddRemoveSetStyleNamesTest extends TestBase { + + private String style1 = "style1"; + private String style2 = "style2"; + private String thestyle = "thestyle"; + + private PopupDateField popupDateField; + private Button button1; + private Button button2; + private Button button3; + + private Button.ClickListener listener; + + @Override + protected void setup() { + popupDateField = new PopupDateField("PopupDateField"); + popupDateField.setRequired(true); + popupDateField.setRequiredError("abcd"); + addComponent(popupDateField); + + listener = new Button.ClickListener() { + + @Override + public void buttonClick(ClickEvent event) { + String style = (String) event.getButton().getData(); + setComponentsStyle(style, !popupDateField.getStyleName() + .contains(style), event.getButton()); + } + }; + + button1 = new Button("Add style1", listener); + button1.setData(style1); + addComponent(button1); + + button2 = new Button("Add style2", listener); + button2.setData(style2); + addComponent(button2); + + button3 = new Button("Set thestyle", new Button.ClickListener() { + + @Override + public void buttonClick(ClickEvent event) { + if (popupDateField.getStyleName().contains(thestyle)) { + popupDateField.removeStyleName(thestyle); + button3.setCaption("Set thestyle"); + } else { + popupDateField.setStyleName(thestyle); + button1.setCaption("Add style1"); + button2.setCaption("Add style2"); + button3.setCaption("Remove thestyle"); + } + } + }); + addComponent(button3); + } + + private void setComponentsStyle(String style, boolean add, Button button) { + if (add) { + popupDateField.addStyleName(style); + button.setCaption("Remove " + style); + } else { + popupDateField.removeStyleName(style); + button.setCaption("Add " + style); + } + } + + @Override + protected String getDescription() { + return "If a widget has set multiple css class names, AbtractComponentConnector.getStyleNames() removes all but first one of them. This is not acceptable, because we should be able to create connector for any existing GWT component and thus we do not know it it depends on multiple css class names."; + } + + @Override + protected Integer getTicketNumber() { + return 8664; + } + +}
\ No newline at end of file diff --git a/tests/testbench/com/vaadin/tests/components/ComponentTestCase.java b/tests/testbench/com/vaadin/tests/components/ComponentTestCase.java index a2c186df7e..e949d62f71 100644 --- a/tests/testbench/com/vaadin/tests/components/ComponentTestCase.java +++ b/tests/testbench/com/vaadin/tests/components/ComponentTestCase.java @@ -114,6 +114,7 @@ public abstract class ComponentTestCase<T extends AbstractComponent> extends CheckBox checkBox = new CheckBox(caption); checkBox.addListener(new ValueChangeListener() { + @Override public void valueChange(ValueChangeEvent event) { boolean enabled = (Boolean) event.getProperty().getValue(); doCommand(command, enabled); @@ -136,6 +137,7 @@ public abstract class ComponentTestCase<T extends AbstractComponent> extends Button button = new Button(caption); button.setData(Boolean.FALSE); button.addListener(new Button.ClickListener() { + @Override public void buttonClick(ClickEvent event) { Button b = event.getButton(); boolean state = (Boolean) b.getData(); @@ -163,6 +165,7 @@ public abstract class ComponentTestCase<T extends AbstractComponent> extends select.setNullSelectionAllowed(false); select.addListener(new Property.ValueChangeListener() { + @Override public void valueChange(ValueChangeEvent event) { Object itemId = event.getProperty().getValue(); Item item = select.getItem(itemId); diff --git a/tests/testbench/com/vaadin/tests/components/CustomComponentwithUndefinedSize.java b/tests/testbench/com/vaadin/tests/components/CustomComponentwithUndefinedSize.java index 57b81ddecc..9fe13c457a 100644 --- a/tests/testbench/com/vaadin/tests/components/CustomComponentwithUndefinedSize.java +++ b/tests/testbench/com/vaadin/tests/components/CustomComponentwithUndefinedSize.java @@ -57,6 +57,7 @@ public class CustomComponentwithUndefinedSize extends TestBase { Button button = new Button("Change panel size", new ClickListener() { + @Override public void buttonClick(ClickEvent event) { switch (step++ % 4) { case 0: diff --git a/tests/testbench/com/vaadin/tests/components/DisableEnableCascade.java b/tests/testbench/com/vaadin/tests/components/DisableEnableCascade.java index aa83ff7a42..cd284224a0 100644 --- a/tests/testbench/com/vaadin/tests/components/DisableEnableCascade.java +++ b/tests/testbench/com/vaadin/tests/components/DisableEnableCascade.java @@ -33,6 +33,7 @@ public class DisableEnableCascade extends TestBase { enableDisablePanelButton = new Button("Disable panel", new ClickListener() { + @Override public void buttonClick(ClickEvent event) { enableDisable(outerPanel, enableDisablePanelButton); @@ -42,6 +43,7 @@ public class DisableEnableCascade extends TestBase { enableDisableTabSheetButton = new Button("Disable TabSheet", new ClickListener() { + @Override public void buttonClick(ClickEvent event) { enableDisable(innerTabsheet, enableDisableTabSheetButton); @@ -52,6 +54,7 @@ public class DisableEnableCascade extends TestBase { enableDisableButtonButton = new Button("Disable Button", new ClickListener() { + @Override public void buttonClick(ClickEvent event) { enableDisable(button, enableDisableButtonButton); diff --git a/tests/testbench/com/vaadin/tests/components/DisableEnableCascadeStyles.java b/tests/testbench/com/vaadin/tests/components/DisableEnableCascadeStyles.java index f3391afd1f..0279a92437 100644 --- a/tests/testbench/com/vaadin/tests/components/DisableEnableCascadeStyles.java +++ b/tests/testbench/com/vaadin/tests/components/DisableEnableCascadeStyles.java @@ -55,6 +55,7 @@ public class DisableEnableCascadeStyles extends TestBase { enableDisablePanelButton = new Button("Disable panel", new ClickListener() { + @Override public void buttonClick(ClickEvent event) { enableDisable(outerPanel, enableDisablePanelButton); @@ -64,6 +65,7 @@ public class DisableEnableCascadeStyles extends TestBase { enableDisableTabSheetButton = new Button("Disable TabSheet", new ClickListener() { + @Override public void buttonClick(ClickEvent event) { enableDisable(innerTabsheet, enableDisableTabSheetButton); @@ -74,6 +76,7 @@ public class DisableEnableCascadeStyles extends TestBase { enableDisableLayoutButton = new Button("Disable Tab content (Layout)", new ClickListener() { + @Override public void buttonClick(ClickEvent event) { enableDisable(layout, enableDisableLayoutButton); @@ -82,6 +85,7 @@ public class DisableEnableCascadeStyles extends TestBase { enableDisableComponentsButton = new Button("Disable Layout Components", new ClickListener() { + @Override public void buttonClick(ClickEvent event) { for (Iterator<Component> i = layout .getComponentIterator(); i.hasNext();) { diff --git a/tests/testbench/com/vaadin/tests/components/FocusAndBlurListeners.java b/tests/testbench/com/vaadin/tests/components/FocusAndBlurListeners.java index 267807b16b..7987c800f9 100644 --- a/tests/testbench/com/vaadin/tests/components/FocusAndBlurListeners.java +++ b/tests/testbench/com/vaadin/tests/components/FocusAndBlurListeners.java @@ -23,6 +23,7 @@ public class FocusAndBlurListeners extends TestBase { private FocusListener focusListener = new FocusListener() { + @Override public void focus(FocusEvent event) { Label msg = new Label(new Date() + " Focused " + event.getComponent().getCaption()); @@ -31,6 +32,7 @@ public class FocusAndBlurListeners extends TestBase { }; private BlurListener blurListener = new BlurListener() { + @Override public void blur(BlurEvent event) { Label msg = new Label(new Date() + " Blurred " + event.getComponent().getCaption()); @@ -74,6 +76,7 @@ public class FocusAndBlurListeners extends TestBase { private int i; + @Override public void buttonClick(ClickEvent event) { ogm.addItem("newItem" + i++); diff --git a/tests/testbench/com/vaadin/tests/components/FocusFromShortcutAction.java b/tests/testbench/com/vaadin/tests/components/FocusFromShortcutAction.java index 124f2b9cdf..cffc8ca27b 100644 --- a/tests/testbench/com/vaadin/tests/components/FocusFromShortcutAction.java +++ b/tests/testbench/com/vaadin/tests/components/FocusFromShortcutAction.java @@ -20,6 +20,7 @@ public class FocusFromShortcutAction extends TestBase { addComponent(select); addComponent(text); Button focusText = new Button("Focus text", new Button.ClickListener() { + @Override public void buttonClick(ClickEvent event) { text.focus(); } @@ -29,6 +30,7 @@ public class FocusFromShortcutAction extends TestBase { addComponent(focusText); Button focusSelect = new Button("Focus select", new Button.ClickListener() { + @Override public void buttonClick(ClickEvent event) { select.focus(); } diff --git a/tests/testbench/com/vaadin/tests/components/LayoutAttachListenerInfo.java b/tests/testbench/com/vaadin/tests/components/LayoutAttachListenerInfo.java index dc07c35f62..6e54c0d9f4 100644 --- a/tests/testbench/com/vaadin/tests/components/LayoutAttachListenerInfo.java +++ b/tests/testbench/com/vaadin/tests/components/LayoutAttachListenerInfo.java @@ -27,6 +27,7 @@ public class LayoutAttachListenerInfo extends TestBase { layouts.select("AbsoluteLayout"); layouts.setImmediate(true); layouts.addListener(new ValueChangeListener() { + @Override public void valueChange(ValueChangeEvent event) { if (event.getProperty().getValue().equals("AbsoluteLayout")) { testAbsoluteLayout(); @@ -64,6 +65,7 @@ public class LayoutAttachListenerInfo extends TestBase { a.setWidth("300px"); a.setHeight("300px"); a.addListener(new ComponentContainer.ComponentAttachListener() { + @Override public void componentAttachedToContainer(ComponentAttachEvent event) { AbsoluteLayout layout = (AbsoluteLayout) event.getContainer(); AbsoluteLayout.ComponentPosition position = layout @@ -78,6 +80,7 @@ public class LayoutAttachListenerInfo extends TestBase { content.addComponent(new Button("Attach label to layout", new Button.ClickListener() { + @Override public void buttonClick(ClickEvent event) { a.addComponent(new Label("X"), "top:50px;left:50px"); } @@ -91,6 +94,7 @@ public class LayoutAttachListenerInfo extends TestBase { v.setWidth("300px"); v.setHeight("300px"); v.addListener(new ComponentContainer.ComponentAttachListener() { + @Override public void componentAttachedToContainer(ComponentAttachEvent event) { VerticalLayout layout = (VerticalLayout) event.getContainer(); getMainWindow().showNotification( @@ -104,6 +108,7 @@ public class LayoutAttachListenerInfo extends TestBase { content.addComponent(new Button("Attach label to layout", new Button.ClickListener() { + @Override public void buttonClick(ClickEvent event) { v.addComponent(new Label("X")); @@ -118,6 +123,7 @@ public class LayoutAttachListenerInfo extends TestBase { g.setWidth("300px"); g.setHeight("300px"); g.addListener(new ComponentContainer.ComponentAttachListener() { + @Override public void componentAttachedToContainer(ComponentAttachEvent event) { GridLayout layout = (GridLayout) event.getContainer(); GridLayout.Area area = layout.getComponentArea(event @@ -133,6 +139,7 @@ public class LayoutAttachListenerInfo extends TestBase { content.addComponent(new Button("Attach label to layout", new Button.ClickListener() { + @Override public void buttonClick(ClickEvent event) { g.addComponent(new Label("X"), 2, 3); } diff --git a/tests/testbench/com/vaadin/tests/components/LongTooltip.html b/tests/testbench/com/vaadin/tests/components/LongTooltip.html index ac317380b8..a5055741f1 100644 --- a/tests/testbench/com/vaadin/tests/components/LongTooltip.html +++ b/tests/testbench/com/vaadin/tests/components/LongTooltip.html @@ -36,8 +36,8 @@ </tr> <!--Hide tooltip--> <tr> - <td>mouseOut</td> - <td>vaadin=runcomvaadintestscomponentsLongTooltip::Root/VTooltip[0]/FlowPanel[0]/domChild[1]</td> + <td>showTooltip</td> + <td>vaadin=runcomvaadintestscomponentsLongTooltip::/VVerticalLayout[0]/VVerticalLayout[0]/VGridLayout[0]</td> <td>55,43</td> </tr> <!--Wait for tooltip to disappear. Cannot for some reason use waitForNotVisible--> @@ -63,8 +63,8 @@ </tr> <!--Hide tooltip--> <tr> - <td>mouseOut</td> - <td>vaadin=runcomvaadintestscomponentsLongTooltip::Root/VTooltip[0]/FlowPanel[0]/domChild[1]</td> + <td>showTooltip</td> + <td>vaadin=runcomvaadintestscomponentsLongTooltip::/VVerticalLayout[0]/VVerticalLayout[0]/VGridLayout[0]</td> <td>55,43</td> </tr> <!--Wait for tooltip to disappear. Cannot for some reason use waitForNotVisible--> @@ -113,8 +113,8 @@ </tr> <!--Hide tooltip--> <tr> - <td>mouseOut</td> - <td>vaadin=runcomvaadintestscomponentsLongTooltip::Root/VTooltip[0]/FlowPanel[0]/domChild[1]</td> + <td>showTooltip</td> + <td>vaadin=runcomvaadintestscomponentsLongTooltip::/VVerticalLayout[0]/VVerticalLayout[0]/VGridLayout[0]</td> <td>55,43</td> </tr> <!--Wait for tooltip to disappear. Cannot for some reason use waitForNotVisible--> @@ -140,8 +140,8 @@ </tr> <!--Hide tooltip--> <tr> - <td>mouseOut</td> - <td>vaadin=runcomvaadintestscomponentsLongTooltip::Root/VTooltip[0]/FlowPanel[0]/domChild[1]</td> + <td>showTooltip</td> + <td>vaadin=runcomvaadintestscomponentsLongTooltip::/VVerticalLayout[0]/VVerticalLayout[0]/VGridLayout[0]</td> <td>55,43</td> </tr> <!--Wait for tooltip to disappear. Cannot for some reason use waitForNotVisible--> @@ -190,8 +190,8 @@ </tr> <!--Hide tooltip--> <tr> - <td>mouseOut</td> - <td>vaadin=runcomvaadintestscomponentsLongTooltip::Root/VTooltip[0]/FlowPanel[0]/domChild[1]</td> + <td>showTooltip</td> + <td>vaadin=runcomvaadintestscomponentsLongTooltip::/VVerticalLayout[0]/VVerticalLayout[0]/VGridLayout[0]</td> <td>55,43</td> </tr> <!--Wait for tooltip to disappear. Cannot for some reason use waitForNotVisible--> @@ -217,8 +217,8 @@ </tr> <!--Hide tooltip--> <tr> - <td>mouseOut</td> - <td>vaadin=runcomvaadintestscomponentsLongTooltip::Root/VTooltip[0]/FlowPanel[0]/domChild[1]</td> + <td>showTooltip</td> + <td>vaadin=runcomvaadintestscomponentsLongTooltip::/VVerticalLayout[0]/VVerticalLayout[0]/VGridLayout[0]</td> <td>55,43</td> </tr> <!--Wait for tooltip to disappear. Cannot for some reason use waitForNotVisible--> @@ -267,8 +267,8 @@ </tr> <!--Hide tooltip--> <tr> - <td>mouseOut</td> - <td>vaadin=runcomvaadintestscomponentsLongTooltip::Root/VTooltip[0]/FlowPanel[0]/domChild[1]</td> + <td>showTooltip</td> + <td>vaadin=runcomvaadintestscomponentsLongTooltip::/VVerticalLayout[0]/VVerticalLayout[0]/VGridLayout[0]</td> <td>55,43</td> </tr> <!--Wait for tooltip to disappear. Cannot for some reason use waitForNotVisible--> @@ -294,8 +294,8 @@ </tr> <!--Hide tooltip--> <tr> - <td>mouseOut</td> - <td>vaadin=runcomvaadintestscomponentsLongTooltip::Root/VTooltip[0]/FlowPanel[0]/domChild[1]</td> + <td>showTooltip</td> + <td>vaadin=runcomvaadintestscomponentsLongTooltip::/VVerticalLayout[0]/VVerticalLayout[0]/VGridLayout[0]</td> <td>55,43</td> </tr> <!--Wait for tooltip to disappear. Cannot for some reason use waitForNotVisible--> @@ -319,7 +319,6 @@ <td></td> <td>tooltip-upper-left-3</td> </tr> - </tbody></table> </body> </html> diff --git a/tests/testbench/com/vaadin/tests/components/TestBase.java b/tests/testbench/com/vaadin/tests/components/TestBase.java index b3c0f63dcb..a66f0efe64 100644 --- a/tests/testbench/com/vaadin/tests/components/TestBase.java +++ b/tests/testbench/com/vaadin/tests/components/TestBase.java @@ -1,6 +1,6 @@ package com.vaadin.tests.components; -import com.vaadin.terminal.gwt.client.ui.label.ContentMode; +import com.vaadin.shared.ui.label.ContentMode; import com.vaadin.ui.Component; import com.vaadin.ui.Label; import com.vaadin.ui.Root.LegacyWindow; diff --git a/tests/testbench/com/vaadin/tests/components/TouchScrollables.java b/tests/testbench/com/vaadin/tests/components/TouchScrollables.java index 8ad12da85f..415f660c62 100644 --- a/tests/testbench/com/vaadin/tests/components/TouchScrollables.java +++ b/tests/testbench/com/vaadin/tests/components/TouchScrollables.java @@ -11,7 +11,7 @@ import com.vaadin.event.dd.DragAndDropEvent; import com.vaadin.event.dd.DropHandler; import com.vaadin.event.dd.acceptcriteria.AcceptCriterion; import com.vaadin.event.dd.acceptcriteria.SourceIs; -import com.vaadin.terminal.gwt.client.ui.dd.VerticalDropLocation; +import com.vaadin.shared.ui.dd.VerticalDropLocation; import com.vaadin.tests.util.Person; import com.vaadin.tests.util.PersonContainer; import com.vaadin.tests.util.TestUtils; @@ -79,12 +79,14 @@ public class TouchScrollables extends TestBase { final Label l = l50; Button button = new Button("Scroll to label 50", new Button.ClickListener() { + @Override public void buttonClick(ClickEvent event) { getLayout().getRoot().scrollIntoView(l); } }); cssLayout.addComponent(button); button = new Button("Scroll to 100px", new Button.ClickListener() { + @Override public void buttonClick(ClickEvent event) { p.setScrollTop(100); } @@ -117,6 +119,7 @@ public class TouchScrollables extends TestBase { Button button = new Button("Toggle lazyloading"); button.addListener(new Button.ClickListener() { + @Override public void buttonClick(ClickEvent event) { if (table.getCacheRate() == 100) { table.setCacheRate(2); @@ -131,6 +134,7 @@ public class TouchScrollables extends TestBase { button = new Button("Toggle selectable"); button.addListener(new Button.ClickListener() { + @Override public void buttonClick(ClickEvent event) { table.setSelectable(!table.isSelectable()); } @@ -159,6 +163,7 @@ public class TouchScrollables extends TestBase { private Component getSubWindowTest() { Button b = new Button("Open subwindow", new Button.ClickListener() { + @Override public void buttonClick(ClickEvent event) { Window w = new Window("Subwindow"); w.center(); @@ -185,10 +190,12 @@ public class TouchScrollables extends TestBase { Action[] actions = new Action[] { new Action("FOO"), new Action("BAR"), new Action("CAR") }; + @Override public Action[] getActions(Object target, Object sender) { return actions; } + @Override public void handleAction(Action action, Object sender, Object target) { Notification.show(action.getCaption()); @@ -206,10 +213,12 @@ public class TouchScrollables extends TestBase { // accept only drags from this table AcceptCriterion crit = new SourceIs(table); + @Override public AcceptCriterion getAcceptCriterion() { return crit; } + @Override public void drop(DragAndDropEvent dropEvent) { AbstractSelectTargetDetails dropTargetData = (AbstractSelectTargetDetails) dropEvent .getTargetDetails(); diff --git a/tests/testbench/com/vaadin/tests/components/absolutelayout/MoveComponentsFromAbsoluteLayoutToInnerLayout.java b/tests/testbench/com/vaadin/tests/components/absolutelayout/MoveComponentsFromAbsoluteLayoutToInnerLayout.java index 139ed5bb0b..826b7cee07 100644 --- a/tests/testbench/com/vaadin/tests/components/absolutelayout/MoveComponentsFromAbsoluteLayoutToInnerLayout.java +++ b/tests/testbench/com/vaadin/tests/components/absolutelayout/MoveComponentsFromAbsoluteLayoutToInnerLayout.java @@ -22,6 +22,7 @@ public class MoveComponentsFromAbsoluteLayoutToInnerLayout extends TestBase { testButton = new Button("Click to move to inner layout", new Button.ClickListener() { + @Override public void buttonClick(ClickEvent event) { vl.addComponent(testButton); } @@ -37,6 +38,7 @@ public class MoveComponentsFromAbsoluteLayoutToInnerLayout extends TestBase { Button b = new Button("Repaint inner layout", new Button.ClickListener() { + @Override public void buttonClick(ClickEvent event) { vl.requestRepaint(); } diff --git a/tests/testbench/com/vaadin/tests/components/abstractcomponent/AllComponentTooltipTest.java b/tests/testbench/com/vaadin/tests/components/abstractcomponent/AllComponentTooltipTest.java new file mode 100644 index 0000000000..17cc4270fb --- /dev/null +++ b/tests/testbench/com/vaadin/tests/components/abstractcomponent/AllComponentTooltipTest.java @@ -0,0 +1,50 @@ +/* +@VaadinApache2LicenseForJavaFiles@ + */ +package com.vaadin.tests.components.abstractcomponent; + +import com.vaadin.terminal.WrappedRequest; +import com.vaadin.tests.VaadinClasses; +import com.vaadin.tests.components.AbstractTestRoot; +import com.vaadin.ui.AbstractComponent; +import com.vaadin.ui.Component; +import com.vaadin.ui.GridLayout; + +public class AllComponentTooltipTest extends AbstractTestRoot { + + @Override + protected void setup(WrappedRequest request) { + setContent(new GridLayout(5, 5)); + for (Class<? extends Component> cls : VaadinClasses.getComponents()) { + try { + AbstractComponent c = (AbstractComponent) cls.newInstance(); + if (c instanceof LegacyWindow) { + continue; + } + + c.setDebugId(cls.getName()); + c.setCaption(cls.getName()); + c.setDescription(cls.getName()); + c.setWidth("100px"); + c.setHeight("100px"); + getContent().addComponent(c); + System.out.println("Added " + cls.getName()); + } catch (Exception e) { + System.err.println("Could not instatiate " + cls.getName()); + } + } + } + + @Override + protected String getTestDescription() { + // TODO Auto-generated method stub + return null; + } + + @Override + protected Integer getTicketNumber() { + // TODO Auto-generated method stub + return null; + } + +} diff --git a/tests/testbench/com/vaadin/tests/components/abstractcomponent/EnableState.java b/tests/testbench/com/vaadin/tests/components/abstractcomponent/EnableState.java index 9261962b0d..f8931ecdea 100644 --- a/tests/testbench/com/vaadin/tests/components/abstractcomponent/EnableState.java +++ b/tests/testbench/com/vaadin/tests/components/abstractcomponent/EnableState.java @@ -20,6 +20,7 @@ public class EnableState extends AbstractTestCase { CheckBox enable = new CheckBox("Toggle button enabled", true); enable.addListener(new Property.ValueChangeListener() { + @Override public void valueChange(ValueChangeEvent event) { boolean enabled = (Boolean) event.getProperty().getValue(); button.setEnabled(enabled); @@ -31,6 +32,7 @@ public class EnableState extends AbstractTestCase { CheckBox caption = new CheckBox("Toggle button caption", true); caption.addListener(new Property.ValueChangeListener() { + @Override public void valueChange(ValueChangeEvent event) { button.setCaption(button.getCaption() + "+"); } @@ -40,6 +42,7 @@ public class EnableState extends AbstractTestCase { CheckBox visible = new CheckBox("Toggle panel visibility", true); visible.addListener(new Property.ValueChangeListener() { + @Override public void valueChange(ValueChangeEvent event) { boolean visible = (Boolean) event.getProperty().getValue(); @@ -51,6 +54,7 @@ public class EnableState extends AbstractTestCase { CheckBox panelEnable = new CheckBox("Toggle panel enabled", true); panelEnable.addListener(new Property.ValueChangeListener() { + @Override public void valueChange(ValueChangeEvent event) { boolean enabled = (Boolean) event.getProperty().getValue(); panel.setEnabled(enabled); diff --git a/tests/testbench/com/vaadin/tests/components/abstractcomponent/TooltipTests.html b/tests/testbench/com/vaadin/tests/components/abstractcomponent/TooltipTests.html new file mode 100644 index 0000000000..3cea965690 --- /dev/null +++ b/tests/testbench/com/vaadin/tests/components/abstractcomponent/TooltipTests.html @@ -0,0 +1,92 @@ +<?xml version="1.0" encoding="UTF-8"?> +<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd"> +<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en" lang="en"> +<head profile="http://selenium-ide.openqa.org/profiles/test-case"> +<meta http-equiv="Content-Type" content="text/html; charset=UTF-8" /> +<link rel="selenium.base" href="http://localhost:8888/" /> +<title>TooltipTests</title> +</head> +<body> +<table cellpadding="1" cellspacing="1" border="1"> +<thead> +<tr><td rowspan="1" colspan="3">TooltipTests</td></tr> +</thead><tbody> +<tr> + <td>open</td> + <td>/run/com.vaadin.tests.components.abstractcomponent.TooltipTests?restartApplication</td> + <td></td> +</tr> +<tr> + <td>showTooltip</td> + <td>//div[@id='label']</td> + <td></td> +</tr> +<tr> + <td>screenCapture</td> + <td></td> + <td>no_tooltip</td> +</tr> +<tr> + <td>showTooltip</td> + <td>vaadin=runcomvaadintestscomponentsabstractcomponentTooltipTests::/VVerticalLayout[0]</td> + <td></td> +</tr> +<tr> + <td>mouseClick</td> + <td>vaadin=runcomvaadintestscomponentsabstractcomponentTooltipTests::/VVerticalLayout[0]/VVerticalLayout[0]/VHorizontalLayout[0]/VCheckBox[0]/domChild[0]</td> + <td>10,7</td> +</tr> +<tr> + <td>showTooltip</td> + <td>//div[@id='label']</td> + <td></td> +</tr> +<tr> + <td>screenCapture</td> + <td></td> + <td>panel_tooltip</td> +</tr> +<tr> + <td>showTooltip</td> + <td>vaadin=runcomvaadintestscomponentsabstractcomponentTooltipTests::/VVerticalLayout[0]</td> + <td></td> +</tr> +<tr> + <td>mouseClick</td> + <td>vaadin=runcomvaadintestscomponentsabstractcomponentTooltipTests::/VVerticalLayout[0]/VVerticalLayout[0]/VHorizontalLayout[0]/VCheckBox[1]/domChild[0]</td> + <td>8,6</td> +</tr> +<tr> + <td>showTooltip</td> + <td>//div[@id='label']</td> + <td></td> +</tr> +<tr> + <td>screenCapture</td> + <td></td> + <td>layout_tooltip</td> +</tr> +<tr> + <td>showTooltip</td> + <td>vaadin=runcomvaadintestscomponentsabstractcomponentTooltipTests::/VVerticalLayout[0]</td> + <td></td> +</tr> +<tr> + <td>mouseClick</td> + <td>vaadin=runcomvaadintestscomponentsabstractcomponentTooltipTests::/VVerticalLayout[0]/VVerticalLayout[0]/VHorizontalLayout[0]/VCheckBox[2]/domChild[0]</td> + <td>5,5</td> +</tr> +<tr> + <td>showTooltip</td> + <td>//div[@id='label']</td> + <td></td> +</tr> +<tr> + <td>screenCapture</td> + <td></td> + <td>label_tooltip</td> +</tr> + +</tbody></table> +</body> +</html> diff --git a/tests/testbench/com/vaadin/tests/components/abstractcomponent/TooltipTests.java b/tests/testbench/com/vaadin/tests/components/abstractcomponent/TooltipTests.java new file mode 100644 index 0000000000..300abe1851 --- /dev/null +++ b/tests/testbench/com/vaadin/tests/components/abstractcomponent/TooltipTests.java @@ -0,0 +1,100 @@ +package com.vaadin.tests.components.abstractcomponent; + +import com.vaadin.data.Property; +import com.vaadin.data.Property.ValueChangeEvent; +import com.vaadin.tests.components.TestBase; +import com.vaadin.ui.CheckBox; +import com.vaadin.ui.HorizontalLayout; +import com.vaadin.ui.Label; +import com.vaadin.ui.Panel; +import com.vaadin.ui.VerticalLayout; + +public class TooltipTests extends TestBase { + + private Panel panel; + private VerticalLayout layout; + private Label label; + + @Override + protected String getDescription() { + return "Generic tooltip handling tests"; + } + + @Override + protected Integer getTicketNumber() { + return 8425; + } + + @Override + protected void setup() { + HorizontalLayout topLayout = new HorizontalLayout(); + addComponent(topLayout); + CheckBox panelCbox = new CheckBox("Panel"); + panelCbox.addListener(panelListener); + topLayout.addComponent(panelCbox); + CheckBox layoutCbox = new CheckBox("Layout"); + layoutCbox.addListener(layoutListener); + topLayout.addComponent(layoutCbox); + CheckBox labelCbox = new CheckBox("Label"); + topLayout.addComponent(labelCbox); + labelCbox.addListener(labelListener); + + panel = new Panel(); + panel.setCaption("Panel caption"); + panel.setDebugId("panel"); + addComponent(panel); + + layout = new VerticalLayout(); + layout.setDebugId("layout"); + layout.setMargin(true); + layout.setSpacing(true); + panel.setContent(layout); + + label = new Label("Hover me!"); + label.setDebugId("label"); + layout.addComponent(label); + } + + private final Property.ValueChangeListener panelListener = new Property.ValueChangeListener() { + + @Override + public void valueChange(ValueChangeEvent event) { + boolean value = (Boolean) (event.getProperty().getValue()); + if (value) { + panel.setDescription("I'm panel!"); + } else { + panel.setDescription(""); + } + } + + }; + + private final Property.ValueChangeListener layoutListener = new Property.ValueChangeListener() { + + @Override + public void valueChange(ValueChangeEvent event) { + boolean value = (Boolean) (event.getProperty().getValue()); + if (value) { + layout.setDescription("I'm layout!"); + } else { + layout.setDescription(""); + } + } + + }; + + private final Property.ValueChangeListener labelListener = new Property.ValueChangeListener() { + + @Override + public void valueChange(ValueChangeEvent event) { + boolean value = (Boolean) (event.getProperty().getValue()); + if (value) { + label.setDescription("I'm label!"); + } else { + label.setDescription(""); + } + } + + }; + +} diff --git a/tests/testbench/com/vaadin/tests/components/abstractfield/AbstractComponentDataBindingTest.java b/tests/testbench/com/vaadin/tests/components/abstractfield/AbstractComponentDataBindingTest.java index 93ba858e37..9b29ae1bab 100644 --- a/tests/testbench/com/vaadin/tests/components/abstractfield/AbstractComponentDataBindingTest.java +++ b/tests/testbench/com/vaadin/tests/components/abstractfield/AbstractComponentDataBindingTest.java @@ -45,6 +45,7 @@ public abstract class AbstractComponentDataBindingTest extends TestBase cb.setImmediate(true); cb.addListener(new ValueChangeListener() { + @Override public void valueChange(ValueChangeEvent event) { updateLocale((Locale) localeSelect.getValue()); } @@ -91,6 +92,7 @@ public abstract class AbstractComponentDataBindingTest extends TestBase return null; } + @Override public void valueChange(ValueChangeEvent event) { AbstractField field = (AbstractField) event.getProperty(); // if (field == localeSelect) { diff --git a/tests/testbench/com/vaadin/tests/components/abstractfield/AbstractFieldCommitWithInvalidValues.java b/tests/testbench/com/vaadin/tests/components/abstractfield/AbstractFieldCommitWithInvalidValues.java index 5d0e0fe488..aa630c79fd 100644 --- a/tests/testbench/com/vaadin/tests/components/abstractfield/AbstractFieldCommitWithInvalidValues.java +++ b/tests/testbench/com/vaadin/tests/components/abstractfield/AbstractFieldCommitWithInvalidValues.java @@ -33,6 +33,7 @@ public class AbstractFieldCommitWithInvalidValues extends TestBase { Button b = new Button("Commit", new ClickListener() { + @Override public void buttonClick(ClickEvent event) { try { tf.commit(); diff --git a/tests/testbench/com/vaadin/tests/components/abstractfield/AbstractFieldDataSourceReadOnly.java b/tests/testbench/com/vaadin/tests/components/abstractfield/AbstractFieldDataSourceReadOnly.java index 780130847a..f1b96d24fd 100644 --- a/tests/testbench/com/vaadin/tests/components/abstractfield/AbstractFieldDataSourceReadOnly.java +++ b/tests/testbench/com/vaadin/tests/components/abstractfield/AbstractFieldDataSourceReadOnly.java @@ -34,6 +34,7 @@ public class AbstractFieldDataSourceReadOnly extends TestBase { // Button Button button = new Button("Make data source read-only"); button.addListener(new Listener() { + @Override public void componentEvent(Event event) { stateHolder.buttonClicked(); } diff --git a/tests/testbench/com/vaadin/tests/components/abstractfield/AbstractFieldTest.java b/tests/testbench/com/vaadin/tests/components/abstractfield/AbstractFieldTest.java index 716f80e23f..efba67199d 100644 --- a/tests/testbench/com/vaadin/tests/components/abstractfield/AbstractFieldTest.java +++ b/tests/testbench/com/vaadin/tests/components/abstractfield/AbstractFieldTest.java @@ -24,6 +24,8 @@ public abstract class AbstractFieldTest<T extends AbstractField<?>> extends AbstractComponentTest<T> implements ValueChangeListener, ReadOnlyStatusChangeListener { + private boolean sortValueChanges = true; + @Override protected void createActions() { super.createActions(); @@ -65,6 +67,7 @@ public abstract class AbstractFieldTest<T extends AbstractField<?>> extends .addItem("AbstractField", null); abstractField.addItem("Show value", new MenuBar.Command() { + @Override public void menuSelected(MenuItem selectedItem) { for (T a : getTestComponents()) { log(a.getClass().getSimpleName() + " value: " @@ -72,6 +75,18 @@ public abstract class AbstractFieldTest<T extends AbstractField<?>> extends } } }); + + MenuItem sortValueChangesItem = abstractField.addItem( + "Show sorted value changes", new MenuBar.Command() { + @Override + public void menuSelected(MenuItem selectedItem) { + sortValueChanges = selectedItem.isChecked(); + log("Show sorted value changes: " + + sortValueChanges); + } + }); + sortValueChangesItem.setCheckable(true); + sortValueChangesItem.setChecked(true); } } @@ -101,6 +116,7 @@ public abstract class AbstractFieldTest<T extends AbstractField<?>> extends protected Command<T, Boolean> valueChangeListenerCommand = new Command<T, Boolean>() { + @Override public void execute(T c, Boolean value, Object data) { if (value) { c.addListener((ValueChangeListener) AbstractFieldTest.this); @@ -111,6 +127,7 @@ public abstract class AbstractFieldTest<T extends AbstractField<?>> extends }; protected Command<T, Boolean> readonlyStatusChangeListenerCommand = new Command<T, Boolean>() { + @Override public void execute(T c, Boolean value, Object data) { if (value) { c.addListener((ReadOnlyStatusChangeListener) AbstractFieldTest.this); @@ -122,11 +139,13 @@ public abstract class AbstractFieldTest<T extends AbstractField<?>> extends protected Command<T, Object> setValueCommand = new Command<T, Object>() { + @Override public void execute(T c, Object value, Object data) { c.setValue(value); } }; + @Override public void valueChange(com.vaadin.data.Property.ValueChangeEvent event) { log(event.getClass().getSimpleName() + ", new value: " + getValue(event.getProperty())); @@ -135,7 +154,7 @@ public abstract class AbstractFieldTest<T extends AbstractField<?>> extends @SuppressWarnings({ "rawtypes", "unchecked" }) private String getValue(Property property) { Object o = property.getValue(); - if (o instanceof Collection) { + if (o instanceof Collection && sortValueChanges) { // Sort collections to avoid problems with values printed in // different order try { @@ -168,6 +187,7 @@ public abstract class AbstractFieldTest<T extends AbstractField<?>> extends } + @Override public void readOnlyStatusChange(ReadOnlyStatusChangeEvent event) { log(event.getClass().getSimpleName()); } diff --git a/tests/testbench/com/vaadin/tests/components/abstractfield/AbstractTextFieldTest.java b/tests/testbench/com/vaadin/tests/components/abstractfield/AbstractTextFieldTest.java index b68134f379..1f407c710f 100644 --- a/tests/testbench/com/vaadin/tests/components/abstractfield/AbstractTextFieldTest.java +++ b/tests/testbench/com/vaadin/tests/components/abstractfield/AbstractTextFieldTest.java @@ -14,12 +14,14 @@ public abstract class AbstractTextFieldTest<T extends AbstractTextField> private Command<T, Integer> maxlengthCommand = new Command<T, Integer>() { + @Override public void execute(T c, Integer value, Object data) { c.setMaxLength(value); } }; private Command<T, Boolean> nullSelectionAllowedCommand = new Command<T, Boolean>() { + @Override public void execute(T c, Boolean value, Object data) { c.setNullSettingAllowed(value); @@ -27,18 +29,21 @@ public abstract class AbstractTextFieldTest<T extends AbstractTextField> }; private Command<T, String> nullRepresentationCommand = new Command<T, String>() { + @Override public void execute(T c, String value, Object data) { c.setNullRepresentation(value); } }; private Command<T, String> inputPromptCommand = new Command<T, String>() { + @Override public void execute(T c, String value, Object data) { c.setInputPrompt(value); } }; private Command<T, Boolean> textChangeListenerCommand = new Command<T, Boolean>() { + @Override public void execute(T c, Boolean value, Object data) { if (value) { c.addListener((TextChangeListener) AbstractTextFieldTest.this); @@ -49,24 +54,28 @@ public abstract class AbstractTextFieldTest<T extends AbstractTextField> }; private Command<T, Integer> colsCommand = new Command<T, Integer>() { + @Override public void execute(T c, Integer value, Object data) { c.setColumns(value); } }; private Command<T, TextChangeEventMode> textChangeEventModeCommand = new Command<T, TextChangeEventMode>() { + @Override public void execute(T c, TextChangeEventMode value, Object data) { c.setTextChangeEventMode(value); } }; private Command<T, Integer> textChangeTimeoutCommand = new Command<T, Integer>() { + @Override public void execute(T c, Integer value, Object data) { c.setTextChangeTimeout(value); } }; private Command<T, Range> selectionRangeCommand = new Command<T, Range>() { + @Override public void execute(T c, Range value, Object data) { c.setSelectionRange(value.getStart(), value.getEnd() - value.getStart()); @@ -74,6 +83,7 @@ public abstract class AbstractTextFieldTest<T extends AbstractTextField> } }; private Command<T, Object> selectAllCommand = new Command<T, Object>() { + @Override public void execute(T c, Object value, Object data) { c.selectAll(); } @@ -81,6 +91,7 @@ public abstract class AbstractTextFieldTest<T extends AbstractTextField> private Command<T, Integer> setCursorPositionCommand = new Command<T, Integer>() { + @Override public void execute(T c, Integer value, Object data) { c.setCursorPosition(value); } @@ -230,6 +241,7 @@ public abstract class AbstractTextFieldTest<T extends AbstractTextField> } + @Override public void textChange(TextChangeEvent event) { AbstractTextField tf = (AbstractTextField) event.getComponent(); log("TextChangeEvent: text='" + event.getText() + "', cursor position=" diff --git a/tests/testbench/com/vaadin/tests/components/abstractfield/DateFieldBasedOnLong.java b/tests/testbench/com/vaadin/tests/components/abstractfield/DateFieldBasedOnLong.java index deea0fbe0a..aa8c7ff778 100644 --- a/tests/testbench/com/vaadin/tests/components/abstractfield/DateFieldBasedOnLong.java +++ b/tests/testbench/com/vaadin/tests/components/abstractfield/DateFieldBasedOnLong.java @@ -24,6 +24,7 @@ public class DateFieldBasedOnLong extends AbstractComponentDataBindingTest { addComponent(new Button("Set property value to 10000L", new Button.ClickListener() { + @Override public void buttonClick(ClickEvent event) { property.setValue(10000L); diff --git a/tests/testbench/com/vaadin/tests/components/abstractfield/IntegerDoubleFieldsWithDataSource.java b/tests/testbench/com/vaadin/tests/components/abstractfield/IntegerDoubleFieldsWithDataSource.java index c13aadd895..01fcb02b77 100644 --- a/tests/testbench/com/vaadin/tests/components/abstractfield/IntegerDoubleFieldsWithDataSource.java +++ b/tests/testbench/com/vaadin/tests/components/abstractfield/IntegerDoubleFieldsWithDataSource.java @@ -34,6 +34,7 @@ public class IntegerDoubleFieldsWithDataSource extends TestBase { tf.setImmediate(true); tf.addListener(new ValueChangeListener() { + @Override public void valueChange(ValueChangeEvent event) { try { log.log("Value for " + tf.getCaption() + " changed to " diff --git a/tests/testbench/com/vaadin/tests/components/abstractfield/IntegerFieldWithoutDataSource.java b/tests/testbench/com/vaadin/tests/components/abstractfield/IntegerFieldWithoutDataSource.java index b25dc9d953..929247fc80 100644 --- a/tests/testbench/com/vaadin/tests/components/abstractfield/IntegerFieldWithoutDataSource.java +++ b/tests/testbench/com/vaadin/tests/components/abstractfield/IntegerFieldWithoutDataSource.java @@ -29,6 +29,7 @@ public class IntegerFieldWithoutDataSource extends TestBase { tf.setImmediate(true); tf.addListener(new ValueChangeListener() { + @Override public void valueChange(ValueChangeEvent event) { try { log.log("Value for " + tf.getCaption() + " changed to " diff --git a/tests/testbench/com/vaadin/tests/components/abstractfield/ShortcutAddAndRemove.java b/tests/testbench/com/vaadin/tests/components/abstractfield/ShortcutAddAndRemove.java index 26720d67f3..309e297374 100644 --- a/tests/testbench/com/vaadin/tests/components/abstractfield/ShortcutAddAndRemove.java +++ b/tests/testbench/com/vaadin/tests/components/abstractfield/ShortcutAddAndRemove.java @@ -20,6 +20,7 @@ public class ShortcutAddAndRemove extends TestBase { final Button logButton = new Button("Log a row (enter shortcut)"); logButton.setClickShortcut(KeyCode.ENTER); logButton.addListener(new ClickListener() { + @Override public void buttonClick(ClickEvent event) { log.log("Log button was clicked"); } @@ -27,6 +28,7 @@ public class ShortcutAddAndRemove extends TestBase { final Button removeShortcut = new Button("Remove shortcut"); removeShortcut.addListener(new ClickListener() { + @Override public void buttonClick(ClickEvent event) { logButton.removeClickShortcut(); logButton.setCaption("Log a row (no shortcut)"); @@ -34,6 +36,7 @@ public class ShortcutAddAndRemove extends TestBase { }); final Button addShortcut = new Button("Add shortcut"); addShortcut.addListener(new ClickListener() { + @Override public void buttonClick(ClickEvent event) { logButton.setClickShortcut(KeyCode.ENTER); logButton.setCaption("Log a row (enter shortcut)"); diff --git a/tests/testbench/com/vaadin/tests/components/abstractfield/TextFieldConversions.java b/tests/testbench/com/vaadin/tests/components/abstractfield/TextFieldConversions.java index 8ce214918d..fc08a4505c 100644 --- a/tests/testbench/com/vaadin/tests/components/abstractfield/TextFieldConversions.java +++ b/tests/testbench/com/vaadin/tests/components/abstractfield/TextFieldConversions.java @@ -31,6 +31,7 @@ public class TextFieldConversions extends AbstractComponentDataBindingTest { dataType.addListener(new ValueChangeListener() { + @Override public void valueChange(ValueChangeEvent event) { tf.setPropertyDataSource(new ObjectProperty<Object>(o, (Class<Object>) dataType.getValue())); @@ -42,6 +43,7 @@ public class TextFieldConversions extends AbstractComponentDataBindingTest { addComponent(tf); tf.setErrorHandler(new ComponentErrorHandler() { + @Override public boolean handleComponentError(ComponentErrorEvent event) { tf.setComponentError(new UserError("Invalid value")); return true; diff --git a/tests/testbench/com/vaadin/tests/components/abstractfield/Vaadin6ImplicitDoubleConverter.java b/tests/testbench/com/vaadin/tests/components/abstractfield/Vaadin6ImplicitDoubleConverter.java index 0228a59f06..a9aa4d2a43 100644 --- a/tests/testbench/com/vaadin/tests/components/abstractfield/Vaadin6ImplicitDoubleConverter.java +++ b/tests/testbench/com/vaadin/tests/components/abstractfield/Vaadin6ImplicitDoubleConverter.java @@ -7,6 +7,7 @@ import com.vaadin.data.util.converter.Converter; public class Vaadin6ImplicitDoubleConverter implements Converter<String, Double> { + @Override public Double convertToModel(String value, Locale locale) throws com.vaadin.data.util.converter.Converter.ConversionException { if (null == value) { @@ -15,6 +16,7 @@ public class Vaadin6ImplicitDoubleConverter implements return new Double(value.toString()); } + @Override public String convertToPresentation(Double value, Locale locale) throws com.vaadin.data.util.converter.Converter.ConversionException { if (value == null) { @@ -24,10 +26,12 @@ public class Vaadin6ImplicitDoubleConverter implements } + @Override public Class<Double> getModelType() { return Double.class; } + @Override public Class<String> getPresentationType() { return String.class; } diff --git a/tests/testbench/com/vaadin/tests/components/accordion/RemoveTabs.java b/tests/testbench/com/vaadin/tests/components/accordion/RemoveTabs.java index a048cf04a8..d24def22dd 100644 --- a/tests/testbench/com/vaadin/tests/components/accordion/RemoveTabs.java +++ b/tests/testbench/com/vaadin/tests/components/accordion/RemoveTabs.java @@ -47,6 +47,7 @@ public class RemoveTabs extends TestBase { closeCurrent = new Button("Close current tab"); closeCurrent.addListener(new Button.ClickListener() { + @Override public void buttonClick(ClickEvent event) { closeCurrentTab(); @@ -55,6 +56,7 @@ public class RemoveTabs extends TestBase { closeFirst = new Button("close first tab"); closeFirst.addListener(new Button.ClickListener() { + @Override public void buttonClick(ClickEvent event) { closeFirstTab(); @@ -63,6 +65,7 @@ public class RemoveTabs extends TestBase { closeLast = new Button("close last tab"); closeLast.addListener(new Button.ClickListener() { + @Override public void buttonClick(ClickEvent event) { closeLastTab(); @@ -71,6 +74,7 @@ public class RemoveTabs extends TestBase { reorderTabs = new Button("reorder"); reorderTabs.addListener(new Button.ClickListener() { + @Override public void buttonClick(ClickEvent event) { reorder(); diff --git a/tests/testbench/com/vaadin/tests/components/beanitemcontainer/BeanItemContainerNullValues.java b/tests/testbench/com/vaadin/tests/components/beanitemcontainer/BeanItemContainerNullValues.java index f613a8b14f..605ab676b6 100644 --- a/tests/testbench/com/vaadin/tests/components/beanitemcontainer/BeanItemContainerNullValues.java +++ b/tests/testbench/com/vaadin/tests/components/beanitemcontainer/BeanItemContainerNullValues.java @@ -29,6 +29,7 @@ public class BeanItemContainerNullValues extends TestBase { Button b = new Button("Disable sorting", new Button.ClickListener() { + @Override public void buttonClick(ClickEvent event) { table.setSortEnabled(!table.isSortEnabled()); if (table.isSortEnabled()) { diff --git a/tests/testbench/com/vaadin/tests/components/button/ButtonEnterWithWindowShortcut.java b/tests/testbench/com/vaadin/tests/components/button/ButtonEnterWithWindowShortcut.java index 7efd40ca5d..0d4981a441 100644 --- a/tests/testbench/com/vaadin/tests/components/button/ButtonEnterWithWindowShortcut.java +++ b/tests/testbench/com/vaadin/tests/components/button/ButtonEnterWithWindowShortcut.java @@ -17,10 +17,12 @@ public class ButtonEnterWithWindowShortcut extends TestBase { getMainWindow().addActionHandler(new Handler() { private static final long serialVersionUID = -4976129418325394913L; + @Override public void handleAction(Action action, Object sender, Object target) { log.log(action.getCaption() + " pressed in window"); } + @Override public Action[] getActions(Object target, Object sender) { ShortcutAction enter = new ShortcutAction("enter", ShortcutAction.KeyCode.ENTER, null); @@ -32,6 +34,7 @@ public class ButtonEnterWithWindowShortcut extends TestBase { Button button = new Button("Focus me and press enter", new ClickListener() { + @Override public void buttonClick(ClickEvent event) { log.log("button click listener fired"); } diff --git a/tests/testbench/com/vaadin/tests/components/button/ButtonErrorMessage.java b/tests/testbench/com/vaadin/tests/components/button/ButtonErrorMessage.java index aca85d4efe..b27f948669 100644 --- a/tests/testbench/com/vaadin/tests/components/button/ButtonErrorMessage.java +++ b/tests/testbench/com/vaadin/tests/components/button/ButtonErrorMessage.java @@ -11,6 +11,7 @@ public class ButtonErrorMessage extends TestBase { protected void setup() { Button b = new Button("Click for error"); b.addListener(new ClickListener() { + @Override public void buttonClick(ClickEvent event) { throw new NullPointerException(); } diff --git a/tests/testbench/com/vaadin/tests/components/button/ButtonHtml.java b/tests/testbench/com/vaadin/tests/components/button/ButtonHtml.java index 253de5b43c..5cdc34e8e8 100644 --- a/tests/testbench/com/vaadin/tests/components/button/ButtonHtml.java +++ b/tests/testbench/com/vaadin/tests/components/button/ButtonHtml.java @@ -19,6 +19,7 @@ public class ButtonHtml extends TestBase { final Button swapButton = new Button("<i>Swap button<i>"); swapButton.addListener(new Button.ClickListener() { + @Override public void buttonClick(ClickEvent event) { swapButton.setHtmlContentAllowed(!swapButton .isHtmlContentAllowed()); diff --git a/tests/testbench/com/vaadin/tests/components/button/ButtonMouseDetails.java b/tests/testbench/com/vaadin/tests/components/button/ButtonMouseDetails.java index 8fe56b7619..1b6a81551a 100644 --- a/tests/testbench/com/vaadin/tests/components/button/ButtonMouseDetails.java +++ b/tests/testbench/com/vaadin/tests/components/button/ButtonMouseDetails.java @@ -1,6 +1,6 @@ package com.vaadin.tests.components.button; -import com.vaadin.terminal.gwt.client.ui.label.ContentMode; +import com.vaadin.shared.ui.label.ContentMode; import com.vaadin.tests.components.TestBase; import com.vaadin.ui.Button; import com.vaadin.ui.Button.ClickEvent; @@ -14,6 +14,7 @@ public class ButtonMouseDetails extends TestBase { private Button.ClickListener clickListener = new Button.ClickListener() { + @Override public void buttonClick(ClickEvent event) { StringBuilder str = new StringBuilder(out.getValue().toString()); str.append(clickCounter + ":\t"); diff --git a/tests/testbench/com/vaadin/tests/components/button/Buttons2.java b/tests/testbench/com/vaadin/tests/components/button/Buttons2.java index e04d50bddb..7526e7dbc3 100644 --- a/tests/testbench/com/vaadin/tests/components/button/Buttons2.java +++ b/tests/testbench/com/vaadin/tests/components/button/Buttons2.java @@ -13,6 +13,7 @@ public class Buttons2<T extends Button> extends AbstractComponentTest<T> private Command<T, Boolean> disableOnClickCommand = new Command<T, Boolean>() { + @Override public void execute(T c, Boolean value, Object data) { c.setDisableOnClick(value); } @@ -20,6 +21,7 @@ public class Buttons2<T extends Button> extends AbstractComponentTest<T> private Command<T, Boolean> clickListenerCommand = new Command<T, Boolean>() { + @Override public void execute(T c, Boolean value, Object data) { if (value) { c.addListener((Button.ClickListener) Buttons2.this); @@ -62,6 +64,7 @@ public class Buttons2<T extends Button> extends AbstractComponentTest<T> } + @Override public void buttonClick(ClickEvent event) { log(event.getClass().getSimpleName()); } diff --git a/tests/testbench/com/vaadin/tests/components/button/ShortCutListenerModification.java b/tests/testbench/com/vaadin/tests/components/button/ShortCutListenerModification.java index 295c04fc0c..4fb8df678e 100644 --- a/tests/testbench/com/vaadin/tests/components/button/ShortCutListenerModification.java +++ b/tests/testbench/com/vaadin/tests/components/button/ShortCutListenerModification.java @@ -60,6 +60,7 @@ public class ShortCutListenerModification extends TestBase implements } + @Override public void buttonClick(ClickEvent event) { Component c = event.getButton(); while (!(c instanceof Window)) { diff --git a/tests/testbench/com/vaadin/tests/components/button/TooltipForDisabledButton.java b/tests/testbench/com/vaadin/tests/components/button/TooltipForDisabledButton.java index 4952b4bc50..c1f1846415 100644 --- a/tests/testbench/com/vaadin/tests/components/button/TooltipForDisabledButton.java +++ b/tests/testbench/com/vaadin/tests/components/button/TooltipForDisabledButton.java @@ -27,6 +27,7 @@ public class TooltipForDisabledButton extends TestBase { buttonDisabled.addListener(new Button.ClickListener() { + @Override public void buttonClick(ClickEvent event) { getMainWindow().showNotification("Clicked Disabled"); } @@ -35,6 +36,7 @@ public class TooltipForDisabledButton extends TestBase { buttonEnabled.addListener(new Button.ClickListener() { + @Override public void buttonClick(ClickEvent event) { getMainWindow().showNotification("Clicked Enabled"); } diff --git a/tests/testbench/com/vaadin/tests/components/caption/IconsInCaption.java b/tests/testbench/com/vaadin/tests/components/caption/IconsInCaption.java index 3211a9c142..57ef9e6656 100644 --- a/tests/testbench/com/vaadin/tests/components/caption/IconsInCaption.java +++ b/tests/testbench/com/vaadin/tests/components/caption/IconsInCaption.java @@ -2,8 +2,8 @@ package com.vaadin.tests.components.caption; import com.vaadin.data.Property.ValueChangeEvent; import com.vaadin.data.Property.ValueChangeListener; +import com.vaadin.shared.ui.label.ContentMode; import com.vaadin.terminal.ThemeResource; -import com.vaadin.terminal.gwt.client.ui.label.ContentMode; import com.vaadin.tests.VaadinClasses; import com.vaadin.tests.components.TestBase; import com.vaadin.tests.util.Log; @@ -47,6 +47,7 @@ public class IconsInCaption extends TestBase { iconTypeSelect.setImmediate(true); iconTypeSelect.setNullSelectionAllowed(false); iconTypeSelect.addListener(new ValueChangeListener() { + @Override public void valueChange(ValueChangeEvent event) { updateContainer(); } @@ -60,6 +61,7 @@ public class IconsInCaption extends TestBase { containerSelect.setImmediate(true); containerSelect.addListener(new ValueChangeListener() { + @Override public void valueChange(ValueChangeEvent event) { updateContainer(); diff --git a/tests/testbench/com/vaadin/tests/components/checkbox/CheckBoxNullValue.java b/tests/testbench/com/vaadin/tests/components/checkbox/CheckBoxNullValue.java index 2c981432c8..28abf5172d 100644 --- a/tests/testbench/com/vaadin/tests/components/checkbox/CheckBoxNullValue.java +++ b/tests/testbench/com/vaadin/tests/components/checkbox/CheckBoxNullValue.java @@ -29,6 +29,7 @@ public class CheckBoxNullValue extends TestBase { final Button button = new Button("Validate"); addComponent(button); button.addListener(new Button.ClickListener() { + @Override public void buttonClick(ClickEvent event) { checkbox.setComponentError(null); requiredCheckbox.setComponentError(null); diff --git a/tests/testbench/com/vaadin/tests/components/checkbox/CheckBoxes2.java b/tests/testbench/com/vaadin/tests/components/checkbox/CheckBoxes2.java index 4f9cd10ecc..6734c752de 100644 --- a/tests/testbench/com/vaadin/tests/components/checkbox/CheckBoxes2.java +++ b/tests/testbench/com/vaadin/tests/components/checkbox/CheckBoxes2.java @@ -19,6 +19,7 @@ public class CheckBoxes2 extends AbstractFieldTest<CheckBox> implements } + @Override public void buttonClick(ClickEvent event) { log(event.getClass().getSimpleName()); } diff --git a/tests/testbench/com/vaadin/tests/components/combobox/ComboBoxCombinedWithEnterShortcut.java b/tests/testbench/com/vaadin/tests/components/combobox/ComboBoxCombinedWithEnterShortcut.java index 88a403b1b6..38bdf0c5fe 100644 --- a/tests/testbench/com/vaadin/tests/components/combobox/ComboBoxCombinedWithEnterShortcut.java +++ b/tests/testbench/com/vaadin/tests/components/combobox/ComboBoxCombinedWithEnterShortcut.java @@ -29,6 +29,7 @@ public class ComboBoxCombinedWithEnterShortcut extends TestBase { aButton.setClickShortcut(KeyCode.ENTER); aButton.addListener(new Button.ClickListener() { + @Override public void buttonClick(ClickEvent event) { log.log("Button clicked. ComboBox value: " + l.getValue()); diff --git a/tests/testbench/com/vaadin/tests/components/combobox/ComboBoxDataSourceChange.java b/tests/testbench/com/vaadin/tests/components/combobox/ComboBoxDataSourceChange.java index 9285983b99..a475c86ca0 100644 --- a/tests/testbench/com/vaadin/tests/components/combobox/ComboBoxDataSourceChange.java +++ b/tests/testbench/com/vaadin/tests/components/combobox/ComboBoxDataSourceChange.java @@ -57,6 +57,7 @@ public class ComboBoxDataSourceChange extends TestBase { Button b = new Button("Use ds1"); b.addListener(new Button.ClickListener() { + @Override public void buttonClick(ClickEvent event) { cb2.setContainerDataSource(ds1); currentDS.setValue("ds1"); @@ -72,6 +73,7 @@ public class ComboBoxDataSourceChange extends TestBase { b = new Button("Use ds2"); b.addListener(new Button.ClickListener() { + @Override public void buttonClick(ClickEvent event) { cb2.setContainerDataSource(ds2); currentDS.setValue("ds2"); @@ -82,6 +84,7 @@ public class ComboBoxDataSourceChange extends TestBase { addComponent(hl); cb2.addListener(new Property.ValueChangeListener() { + @Override public void valueChange(ValueChangeEvent event) { currentValue.setValue(event.getProperty().getValue()); } diff --git a/tests/testbench/com/vaadin/tests/components/combobox/ComboBoxEnablesComboBox.java b/tests/testbench/com/vaadin/tests/components/combobox/ComboBoxEnablesComboBox.java index d9739602f6..c5e411678d 100644 --- a/tests/testbench/com/vaadin/tests/components/combobox/ComboBoxEnablesComboBox.java +++ b/tests/testbench/com/vaadin/tests/components/combobox/ComboBoxEnablesComboBox.java @@ -16,6 +16,7 @@ public class ComboBoxEnablesComboBox extends TestBase { populate(cb); cb.addListener(new ValueChangeListener() { + @Override public void valueChange(ValueChangeEvent event) { cb2.setEnabled(true); } diff --git a/tests/testbench/com/vaadin/tests/components/combobox/ComboBoxIdenticalItems.java b/tests/testbench/com/vaadin/tests/components/combobox/ComboBoxIdenticalItems.java index fd434a7acd..5f33b96a73 100644 --- a/tests/testbench/com/vaadin/tests/components/combobox/ComboBoxIdenticalItems.java +++ b/tests/testbench/com/vaadin/tests/components/combobox/ComboBoxIdenticalItems.java @@ -27,6 +27,7 @@ public class ComboBoxIdenticalItems extends TestBase { select.addListener(new Property.ValueChangeListener() { private static final long serialVersionUID = -7932700771673919620L; + @Override public void valueChange(ValueChangeEvent event) { log.log("Item " + select.getValue() + " selected"); diff --git a/tests/testbench/com/vaadin/tests/components/combobox/ComboBoxInPopup.java b/tests/testbench/com/vaadin/tests/components/combobox/ComboBoxInPopup.java index 70aad31364..c0490c127d 100644 --- a/tests/testbench/com/vaadin/tests/components/combobox/ComboBoxInPopup.java +++ b/tests/testbench/com/vaadin/tests/components/combobox/ComboBoxInPopup.java @@ -17,6 +17,7 @@ public class ComboBoxInPopup extends TestBase { w.addComponent(createComboBox()); Button close = new Button("Close window", new Button.ClickListener() { + @Override public void buttonClick(ClickEvent event) { w.close(); } diff --git a/tests/testbench/com/vaadin/tests/components/combobox/ComboBoxInvalidNullSelection.java b/tests/testbench/com/vaadin/tests/components/combobox/ComboBoxInvalidNullSelection.java index e11b10f3e1..0afa1e887e 100644 --- a/tests/testbench/com/vaadin/tests/components/combobox/ComboBoxInvalidNullSelection.java +++ b/tests/testbench/com/vaadin/tests/components/combobox/ComboBoxInvalidNullSelection.java @@ -24,6 +24,7 @@ public class ComboBoxInvalidNullSelection extends TestBase { Button b = new Button("Swap data source"); b.addListener(new Button.ClickListener() { + @Override public void buttonClick(ClickEvent event) { if (combo.getContainerDataSource() == ds1) { combo.setContainerDataSource(ds2); @@ -39,6 +40,7 @@ public class ComboBoxInvalidNullSelection extends TestBase { combo.setContainerDataSource(ds1); combo.addListener(new ValueChangeListener() { + @Override public void valueChange(ValueChangeEvent event) { log.log("Value is now: " + combo.getValue()); } diff --git a/tests/testbench/com/vaadin/tests/components/combobox/ComboBoxReapperingOldValue.java b/tests/testbench/com/vaadin/tests/components/combobox/ComboBoxReapperingOldValue.java index c78ff7675f..5dc5a2efbd 100644 --- a/tests/testbench/com/vaadin/tests/components/combobox/ComboBoxReapperingOldValue.java +++ b/tests/testbench/com/vaadin/tests/components/combobox/ComboBoxReapperingOldValue.java @@ -58,6 +58,7 @@ public class ComboBoxReapperingOldValue extends Application.LegacyApplication return container; } + @Override public void valueChange(ValueChangeEvent event) { cbox2.removeAllItems(); if ("1".equals(event.getProperty().getValue().toString())) { diff --git a/tests/testbench/com/vaadin/tests/components/combobox/ComboBoxSlow.java b/tests/testbench/com/vaadin/tests/components/combobox/ComboBoxSlow.java index 15742cc783..0336ff423b 100644 --- a/tests/testbench/com/vaadin/tests/components/combobox/ComboBoxSlow.java +++ b/tests/testbench/com/vaadin/tests/components/combobox/ComboBoxSlow.java @@ -45,6 +45,7 @@ public class ComboBoxSlow extends TestBase { } cb.addListener(new ValueChangeListener() { + @Override public void valueChange(ValueChangeEvent event) { log.log("Value changed to " + cb.getValue()); diff --git a/tests/testbench/com/vaadin/tests/components/combobox/ComboBoxSlowInFF.java b/tests/testbench/com/vaadin/tests/components/combobox/ComboBoxSlowInFF.java index 5c1dad4a30..d98997d28f 100644 --- a/tests/testbench/com/vaadin/tests/components/combobox/ComboBoxSlowInFF.java +++ b/tests/testbench/com/vaadin/tests/components/combobox/ComboBoxSlowInFF.java @@ -24,6 +24,7 @@ public class ComboBoxSlowInFF extends TestBase { Button fill = new Button("fill it"); fill.addListener(new Button.ClickListener() { + @Override public void buttonClick(ClickEvent event) { t.removeAllItems(); for (int i = 0; i < 200; i++) { diff --git a/tests/testbench/com/vaadin/tests/components/combobox/ComboBoxSuggestionOnDetach.java b/tests/testbench/com/vaadin/tests/components/combobox/ComboBoxSuggestionOnDetach.java index 09354fdacf..24aea18314 100644 --- a/tests/testbench/com/vaadin/tests/components/combobox/ComboBoxSuggestionOnDetach.java +++ b/tests/testbench/com/vaadin/tests/components/combobox/ComboBoxSuggestionOnDetach.java @@ -16,6 +16,7 @@ public class ComboBoxSuggestionOnDetach extends TestBase { ComboBox comboBox = new ComboBox("Combo box", Arrays.asList("Option 1", "Option 2", "Option 3")); comboBox.addListener(new FieldEvents.FocusListener() { + @Override public void focus(FocusEvent event) { popup.close(); } diff --git a/tests/testbench/com/vaadin/tests/components/combobox/ComboBoxTextFieldEventOrder.java b/tests/testbench/com/vaadin/tests/components/combobox/ComboBoxTextFieldEventOrder.java index 6f6e550ab4..d33a858dc8 100644 --- a/tests/testbench/com/vaadin/tests/components/combobox/ComboBoxTextFieldEventOrder.java +++ b/tests/testbench/com/vaadin/tests/components/combobox/ComboBoxTextFieldEventOrder.java @@ -17,6 +17,7 @@ public class ComboBoxTextFieldEventOrder extends TestBase { final Select select = new Select("select", Arrays.asList("1", "2", "3", "4")); textField.addListener(new ValueChangeListener() { + @Override public void valueChange(ValueChangeEvent event) { select.addItem(Long.valueOf(select.size() + 1).toString()); // or // just diff --git a/tests/testbench/com/vaadin/tests/components/combobox/ComboBoxValueUpdate.java b/tests/testbench/com/vaadin/tests/components/combobox/ComboBoxValueUpdate.java index b8f7a9758d..76ee83384e 100644 --- a/tests/testbench/com/vaadin/tests/components/combobox/ComboBoxValueUpdate.java +++ b/tests/testbench/com/vaadin/tests/components/combobox/ComboBoxValueUpdate.java @@ -29,6 +29,7 @@ public class ComboBoxValueUpdate extends TestBase { select.addListener(new ComboBox.ValueChangeListener() { + @Override public void valueChange(ValueChangeEvent event) { System.err .println("Selected " + event.getProperty().getValue()); diff --git a/tests/testbench/com/vaadin/tests/components/combobox/ComboBoxes2.java b/tests/testbench/com/vaadin/tests/components/combobox/ComboBoxes2.java index 8befbb4612..3071ab4c2d 100644 --- a/tests/testbench/com/vaadin/tests/components/combobox/ComboBoxes2.java +++ b/tests/testbench/com/vaadin/tests/components/combobox/ComboBoxes2.java @@ -10,12 +10,14 @@ import com.vaadin.ui.Select; public class ComboBoxes2 extends SelectTest<ComboBox> { private Command<ComboBox, String> inputPromptCommand = new Command<ComboBox, String>() { + @Override public void execute(ComboBox c, String value, Object data) { c.setInputPrompt(value); } }; private Command<ComboBox, Integer> filteringModeCommand = new Command<ComboBox, Integer>() { + @Override public void execute(ComboBox c, Integer value, Object data) { c.setFilteringMode(value); } @@ -39,6 +41,7 @@ public class ComboBoxes2 extends SelectTest<ComboBox> { private void createTextInputAlowedAction(String category) { createBooleanAction("Text input allowed", category, true, new Command<ComboBox, Boolean>() { + @Override public void execute(ComboBox c, Boolean value, Object data) { c.setTextInputAllowed(value.booleanValue()); } @@ -48,6 +51,7 @@ public class ComboBoxes2 extends SelectTest<ComboBox> { private void createNewItemsAllowedAction(String category) { createBooleanAction("New items allowed", category, false, new Command<ComboBox, Boolean>() { + @Override public void execute(ComboBox c, Boolean value, Object data) { c.setNewItemsAllowed(value.booleanValue()); } @@ -80,6 +84,7 @@ public class ComboBoxes2 extends SelectTest<ComboBox> { createSelectAction("Icon", category, createIconOptions(false), "-", new Command<ComboBox, Resource>() { + @Override public void execute(ComboBox c, Resource value, Object data) { for (Object id : c.getItemIds()) { if (value == null) { diff --git a/tests/testbench/com/vaadin/tests/components/combobox/ComboFocusBlurEvents.java b/tests/testbench/com/vaadin/tests/components/combobox/ComboFocusBlurEvents.java index 44285f97c2..b9c222247b 100644 --- a/tests/testbench/com/vaadin/tests/components/combobox/ComboFocusBlurEvents.java +++ b/tests/testbench/com/vaadin/tests/components/combobox/ComboFocusBlurEvents.java @@ -7,7 +7,7 @@ import com.vaadin.data.util.ObjectProperty; import com.vaadin.event.FieldEvents; import com.vaadin.event.FieldEvents.BlurEvent; import com.vaadin.event.FieldEvents.FocusEvent; -import com.vaadin.terminal.gwt.client.ui.label.ContentMode; +import com.vaadin.shared.ui.label.ContentMode; import com.vaadin.tests.components.TestBase; import com.vaadin.ui.ComboBox; import com.vaadin.ui.Label; @@ -34,6 +34,7 @@ public class ComboFocusBlurEvents extends TestBase { final ObjectProperty<String> log = new ObjectProperty<String>(""); cb.addListener(new FieldEvents.FocusListener() { + @Override public void focus(FocusEvent event) { log.setValue(log.getValue().toString() + "<br>" + counter + ": Focus event!"); @@ -42,6 +43,7 @@ public class ComboFocusBlurEvents extends TestBase { }); cb.addListener(new FieldEvents.BlurListener() { + @Override public void blur(BlurEvent event) { log.setValue(log.getValue().toString() + "<br>" + counter + ": Blur event!"); diff --git a/tests/testbench/com/vaadin/tests/components/combobox/Comboboxes.java b/tests/testbench/com/vaadin/tests/components/combobox/Comboboxes.java index 94ab20df43..5b1af58421 100644 --- a/tests/testbench/com/vaadin/tests/components/combobox/Comboboxes.java +++ b/tests/testbench/com/vaadin/tests/components/combobox/Comboboxes.java @@ -136,6 +136,7 @@ public class Comboboxes extends ComponentTestCase<ComboBox> { return createSelectAction("Icon", options, "<None>", new Command<ComboBox, String>() { + @Override public void execute(ComboBox c, String value, Object data) { for (Object id : c.getItemIds()) { if (value == null) { diff --git a/tests/testbench/com/vaadin/tests/components/combobox/NewItemsESCPress.java b/tests/testbench/com/vaadin/tests/components/combobox/NewItemsESCPress.java index d93db563e3..00e9242a7a 100644 --- a/tests/testbench/com/vaadin/tests/components/combobox/NewItemsESCPress.java +++ b/tests/testbench/com/vaadin/tests/components/combobox/NewItemsESCPress.java @@ -17,6 +17,7 @@ public class NewItemsESCPress extends TestBase { final ComboBox box = new ComboBox("New items are allowed"); box.setNewItemsAllowed(true); box.setNewItemHandler(new NewItemHandler() { + @Override public void addNewItem(String newItemCaption) { String value = (String) addedItems.getValue(); addedItems.setValue(value + newItemCaption + "\n"); diff --git a/tests/testbench/com/vaadin/tests/components/combobox/RemovalOfSelectedIcon.java b/tests/testbench/com/vaadin/tests/components/combobox/RemovalOfSelectedIcon.java index a79b85ece4..ce6a24d9bd 100644 --- a/tests/testbench/com/vaadin/tests/components/combobox/RemovalOfSelectedIcon.java +++ b/tests/testbench/com/vaadin/tests/components/combobox/RemovalOfSelectedIcon.java @@ -22,6 +22,7 @@ public class RemovalOfSelectedIcon extends TestBase { btClear.setImmediate(true); btClear.addListener(new Button.ClickListener() { + @Override public void buttonClick(ClickEvent event) { cb2.removeAllItems(); cb2.setContainerDataSource(null); diff --git a/tests/testbench/com/vaadin/tests/components/customcomponent/ClipContent.java b/tests/testbench/com/vaadin/tests/components/customcomponent/ClipContent.java index 22fc381c72..094a63c163 100644 --- a/tests/testbench/com/vaadin/tests/components/customcomponent/ClipContent.java +++ b/tests/testbench/com/vaadin/tests/components/customcomponent/ClipContent.java @@ -1,7 +1,7 @@ package com.vaadin.tests.components.customcomponent; import com.vaadin.data.Property.ValueChangeEvent; -import com.vaadin.terminal.gwt.client.ui.label.ContentMode; +import com.vaadin.shared.ui.label.ContentMode; import com.vaadin.tests.components.TestBase; import com.vaadin.ui.Button; import com.vaadin.ui.CustomComponent; @@ -24,6 +24,7 @@ public class ClipContent extends TestBase { final TextField w = new TextField("Width"); w.setValue("20px"); w.addListener(new TextField.ValueChangeListener() { + @Override public void valueChange(ValueChangeEvent event) { cc.setWidth(w.getValue()); } @@ -32,6 +33,7 @@ public class ClipContent extends TestBase { final TextField h = new TextField("Height"); h.setValue("20px"); h.addListener(new TextField.ValueChangeListener() { + @Override public void valueChange(ValueChangeEvent event) { cc.setHeight(h.getValue()); } diff --git a/tests/testbench/com/vaadin/tests/components/customcomponent/CustomComponentGrowingContent.java b/tests/testbench/com/vaadin/tests/components/customcomponent/CustomComponentGrowingContent.java index 9a559f7414..4311ad1f08 100644 --- a/tests/testbench/com/vaadin/tests/components/customcomponent/CustomComponentGrowingContent.java +++ b/tests/testbench/com/vaadin/tests/components/customcomponent/CustomComponentGrowingContent.java @@ -24,6 +24,7 @@ public class CustomComponentGrowingContent extends TestBase { }); addComponent(new Button("Set long content", new Button.ClickListener() { + @Override public void buttonClick(ClickEvent event) { label.setValue("Longer content that should be fully visible"); } diff --git a/tests/testbench/com/vaadin/tests/components/customcomponent/CustomComponentSizeUpdate.java b/tests/testbench/com/vaadin/tests/components/customcomponent/CustomComponentSizeUpdate.java index 43d4c70eb8..2351b02e2a 100644 --- a/tests/testbench/com/vaadin/tests/components/customcomponent/CustomComponentSizeUpdate.java +++ b/tests/testbench/com/vaadin/tests/components/customcomponent/CustomComponentSizeUpdate.java @@ -20,6 +20,7 @@ public class CustomComponentSizeUpdate extends TestBase { nb.addListener(new ClickListener() { + @Override public void buttonClick(ClickEvent event) { cc.setWidth((cc.getWidth() - 20) + "px"); cc.setHeight((cc.getHeight() - 20) + "px"); diff --git a/tests/testbench/com/vaadin/tests/components/customcomponent/CustomLayoutUsingTemplate.java b/tests/testbench/com/vaadin/tests/components/customcomponent/CustomLayoutUsingTemplate.java index 2dc3063b0c..28e4dfb385 100644 --- a/tests/testbench/com/vaadin/tests/components/customcomponent/CustomLayoutUsingTemplate.java +++ b/tests/testbench/com/vaadin/tests/components/customcomponent/CustomLayoutUsingTemplate.java @@ -54,6 +54,7 @@ public class CustomLayoutUsingTemplate extends TestBase implements return null; } + @Override public void buttonClick(ClickEvent event) { layout.addComponent(new TextField("A text field!"), "location2"); } diff --git a/tests/testbench/com/vaadin/tests/components/customcomponent/CustomLayoutUsingTheme.java b/tests/testbench/com/vaadin/tests/components/customcomponent/CustomLayoutUsingTheme.java index 6ea1d0a0c5..06dd39ac38 100644 --- a/tests/testbench/com/vaadin/tests/components/customcomponent/CustomLayoutUsingTheme.java +++ b/tests/testbench/com/vaadin/tests/components/customcomponent/CustomLayoutUsingTheme.java @@ -28,6 +28,7 @@ public class CustomLayoutUsingTheme extends TestBase implements ClickListener { VerticalLayout menu = new VerticalLayout(); menu.addComponent(new Button("Set body to label", new ClickListener() { + @Override public void buttonClick(ClickEvent event) { layout.addComponent(new Label(LoremIpsum.get(200)), "body"); } @@ -35,6 +36,7 @@ public class CustomLayoutUsingTheme extends TestBase implements ClickListener { menu.addComponent(new Button("Set body to huge NativeButton", new ClickListener() { + @Override public void buttonClick(ClickEvent event) { layout.addComponent(new NativeButton( "This is it, the body!"), "body"); @@ -53,6 +55,7 @@ public class CustomLayoutUsingTheme extends TestBase implements ClickListener { return null; } + @Override public void buttonClick(ClickEvent event) { layout.addComponent(new TextField("A text field!"), "location2"); } diff --git a/tests/testbench/com/vaadin/tests/components/customfield/AbstractNestedFormExample.java b/tests/testbench/com/vaadin/tests/components/customfield/AbstractNestedFormExample.java index c15ca1916a..07c740a96d 100644 --- a/tests/testbench/com/vaadin/tests/components/customfield/AbstractNestedFormExample.java +++ b/tests/testbench/com/vaadin/tests/components/customfield/AbstractNestedFormExample.java @@ -52,6 +52,7 @@ public abstract class AbstractNestedFormExample extends TestBase { private Property.ValueChangeListener getTableValueChangeListener() { return new Property.ValueChangeListener() { + @Override public void valueChange(ValueChangeEvent event) { if (personForm != null) { removeComponent(personForm); diff --git a/tests/testbench/com/vaadin/tests/components/customfield/AddressFormExample.java b/tests/testbench/com/vaadin/tests/components/customfield/AddressFormExample.java index 02c080e8fd..693b1e11b1 100644 --- a/tests/testbench/com/vaadin/tests/components/customfield/AddressFormExample.java +++ b/tests/testbench/com/vaadin/tests/components/customfield/AddressFormExample.java @@ -21,6 +21,7 @@ public class AddressFormExample extends TestBase { addComponent(field); Button commitButton = new Button("Save", new Button.ClickListener() { + @Override public void buttonClick(ClickEvent event) { field.commit(); Address address = field.getValue(); diff --git a/tests/testbench/com/vaadin/tests/components/customfield/BooleanField.java b/tests/testbench/com/vaadin/tests/components/customfield/BooleanField.java index dc60d7e517..409ecccca8 100644 --- a/tests/testbench/com/vaadin/tests/components/customfield/BooleanField.java +++ b/tests/testbench/com/vaadin/tests/components/customfield/BooleanField.java @@ -23,6 +23,7 @@ public class BooleanField extends CustomField { final Button button = new Button("Click me"); button.addListener(new ClickListener() { + @Override public void buttonClick(ClickEvent event) { Object value = getValue(); boolean newValue = true; diff --git a/tests/testbench/com/vaadin/tests/components/customfield/BooleanFieldExample.java b/tests/testbench/com/vaadin/tests/components/customfield/BooleanFieldExample.java index 694c5b54f9..a52b168e84 100644 --- a/tests/testbench/com/vaadin/tests/components/customfield/BooleanFieldExample.java +++ b/tests/testbench/com/vaadin/tests/components/customfield/BooleanFieldExample.java @@ -61,10 +61,11 @@ public class BooleanFieldExample extends TestBase { layout.addComponent(form); Button submit = new Button("Submit", new ClickListener() { + @Override public void buttonClick(ClickEvent event) { form.commit(); Notification.show("The custom boolean field value is " - + data.isCustom() + ".<br>" + + data.isCustom() + ".\n" + "The checkbox (default boolean field) value is " + data.isNormal() + "."); } diff --git a/tests/testbench/com/vaadin/tests/components/customfield/NestedPersonForm.java b/tests/testbench/com/vaadin/tests/components/customfield/NestedPersonForm.java index e0a3b08bc7..0bc4f45545 100644 --- a/tests/testbench/com/vaadin/tests/components/customfield/NestedPersonForm.java +++ b/tests/testbench/com/vaadin/tests/components/customfield/NestedPersonForm.java @@ -48,6 +48,7 @@ public class NestedPersonForm extends Form { buttons.setSpacing(true); Button discardChanges = new Button("Discard changes", new Button.ClickListener() { + @Override public void buttonClick(ClickEvent event) { NestedPersonForm.this.discard(); } @@ -56,6 +57,7 @@ public class NestedPersonForm extends Form { buttons.setComponentAlignment(discardChanges, Alignment.MIDDLE_LEFT); Button apply = new Button("Apply", new Button.ClickListener() { + @Override public void buttonClick(ClickEvent event) { try { NestedPersonForm.this.commit(); diff --git a/tests/testbench/com/vaadin/tests/components/datefield/CommitInvalid.java b/tests/testbench/com/vaadin/tests/components/datefield/CommitInvalid.java index 1395b4d735..c4f001ac41 100644 --- a/tests/testbench/com/vaadin/tests/components/datefield/CommitInvalid.java +++ b/tests/testbench/com/vaadin/tests/components/datefield/CommitInvalid.java @@ -72,6 +72,7 @@ public class CommitInvalid extends TestBase { Button validate = new Button("Validate"); validate.setDebugId("_validate"); validate.addListener(new Button.ClickListener() { + @Override public void buttonClick(ClickEvent event) { try { form.validate(); @@ -88,6 +89,7 @@ public class CommitInvalid extends TestBase { Button commit = new Button("Commit"); commit.setDebugId("_commit"); commit.addListener(new Button.ClickListener() { + @Override public void buttonClick(ClickEvent event) { try { form.commit(); @@ -103,6 +105,7 @@ public class CommitInvalid extends TestBase { form.getFooter().addComponent(commit); Button printState = new Button("printState"); printState.addListener(new Button.ClickListener() { + @Override public void buttonClick(ClickEvent event) { printState(); } diff --git a/tests/testbench/com/vaadin/tests/components/datefield/CustomDateFormats.java b/tests/testbench/com/vaadin/tests/components/datefield/CustomDateFormats.java index 48bf3622d1..acca47ee5e 100644 --- a/tests/testbench/com/vaadin/tests/components/datefield/CustomDateFormats.java +++ b/tests/testbench/com/vaadin/tests/components/datefield/CustomDateFormats.java @@ -37,6 +37,7 @@ public class CustomDateFormats extends TestBase { s.addListener(new Property.ValueChangeListener() { + @Override public void valueChange(ValueChangeEvent event) { setDateFieldLocale((Locale) s.getValue()); } @@ -155,6 +156,7 @@ public class CustomDateFormats extends TestBase { df.setValue(cal.getTime()); df.addListener(new Property.ValueChangeListener() { + @Override public void valueChange(ValueChangeEvent event) { updateServerSideLabel((DateField) event.getProperty()); } diff --git a/tests/testbench/com/vaadin/tests/components/datefield/DateFieldEmptyValid.java b/tests/testbench/com/vaadin/tests/components/datefield/DateFieldEmptyValid.java index dac3169b18..5098a4e459 100644 --- a/tests/testbench/com/vaadin/tests/components/datefield/DateFieldEmptyValid.java +++ b/tests/testbench/com/vaadin/tests/components/datefield/DateFieldEmptyValid.java @@ -7,7 +7,7 @@ import java.util.Locale; import com.vaadin.data.Property.ValueChangeEvent; import com.vaadin.data.Property.ValueChangeListener; import com.vaadin.data.util.ObjectProperty; -import com.vaadin.terminal.gwt.client.ui.label.ContentMode; +import com.vaadin.shared.ui.label.ContentMode; import com.vaadin.tests.components.TestBase; import com.vaadin.tests.util.Log; import com.vaadin.ui.Button; @@ -48,6 +48,7 @@ public class DateFieldEmptyValid extends TestBase { df.setImmediate(true); df.setResolution(DateField.RESOLUTION_DAY); df.addListener(new ValueChangeListener() { + @Override public void valueChange(ValueChangeEvent event) { log.log("Value changeEvent"); checkEmpty(); @@ -59,6 +60,7 @@ public class DateFieldEmptyValid extends TestBase { b.setDebugId("clear"); b.addListener(new ClickListener() { + @Override public void buttonClick(ClickEvent event) { log.log("Clearing date aka setValue(null)"); df.setValue(null); @@ -70,6 +72,7 @@ public class DateFieldEmptyValid extends TestBase { b.setDebugId("set4.5.1990"); b.addListener(new ClickListener() { + @Override @SuppressWarnings("deprecation") public void buttonClick(ClickEvent event) { log.log("Setting new value to datefield (4.5.1990)"); @@ -81,6 +84,7 @@ public class DateFieldEmptyValid extends TestBase { b = new Button("Set date to 5.6.2000 using a property data source"); b.addListener(new ClickListener() { + @Override @SuppressWarnings("deprecation") public void buttonClick(ClickEvent event) { log.log("Setting new object property (5.6.2000) to datefield"); @@ -97,6 +101,7 @@ public class DateFieldEmptyValid extends TestBase { b.setDebugId("set-via-ds"); b.addListener(new ClickListener() { + @Override @SuppressWarnings("deprecation") public void buttonClick(ClickEvent event) { log.log("Setting object property (with value null) to datefield and set value of property to 27.8.2005"); @@ -111,6 +116,7 @@ public class DateFieldEmptyValid extends TestBase { b = new Button("Check value"); b.setDebugId("check-value"); b.addListener(new ClickListener() { + @Override public void buttonClick(ClickEvent event) { log.log("Checking state"); checkEmpty(); diff --git a/tests/testbench/com/vaadin/tests/components/datefield/DateFieldInSubWindow.java b/tests/testbench/com/vaadin/tests/components/datefield/DateFieldInSubWindow.java index 298359068e..2a7807670b 100644 --- a/tests/testbench/com/vaadin/tests/components/datefield/DateFieldInSubWindow.java +++ b/tests/testbench/com/vaadin/tests/components/datefield/DateFieldInSubWindow.java @@ -106,6 +106,7 @@ public class DateFieldInSubWindow extends AbstractTestCase { Button b = new Button("Close", new Button.ClickListener() { + @Override public void buttonClick(ClickEvent event) { TestCaseWindow.this.close(); } @@ -122,6 +123,7 @@ public class DateFieldInSubWindow extends AbstractTestCase { LegacyWindow mainWindow = new LegacyWindow(); setMainWindow(mainWindow); Button open = new Button("Open window", new Button.ClickListener() { + @Override public void buttonClick(ClickEvent event) { getMainWindow().addWindow(new TestCaseWindow()); } diff --git a/tests/testbench/com/vaadin/tests/components/datefield/DateFieldLocale.java b/tests/testbench/com/vaadin/tests/components/datefield/DateFieldLocale.java index dd61ccd60c..5d06895d11 100644 --- a/tests/testbench/com/vaadin/tests/components/datefield/DateFieldLocale.java +++ b/tests/testbench/com/vaadin/tests/components/datefield/DateFieldLocale.java @@ -21,6 +21,7 @@ public class DateFieldLocale extends TestBase { addComponent(new Button("Change locale", new ClickListener() { + @Override public void buttonClick(ClickEvent event) { if (dateField.getLocale().getCountry().equalsIgnoreCase("fi")) { dateField.setLocale(new Locale("zh", "CN")); diff --git a/tests/testbench/com/vaadin/tests/components/datefield/DateFieldMinResolution.java b/tests/testbench/com/vaadin/tests/components/datefield/DateFieldMinResolution.java index e7c3442060..1a3b3858b8 100644 --- a/tests/testbench/com/vaadin/tests/components/datefield/DateFieldMinResolution.java +++ b/tests/testbench/com/vaadin/tests/components/datefield/DateFieldMinResolution.java @@ -39,6 +39,7 @@ public class DateFieldMinResolution extends TestBase { idf.setImmediate(true); idf.addListener(new Property.ValueChangeListener() { + @Override public void valueChange(ValueChangeEvent event) { lbl.setValue(dformat.format(event.getProperty().getValue())); } diff --git a/tests/testbench/com/vaadin/tests/components/datefield/DateFieldRangeValidation.java b/tests/testbench/com/vaadin/tests/components/datefield/DateFieldRangeValidation.java index bf93d8c8b9..befdd65693 100644 --- a/tests/testbench/com/vaadin/tests/components/datefield/DateFieldRangeValidation.java +++ b/tests/testbench/com/vaadin/tests/components/datefield/DateFieldRangeValidation.java @@ -56,6 +56,7 @@ public class DateFieldRangeValidation extends TestBase { private Range range = new Range(); private ValueChangeListener refreshField = new ValueChangeListener() { + @Override public void valueChange(ValueChangeEvent event) { actualDateField.requestRepaint(); } diff --git a/tests/testbench/com/vaadin/tests/components/datefield/DateFieldReadOnly.java b/tests/testbench/com/vaadin/tests/components/datefield/DateFieldReadOnly.java index 516d207a38..392dbaf9c6 100644 --- a/tests/testbench/com/vaadin/tests/components/datefield/DateFieldReadOnly.java +++ b/tests/testbench/com/vaadin/tests/components/datefield/DateFieldReadOnly.java @@ -43,6 +43,7 @@ public class DateFieldReadOnly extends TestBase { Button b = new Button("Switch read-only"); b.addListener(new ClickListener() { + @Override public void buttonClick(ClickEvent event) { timeField.setReadOnly(!timeField.isReadOnly()); } diff --git a/tests/testbench/com/vaadin/tests/components/datefield/DateFieldTest.java b/tests/testbench/com/vaadin/tests/components/datefield/DateFieldTest.java index e8c8b69f9f..c502b9597e 100644 --- a/tests/testbench/com/vaadin/tests/components/datefield/DateFieldTest.java +++ b/tests/testbench/com/vaadin/tests/components/datefield/DateFieldTest.java @@ -21,6 +21,7 @@ public class DateFieldTest<T extends DateField> extends AbstractFieldTest<T> { private Command<T, Date> setValue = new Command<T, Date>() { + @Override public void execute(T c, Date value, Object data) { c.setValue(value); } @@ -109,6 +110,7 @@ public class DateFieldTest<T extends DateField> extends AbstractFieldTest<T> { private Command<T, Resolution> resolutionCommand = new Command<T, Resolution>() { + @Override public void execute(T c, Resolution value, Object data) { c.setResolution(value); @@ -116,6 +118,7 @@ public class DateFieldTest<T extends DateField> extends AbstractFieldTest<T> { }; private Command<T, Boolean> lenientCommand = new Command<T, Boolean>() { + @Override public void execute(T c, Boolean value, Object data) { c.setLenient(false); @@ -123,6 +126,7 @@ public class DateFieldTest<T extends DateField> extends AbstractFieldTest<T> { }; private Command<T, Boolean> weekNumberCommand = new Command<T, Boolean>() { + @Override public void execute(T c, Boolean value, Object data) { c.setShowISOWeekNumbers(value); @@ -130,6 +134,7 @@ public class DateFieldTest<T extends DateField> extends AbstractFieldTest<T> { }; private Command<T, String> dateFormatCommand = new Command<T, String>() { + @Override public void execute(T c, String value, Object data) { c.setDateFormat(value); } diff --git a/tests/testbench/com/vaadin/tests/components/datefield/DateFieldTimezone.java b/tests/testbench/com/vaadin/tests/components/datefield/DateFieldTimezone.java index 340b647931..6f31b4d80f 100644 --- a/tests/testbench/com/vaadin/tests/components/datefield/DateFieldTimezone.java +++ b/tests/testbench/com/vaadin/tests/components/datefield/DateFieldTimezone.java @@ -51,6 +51,7 @@ public class DateFieldTimezone extends TestBase { timezoneSelector.setNullSelectionItemId(nullValue); timezoneSelector.setFilteringMode(ComboBox.FILTERINGMODE_CONTAINS); timezoneSelector.addListener(new Property.ValueChangeListener() { + @Override public void valueChange(ValueChangeEvent event) { Object value = event.getProperty().getValue(); TimeZone timeZone; @@ -75,6 +76,7 @@ public class DateFieldTimezone extends TestBase { dateField.setTimeZone(cal.getTimeZone()); dateField.setLocale(EN); dateField.addListener(new Property.ValueChangeListener() { + @Override public void valueChange(ValueChangeEvent event) { Date date = dateField.getValue(); DateFormat format = DateFormat.getDateTimeInstance( diff --git a/tests/testbench/com/vaadin/tests/components/datefield/DateFieldUnparsableDate.java b/tests/testbench/com/vaadin/tests/components/datefield/DateFieldUnparsableDate.java index 9b4a3c3383..bbe2423a3f 100644 --- a/tests/testbench/com/vaadin/tests/components/datefield/DateFieldUnparsableDate.java +++ b/tests/testbench/com/vaadin/tests/components/datefield/DateFieldUnparsableDate.java @@ -15,6 +15,7 @@ public class DateFieldUnparsableDate extends TestBase { public MyDateField(String caption) { super(caption); addListener(new Property.ValueChangeListener() { + @Override public void valueChange( com.vaadin.data.Property.ValueChangeEvent event) { oldDate = getValue(); diff --git a/tests/testbench/com/vaadin/tests/components/datefield/DefaultHandleUnparsableDateField.java b/tests/testbench/com/vaadin/tests/components/datefield/DefaultHandleUnparsableDateField.java index 060c7fcc0a..b5842694f0 100644 --- a/tests/testbench/com/vaadin/tests/components/datefield/DefaultHandleUnparsableDateField.java +++ b/tests/testbench/com/vaadin/tests/components/datefield/DefaultHandleUnparsableDateField.java @@ -15,6 +15,7 @@ public class DefaultHandleUnparsableDateField extends TestBase { date.setImmediate(true); addComponent(date); date.addListener(new Property.ValueChangeListener() { + @Override public void valueChange(ValueChangeEvent event) { if (date.isValid()) { getMainWindow() diff --git a/tests/testbench/com/vaadin/tests/components/datefield/DisabledDateFieldWidth.java b/tests/testbench/com/vaadin/tests/components/datefield/DisabledDateFieldWidth.java index 8f201e120d..4e256aa947 100644 --- a/tests/testbench/com/vaadin/tests/components/datefield/DisabledDateFieldWidth.java +++ b/tests/testbench/com/vaadin/tests/components/datefield/DisabledDateFieldWidth.java @@ -16,6 +16,7 @@ public class DisabledDateFieldWidth extends TestBase { Button button = new Button("Repaint datefield", new Button.ClickListener() { + @Override public void buttonClick(ClickEvent event) { dateField1.requestRepaint(); } diff --git a/tests/testbench/com/vaadin/tests/components/datefield/InlineDateFields.java b/tests/testbench/com/vaadin/tests/components/datefield/InlineDateFields.java index b8c5be57bf..c642db1bc0 100644 --- a/tests/testbench/com/vaadin/tests/components/datefield/InlineDateFields.java +++ b/tests/testbench/com/vaadin/tests/components/datefield/InlineDateFields.java @@ -81,6 +81,7 @@ public class InlineDateFields extends ComponentTestCase<InlineDateField> { return createSelectAction("Resolution", options, "Year", new Command<InlineDateField, Resolution>() { + @Override public void execute(InlineDateField c, Resolution value, Object data) { c.setResolution(value); @@ -97,6 +98,7 @@ public class InlineDateFields extends ComponentTestCase<InlineDateField> { return createSelectAction("Locale", options, LOCALES[0].toString(), new Command<InlineDateField, Locale>() { + @Override public void execute(InlineDateField c, Locale value, Object data) { c.setCaption(c.getCaption().replaceAll( diff --git a/tests/testbench/com/vaadin/tests/components/datefield/LenientMode.java b/tests/testbench/com/vaadin/tests/components/datefield/LenientMode.java index cbe9ac613f..585395d747 100644 --- a/tests/testbench/com/vaadin/tests/components/datefield/LenientMode.java +++ b/tests/testbench/com/vaadin/tests/components/datefield/LenientMode.java @@ -73,6 +73,7 @@ public class LenientMode extends TestBase implements ValueChangeListener { } + @Override public void valueChange(ValueChangeEvent event) { getMainWindow().showNotification( "New value" + event.getProperty().getValue()); diff --git a/tests/testbench/com/vaadin/tests/components/datefield/LowResolution.java b/tests/testbench/com/vaadin/tests/components/datefield/LowResolution.java index 1c1994cbe5..9c2d3d7d51 100644 --- a/tests/testbench/com/vaadin/tests/components/datefield/LowResolution.java +++ b/tests/testbench/com/vaadin/tests/components/datefield/LowResolution.java @@ -16,6 +16,7 @@ public class LowResolution extends TestBase { dateField.setValue(new java.util.Date()); dateField.setResolution(PopupDateField.RESOLUTION_MONTH); dateField.addListener(new PopupDateField.ValueChangeListener() { + @Override public void valueChange(ValueChangeEvent event) { getMainWindow().showNotification( "Date now" + event.getProperty()); @@ -28,6 +29,7 @@ public class LowResolution extends TestBase { // dateField.setValue(new java.util.Date()); dateField3.setResolution(PopupDateField.RESOLUTION_YEAR); dateField3.addListener(new PopupDateField.ValueChangeListener() { + @Override public void valueChange(ValueChangeEvent event) { getMainWindow().showNotification( "Date now" + event.getProperty()); @@ -40,6 +42,7 @@ public class LowResolution extends TestBase { dateField2.setValue(new java.util.Date()); dateField2.setResolution(PopupDateField.RESOLUTION_MONTH); dateField2.addListener(new PopupDateField.ValueChangeListener() { + @Override public void valueChange(ValueChangeEvent event) { getMainWindow().showNotification( "Date now" + event.getProperty()); @@ -52,6 +55,7 @@ public class LowResolution extends TestBase { "Immediate (use sync button to change fields) "); immediate.setValue(true); immediate.addListener(new CheckBox.ValueChangeListener() { + @Override public void valueChange(ValueChangeEvent event) { boolean immediate = !dateField.isImmediate(); dateField.setImmediate(immediate); diff --git a/tests/testbench/com/vaadin/tests/components/datefield/PopupDateFieldExtendedRange.java b/tests/testbench/com/vaadin/tests/components/datefield/PopupDateFieldExtendedRange.java index 357c61f4f6..a12bdfa44c 100644 --- a/tests/testbench/com/vaadin/tests/components/datefield/PopupDateFieldExtendedRange.java +++ b/tests/testbench/com/vaadin/tests/components/datefield/PopupDateFieldExtendedRange.java @@ -41,6 +41,7 @@ public class PopupDateFieldExtendedRange extends TestBase { } addComponent(new Button("Change date", new ClickListener() { + @Override public void buttonClick(ClickEvent event) { date.set(2010, 1, 16); for (PopupDateField f : fields) { diff --git a/tests/testbench/com/vaadin/tests/components/datefield/PopupDateFieldTest.java b/tests/testbench/com/vaadin/tests/components/datefield/PopupDateFieldTest.java index 3ab1f52891..3e8b0678a7 100644 --- a/tests/testbench/com/vaadin/tests/components/datefield/PopupDateFieldTest.java +++ b/tests/testbench/com/vaadin/tests/components/datefield/PopupDateFieldTest.java @@ -27,6 +27,7 @@ public class PopupDateFieldTest extends DateFieldTest<PopupDateField> { createSelectAction("Input prompt", category, options, "<none>", new Command<PopupDateField, String>() { + @Override public void execute(PopupDateField c, String value, Object data) { c.setInputPrompt(value); diff --git a/tests/testbench/com/vaadin/tests/components/datefield/PopupDateFields.java b/tests/testbench/com/vaadin/tests/components/datefield/PopupDateFields.java index ad961ee7a6..bf2a679c63 100644 --- a/tests/testbench/com/vaadin/tests/components/datefield/PopupDateFields.java +++ b/tests/testbench/com/vaadin/tests/components/datefield/PopupDateFields.java @@ -77,6 +77,7 @@ public class PopupDateFields extends ComponentTestCase<PopupDateField> { return createSelectAction("Resolution", options, "Year", new Command<PopupDateField, Resolution>() { + @Override public void execute(PopupDateField c, Resolution value, Object data) { c.setResolution(value); @@ -94,6 +95,7 @@ public class PopupDateFields extends ComponentTestCase<PopupDateField> { return createSelectAction("Input prompt", options, "<none>", new Command<PopupDateField, String>() { + @Override public void execute(PopupDateField c, String value, Object data) { c.setInputPrompt(value); diff --git a/tests/testbench/com/vaadin/tests/components/datefield/ShowSelectedDateAfterInvalid.java b/tests/testbench/com/vaadin/tests/components/datefield/ShowSelectedDateAfterInvalid.java index 6686fa6fe0..da8f45690c 100644 --- a/tests/testbench/com/vaadin/tests/components/datefield/ShowSelectedDateAfterInvalid.java +++ b/tests/testbench/com/vaadin/tests/components/datefield/ShowSelectedDateAfterInvalid.java @@ -28,6 +28,7 @@ public class ShowSelectedDateAfterInvalid extends TestBase { Button button = new Button("Validate"); button.addListener(new Button.ClickListener() { + @Override public void buttonClick(Button.ClickEvent event) { form.setValidationVisible(true); if (form.isValid()) { diff --git a/tests/testbench/com/vaadin/tests/components/datefield/ValueThroughProperty.java b/tests/testbench/com/vaadin/tests/components/datefield/ValueThroughProperty.java index 578c4df903..a45d3b8ad0 100644 --- a/tests/testbench/com/vaadin/tests/components/datefield/ValueThroughProperty.java +++ b/tests/testbench/com/vaadin/tests/components/datefield/ValueThroughProperty.java @@ -6,7 +6,7 @@ import java.util.Locale; import com.vaadin.data.Property; import com.vaadin.data.util.ObjectProperty; -import com.vaadin.terminal.gwt.client.ui.label.ContentMode; +import com.vaadin.shared.ui.label.ContentMode; import com.vaadin.tests.components.TestBase; import com.vaadin.ui.Button; import com.vaadin.ui.Button.ClickEvent; @@ -44,6 +44,7 @@ public class ValueThroughProperty extends TestBase { cal.set(Calendar.DAY_OF_MONTH, 14); Button setDateButton1 = new Button( "Set value to 12/14/10 using property", new ClickListener() { + @Override public void buttonClick(ClickEvent event) { dateProperty.setValue(cal.getTime()); } @@ -53,6 +54,7 @@ public class ValueThroughProperty extends TestBase { Button setDateButton2 = new Button( "Set value to 12/14/10 using setValue", new ClickListener() { + @Override public void buttonClick(ClickEvent event) { df.setValue(cal.getTime()); } diff --git a/tests/testbench/com/vaadin/tests/components/datefield/WidthRecalculationOnEnableStateChange.java b/tests/testbench/com/vaadin/tests/components/datefield/WidthRecalculationOnEnableStateChange.java index 88542751c3..b7b0f50947 100644 --- a/tests/testbench/com/vaadin/tests/components/datefield/WidthRecalculationOnEnableStateChange.java +++ b/tests/testbench/com/vaadin/tests/components/datefield/WidthRecalculationOnEnableStateChange.java @@ -20,12 +20,14 @@ public class WidthRecalculationOnEnableStateChange extends TestBase { addComponent(df); addComponent(new Button("Toggle disabled for date field", new Button.ClickListener() { + @Override public void buttonClick(ClickEvent event) { df.setEnabled(!df.isEnabled()); } })); addComponent(new Button("Toggle read only for date field", new Button.ClickListener() { + @Override public void buttonClick(ClickEvent event) { df.setReadOnly(!df.isReadOnly()); } diff --git a/tests/testbench/com/vaadin/tests/components/draganddropwrapper/DragAndDropWrapperTooltips.java b/tests/testbench/com/vaadin/tests/components/draganddropwrapper/DragAndDropWrapperTooltips.java index 6b89d1392c..aeb0864707 100644 --- a/tests/testbench/com/vaadin/tests/components/draganddropwrapper/DragAndDropWrapperTooltips.java +++ b/tests/testbench/com/vaadin/tests/components/draganddropwrapper/DragAndDropWrapperTooltips.java @@ -80,10 +80,12 @@ public class DragAndDropWrapperTooltips extends TestBase { private DropHandler dh = new DropHandler() { + @Override public AcceptCriterion getAcceptCriterion() { return AcceptAll.get(); } + @Override public void drop(DragAndDropEvent dropEvent) { Transferable transferable = dropEvent.getTransferable(); if (transferable instanceof TransferableImpl) { diff --git a/tests/testbench/com/vaadin/tests/components/draganddropwrapper/TooltipHandlingWhenNotDefined.html b/tests/testbench/com/vaadin/tests/components/draganddropwrapper/TooltipHandlingWhenNotDefined.html index 08dc608787..c85d7e0626 100644 --- a/tests/testbench/com/vaadin/tests/components/draganddropwrapper/TooltipHandlingWhenNotDefined.html +++ b/tests/testbench/com/vaadin/tests/components/draganddropwrapper/TooltipHandlingWhenNotDefined.html @@ -17,7 +17,7 @@ <td></td> </tr> <tr> - <td>mouseOver</td> + <td>showTooltip</td> <td>vaadin=runcomvaadintestscomponentsdraganddropwrapperTooltipHandlingWhenNotDefined::PID_StooltipLabel</td> <td></td> </tr> diff --git a/tests/testbench/com/vaadin/tests/components/embedded/EmbeddedAltText.java b/tests/testbench/com/vaadin/tests/components/embedded/EmbeddedAltText.java index f8874810fc..9a412cee9d 100644 --- a/tests/testbench/com/vaadin/tests/components/embedded/EmbeddedAltText.java +++ b/tests/testbench/com/vaadin/tests/components/embedded/EmbeddedAltText.java @@ -38,6 +38,7 @@ public class EmbeddedAltText extends TestBase { Button changeAltTexts = new Button("Change alt texts", new Button.ClickListener() { + @Override public void buttonClick(ClickEvent event) { e.setAlternateText("New alt text of the image!"); player.setAlternateText("New alt text of the object!"); diff --git a/tests/testbench/com/vaadin/tests/components/embedded/EmbeddedClickListenerRelativeCoordinates.java b/tests/testbench/com/vaadin/tests/components/embedded/EmbeddedClickListenerRelativeCoordinates.java index 96b1d36901..c9b6991d8f 100644 --- a/tests/testbench/com/vaadin/tests/components/embedded/EmbeddedClickListenerRelativeCoordinates.java +++ b/tests/testbench/com/vaadin/tests/components/embedded/EmbeddedClickListenerRelativeCoordinates.java @@ -14,6 +14,7 @@ public class EmbeddedClickListenerRelativeCoordinates extends TestBase { "../runo/icons/64/ok.png")); e.addListener(new ClickListener() { + @Override public void click(ClickEvent event) { getMainWindow() .showNotification( diff --git a/tests/testbench/com/vaadin/tests/components/embedded/EmbeddedImageRefresh.java b/tests/testbench/com/vaadin/tests/components/embedded/EmbeddedImageRefresh.java index 1a5327c8b9..e316fcc5ec 100644 --- a/tests/testbench/com/vaadin/tests/components/embedded/EmbeddedImageRefresh.java +++ b/tests/testbench/com/vaadin/tests/components/embedded/EmbeddedImageRefresh.java @@ -45,6 +45,7 @@ public class EmbeddedImageRefresh extends TestBase { // The button requests repainting the embedded. Button button = new Button("refr"); button.addListener(new Button.ClickListener() { + @Override public void buttonClick(ClickEvent event) { embedded.requestRepaint(); } @@ -52,6 +53,7 @@ public class EmbeddedImageRefresh extends TestBase { addComponent(button); button = new Button("refr name"); button.addListener(new Button.ClickListener() { + @Override public void buttonClick(ClickEvent event) { ((StreamResource) embedded.getSource()).setFilename(new Date() .getTime() + ".png"); @@ -61,6 +63,7 @@ public class EmbeddedImageRefresh extends TestBase { addComponent(button); button = new Button("200x200"); button.addListener(new Button.ClickListener() { + @Override public void buttonClick(ClickEvent event) { embedded.setWidth("200px"); embedded.setHeight("200px"); @@ -69,6 +72,7 @@ public class EmbeddedImageRefresh extends TestBase { addComponent(button); button = new Button("undef"); button.addListener(new Button.ClickListener() { + @Override public void buttonClick(ClickEvent event) { embedded.setSizeUndefined(); } @@ -85,6 +89,7 @@ public class EmbeddedImageRefresh extends TestBase { return (int) Math.round(pos * resolution / (cells * 1.0)); } + @Override public InputStream getStream() { // Create an image and draw some background on it. BufferedImage image = new BufferedImage(640, 480, diff --git a/tests/testbench/com/vaadin/tests/components/embedded/EmbeddedPdf.java b/tests/testbench/com/vaadin/tests/components/embedded/EmbeddedPdf.java index d507cebebc..c3854d2420 100644 --- a/tests/testbench/com/vaadin/tests/components/embedded/EmbeddedPdf.java +++ b/tests/testbench/com/vaadin/tests/components/embedded/EmbeddedPdf.java @@ -29,6 +29,7 @@ public class EmbeddedPdf extends TestBase { addComponent(player); addComponent(new Button("Remove pdf", new Button.ClickListener() { + @Override public void buttonClick(ClickEvent event) { removeComponent(player); } diff --git a/tests/testbench/com/vaadin/tests/components/form/FormClearDatasourceRepaint.java b/tests/testbench/com/vaadin/tests/components/form/FormClearDatasourceRepaint.java index 5255b97ffa..539263a363 100644 --- a/tests/testbench/com/vaadin/tests/components/form/FormClearDatasourceRepaint.java +++ b/tests/testbench/com/vaadin/tests/components/form/FormClearDatasourceRepaint.java @@ -42,6 +42,7 @@ public class FormClearDatasourceRepaint extends TestBase { addComponent(form); addComponent(new Button("Clear datasource", new Button.ClickListener() { + @Override public void buttonClick(ClickEvent event) { form.setItemDataSource(null); } @@ -49,6 +50,7 @@ public class FormClearDatasourceRepaint extends TestBase { addComponent(new Button("Change data source", new Button.ClickListener() { + @Override public void buttonClick(ClickEvent event) { form.setItemDataSource(new BeanItem<MyBean>( new MyBean())); diff --git a/tests/testbench/com/vaadin/tests/components/form/FormCommitWithInvalidValues.java b/tests/testbench/com/vaadin/tests/components/form/FormCommitWithInvalidValues.java index 6bc7cb5cca..907b8a27f3 100644 --- a/tests/testbench/com/vaadin/tests/components/form/FormCommitWithInvalidValues.java +++ b/tests/testbench/com/vaadin/tests/components/form/FormCommitWithInvalidValues.java @@ -34,6 +34,7 @@ public class FormCommitWithInvalidValues extends TestBase { Button b = new Button("Commit", new ClickListener() { + @Override public void buttonClick(ClickEvent event) { try { form.commit(); diff --git a/tests/testbench/com/vaadin/tests/components/form/FormDescription.java b/tests/testbench/com/vaadin/tests/components/form/FormDescription.java index 63369413f6..76ea039756 100644 --- a/tests/testbench/com/vaadin/tests/components/form/FormDescription.java +++ b/tests/testbench/com/vaadin/tests/components/form/FormDescription.java @@ -17,6 +17,7 @@ public class FormDescription extends TestBase { addComponent(new Button("Toggle description", new Button.ClickListener() { + @Override public void buttonClick(ClickEvent event) { if (form.getDescription() == null) { form.setDescription("Form description"); diff --git a/tests/testbench/com/vaadin/tests/components/form/FormRenderingFlicker.java b/tests/testbench/com/vaadin/tests/components/form/FormRenderingFlicker.java index ecf3215005..41e1a91781 100644 --- a/tests/testbench/com/vaadin/tests/components/form/FormRenderingFlicker.java +++ b/tests/testbench/com/vaadin/tests/components/form/FormRenderingFlicker.java @@ -49,6 +49,7 @@ public class FormRenderingFlicker extends TestBase { table.setImmediate(true); table.addListener(new ItemClickListener() { + @Override public void itemClick(ItemClickEvent event) { clicked(event.getItem()); } diff --git a/tests/testbench/com/vaadin/tests/components/form/FormTest.java b/tests/testbench/com/vaadin/tests/components/form/FormTest.java index 451a1b7fa3..604beb5fcc 100644 --- a/tests/testbench/com/vaadin/tests/components/form/FormTest.java +++ b/tests/testbench/com/vaadin/tests/components/form/FormTest.java @@ -4,7 +4,7 @@ import java.util.LinkedHashMap; import com.vaadin.data.Item; import com.vaadin.data.util.BeanItem; -import com.vaadin.terminal.gwt.client.ui.AlignmentInfo; +import com.vaadin.shared.ui.AlignmentInfo; import com.vaadin.tests.components.abstractfield.AbstractFieldTest; import com.vaadin.tests.components.select.AbstractSelectTestCase; import com.vaadin.tests.util.Person; @@ -30,6 +30,7 @@ public class FormTest extends AbstractFieldTest<Form> { private Command<Form, String> footerWidthCommand = new Command<Form, String>() { + @Override public void execute(Form c, String value, Object data) { Layout footer = c.getFooter(); if (footer != null) { @@ -40,6 +41,7 @@ public class FormTest extends AbstractFieldTest<Form> { }; private Command<Form, String> footerHeightCommand = new Command<Form, String>() { + @Override public void execute(Form c, String value, Object data) { Layout footer = c.getFooter(); if (footer != null) { @@ -51,6 +53,7 @@ public class FormTest extends AbstractFieldTest<Form> { private Command<Form, Class<? extends Layout>> formLayoutCommand = new Command<Form, Class<? extends Layout>>() { + @Override public void execute(Form c, Class<? extends Layout> value, Object data) { if (value == null) { c.setLayout(null); @@ -73,6 +76,7 @@ public class FormTest extends AbstractFieldTest<Form> { }; private Command<Form, Class<? extends Layout>> formFooterCommand = new Command<Form, Class<? extends Layout>>() { + @Override public void execute(Form c, Class<? extends Layout> value, Object data) { if (value == null) { c.setFooter(null); @@ -92,6 +96,7 @@ public class FormTest extends AbstractFieldTest<Form> { }; private Command<Form, Item> formItemDataSourceCommand = new Command<Form, Item>() { + @Override public void execute(Form c, Item value, Object data) { c.setItemDataSource(value); } @@ -148,6 +153,7 @@ public class FormTest extends AbstractFieldTest<Form> { options.put("Default", DefaultFieldFactory.get()); options.put("Custom FieldFactory", new FormFieldFactory() { + @Override public Field<?> createField(Item item, Object propertyId, Component uiContext) { Class<?> type = item.getItemProperty(propertyId).getType(); @@ -186,6 +192,7 @@ public class FormTest extends AbstractFieldTest<Form> { Command<Form, FormFieldFactory> formFactoryCommand = new Command<Form, FormFieldFactory>() { + @Override public void execute(Form c, FormFieldFactory value, Object data) { c.setFormFieldFactory(value); c.setItemDataSource(c.getItemDataSource()); @@ -227,6 +234,7 @@ public class FormTest extends AbstractFieldTest<Form> { } Command<Form, Alignment> footerComponentAlignmentCommand = new Command<Form, Alignment>() { + @Override public void execute(Form c, Alignment value, Object data) { Layout l = c.getFooter(); if (l instanceof AlignmentHandler) { diff --git a/tests/testbench/com/vaadin/tests/components/form/FormWithEnterShortCut.java b/tests/testbench/com/vaadin/tests/components/form/FormWithEnterShortCut.java index 689ba7ea83..ed1a3d9bd9 100644 --- a/tests/testbench/com/vaadin/tests/components/form/FormWithEnterShortCut.java +++ b/tests/testbench/com/vaadin/tests/components/form/FormWithEnterShortCut.java @@ -20,6 +20,7 @@ public class FormWithEnterShortCut extends TestBase { Button button = new Button("Go"); button.addListener(new Button.ClickListener() { + @Override public void buttonClick(ClickEvent event) { log.log("search: " + tf.getValue()); } diff --git a/tests/testbench/com/vaadin/tests/components/form/FormWithPropertyFormatterConnected.java b/tests/testbench/com/vaadin/tests/components/form/FormWithPropertyFormatterConnected.java index b803f8667f..24d207739e 100644 --- a/tests/testbench/com/vaadin/tests/components/form/FormWithPropertyFormatterConnected.java +++ b/tests/testbench/com/vaadin/tests/components/form/FormWithPropertyFormatterConnected.java @@ -18,6 +18,7 @@ public class FormWithPropertyFormatterConnected extends TestBase { Form form2 = new Form(); form2.setFormFieldFactory(new FormFieldFactory() { + @Override public Field createField(Item item, Object propertyId, Component uiContext) { AbstractField f = (AbstractField) DefaultFieldFactory.get() diff --git a/tests/testbench/com/vaadin/tests/components/formlayout/FormLayoutCaptionStyles.java b/tests/testbench/com/vaadin/tests/components/formlayout/FormLayoutCaptionStyles.java index e74969f637..0055c3782e 100644 --- a/tests/testbench/com/vaadin/tests/components/formlayout/FormLayoutCaptionStyles.java +++ b/tests/testbench/com/vaadin/tests/components/formlayout/FormLayoutCaptionStyles.java @@ -20,6 +20,7 @@ public class FormLayoutCaptionStyles extends TestBase { fl.addComponent(new Button("Toggle Text field 2 bold style", new Button.ClickListener() { + @Override public void buttonClick(ClickEvent event) { if ("bold".equals(f2.getStyleName())) { f2.setStyleName(""); diff --git a/tests/testbench/com/vaadin/tests/components/formlayout/FormLayoutErrorHover.html b/tests/testbench/com/vaadin/tests/components/formlayout/FormLayoutErrorHover.html index f6fc12af0a..7733da4e95 100644 --- a/tests/testbench/com/vaadin/tests/components/formlayout/FormLayoutErrorHover.html +++ b/tests/testbench/com/vaadin/tests/components/formlayout/FormLayoutErrorHover.html @@ -28,7 +28,7 @@ </tr> <!--Hover error indicator--> <tr> - <td>mouseOver</td> + <td>showTooltip</td> <td>vaadin=runcomvaadintestscomponentsformlayoutFormLayoutErrorHover::/VVerticalLayout[0]/VVerticalLayout[0]/VFormLayout[0]/domChild[0]/domChild[1]/domChild[0]/domChild[1]/domChild[0]/domChild[0]</td> <td></td> </tr> diff --git a/tests/testbench/com/vaadin/tests/components/gridlayout/GridLayoutInForm.java b/tests/testbench/com/vaadin/tests/components/gridlayout/GridLayoutInForm.java index 648bbd2d52..165827eb6b 100644 --- a/tests/testbench/com/vaadin/tests/components/gridlayout/GridLayoutInForm.java +++ b/tests/testbench/com/vaadin/tests/components/gridlayout/GridLayoutInForm.java @@ -45,6 +45,7 @@ public class GridLayoutInForm extends TestBase { addComponent(new Button("Use 15 first fields", new Button.ClickListener() { + @Override public void buttonClick(ClickEvent event) { form.setVisibleItemProperties(propertyIds .subList(0, 15)); @@ -52,6 +53,7 @@ public class GridLayoutInForm extends TestBase { })); addComponent(new Button("Use 15 last fields", new Button.ClickListener() { + @Override public void buttonClick(ClickEvent event) { form.setVisibleItemProperties(propertyIds.subList(35, 50)); @@ -59,6 +61,7 @@ public class GridLayoutInForm extends TestBase { })); addComponent(new Button("Use all fields", new Button.ClickListener() { + @Override public void buttonClick(ClickEvent event) { form.setVisibleItemProperties(propertyIds); } diff --git a/tests/testbench/com/vaadin/tests/components/gridlayout/MoveComponentsFromGridLayoutToInnerLayout.java b/tests/testbench/com/vaadin/tests/components/gridlayout/MoveComponentsFromGridLayoutToInnerLayout.java index da0efe9464..1c10b1d9d7 100644 --- a/tests/testbench/com/vaadin/tests/components/gridlayout/MoveComponentsFromGridLayoutToInnerLayout.java +++ b/tests/testbench/com/vaadin/tests/components/gridlayout/MoveComponentsFromGridLayoutToInnerLayout.java @@ -22,6 +22,7 @@ public class MoveComponentsFromGridLayoutToInnerLayout extends TestBase { testButton = new Button("Click to move to inner layout", new Button.ClickListener() { + @Override public void buttonClick(ClickEvent event) { vl.addComponent(testButton); } @@ -37,6 +38,7 @@ public class MoveComponentsFromGridLayoutToInnerLayout extends TestBase { Button b = new Button("Repaint inner layout", new Button.ClickListener() { + @Override public void buttonClick(ClickEvent event) { vl.requestRepaint(); } diff --git a/tests/testbench/com/vaadin/tests/components/javascriptcomponent/BasicJavaScriptComponent.html b/tests/testbench/com/vaadin/tests/components/javascriptcomponent/BasicJavaScriptComponent.html new file mode 100644 index 0000000000..16e74aa485 --- /dev/null +++ b/tests/testbench/com/vaadin/tests/components/javascriptcomponent/BasicJavaScriptComponent.html @@ -0,0 +1,62 @@ +<?xml version="1.0" encoding="UTF-8"?> +<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd"> +<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en" lang="en"> +<head profile="http://selenium-ide.openqa.org/profiles/test-case"> +<meta http-equiv="Content-Type" content="text/html; charset=UTF-8" /> +<link rel="selenium.base" href="" /> +<title>New Test</title> +</head> +<body> +<table cellpadding="1" cellspacing="1" border="1"> +<thead> +<tr><td rowspan="1" colspan="3">New Test</td></tr> +</thead><tbody> +<tr> + <td>open</td> + <td>/run/com.vaadin.tests.components.javascriptcomponent.BasicJavaScriptComponent?restartApplication</td> + <td></td> +</tr> +<tr> + <td>assertText</td> + <td>vaadin=runcomvaadintestscomponentsjavascriptcomponentBasicJavaScriptComponent::/VVerticalLayout[0]/VVerticalLayout[0]/VVerticalLayout[0]/VLabel[0]</td> + <td>3. Got callback message: Callback message processed</td> +</tr> +<tr> + <td>assertText</td> + <td>vaadin=runcomvaadintestscomponentsjavascriptcomponentBasicJavaScriptComponent::/VVerticalLayout[0]/VVerticalLayout[0]/VVerticalLayout[0]/VLabel[1]</td> + <td>2. Got RPC message: RPC message processed</td> +</tr> +<tr> + <td>assertText</td> + <td>vaadin=runcomvaadintestscomponentsjavascriptcomponentBasicJavaScriptComponent::/VVerticalLayout[0]/VVerticalLayout[0]/VVerticalLayout[0]/VLabel[2]</td> + <td>1. Parent ids checked</td> +</tr> +<tr> + <td>assertText</td> + <td>vaadin=runcomvaadintestscomponentsjavascriptcomponentBasicJavaScriptComponent::/VVerticalLayout[0]/VVerticalLayout[0]/domChild[1]/domChild[0]/domChild[0]</td> + <td>Component caption</td> +</tr> +<tr> + <td>assertText</td> + <td>vaadin=runcomvaadintestscomponentsjavascriptcomponentBasicJavaScriptComponent::/VVerticalLayout[0]/VVerticalLayout[0]/JavaScriptWidget[0]/domChild[0]</td> + <td>4. Url: /run/com.vaadin.tests.components.javascriptcomponent.BasicJavaScriptComponent/APP/1/test</td> +</tr> +<tr> + <td>assertText</td> + <td>vaadin=runcomvaadintestscomponentsjavascriptcomponentBasicJavaScriptComponent::/VVerticalLayout[0]/VVerticalLayout[0]/JavaScriptWidget[0]/domChild[1]</td> + <td>3. State message: Second state message</td> +</tr> +<tr> + <td>assertText</td> + <td>vaadin=runcomvaadintestscomponentsjavascriptcomponentBasicJavaScriptComponent::/VVerticalLayout[0]/VVerticalLayout[0]/JavaScriptWidget[0]/domChild[2]</td> + <td>2. State message: First state message</td> +</tr> +<tr> + <td>assertText</td> + <td>vaadin=runcomvaadintestscomponentsjavascriptcomponentBasicJavaScriptComponent::/VVerticalLayout[0]/VVerticalLayout[0]/JavaScriptWidget[0]/domChild[3]</td> + <td>1. Parent element className: v-verticallayout v-connector v-has-width</td> +</tr> + +</tbody></table> +</body> +</html> diff --git a/tests/testbench/com/vaadin/tests/components/javascriptcomponent/BasicJavaScriptComponent.java b/tests/testbench/com/vaadin/tests/components/javascriptcomponent/BasicJavaScriptComponent.java index 5f2f945c8b..9ea61b92bb 100644 --- a/tests/testbench/com/vaadin/tests/components/javascriptcomponent/BasicJavaScriptComponent.java +++ b/tests/testbench/com/vaadin/tests/components/javascriptcomponent/BasicJavaScriptComponent.java @@ -3,79 +3,128 @@ */ package com.vaadin.tests.components.javascriptcomponent; +import java.util.ArrayList; import java.util.Arrays; import java.util.List; -import com.vaadin.annotations.LoadScripts; +import com.vaadin.annotations.JavaScript; import com.vaadin.external.json.JSONArray; import com.vaadin.external.json.JSONException; +import com.vaadin.shared.communication.ClientRpc; +import com.vaadin.shared.communication.ServerRpc; +import com.vaadin.shared.communication.URLReference; +import com.vaadin.shared.ui.JavaScriptComponentState; +import com.vaadin.terminal.ClassResource; import com.vaadin.terminal.WrappedRequest; -import com.vaadin.terminal.gwt.client.communication.ServerRpc; -import com.vaadin.terminal.gwt.client.ui.JavaScriptComponentState; +import com.vaadin.terminal.gwt.server.ResourceReference; import com.vaadin.tests.components.AbstractTestRoot; +import com.vaadin.tests.util.Log; import com.vaadin.ui.AbstractJavaScriptComponent; +import com.vaadin.ui.HasComponents; import com.vaadin.ui.JavaScriptCallback; -import com.vaadin.ui.Notification; -@LoadScripts({ "/statictestfiles/jsconnector.js" }) public class BasicJavaScriptComponent extends AbstractTestRoot { - public interface ExampleClickRpc extends ServerRpc { - public void onClick(String message); + public interface TestRpc extends ServerRpc, ClientRpc { + public void sendRpc(String message); } - public static class SpecialState extends JavaScriptComponentState { - private List<String> data; + public static class TestState extends JavaScriptComponentState { + private List<String> messages = new ArrayList<String>(); + private URLReference url; - public List<String> getData() { - return data; + public List<String> getMessages() { + return messages; } - public void setData(List<String> data) { - this.data = data; + public void setMessages(List<String> messages) { + this.messages = messages; + } + + public URLReference getUrl() { + return url; + } + + public void setUrl(URLReference url) { + this.url = url; } } - public static class ExampleWidget extends AbstractJavaScriptComponent { + @JavaScript("BasicJavaScriptComponentConnector.js") + public class ExampleWidget extends AbstractJavaScriptComponent { public ExampleWidget() { - registerRpc(new ExampleClickRpc() { - public void onClick(String message) { - Notification.show("Got a click: " + message); + registerRpc(new TestRpc() { + @Override + public void sendRpc(String message) { + log.log("Got RPC message: " + message); } }); - registerCallback("onclick", new JavaScriptCallback() { + registerCallback("messageToServer", new JavaScriptCallback() { + @Override public void call(JSONArray arguments) throws JSONException { - Notification.show("Got a callback: " - + arguments.getString(0)); + log.log("Got callback message: " + arguments.getString(0)); } }); - getState().setData(Arrays.asList("a", "b", "c")); + + registerCallback("reportParentIds", new JavaScriptCallback() { + @Override + public void call(JSONArray arguments) throws JSONException { + JSONArray parentIds = arguments.getJSONArray(0); + if (!parentIds.getString(0).equals(getConnectorId())) { + log.log("Connector ids doesn't match"); + } + + HasComponents parent = getParent(); + int i = 1; + while (parent != null) { + if (!parentIds.getString(i).equals( + parent.getConnectorId())) { + log.log("parentIds[" + i + "] doesn't match"); + } + i++; + parent = parent.getParent(); + } + log.log("Parent ids checked"); + } + }); + + getRpcProxy(TestRpc.class).sendRpc("RPC message"); + invokeCallback("messageToClient", "Callback message"); + + getState() + .setMessages( + Arrays.asList("First state message", + "Second state message")); + ClassResource resource = new ClassResource("test", + BasicJavaScriptComponent.this.getApplication()); + getState().setUrl(new ResourceReference(resource)); } @Override - public SpecialState getState() { - return (SpecialState) super.getState(); + public TestState getState() { + return (TestState) super.getState(); } } + private final Log log = new Log(5); + @Override protected void setup(WrappedRequest request) { + addComponent(log); + ExampleWidget c = new ExampleWidget(); - c.setCaption("test caption"); - c.setDescription("Some description"); + c.setCaption("Component caption"); addComponent(c); } @Override protected String getTestDescription() { - // TODO Auto-generated method stub - return null; + return "Test for basic JavaScript component functionality."; } @Override protected Integer getTicketNumber() { - // TODO Auto-generated method stub - return null; + return Integer.valueOf(8888); } } diff --git a/tests/testbench/com/vaadin/tests/components/javascriptcomponent/BasicJavaScriptComponentConnector.js b/tests/testbench/com/vaadin/tests/components/javascriptcomponent/BasicJavaScriptComponentConnector.js new file mode 100644 index 0000000000..fe8367d18a --- /dev/null +++ b/tests/testbench/com/vaadin/tests/components/javascriptcomponent/BasicJavaScriptComponentConnector.js @@ -0,0 +1,40 @@ +window.com_vaadin_tests_components_javascriptcomponent_BasicJavaScriptComponent_ExampleWidget = function() { + var parentIds = []; + var connectorId = this.getConnectorId(); + while(connectorId) { + parentIds.push(connectorId); + connectorId = this.getParentId(connectorId); + } + this.reportParentIds(parentIds); + + this.onStateChange = function() { + var e = this.getElement(); + + e.innerHTML = ''; + + var row = 1; + var log = function(text) { + e.innerHTML = "<div>" + row++ + ". " + text + "</div>" + e.innerHTML; + } + + log("Parent element className: " + this.getElement(this.getParentId()).className); + + var messages = this.getState().messages; + for(var i = 0; i < messages.length; i++) { + log("State message: " + messages[i]); + } + + var url = this.getState().url; + log("Url: " + this.translateVaadinUri(url.uRL)); //Strange format, see #9210 + } + + this.registerRpc({ + sendRpc: function(message) { + this.getRpcProxy().sendRpc(message + " processed"); + } + }); + + this.messageToClient = function(message) { + this.messageToServer(message + " processed"); + } +}
\ No newline at end of file diff --git a/tests/testbench/com/vaadin/tests/components/label/HundredPercentWideLabelResize.java b/tests/testbench/com/vaadin/tests/components/label/HundredPercentWideLabelResize.java index a5bb291b67..61caf9a2f2 100644 --- a/tests/testbench/com/vaadin/tests/components/label/HundredPercentWideLabelResize.java +++ b/tests/testbench/com/vaadin/tests/components/label/HundredPercentWideLabelResize.java @@ -27,6 +27,7 @@ public class HundredPercentWideLabelResize extends TestBase { getLayout().addComponent( new Button("toggle width", new Button.ClickListener() { + @Override public void buttonClick(ClickEvent event) { if (getLayout().getWidth() == 500) { getLayout().setWidth("100px"); diff --git a/tests/testbench/com/vaadin/tests/components/label/LabelModes.java b/tests/testbench/com/vaadin/tests/components/label/LabelModes.java index c220076b58..207a9a8de7 100644 --- a/tests/testbench/com/vaadin/tests/components/label/LabelModes.java +++ b/tests/testbench/com/vaadin/tests/components/label/LabelModes.java @@ -1,6 +1,6 @@ package com.vaadin.tests.components.label; -import com.vaadin.terminal.gwt.client.ui.label.ContentMode; +import com.vaadin.shared.ui.label.ContentMode; import com.vaadin.tests.components.ComponentTestCase; import com.vaadin.ui.Label; diff --git a/tests/testbench/com/vaadin/tests/components/label/LabelTest.java b/tests/testbench/com/vaadin/tests/components/label/LabelTest.java index 6547e7a20f..186b3deeb3 100644 --- a/tests/testbench/com/vaadin/tests/components/label/LabelTest.java +++ b/tests/testbench/com/vaadin/tests/components/label/LabelTest.java @@ -5,7 +5,7 @@ import java.util.LinkedHashMap; import java.util.List; import com.vaadin.data.Property.ValueChangeListener; -import com.vaadin.terminal.gwt.client.ui.label.ContentMode; +import com.vaadin.shared.ui.label.ContentMode; import com.vaadin.tests.components.AbstractComponentTest; import com.vaadin.ui.Label; @@ -14,12 +14,14 @@ public class LabelTest extends AbstractComponentTest<Label> implements private Command<Label, Object> setValueCommand = new Command<Label, Object>() { + @Override public void execute(Label c, Object value, Object data) { c.setValue(value); } }; private Command<Label, Boolean> valueChangeListenerCommand = new Command<Label, Boolean>() { + @Override public void execute(Label c, Boolean value, Object data) { if (value) { c.addListener(LabelTest.this); @@ -31,6 +33,7 @@ public class LabelTest extends AbstractComponentTest<Label> implements }; private Command<Label, ContentMode> contentModeCommand = new Command<Label, ContentMode>() { + @Override public void execute(Label c, ContentMode value, Object data) { c.setContentMode(value); } @@ -87,6 +90,7 @@ public class LabelTest extends AbstractComponentTest<Label> implements valueChangeListenerCommand); } + @Override public void valueChange(com.vaadin.data.Property.ValueChangeEvent event) { Object o = event.getProperty().getValue(); diff --git a/tests/testbench/com/vaadin/tests/components/label/LabelWrapping.java b/tests/testbench/com/vaadin/tests/components/label/LabelWrapping.java index 166d0bda77..82969fdb08 100644 --- a/tests/testbench/com/vaadin/tests/components/label/LabelWrapping.java +++ b/tests/testbench/com/vaadin/tests/components/label/LabelWrapping.java @@ -28,6 +28,7 @@ public class LabelWrapping extends TestBase { Button changeLength = new Button("Change length"); changeLength.addListener(new Button.ClickListener() { + @Override public void buttonClick(ClickEvent event) { if (longLabel.getValue().equals(longString)) { longLabel.setValue(""); diff --git a/tests/testbench/com/vaadin/tests/components/label/Labels.java b/tests/testbench/com/vaadin/tests/components/label/Labels.java index 1536f4555e..1da588576b 100644 --- a/tests/testbench/com/vaadin/tests/components/label/Labels.java +++ b/tests/testbench/com/vaadin/tests/components/label/Labels.java @@ -1,6 +1,6 @@ package com.vaadin.tests.components.label; -import com.vaadin.terminal.gwt.client.ui.label.ContentMode; +import com.vaadin.shared.ui.label.ContentMode; import com.vaadin.tests.components.ComponentTestCase; import com.vaadin.tests.util.LoremIpsum; import com.vaadin.ui.Label; diff --git a/tests/testbench/com/vaadin/tests/components/label/MarginsInLabels.java b/tests/testbench/com/vaadin/tests/components/label/MarginsInLabels.java index 55f5d431d3..b1cf2957be 100644 --- a/tests/testbench/com/vaadin/tests/components/label/MarginsInLabels.java +++ b/tests/testbench/com/vaadin/tests/components/label/MarginsInLabels.java @@ -1,7 +1,7 @@ package com.vaadin.tests.components.label; +import com.vaadin.shared.ui.label.ContentMode; import com.vaadin.terminal.WrappedRequest; -import com.vaadin.terminal.gwt.client.ui.label.ContentMode; import com.vaadin.tests.components.AbstractTestRoot; import com.vaadin.ui.AbstractLayout; import com.vaadin.ui.Accordion; diff --git a/tests/testbench/com/vaadin/tests/components/link/LinkToPercentage.java b/tests/testbench/com/vaadin/tests/components/link/LinkToPercentage.java index ce8626444c..f14e1afd8c 100644 --- a/tests/testbench/com/vaadin/tests/components/link/LinkToPercentage.java +++ b/tests/testbench/com/vaadin/tests/components/link/LinkToPercentage.java @@ -15,6 +15,7 @@ public class LinkToPercentage extends TestBase { protected void setup() { String filename = "110% Vaadin"; ApplicationResource resource = new StreamResource(new StreamSource() { + @Override public InputStream getStream() { return new InputStream() { boolean first = true; diff --git a/tests/testbench/com/vaadin/tests/components/listselect/ListSelects.java b/tests/testbench/com/vaadin/tests/components/listselect/ListSelects.java index 3bab03287c..a3fa973bc2 100644 --- a/tests/testbench/com/vaadin/tests/components/listselect/ListSelects.java +++ b/tests/testbench/com/vaadin/tests/components/listselect/ListSelects.java @@ -8,12 +8,14 @@ import com.vaadin.ui.ListSelect; public class ListSelects extends AbstractSelectTestCase<ListSelect> { private Command<ListSelect, Integer> rowsCommand = new Command<ListSelect, Integer>() { + @Override public void execute(ListSelect c, Integer value, Object data) { c.setRows(value); } }; private Command<ListSelect, Integer> colsCommand = new Command<ListSelect, Integer>() { + @Override public void execute(ListSelect c, Integer value, Object data) { c.setColumns(value); } diff --git a/tests/testbench/com/vaadin/tests/components/loginform/LoginFormInIframe.html_disabled b/tests/testbench/com/vaadin/tests/components/loginform/LoginFormInIframe.html_disabled new file mode 100644 index 0000000000..075bb3c57f --- /dev/null +++ b/tests/testbench/com/vaadin/tests/components/loginform/LoginFormInIframe.html_disabled @@ -0,0 +1,61 @@ +<?xml version="1.0" encoding="UTF-8"?> +<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd"> +<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en" lang="en"> +<head profile="http://selenium-ide.openqa.org/profiles/test-case"> +<meta http-equiv="Content-Type" content="text/html; charset=UTF-8" /> +<link rel="selenium.base" href="" /> +<title>LoginFormTest</title> +</head> +<body> +<table cellpadding="1" cellspacing="1" border="1"> +<thead> +<tr><td rowspan="1" colspan="3">LoginFormTest</td></tr> +</thead><tbody> +<tr> + <td>open</td> + <td>/statictestfiles/LoginFormIframe.html</td> + <td></td> +</tr> +<tr> + <td>selectFrame</td> + <td>LoginForm</td> + <td></td> +</tr> +<tr> + <td>selectFrame</td> + <td>PID6</td> + <td></td> +</tr> +<tr> + <td>enterCharacter</td> + <td>username</td> + <td>username</td> +</tr> +<tr> + <td>enterCharacter</td> + <td>password</td> + <td>password</td> +</tr> +<tr> + <td>click</td> + <td>//form[@id='loginf']/div[5]/div/span/span</td> + <td></td> +</tr> +<tr> + <td>selectFrame</td> + <td>relative=top</td> + <td></td> +</tr> +<tr> + <td>selectFrame</td> + <td>LoginForm</td> + <td></td> +</tr> +<tr> + <td>assertText</td> + <td>vaadin=runcomvaadintestscomponentsloginformLoginFormTest::/VVerticalLayout[0]/ChildComponentContainer[1]/VVerticalLayout[0]/ChildComponentContainer[0]/VHorizontalLayout[0]/ChildComponentContainer[0]/VVerticalLayout[0]/ChildComponentContainer[0]/VLabel[0]</td> + <td>User 'username', password='password' logged in</td> +</tr> +</tbody></table> +</body> +</html> diff --git a/tests/testbench/com/vaadin/tests/components/loginform/LoginFormTest.java b/tests/testbench/com/vaadin/tests/components/loginform/LoginFormTest.java index bbc7d2ca7e..629edc2130 100644 --- a/tests/testbench/com/vaadin/tests/components/loginform/LoginFormTest.java +++ b/tests/testbench/com/vaadin/tests/components/loginform/LoginFormTest.java @@ -31,6 +31,7 @@ public class LoginFormTest extends TestBase { */ private static final long serialVersionUID = 1L; + @Override public void onLogin(LoginEvent event) { login((LoginForm) event.getSource(), event.getLoginParameter("username"), @@ -43,6 +44,7 @@ public class LoginFormTest extends TestBase { Button changeWidth = new Button("Change width", new ClickListener() { + @Override public void buttonClick(ClickEvent event) { if (loginForm.getWidth() < 0) { loginForm.setWidth("300px"); @@ -55,6 +57,7 @@ public class LoginFormTest extends TestBase { Button changeHeight = new Button("Change height", new ClickListener() { + @Override public void buttonClick(ClickEvent event) { if (loginForm.getHeight() < 0) { loginForm.setHeight("200px"); @@ -88,6 +91,7 @@ public class LoginFormTest extends TestBase { + "' logged in"); Button logoutButton = new Button("Log out", new ClickListener() { + @Override public void buttonClick(ClickEvent event) { Button b = event.getButton(); loginFormLayout.replaceComponent(b.getParent(), diff --git a/tests/testbench/com/vaadin/tests/components/loginform/LoginFormWithMultipleWindows.java b/tests/testbench/com/vaadin/tests/components/loginform/LoginFormWithMultipleWindows.java index 1295cadf95..83f89f0214 100644 --- a/tests/testbench/com/vaadin/tests/components/loginform/LoginFormWithMultipleWindows.java +++ b/tests/testbench/com/vaadin/tests/components/loginform/LoginFormWithMultipleWindows.java @@ -27,6 +27,7 @@ public class LoginFormWithMultipleWindows extends Application { private static final long serialVersionUID = 1L; + @Override public void onLogin(LoginEvent event) { showNotification(event.getLoginParameter("username") + ":" + event.getLoginParameter("password")); diff --git a/tests/testbench/com/vaadin/tests/components/media/Media.java b/tests/testbench/com/vaadin/tests/components/media/Media.java index 84b6974293..a1977c6ba1 100644 --- a/tests/testbench/com/vaadin/tests/components/media/Media.java +++ b/tests/testbench/com/vaadin/tests/components/media/Media.java @@ -27,6 +27,7 @@ public class Media extends TestBase { addComponent(v); addComponent(new Button("Play video", new ClickListener() { + @Override public void buttonClick(ClickEvent event) { v.play(); } @@ -34,6 +35,7 @@ public class Media extends TestBase { })); addComponent(new Button("Pause video", new ClickListener() { + @Override public void buttonClick(ClickEvent event) { v.pause(); } @@ -50,6 +52,7 @@ public class Media extends TestBase { addComponent(new Button("Play audio", new ClickListener() { + @Override public void buttonClick(ClickEvent event) { a.play(); } @@ -57,6 +60,7 @@ public class Media extends TestBase { })); addComponent(new Button("Pause audio", new ClickListener() { + @Override public void buttonClick(ClickEvent event) { a.pause(); } diff --git a/tests/testbench/com/vaadin/tests/components/menubar/MenuBarHtmlItems.java b/tests/testbench/com/vaadin/tests/components/menubar/MenuBarHtmlItems.java index ba22bcb7a4..d7585af8ac 100644 --- a/tests/testbench/com/vaadin/tests/components/menubar/MenuBarHtmlItems.java +++ b/tests/testbench/com/vaadin/tests/components/menubar/MenuBarHtmlItems.java @@ -44,6 +44,7 @@ public class MenuBarHtmlItems extends ComponentTestCase<MenuBar> { private Component createSwitchHtmlAction() { return createBooleanAction("Html content allowed", false, new Command<MenuBar, Boolean>() { + @Override public void execute(MenuBar c, Boolean value, Object data) { c.setHtmlContentAllowed(value.booleanValue()); } diff --git a/tests/testbench/com/vaadin/tests/components/menubar/MenuBarNavigation.java b/tests/testbench/com/vaadin/tests/components/menubar/MenuBarNavigation.java index ede0c0c5a5..3af07645d6 100644 --- a/tests/testbench/com/vaadin/tests/components/menubar/MenuBarNavigation.java +++ b/tests/testbench/com/vaadin/tests/components/menubar/MenuBarNavigation.java @@ -47,6 +47,7 @@ public class MenuBarNavigation extends TestBase implements Command { return 5174; } + @Override public void menuSelected(MenuItem selectedItem) { log.log("MenuItem " + getName(selectedItem) + " selected"); } diff --git a/tests/testbench/com/vaadin/tests/components/menubar/MenuBarRootItemSelectWithKeyboard.java b/tests/testbench/com/vaadin/tests/components/menubar/MenuBarRootItemSelectWithKeyboard.java index f162386336..c093a61812 100644 --- a/tests/testbench/com/vaadin/tests/components/menubar/MenuBarRootItemSelectWithKeyboard.java +++ b/tests/testbench/com/vaadin/tests/components/menubar/MenuBarRootItemSelectWithKeyboard.java @@ -10,6 +10,7 @@ public class MenuBarRootItemSelectWithKeyboard extends TestBase { @Override protected void setup() { Command c = new Command() { + @Override public void menuSelected(MenuItem selectedItem) { getMainWindow().showNotification(selectedItem.getText()); diff --git a/tests/testbench/com/vaadin/tests/components/menubar/MenuBarTest.java b/tests/testbench/com/vaadin/tests/components/menubar/MenuBarTest.java index 2dc119bf43..5ab2b2145f 100644 --- a/tests/testbench/com/vaadin/tests/components/menubar/MenuBarTest.java +++ b/tests/testbench/com/vaadin/tests/components/menubar/MenuBarTest.java @@ -141,6 +141,7 @@ public class MenuBarTest extends AbstractComponentTest<MenuBar> { /* COMMANDS */ Command<MenuBar, Integer> createRootMenuItems = new Command<MenuBar, Integer>() { + @Override public void execute(MenuBar c, Integer value, Object data) { rootItems = value; createRootItems(c); @@ -149,6 +150,7 @@ public class MenuBarTest extends AbstractComponentTest<MenuBar> { Command<MenuBar, Integer> createSubMenuItems = new Command<MenuBar, Integer>() { + @Override public void execute(MenuBar c, Integer value, Object data) { subItems = value; createSubItems(c); @@ -157,6 +159,7 @@ public class MenuBarTest extends AbstractComponentTest<MenuBar> { Command<MenuBar, Integer> setSubMenuLevels = new Command<MenuBar, Integer>() { + @Override public void execute(MenuBar c, Integer value, Object data) { subLevels = value; createSubItems(c); @@ -164,6 +167,7 @@ public class MenuBarTest extends AbstractComponentTest<MenuBar> { }; private Command<MenuBar, Integer> setMenuIcons = new Command<MenuBar, Integer>() { + @Override public void execute(MenuBar c, Integer value, Object data) { iconInterval = value; updateIcons(c); @@ -172,6 +176,7 @@ public class MenuBarTest extends AbstractComponentTest<MenuBar> { private Command<MenuBar, Integer> setSubMenuDensity = new Command<MenuBar, Integer>() { + @Override public void execute(MenuBar c, Integer value, Object data) { subMenuDensity = value; createSubItems(c); @@ -180,6 +185,7 @@ public class MenuBarTest extends AbstractComponentTest<MenuBar> { private Command<MenuBar, Integer> setMenuItemDisabledDensity = new Command<MenuBar, Integer>() { + @Override public void execute(MenuBar c, Integer value, Object data) { disabledDensity = value; createRootItems(c); @@ -188,6 +194,7 @@ public class MenuBarTest extends AbstractComponentTest<MenuBar> { private Command<MenuBar, Integer> setMenuItemInvisibleDensity = new Command<MenuBar, Integer>() { + @Override public void execute(MenuBar c, Integer value, Object data) { invisibleDensity = value; createRootItems(c); @@ -196,6 +203,7 @@ public class MenuBarTest extends AbstractComponentTest<MenuBar> { private Command<MenuBar, Integer> setMenuItemCheckableDensity = new Command<MenuBar, Integer>() { + @Override public void execute(MenuBar c, Integer value, Object data) { checkableDensity = value; createRootItems(c); @@ -204,6 +212,7 @@ public class MenuBarTest extends AbstractComponentTest<MenuBar> { private Command<MenuBar, Integer> setSubMenuSeparatorDensity = new Command<MenuBar, Integer>() { + @Override public void execute(MenuBar c, Integer value, Object data) { subMenuSeparatorDensity = value; createSubItems(c); @@ -212,6 +221,7 @@ public class MenuBarTest extends AbstractComponentTest<MenuBar> { private Command<MenuBar, Boolean> setOpenRootOnHover = new Command<MenuBar, Boolean>() { + @Override public void execute(MenuBar c, Boolean value, Object data) { openRootMenuOnHover = value; c.setAutoOpen(value); @@ -221,6 +231,7 @@ public class MenuBarTest extends AbstractComponentTest<MenuBar> { private Command<MenuBar, Integer> selectIcon = new Command<MenuBar, Integer>() { + @Override public void execute(MenuBar c, Integer value, Object data) { iconSize = value; updateIcons(c); @@ -231,6 +242,7 @@ public class MenuBarTest extends AbstractComponentTest<MenuBar> { private MenuBar.Command menuCommand = new MenuBar.Command() { + @Override public void menuSelected(MenuItem selectedItem) { log("Menu item '" + selectedItem.getText() + "' selected"); diff --git a/tests/testbench/com/vaadin/tests/components/nativebutton/NativeButtonHtml.java b/tests/testbench/com/vaadin/tests/components/nativebutton/NativeButtonHtml.java index 011439f810..94023db2d0 100644 --- a/tests/testbench/com/vaadin/tests/components/nativebutton/NativeButtonHtml.java +++ b/tests/testbench/com/vaadin/tests/components/nativebutton/NativeButtonHtml.java @@ -20,6 +20,7 @@ public class NativeButtonHtml extends TestBase { final NativeButton swapButton = new NativeButton("<i>Swap button<i>"); swapButton.addListener(new Button.ClickListener() { + @Override public void buttonClick(ClickEvent event) { swapButton.setHtmlContentAllowed(!swapButton .isHtmlContentAllowed()); diff --git a/tests/testbench/com/vaadin/tests/components/nativeselect/NativeSelects.java b/tests/testbench/com/vaadin/tests/components/nativeselect/NativeSelects.java index ec46757106..80b088f03a 100644 --- a/tests/testbench/com/vaadin/tests/components/nativeselect/NativeSelects.java +++ b/tests/testbench/com/vaadin/tests/components/nativeselect/NativeSelects.java @@ -35,6 +35,7 @@ public class NativeSelects extends AbstractSelectTestCase<NativeSelect> { private Command<NativeSelect, Integer> columnsAction = new Command<NativeSelect, Integer>() { + @Override public void execute(NativeSelect c, Integer value, Object data) { c.setColumns(value); } diff --git a/tests/testbench/com/vaadin/tests/components/notification/Notifications.java b/tests/testbench/com/vaadin/tests/components/notification/Notifications.java index 5a158c8f03..ab632a2a57 100644 --- a/tests/testbench/com/vaadin/tests/components/notification/Notifications.java +++ b/tests/testbench/com/vaadin/tests/components/notification/Notifications.java @@ -50,9 +50,11 @@ public class Notifications extends TestBase implements ClickListener { return null; } + @Override public void buttonClick(ClickEvent event) { Notification n = new Notification(tf.getValue(), (Integer) type.getValue()); + n.setHtmlContentAllowed(true); n.show(Page.getCurrent()); } } diff --git a/tests/testbench/com/vaadin/tests/components/notification/NotificationsAndModalWindow.java b/tests/testbench/com/vaadin/tests/components/notification/NotificationsAndModalWindow.java index 547ef3077b..25bc05c771 100644 --- a/tests/testbench/com/vaadin/tests/components/notification/NotificationsAndModalWindow.java +++ b/tests/testbench/com/vaadin/tests/components/notification/NotificationsAndModalWindow.java @@ -17,6 +17,7 @@ public class NotificationsAndModalWindow extends TestBase { Button b = new Button("Button"); b.addListener(new Button.ClickListener() { + @Override public void buttonClick(ClickEvent event) { Window w = new Window("This is a window"); w.setModal(true); diff --git a/tests/testbench/com/vaadin/tests/components/notification/NotificationsHtmlAllowed.java b/tests/testbench/com/vaadin/tests/components/notification/NotificationsHtmlAllowed.java index 8e42db57f3..767d16b6da 100644 --- a/tests/testbench/com/vaadin/tests/components/notification/NotificationsHtmlAllowed.java +++ b/tests/testbench/com/vaadin/tests/components/notification/NotificationsHtmlAllowed.java @@ -44,6 +44,7 @@ public class NotificationsHtmlAllowed extends TestBase implements ClickListener return 6097; } + @Override public void buttonClick(ClickEvent event) { Notification n = makeNotification(); n.show(Page.getCurrent()); diff --git a/tests/testbench/com/vaadin/tests/components/optiongroup/DisabledOptionGroupItems.java b/tests/testbench/com/vaadin/tests/components/optiongroup/DisabledOptionGroupItems.java index 4668ef5ab8..877f9aa675 100644 --- a/tests/testbench/com/vaadin/tests/components/optiongroup/DisabledOptionGroupItems.java +++ b/tests/testbench/com/vaadin/tests/components/optiongroup/DisabledOptionGroupItems.java @@ -52,6 +52,7 @@ public class DisabledOptionGroupItems extends ComponentTestCase<OptionGroup> { return createButtonAction("Toggle selection mode", new Command<OptionGroup, Boolean>() { + @Override public void execute(OptionGroup og, Boolean value, Object data) { if (og.isMultiSelect()) { @@ -69,6 +70,7 @@ public class DisabledOptionGroupItems extends ComponentTestCase<OptionGroup> { return createButtonAction("Invert disabled items", new Command<OptionGroup, Boolean>() { + @Override public void execute(OptionGroup c, Boolean value, Object data) { for (Object itemId : c.getItemIds()) { diff --git a/tests/testbench/com/vaadin/tests/components/optiongroup/HtmlOptionGroupItems.java b/tests/testbench/com/vaadin/tests/components/optiongroup/HtmlOptionGroupItems.java index 0f6ae8917a..179d1aa5ff 100644 --- a/tests/testbench/com/vaadin/tests/components/optiongroup/HtmlOptionGroupItems.java +++ b/tests/testbench/com/vaadin/tests/components/optiongroup/HtmlOptionGroupItems.java @@ -54,6 +54,7 @@ public class HtmlOptionGroupItems extends ComponentTestCase<OptionGroup> { private Component createInvertHtmlItemsAction() { return createButtonAction("Toggle html mode", new Command<OptionGroup, Boolean>() { + @Override public void execute(OptionGroup og, Boolean value, Object data) { og.setHtmlContentAllowed(!og.isHtmlContentAllowed()); @@ -65,6 +66,7 @@ public class HtmlOptionGroupItems extends ComponentTestCase<OptionGroup> { return createButtonAction("Toggle selection mode", new Command<OptionGroup, Boolean>() { + @Override public void execute(OptionGroup og, Boolean value, Object data) { if (og.isMultiSelect()) { @@ -82,6 +84,7 @@ public class HtmlOptionGroupItems extends ComponentTestCase<OptionGroup> { return createButtonAction("Invert disabled items", new Command<OptionGroup, Boolean>() { + @Override public void execute(OptionGroup c, Boolean value, Object data) { for (Object itemId : c.getItemIds()) { diff --git a/tests/testbench/com/vaadin/tests/components/optiongroup/OptionGroupMultipleValueChange.java b/tests/testbench/com/vaadin/tests/components/optiongroup/OptionGroupMultipleValueChange.java index ff860f3293..213258ed29 100644 --- a/tests/testbench/com/vaadin/tests/components/optiongroup/OptionGroupMultipleValueChange.java +++ b/tests/testbench/com/vaadin/tests/components/optiongroup/OptionGroupMultipleValueChange.java @@ -2,7 +2,7 @@ package com.vaadin.tests.components.optiongroup; import com.vaadin.data.Property; import com.vaadin.data.Property.ValueChangeEvent; -import com.vaadin.terminal.gwt.client.ui.label.ContentMode; +import com.vaadin.shared.ui.label.ContentMode; import com.vaadin.tests.components.TestBase; import com.vaadin.ui.Label; import com.vaadin.ui.OptionGroup; @@ -33,6 +33,7 @@ public class OptionGroupMultipleValueChange extends TestBase { og.addListener(new Property.ValueChangeListener() { + @Override public void valueChange(ValueChangeEvent event) { String s = "ValueChange: " + event.getProperty().getValue(); events.setValue(events.getValue() + "\n" + s); diff --git a/tests/testbench/com/vaadin/tests/components/optiongroup/OptionGroups.java b/tests/testbench/com/vaadin/tests/components/optiongroup/OptionGroups.java index f8af6b07e4..c20de87ec7 100644 --- a/tests/testbench/com/vaadin/tests/components/optiongroup/OptionGroups.java +++ b/tests/testbench/com/vaadin/tests/components/optiongroup/OptionGroups.java @@ -21,6 +21,7 @@ public class OptionGroups extends AbstractSelectTestCase<OptionGroup> { createDisabledItemsMultiToggle("Disabled items"); createBooleanAction("HTML content allowed", CATEGORY_STATE, false, new Command<OptionGroup, Boolean>() { + @Override public void execute(OptionGroup og, Boolean value, Object data) { og.setHtmlContentAllowed(value.booleanValue()); @@ -39,6 +40,7 @@ public class OptionGroups extends AbstractSelectTestCase<OptionGroup> { createSelectAction(string, CATEGORY_DECORATIONS, options, options .keySet().iterator().next(), new Command<OptionGroup, ThemeResource>() { + @Override public void execute(OptionGroup c, ThemeResource icon, Object data) { Collection<?> itemIds = c.getItemIds(); @@ -58,6 +60,7 @@ public class OptionGroups extends AbstractSelectTestCase<OptionGroup> { private Command<OptionGroup, Boolean> enabledItemCommand = new Command<OptionGroup, Boolean>() { + @Override public void execute(OptionGroup c, Boolean value, Object data) { c.setItemEnabled(data, value); diff --git a/tests/testbench/com/vaadin/tests/components/orderedlayout/LayoutClickListenerTest.java b/tests/testbench/com/vaadin/tests/components/orderedlayout/LayoutClickListenerTest.java index 4f4faf15bb..821a5dbb93 100644 --- a/tests/testbench/com/vaadin/tests/components/orderedlayout/LayoutClickListenerTest.java +++ b/tests/testbench/com/vaadin/tests/components/orderedlayout/LayoutClickListenerTest.java @@ -59,6 +59,7 @@ public class LayoutClickListenerTest extends TestBase { // Listen for layout click events layout.addListener(new LayoutClickListener() { + @Override public void layoutClick(LayoutClickEvent event) { // Get the deepest nested component which was clicked diff --git a/tests/testbench/com/vaadin/tests/components/orderedlayout/LayoutResizeTest.java b/tests/testbench/com/vaadin/tests/components/orderedlayout/LayoutResizeTest.java index b5e83978b7..62c552ee75 100644 --- a/tests/testbench/com/vaadin/tests/components/orderedlayout/LayoutResizeTest.java +++ b/tests/testbench/com/vaadin/tests/components/orderedlayout/LayoutResizeTest.java @@ -1,7 +1,7 @@ package com.vaadin.tests.components.orderedlayout; +import com.vaadin.shared.ui.label.ContentMode; import com.vaadin.terminal.ThemeResource; -import com.vaadin.terminal.gwt.client.ui.label.ContentMode; import com.vaadin.tests.components.TestBase; import com.vaadin.ui.Alignment; import com.vaadin.ui.Button; @@ -37,6 +37,7 @@ public class LayoutResizeTest extends TestBase { Button resize = new Button("Resize to 700x400", new Button.ClickListener() { + @Override public void buttonClick(ClickEvent event) { event.getButton() .getRoot() @@ -49,6 +50,7 @@ public class LayoutResizeTest extends TestBase { left.addComponent(resize); resize = new Button("Resize to 900x600", new Button.ClickListener() { + @Override public void buttonClick(ClickEvent event) { event.getButton() .getRoot() diff --git a/tests/testbench/com/vaadin/tests/components/orderedlayout/OrderedLayoutCases.java b/tests/testbench/com/vaadin/tests/components/orderedlayout/OrderedLayoutCases.java index a4a7098f52..aeae09e7b9 100644 --- a/tests/testbench/com/vaadin/tests/components/orderedlayout/OrderedLayoutCases.java +++ b/tests/testbench/com/vaadin/tests/components/orderedlayout/OrderedLayoutCases.java @@ -31,18 +31,21 @@ public class OrderedLayoutCases extends AbstractTestRoot { setStyleName("sampleChild"); addComponent(createSimpleSelector("Child width", new ValueChangeListener() { + @Override public void valueChange(ValueChangeEvent event) { setWidth(event.getProperty().getValue().toString()); } }, dimensionValues)); addComponent(createSimpleSelector("Child height", new ValueChangeListener() { + @Override public void valueChange(ValueChangeEvent event) { setHeight(event.getProperty().getValue().toString()); } }, dimensionValues)); addComponent(createSimpleSelector("Caption", new ValueChangeListener() { + @Override public void valueChange(ValueChangeEvent event) { String value = event.getProperty().getValue() .toString(); @@ -58,6 +61,7 @@ public class OrderedLayoutCases extends AbstractTestRoot { addComponent(createSimpleSelector("Expand ratio", new ValueChangeListener() { + @Override public void valueChange(ValueChangeEvent event) { AbstractOrderedLayout parent = (AbstractOrderedLayout) getParent(); if (parent == null) { @@ -81,6 +85,7 @@ public class OrderedLayoutCases extends AbstractTestRoot { } addComponent(createSimpleSelector("Alignment", new ValueChangeListener() { + @Override public void valueChange(ValueChangeEvent event) { String value = event.getProperty().getValue() .toString(); @@ -130,6 +135,7 @@ public class OrderedLayoutCases extends AbstractTestRoot { sizeBar.addComponent(createSimpleSelector("Layout width", new ValueChangeListener() { + @Override public void valueChange(ValueChangeEvent event) { currentLayout.setWidth(event.getProperty().getValue() .toString()); @@ -137,6 +143,7 @@ public class OrderedLayoutCases extends AbstractTestRoot { }, dimensionValues)); sizeBar.addComponent(createSimpleSelector("Layout height", new ValueChangeListener() { + @Override public void valueChange(ValueChangeEvent event) { currentLayout.setHeight(event.getProperty().getValue() .toString()); @@ -144,6 +151,7 @@ public class OrderedLayoutCases extends AbstractTestRoot { }, dimensionValues)); sizeBar.addComponent(createSimpleSelector("Spacing", new ValueChangeListener() { + @Override public void valueChange(ValueChangeEvent event) { currentLayout.setSpacing(Boolean.parseBoolean(event .getProperty().getValue().toString())); @@ -151,6 +159,7 @@ public class OrderedLayoutCases extends AbstractTestRoot { }, "false", "true")); sizeBar.addComponent(createSimpleSelector("Margin", new ValueChangeListener() { + @Override public void valueChange(ValueChangeEvent event) { currentLayout.setMargin(Boolean.parseBoolean(event .getProperty().getValue().toString())); @@ -158,6 +167,7 @@ public class OrderedLayoutCases extends AbstractTestRoot { }, "false", "true")); sizeBar.addComponent(createSimpleSelector("Direction", new ValueChangeListener() { + @Override public void valueChange(ValueChangeEvent event) { Object value = event.getProperty().getValue(); @@ -191,6 +201,7 @@ public class OrderedLayoutCases extends AbstractTestRoot { HorizontalLayout caseBar = new HorizontalLayout(); caseBar.addComponent(new Button("Undefined without relative", new ClickListener() { + @Override public void buttonClick(ClickEvent event) { resetState(); setState(sizeBar, 2, 1); @@ -204,6 +215,7 @@ public class OrderedLayoutCases extends AbstractTestRoot { })); caseBar.addComponent(new Button("Undefined with relative", new ClickListener() { + @Override public void buttonClick(ClickEvent event) { resetState(); // width: 100% to middle child @@ -212,6 +224,7 @@ public class OrderedLayoutCases extends AbstractTestRoot { })); caseBar.addComponent(new Button("Fixed with overflow", new ClickListener() { + @Override public void buttonClick(ClickEvent event) { resetState(); // layout width: 350px @@ -222,6 +235,7 @@ public class OrderedLayoutCases extends AbstractTestRoot { })); caseBar.addComponent(new Button("Fixed with extra space", new ClickListener() { + @Override public void buttonClick(ClickEvent event) { resetState(); // Layout width: 800px @@ -239,6 +253,7 @@ public class OrderedLayoutCases extends AbstractTestRoot { caseBar.addComponent(new Button("Expand with alignment", new ClickListener() { + @Override public void buttonClick(ClickEvent event) { resetState(); // Layout width: 800px @@ -256,6 +271,7 @@ public class OrderedLayoutCases extends AbstractTestRoot { caseBar.addComponent(new Button("Multiple expands", new ClickListener() { + @Override public void buttonClick(ClickEvent event) { resetState(); // Layout width: 800px @@ -278,6 +294,7 @@ public class OrderedLayoutCases extends AbstractTestRoot { caseBar.addComponent(new Button("Fixed + relative height", new ClickListener() { + @Override public void buttonClick(ClickEvent event) { resetState(); // Layout height: 100% @@ -295,6 +312,7 @@ public class OrderedLayoutCases extends AbstractTestRoot { caseBar.addComponent(new Button("Undefined + relative height", new ClickListener() { + @Override public void buttonClick(ClickEvent event) { resetState(); // Height: 350px to left child diff --git a/tests/testbench/com/vaadin/tests/components/orderedlayout/ReplaceComponentNPE.java b/tests/testbench/com/vaadin/tests/components/orderedlayout/ReplaceComponentNPE.java index 501c377ab7..a18400ce08 100644 --- a/tests/testbench/com/vaadin/tests/components/orderedlayout/ReplaceComponentNPE.java +++ b/tests/testbench/com/vaadin/tests/components/orderedlayout/ReplaceComponentNPE.java @@ -26,6 +26,7 @@ public class ReplaceComponentNPE extends TestBase { Button changer = new Button("ReplaceComponent"); changer.addListener(new Button.ClickListener() { + @Override public void buttonClick(ClickEvent event) { getLayout().replaceComponent(button, outer); outer.addComponent(button); diff --git a/tests/testbench/com/vaadin/tests/components/orderedlayout/VerticalLayoutWidthCalculation.java b/tests/testbench/com/vaadin/tests/components/orderedlayout/VerticalLayoutWidthCalculation.java index f20f26153f..945ccf0e28 100644 --- a/tests/testbench/com/vaadin/tests/components/orderedlayout/VerticalLayoutWidthCalculation.java +++ b/tests/testbench/com/vaadin/tests/components/orderedlayout/VerticalLayoutWidthCalculation.java @@ -43,6 +43,7 @@ public class VerticalLayoutWidthCalculation extends AbstractTestCase { Button btn = new Button("Show/hide"); btn.addListener(new Button.ClickListener() { + @Override public void buttonClick(ClickEvent event) { tf2.setVisible(!tf2.isVisible()); } diff --git a/tests/testbench/com/vaadin/tests/components/panel/BasicPanelTest.java b/tests/testbench/com/vaadin/tests/components/panel/BasicPanelTest.java index 671b2c3fca..b3eac5c82e 100644 --- a/tests/testbench/com/vaadin/tests/components/panel/BasicPanelTest.java +++ b/tests/testbench/com/vaadin/tests/components/panel/BasicPanelTest.java @@ -37,6 +37,7 @@ public class BasicPanelTest extends TestBase { final CheckBox heightSelection = new CheckBox("Undefined height"); heightSelection.setImmediate(true); heightSelection.addListener(new ValueChangeListener() { + @Override public void valueChange(ValueChangeEvent event) { if (heightSelection.getValue() == Boolean.TRUE) { panel.setHeight(null); diff --git a/tests/testbench/com/vaadin/tests/components/panel/PanelChangeContents.java b/tests/testbench/com/vaadin/tests/components/panel/PanelChangeContents.java index 4859b22932..7722e182ff 100644 --- a/tests/testbench/com/vaadin/tests/components/panel/PanelChangeContents.java +++ b/tests/testbench/com/vaadin/tests/components/panel/PanelChangeContents.java @@ -48,6 +48,7 @@ public class PanelChangeContents extends AbstractTestRoot implements setContent(content); } + @Override public void buttonClick(ClickEvent event) { if (event.getButton() == statsButton) { panel.setContent(stats); diff --git a/tests/testbench/com/vaadin/tests/components/panel/PanelClickListenerRelativeCoordinates.java b/tests/testbench/com/vaadin/tests/components/panel/PanelClickListenerRelativeCoordinates.java index 65a185b160..40f6d5ea33 100644 --- a/tests/testbench/com/vaadin/tests/components/panel/PanelClickListenerRelativeCoordinates.java +++ b/tests/testbench/com/vaadin/tests/components/panel/PanelClickListenerRelativeCoordinates.java @@ -12,6 +12,7 @@ public class PanelClickListenerRelativeCoordinates extends TestBase { Panel panel = new Panel("Panel's caption"); panel.addListener(new ClickListener() { + @Override public void click(ClickEvent event) { getMainWindow() .showNotification( diff --git a/tests/testbench/com/vaadin/tests/components/panel/PanelShouldNotScroll.java b/tests/testbench/com/vaadin/tests/components/panel/PanelShouldNotScroll.java index 65754de0f3..a4cba89732 100644 --- a/tests/testbench/com/vaadin/tests/components/panel/PanelShouldNotScroll.java +++ b/tests/testbench/com/vaadin/tests/components/panel/PanelShouldNotScroll.java @@ -1,6 +1,6 @@ package com.vaadin.tests.components.panel; -import com.vaadin.terminal.gwt.client.ui.label.ContentMode; +import com.vaadin.shared.ui.label.ContentMode; import com.vaadin.tests.components.TestBase; import com.vaadin.ui.Button; import com.vaadin.ui.Button.ClickEvent; @@ -23,6 +23,7 @@ public class PanelShouldNotScroll extends TestBase { p.addComponent(foo()); addMore = new Button("Add"); addMore.addListener(new ClickListener() { + @Override public void buttonClick(ClickEvent event) { p.removeComponent(addMore); p.addComponent(foo()); diff --git a/tests/testbench/com/vaadin/tests/components/panel/PanelShouldRemoveActionHandler.java b/tests/testbench/com/vaadin/tests/components/panel/PanelShouldRemoveActionHandler.java index eec39359aa..5ca5c5135f 100644 --- a/tests/testbench/com/vaadin/tests/components/panel/PanelShouldRemoveActionHandler.java +++ b/tests/testbench/com/vaadin/tests/components/panel/PanelShouldRemoveActionHandler.java @@ -34,6 +34,7 @@ public class PanelShouldRemoveActionHandler extends TestBase { Button add = new Button("Add an action handler", new Button.ClickListener() { + @Override public void buttonClick(ClickEvent event) { add(); } @@ -42,6 +43,7 @@ public class PanelShouldRemoveActionHandler extends TestBase { Button addAnother = new Button("Add another action handler", new Button.ClickListener() { + @Override public void buttonClick(ClickEvent event) { addAnother(); } @@ -50,6 +52,7 @@ public class PanelShouldRemoveActionHandler extends TestBase { Button remove = new Button("Remove an action handler", new Button.ClickListener() { + @Override public void buttonClick(ClickEvent event) { remove(); } @@ -73,12 +76,14 @@ public class PanelShouldRemoveActionHandler extends TestBase { panel.setCaption(panel.getCaption() + " - Added handler"); Handler actionHandler = new Handler() { + @Override public Action[] getActions(Object target, Object sender) { return new Action[] { new ShortcutAction("Ctrl+Left", ShortcutAction.KeyCode.ARROW_LEFT, new int[] { ModifierKey.CTRL }) }; } + @Override public void handleAction(Action action, Object sender, Object target) { getMainWindow().showNotification( "Handling action " + action.getCaption()); @@ -92,12 +97,14 @@ public class PanelShouldRemoveActionHandler extends TestBase { public void addAnother() { Handler actionHandler = new Handler() { + @Override public Action[] getActions(Object target, Object sender) { return new Action[] { new ShortcutAction("Ctrl+Right", ShortcutAction.KeyCode.ARROW_RIGHT, new int[] { ModifierKey.CTRL }) }; } + @Override public void handleAction(Action action, Object sender, Object target) { getMainWindow().showNotification( "Handling action " + action.getCaption()); diff --git a/tests/testbench/com/vaadin/tests/components/popupview/PopupViewClickShortcut.java b/tests/testbench/com/vaadin/tests/components/popupview/PopupViewClickShortcut.java new file mode 100644 index 0000000000..6461d10277 --- /dev/null +++ b/tests/testbench/com/vaadin/tests/components/popupview/PopupViewClickShortcut.java @@ -0,0 +1,78 @@ +package com.vaadin.tests.components.popupview; + +import com.vaadin.event.ShortcutAction.KeyCode; +import com.vaadin.event.ShortcutAction.ModifierKey; +import com.vaadin.tests.components.TestBase; +import com.vaadin.tests.util.Log; +import com.vaadin.ui.Button; +import com.vaadin.ui.Button.ClickEvent; +import com.vaadin.ui.ComponentContainer; +import com.vaadin.ui.Layout; +import com.vaadin.ui.PopupView; +import com.vaadin.ui.Table; +import com.vaadin.ui.VerticalLayout; +import com.vaadin.ui.Window; + +public class PopupViewClickShortcut extends TestBase { + + private Window sub = new Window("Table", makeTable("Subwindow", KeyCode.S)); + + private Log log = new Log(5); + + @Override + protected void setup() { + sub.center(); + getMainWindow().addWindow(sub); + addComponent(log); + addComponent(new PopupView("Show popup table", makeTable("Popup", + KeyCode.P))); + addComponent(makeTable("Main window", KeyCode.M)); + sub.addComponent(new PopupView("Show popup table", makeTable( + "Subwindow popup", KeyCode.U))); + } + + private ComponentContainer makeTable(final String caption, int keyCode) { + final Table t = new Table(); + t.setSelectable(true); + t.setHeight("200px"); + t.setWidth("200px"); + t.addContainerProperty("foo", String.class, "foo"); + for (int i = 0; i < 5; i++) { + t.addItem(new String[] { "foo " + i }, i); + } + + final Layout l = new VerticalLayout(); + l.setCaption(caption); + l.setWidth(null); + + Button b = new Button("Submit " + caption + " (Ctrl+Alt+" + + String.valueOf(Character.toChars(keyCode)) + ")", + new Button.ClickListener() { + private int i = 5; + + @Override + public void buttonClick(ClickEvent event) { + log.log("Submitted from " + + event.getButton().getParent().getCaption()); + t.addItem(new String[] { "added " + i++ }, i); + } + }); + b.setClickShortcut(keyCode, ModifierKey.CTRL, ModifierKey.ALT); + + l.addComponent(t); + l.addComponent(b); + + return l; + } + + @Override + protected String getDescription() { + return "Enter ClickShortcut does not work with PopupView"; + } + + @Override + protected Integer getTicketNumber() { + return 8193; + } + +} diff --git a/tests/testbench/com/vaadin/tests/components/popupview/PopupViewNullValues.java b/tests/testbench/com/vaadin/tests/components/popupview/PopupViewNullValues.java index 481c134ee6..75f95977bd 100644 --- a/tests/testbench/com/vaadin/tests/components/popupview/PopupViewNullValues.java +++ b/tests/testbench/com/vaadin/tests/components/popupview/PopupViewNullValues.java @@ -20,6 +20,7 @@ public class PopupViewNullValues extends TestBase { addComponent(pv[0]); b[0] = new Button("Open popupview 1", new ClickListener() { + @Override public void buttonClick(ClickEvent event) { pv[0].setPopupVisible(true); } @@ -38,6 +39,7 @@ public class PopupViewNullValues extends TestBase { addComponent(pv[1]); b[1] = new Button("Open popupview 2", new ClickListener() { + @Override public void buttonClick(ClickEvent event) { pv[1].setPopupVisible(true); } @@ -55,6 +57,7 @@ public class PopupViewNullValues extends TestBase { addComponent(pv[2]); b[2] = new Button("Open popupview 3", new ClickListener() { + @Override public void buttonClick(ClickEvent event) { pv[2].setPopupVisible(true); } @@ -72,6 +75,7 @@ public class PopupViewNullValues extends TestBase { addComponent(pv[3]); b[3] = new Button("Open popupview 4", new ClickListener() { + @Override public void buttonClick(ClickEvent event) { pv[3].setPopupVisible(true); } diff --git a/tests/testbench/com/vaadin/tests/components/popupview/PopupViewOffScreen.java b/tests/testbench/com/vaadin/tests/components/popupview/PopupViewOffScreen.java index 72183e3570..01ed34a13f 100644 --- a/tests/testbench/com/vaadin/tests/components/popupview/PopupViewOffScreen.java +++ b/tests/testbench/com/vaadin/tests/components/popupview/PopupViewOffScreen.java @@ -3,7 +3,7 @@ package com.vaadin.tests.components.popupview; import java.util.ArrayList; import java.util.List; -import com.vaadin.terminal.gwt.client.ui.label.ContentMode; +import com.vaadin.shared.ui.label.ContentMode; import com.vaadin.tests.components.TestBase; import com.vaadin.tests.util.LoremIpsum; import com.vaadin.ui.Button; @@ -42,6 +42,7 @@ public class PopupViewOffScreen extends TestBase { Button showall = new Button("Popup all", new ClickListener() { + @Override public void buttonClick(ClickEvent event) { for (PopupView pv : popupViews) { pv.setPopupVisible(true); diff --git a/tests/testbench/com/vaadin/tests/components/popupview/PopupViewShouldCloseOnTabOut.java b/tests/testbench/com/vaadin/tests/components/popupview/PopupViewShouldCloseOnTabOut.java index 7e917630c8..271a7eea2a 100644 --- a/tests/testbench/com/vaadin/tests/components/popupview/PopupViewShouldCloseOnTabOut.java +++ b/tests/testbench/com/vaadin/tests/components/popupview/PopupViewShouldCloseOnTabOut.java @@ -24,10 +24,12 @@ public class PopupViewShouldCloseOnTabOut extends TestBase { protected void setup() { PopupView pv = new PopupView(new Content() { + @Override public String getMinimizedValueAsHTML() { return "<b>click me</b>"; } + @Override public Component getPopupComponent() { VerticalLayout vl = new VerticalLayout(); TextField field1 = new TextField(); diff --git a/tests/testbench/com/vaadin/tests/components/popupview/PopupViewWithRTE.java b/tests/testbench/com/vaadin/tests/components/popupview/PopupViewWithRTE.java index 5ed0a375fe..069ccef2bb 100644 --- a/tests/testbench/com/vaadin/tests/components/popupview/PopupViewWithRTE.java +++ b/tests/testbench/com/vaadin/tests/components/popupview/PopupViewWithRTE.java @@ -27,6 +27,7 @@ public class PopupViewWithRTE extends TestBase { VerticalLayout vl = new VerticalLayout(); + @Override public String getMinimizedValueAsHTML() { String value = rte.getValue(); if (value == null || "".equals(value)) { @@ -40,6 +41,7 @@ public class PopupViewWithRTE extends TestBase { return value.toString(); } + @Override public Component getPopupComponent() { return vl; } diff --git a/tests/testbench/com/vaadin/tests/components/popupview/ReopenPopupView.java b/tests/testbench/com/vaadin/tests/components/popupview/ReopenPopupView.java index 89f6d155f2..bef3cfced8 100644 --- a/tests/testbench/com/vaadin/tests/components/popupview/ReopenPopupView.java +++ b/tests/testbench/com/vaadin/tests/components/popupview/ReopenPopupView.java @@ -18,6 +18,7 @@ public class ReopenPopupView extends AbstractTestRoot { addComponent(log); addComponent(new PopupView("PopupView", new Button("Button", new Button.ClickListener() { + @Override public void buttonClick(ClickEvent event) { log.log("Button clicked"); } diff --git a/tests/testbench/com/vaadin/tests/components/progressindicator/ProgressIndicatorInvisible.java b/tests/testbench/com/vaadin/tests/components/progressindicator/ProgressIndicatorInvisible.java index 62dba61191..9f632ac806 100644 --- a/tests/testbench/com/vaadin/tests/components/progressindicator/ProgressIndicatorInvisible.java +++ b/tests/testbench/com/vaadin/tests/components/progressindicator/ProgressIndicatorInvisible.java @@ -22,6 +22,7 @@ public class ProgressIndicatorInvisible extends TestBase { addComponent(b); b.addListener(new Button.ClickListener() { + @Override public void buttonClick(ClickEvent event) { // If we skip hiding the layout, hiding the ProgressIndicator // will stop the polling diff --git a/tests/testbench/com/vaadin/tests/components/richtextarea/RichTextAreaScrolling.html b/tests/testbench/com/vaadin/tests/components/richtextarea/RichTextAreaScrolling.html new file mode 100644 index 0000000000..be1c5a2cde --- /dev/null +++ b/tests/testbench/com/vaadin/tests/components/richtextarea/RichTextAreaScrolling.html @@ -0,0 +1,27 @@ +<?xml version="1.0" encoding="UTF-8"?> +<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd"> +<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en" lang="en"> +<head profile="http://selenium-ide.openqa.org/profiles/test-case"> +<meta http-equiv="Content-Type" content="text/html; charset=UTF-8" /> +<link rel="selenium.base" href="" /> +<title>RichTextAreaScrolling</title> +</head> +<body> +<table cellpadding="1" cellspacing="1" border="1"> +<thead> +<tr><td rowspan="1" colspan="3">RichTextAreaScrolling</td></tr> +</thead><tbody> +<tr> + <td>open</td> + <td>/run/com.vaadin.tests.components.richtextarea.RichTextAreaScrolling?restartApplication</td> + <td></td> +</tr> +<tr> + <td>screenCapture</td> + <td></td> + <td></td> +</tr> + +</tbody></table> +</body> +</html> diff --git a/tests/testbench/com/vaadin/tests/components/richtextarea/RichTextAreaScrolling.java b/tests/testbench/com/vaadin/tests/components/richtextarea/RichTextAreaScrolling.java new file mode 100644 index 0000000000..f88ed0c67c --- /dev/null +++ b/tests/testbench/com/vaadin/tests/components/richtextarea/RichTextAreaScrolling.java @@ -0,0 +1,57 @@ +package com.vaadin.tests.components.richtextarea; + +import com.vaadin.tests.components.TestBase; +import com.vaadin.ui.HorizontalLayout; +import com.vaadin.ui.RichTextArea; +import com.vaadin.ui.VerticalLayout; + +public class RichTextAreaScrolling extends TestBase { + + @Override + protected String getDescription() { + return "A read-only RichTextArea should be (touch) scrollable"; + } + + @Override + protected Integer getTicketNumber() { + return 7036; + } + + @Override + protected void setup() { + StringBuilder sb = new StringBuilder(); + for (int i = 0; i < 50; ++i) { + sb.append("A long string with several lines<br/>"); + } + + HorizontalLayout main = new HorizontalLayout(); + main.setSpacing(true); + addComponent(main); + + RichTextArea first = new RichTextArea("Defined height"); + RichTextArea second = new RichTextArea("Full height"); + RichTextArea third = new RichTextArea("Undefined height"); + + first.setValue(sb); + second.setValue(sb); + third.setValue(sb); + + first.setReadOnly(true); + second.setReadOnly(true); + third.setReadOnly(true); + + first.setWidth("200px"); + first.setHeight("400px"); + second.setSizeFull(); + third.setSizeUndefined(); + + VerticalLayout secondLayout = new VerticalLayout(); + secondLayout.setWidth("200px"); + secondLayout.setHeight("200px"); + secondLayout.addComponent(second); + + main.addComponent(first); + main.addComponent(secondLayout); + main.addComponent(third); + } +} diff --git a/tests/testbench/com/vaadin/tests/components/richtextarea/RichTextAreaTest.java b/tests/testbench/com/vaadin/tests/components/richtextarea/RichTextAreaTest.java index cb7b991bda..4155dd8a07 100644 --- a/tests/testbench/com/vaadin/tests/components/richtextarea/RichTextAreaTest.java +++ b/tests/testbench/com/vaadin/tests/components/richtextarea/RichTextAreaTest.java @@ -14,6 +14,7 @@ public class RichTextAreaTest extends AbstractFieldTest<RichTextArea> { private Command<RichTextArea, Boolean> nullSelectionAllowedCommand = new Command<RichTextArea, Boolean>() { + @Override public void execute(RichTextArea c, Boolean value, Object data) { c.setNullSettingAllowed(value); @@ -21,6 +22,7 @@ public class RichTextAreaTest extends AbstractFieldTest<RichTextArea> { }; private Command<RichTextArea, String> nullRepresentationCommand = new Command<RichTextArea, String>() { + @Override public void execute(RichTextArea c, String value, Object data) { c.setNullRepresentation(value); } diff --git a/tests/testbench/com/vaadin/tests/components/richtextarea/RichTextAreaWithKeyboardShortcuts.java b/tests/testbench/com/vaadin/tests/components/richtextarea/RichTextAreaWithKeyboardShortcuts.java index 98f31cd68c..73d7a95e9f 100644 --- a/tests/testbench/com/vaadin/tests/components/richtextarea/RichTextAreaWithKeyboardShortcuts.java +++ b/tests/testbench/com/vaadin/tests/components/richtextarea/RichTextAreaWithKeyboardShortcuts.java @@ -3,6 +3,7 @@ package com.vaadin.tests.components.richtextarea; import com.vaadin.event.Action; import com.vaadin.event.Action.Handler; import com.vaadin.event.ShortcutAction; +import com.vaadin.terminal.Page; import com.vaadin.tests.components.TestBase; import com.vaadin.ui.AbstractField; import com.vaadin.ui.Component; @@ -19,6 +20,7 @@ public class RichTextAreaWithKeyboardShortcuts extends TestBase { ShortcutAction save = new ShortcutAction("^Save"); private Action[] actions = new Action[] { save }; + @Override public void handleAction(Action action, Object sender, Object target) { String msg = "Action: " + action.getCaption(); msg += " From : " + sender.getClass().getSimpleName() + " '" @@ -31,10 +33,13 @@ public class RichTextAreaWithKeyboardShortcuts extends TestBase { String string = f.getValue().toString(); msg += " Value: " + string; - Notification.show(msg); + Notification notification = new Notification(msg); + notification.setHtmlContentAllowed(true); + notification.show(Page.getCurrent()); } + @Override public Action[] getActions(Object target, Object sender) { return actions; } diff --git a/tests/testbench/com/vaadin/tests/components/root/LazyInitRoots.java b/tests/testbench/com/vaadin/tests/components/root/LazyInitRoots.java index c4547e56ff..254410a549 100644 --- a/tests/testbench/com/vaadin/tests/components/root/LazyInitRoots.java +++ b/tests/testbench/com/vaadin/tests/components/root/LazyInitRoots.java @@ -2,10 +2,10 @@ package com.vaadin.tests.components.root; import com.vaadin.RootRequiresMoreInformationException; import com.vaadin.annotations.EagerInit; +import com.vaadin.shared.ui.label.ContentMode; import com.vaadin.terminal.ExternalResource; import com.vaadin.terminal.WrappedRequest; import com.vaadin.terminal.WrappedRequest.BrowserDetails; -import com.vaadin.terminal.gwt.client.ui.label.ContentMode; import com.vaadin.tests.components.AbstractTestApplication; import com.vaadin.ui.Label; import com.vaadin.ui.Link; diff --git a/tests/testbench/com/vaadin/tests/components/root/UriFragmentTest.java b/tests/testbench/com/vaadin/tests/components/root/UriFragmentTest.java index 251672fb9a..d34c7718ce 100644 --- a/tests/testbench/com/vaadin/tests/components/root/UriFragmentTest.java +++ b/tests/testbench/com/vaadin/tests/components/root/UriFragmentTest.java @@ -17,12 +17,14 @@ public class UriFragmentTest extends AbstractTestRoot { addComponent(fragmentLabel); updateLabel(); getPage().addListener(new Page.FragmentChangedListener() { + @Override public void fragmentChanged(FragmentChangedEvent event) { updateLabel(); } }); addComponent(new Button("Navigate to #test", new Button.ClickListener() { + @Override public void buttonClick(ClickEvent event) { getPage().setFragment("test"); } diff --git a/tests/testbench/com/vaadin/tests/components/select/AbstractSelectTestCase.java b/tests/testbench/com/vaadin/tests/components/select/AbstractSelectTestCase.java index 0565811e15..7c2d8dd243 100644 --- a/tests/testbench/com/vaadin/tests/components/select/AbstractSelectTestCase.java +++ b/tests/testbench/com/vaadin/tests/components/select/AbstractSelectTestCase.java @@ -146,6 +146,7 @@ public abstract class AbstractSelectTestCase<T extends AbstractSelect> extends protected Command<T, Boolean> nullSelectionAllowedCommand = new Command<T, Boolean>() { + @Override public void execute(T c, Boolean value, Object data) { (c).setNullSelectionAllowed(value); } @@ -153,6 +154,7 @@ public abstract class AbstractSelectTestCase<T extends AbstractSelect> extends protected Command<T, Boolean> multiselectCommand = new Command<T, Boolean>() { + @Override public void execute(T c, Boolean value, Object data) { c.setMultiSelect(value); } @@ -160,6 +162,7 @@ public abstract class AbstractSelectTestCase<T extends AbstractSelect> extends protected Command<T, Object> nullSelectItemIdCommand = new Command<T, Object>() { + @Override public void execute(T c, Object value, Object data) { c.setNullSelectionItemId(value); } @@ -167,6 +170,7 @@ public abstract class AbstractSelectTestCase<T extends AbstractSelect> extends protected Command<T, Integer> itemsInContainerCommand = new Command<T, Integer>() { + @Override public void execute(T t, Integer value, Object data) { items = value; updateContainer(); @@ -175,6 +179,7 @@ public abstract class AbstractSelectTestCase<T extends AbstractSelect> extends protected Command<T, Integer> propertiesInContainerCommand = new Command<T, Integer>() { + @Override public void execute(T t, Integer value, Object data) { properties = value; updateContainer(); @@ -183,6 +188,7 @@ public abstract class AbstractSelectTestCase<T extends AbstractSelect> extends protected Command<T, Boolean> itemClickListenerCommand = new Command<T, Boolean>() { + @Override public void execute(T c, Boolean value, Object data) { if (value) { ((ItemClickNotifier) c) @@ -206,6 +212,7 @@ public abstract class AbstractSelectTestCase<T extends AbstractSelect> extends /* COMMANDS END */ + @Override public void itemClick(ItemClickEvent event) { String type = event.getButtonName(); if (event.isDoubleClick()) { diff --git a/tests/testbench/com/vaadin/tests/components/select/ComboBoxAddWhileFiltering.java b/tests/testbench/com/vaadin/tests/components/select/ComboBoxAddWhileFiltering.java index 931686003a..470c97442f 100644 --- a/tests/testbench/com/vaadin/tests/components/select/ComboBoxAddWhileFiltering.java +++ b/tests/testbench/com/vaadin/tests/components/select/ComboBoxAddWhileFiltering.java @@ -22,6 +22,7 @@ public class ComboBoxAddWhileFiltering extends TestBase { Button b = new Button("add item (^N)"); b.addListener(new ClickListener() { + @Override public void buttonClick(ClickEvent event) { addItem(comboBox); } diff --git a/tests/testbench/com/vaadin/tests/components/select/FocusListenerBreaksDropdownMenu.java b/tests/testbench/com/vaadin/tests/components/select/FocusListenerBreaksDropdownMenu.java index dd2a8bb1a8..6f203bf8c9 100644 --- a/tests/testbench/com/vaadin/tests/components/select/FocusListenerBreaksDropdownMenu.java +++ b/tests/testbench/com/vaadin/tests/components/select/FocusListenerBreaksDropdownMenu.java @@ -14,6 +14,7 @@ public class FocusListenerBreaksDropdownMenu extends TestBase { } comboBox.addListener(new FieldEvents.FocusListener() { + @Override public void focus(FieldEvents.FocusEvent event) { comboBox.addItem(); } diff --git a/tests/testbench/com/vaadin/tests/components/select/NativeSelects.java b/tests/testbench/com/vaadin/tests/components/select/NativeSelects.java index d5577e213c..75a3f1b751 100644 --- a/tests/testbench/com/vaadin/tests/components/select/NativeSelects.java +++ b/tests/testbench/com/vaadin/tests/components/select/NativeSelects.java @@ -108,6 +108,7 @@ public class NativeSelects extends ComponentTestCase<NativeSelect> { actions.add(createBooleanAction("Null selection allowed", false, new Command<NativeSelect, Boolean>() { + @Override public void execute(NativeSelect c, Boolean value, Object data) { c.setNullSelectionAllowed(value); diff --git a/tests/testbench/com/vaadin/tests/components/select/NullSelectionItemId.java b/tests/testbench/com/vaadin/tests/components/select/NullSelectionItemId.java index 74ebb08826..984bab5b34 100644 --- a/tests/testbench/com/vaadin/tests/components/select/NullSelectionItemId.java +++ b/tests/testbench/com/vaadin/tests/components/select/NullSelectionItemId.java @@ -36,6 +36,7 @@ public class NullSelectionItemId extends TestBase implements ClickListener { button = new Button( "Select null with select(NULL_ITEM_ID) (should make value null)", new Button.ClickListener() { + @Override public void buttonClick(ClickEvent event) { mySelect.select(NULL_ITEM_ID); } @@ -46,6 +47,7 @@ public class NullSelectionItemId extends TestBase implements ClickListener { button = new Button( "Select null with setValue(null) (should make value null)", new Button.ClickListener() { + @Override public void buttonClick(ClickEvent event) { mySelect.setValue(null); } @@ -55,6 +57,7 @@ public class NullSelectionItemId extends TestBase implements ClickListener { } + @Override public void buttonClick(ClickEvent event) { getMainWindow().showNotification( "mySelect.getValue() returns: " + mySelect.getValue()); diff --git a/tests/testbench/com/vaadin/tests/components/select/SelectDisplaysOldValue.java b/tests/testbench/com/vaadin/tests/components/select/SelectDisplaysOldValue.java index 743dc071c9..b9ae958a03 100644 --- a/tests/testbench/com/vaadin/tests/components/select/SelectDisplaysOldValue.java +++ b/tests/testbench/com/vaadin/tests/components/select/SelectDisplaysOldValue.java @@ -143,6 +143,7 @@ public class SelectDisplaysOldValue extends TestBase { private class ControllerUpdatedListener implements Property.ValueChangeListener { + @Override public void valueChange(Property.ValueChangeEvent valueChangeEvent) { refreshSlaveDropdown((Integer) valueChangeEvent.getProperty() .getValue()); diff --git a/tests/testbench/com/vaadin/tests/components/select/StylingPopupOpener.java b/tests/testbench/com/vaadin/tests/components/select/StylingPopupOpener.java index b3911f19c7..b97231ae8e 100644 --- a/tests/testbench/com/vaadin/tests/components/select/StylingPopupOpener.java +++ b/tests/testbench/com/vaadin/tests/components/select/StylingPopupOpener.java @@ -19,6 +19,7 @@ public class StylingPopupOpener extends TestBase { addComponent(select); addComponent(new Button("Update style", new Button.ClickListener() { + @Override public void buttonClick(ClickEvent event) { select.setStyleName("mystyle"); } diff --git a/tests/testbench/com/vaadin/tests/components/select/TwinColSelectCaptionStyles.java b/tests/testbench/com/vaadin/tests/components/select/TwinColSelectCaptionStyles.java index cf33e2c7ff..789174260f 100644 --- a/tests/testbench/com/vaadin/tests/components/select/TwinColSelectCaptionStyles.java +++ b/tests/testbench/com/vaadin/tests/components/select/TwinColSelectCaptionStyles.java @@ -20,6 +20,7 @@ public class TwinColSelectCaptionStyles extends TestBase { Button b = new Button("Set height and width to 500px", new Button.ClickListener() { + @Override public void buttonClick(ClickEvent event) { sel.setHeight("500px"); sel.setWidth("500px"); diff --git a/tests/testbench/com/vaadin/tests/components/select/TwinColSelectTest.java b/tests/testbench/com/vaadin/tests/components/select/TwinColSelectTest.java index 031a7e9d3d..b27dfa0ec8 100644 --- a/tests/testbench/com/vaadin/tests/components/select/TwinColSelectTest.java +++ b/tests/testbench/com/vaadin/tests/components/select/TwinColSelectTest.java @@ -7,12 +7,14 @@ import com.vaadin.ui.TwinColSelect; public class TwinColSelectTest extends AbstractSelectTestCase<TwinColSelect> { private Command<TwinColSelect, Integer> rowsCommand = new Command<TwinColSelect, Integer>() { + @Override public void execute(TwinColSelect c, Integer value, Object data) { c.setRows(value); } }; private Command<TwinColSelect, Integer> colsCommand = new Command<TwinColSelect, Integer>() { + @Override public void execute(TwinColSelect c, Integer value, Object data) { c.setColumns(value); } @@ -20,6 +22,7 @@ public class TwinColSelectTest extends AbstractSelectTestCase<TwinColSelect> { private Command<TwinColSelect, String> leftColumnCaptionCommand = new Command<TwinColSelect, String>() { + @Override public void execute(TwinColSelect c, String value, Object data) { c.setLeftColumnCaption(value); } @@ -27,6 +30,7 @@ public class TwinColSelectTest extends AbstractSelectTestCase<TwinColSelect> { private Command<TwinColSelect, String> rightColumnCaptionCommand = new Command<TwinColSelect, String>() { + @Override public void execute(TwinColSelect c, String value, Object data) { c.setRightColumnCaption(value); } diff --git a/tests/testbench/com/vaadin/tests/components/slider/SliderTest.java b/tests/testbench/com/vaadin/tests/components/slider/SliderTest.java index e34a294740..9be1fea987 100644 --- a/tests/testbench/com/vaadin/tests/components/slider/SliderTest.java +++ b/tests/testbench/com/vaadin/tests/components/slider/SliderTest.java @@ -8,23 +8,27 @@ import com.vaadin.ui.Slider; public class SliderTest extends AbstractFieldTest<Slider> { private Command<Slider, Double> minCommand = new Command<Slider, Double>() { + @Override public void execute(Slider c, Double value, Object data) { c.setMin(value); } }; private Command<Slider, Double> maxCommand = new Command<Slider, Double>() { + @Override public void execute(Slider c, Double value, Object data) { c.setMax(value); } }; private Command<Slider, Integer> orientationCommand = new Command<Slider, Integer>() { + @Override public void execute(Slider c, Integer value, Object data) { c.setOrientation(value); } }; private Command<Slider, Integer> resolutionCommand = new Command<Slider, Integer>() { + @Override public void execute(Slider c, Integer value, Object data) { c.setResolution(value); } diff --git a/tests/testbench/com/vaadin/tests/components/splitpanel/AbstractSplitPanelTest.java b/tests/testbench/com/vaadin/tests/components/splitpanel/AbstractSplitPanelTest.java index 1f7b6b7cbe..dc361b1b27 100644 --- a/tests/testbench/com/vaadin/tests/components/splitpanel/AbstractSplitPanelTest.java +++ b/tests/testbench/com/vaadin/tests/components/splitpanel/AbstractSplitPanelTest.java @@ -13,6 +13,7 @@ public abstract class AbstractSplitPanelTest<T extends AbstractSplitPanel> private Command<T, Boolean> splitterClickListenerCommand = new Command<T, Boolean>() { + @Override public void execute(T c, Boolean value, Object data) { if (value) { c.addListener((SplitterClickListener) AbstractSplitPanelTest.this); @@ -23,12 +24,14 @@ public abstract class AbstractSplitPanelTest<T extends AbstractSplitPanel> } }; private Command<T, SplitPosition> setSplitPositionCommand = new Command<T, AbstractSplitPanelTest.SplitPosition>() { + @Override public void execute(T c, SplitPosition value, Object data) { value.apply(c); } }; private Command<T, Boolean> splitterLockCommand = new Command<T, Boolean>() { + @Override public void execute(T c, Boolean value, Object data) { c.setLocked(value); } @@ -122,6 +125,7 @@ public abstract class AbstractSplitPanelTest<T extends AbstractSplitPanel> } + @Override public void splitterClick(SplitterClickEvent event) { log(event.getClass().getSimpleName() + ": " + event.getButtonName() + " at " + event.getRelativeX() + "," + event.getRelativeY()); diff --git a/tests/testbench/com/vaadin/tests/components/splitpanel/SplitPanelExtraScrollbars.java b/tests/testbench/com/vaadin/tests/components/splitpanel/SplitPanelExtraScrollbars.java index d4716433b7..05e10397ac 100644 --- a/tests/testbench/com/vaadin/tests/components/splitpanel/SplitPanelExtraScrollbars.java +++ b/tests/testbench/com/vaadin/tests/components/splitpanel/SplitPanelExtraScrollbars.java @@ -53,6 +53,7 @@ public class SplitPanelExtraScrollbars extends AbstractTestCase implements return 3458; } + @Override public void buttonClick(ClickEvent event) { if (b.getHeight() == 200) { b.setHeight("1200px"); diff --git a/tests/testbench/com/vaadin/tests/components/splitpanel/SplitPanelReversePosition.java b/tests/testbench/com/vaadin/tests/components/splitpanel/SplitPanelReversePosition.java index ef17a3c668..a86d209f65 100644 --- a/tests/testbench/com/vaadin/tests/components/splitpanel/SplitPanelReversePosition.java +++ b/tests/testbench/com/vaadin/tests/components/splitpanel/SplitPanelReversePosition.java @@ -26,6 +26,7 @@ public class SplitPanelReversePosition extends TestBase { hsplit.setImmediate(true); hsplit.setSplitPosition(100, Sizeable.UNITS_PIXELS, hsplitReversed); hsplit.addListener(new HorizontalSplitPanel.SplitterClickListener() { + @Override public void splitterClick(SplitterClickEvent event) { getMainWindow().showNotification("Horizontal Splitter Clicked"); } @@ -40,6 +41,7 @@ public class SplitPanelReversePosition extends TestBase { vsplit.setImmediate(true); vsplit.setSplitPosition(10, Sizeable.UNITS_PERCENTAGE, vsplitReversed); vsplit.addListener(new SplitterClickListener() { + @Override public void splitterClick(SplitterClickEvent event) { getMainWindow().showNotification("Vertical Splitter Clicked"); } @@ -61,6 +63,7 @@ public class SplitPanelReversePosition extends TestBase { buttons.addComponent(new Button("Swap horizontal positioning", new Button.ClickListener() { + @Override public void buttonClick(ClickEvent event) { hsplitReversed = !hsplitReversed; hsplit.setSplitPosition(100, Sizeable.UNITS_PIXELS, @@ -71,6 +74,7 @@ public class SplitPanelReversePosition extends TestBase { buttons.addComponent(new Button("Swap vertical positioning", new Button.ClickListener() { + @Override public void buttonClick(ClickEvent event) { vsplitReversed = !vsplitReversed; vsplit.setSplitPosition(10, Sizeable.UNITS_PERCENTAGE, diff --git a/tests/testbench/com/vaadin/tests/components/splitpanel/SplitPanelSplitterWidth.java b/tests/testbench/com/vaadin/tests/components/splitpanel/SplitPanelSplitterWidth.java index 5fad68fef5..08e602241f 100644 --- a/tests/testbench/com/vaadin/tests/components/splitpanel/SplitPanelSplitterWidth.java +++ b/tests/testbench/com/vaadin/tests/components/splitpanel/SplitPanelSplitterWidth.java @@ -47,6 +47,7 @@ public class SplitPanelSplitterWidth extends TestBase { getLayout().addComponent( new Button("Unlock", new Button.ClickListener() { + @Override public void buttonClick(ClickEvent event) { split.setLocked(false); split2.setLocked(false); diff --git a/tests/testbench/com/vaadin/tests/components/splitpanel/SplitPanelSwapComponents.java b/tests/testbench/com/vaadin/tests/components/splitpanel/SplitPanelSwapComponents.java index 470a47f160..26abd0a782 100644 --- a/tests/testbench/com/vaadin/tests/components/splitpanel/SplitPanelSwapComponents.java +++ b/tests/testbench/com/vaadin/tests/components/splitpanel/SplitPanelSwapComponents.java @@ -19,6 +19,7 @@ public class SplitPanelSwapComponents extends TestBase { getLayout().addComponent(hsplit); Button swap = new Button("Swap components", new Button.ClickListener() { + @Override public void buttonClick(ClickEvent event) { Component first = hsplit.getFirstComponent(); hsplit.removeComponent(first); diff --git a/tests/testbench/com/vaadin/tests/components/splitpanel/SplitPanelWithMinimumAndMaximum.java b/tests/testbench/com/vaadin/tests/components/splitpanel/SplitPanelWithMinimumAndMaximum.java index f7c3dd84e4..2a730da9be 100644 --- a/tests/testbench/com/vaadin/tests/components/splitpanel/SplitPanelWithMinimumAndMaximum.java +++ b/tests/testbench/com/vaadin/tests/components/splitpanel/SplitPanelWithMinimumAndMaximum.java @@ -276,6 +276,7 @@ public class SplitPanelWithMinimumAndMaximum extends TestBase { Button disableMinimum = new Button("Disable min limit", new Button.ClickListener() { + @Override public void buttonClick(Button.ClickEvent event) { togglableSplitPanel.setMinSplitPosition(0, Sizeable.UNITS_PERCENTAGE); @@ -284,6 +285,7 @@ public class SplitPanelWithMinimumAndMaximum extends TestBase { }); Button enableMinimum = new Button("Enable min limit", new Button.ClickListener() { + @Override public void buttonClick(Button.ClickEvent event) { togglableSplitPanel.setMinSplitPosition(10, Sizeable.UNITS_PERCENTAGE); @@ -292,6 +294,7 @@ public class SplitPanelWithMinimumAndMaximum extends TestBase { }); Button disableMaximum = new Button("Disable max limit", new Button.ClickListener() { + @Override public void buttonClick(Button.ClickEvent event) { togglableSplitPanel.setMaxSplitPosition(100, Sizeable.UNITS_PERCENTAGE); @@ -300,6 +303,7 @@ public class SplitPanelWithMinimumAndMaximum extends TestBase { }); Button enableMaximum = new Button("Enable max limit", new Button.ClickListener() { + @Override public void buttonClick(Button.ClickEvent event) { togglableSplitPanel.setMaxSplitPosition(80, Sizeable.UNITS_PERCENTAGE); diff --git a/tests/testbench/com/vaadin/tests/components/table/AddItemToEmptyTable.java b/tests/testbench/com/vaadin/tests/components/table/AddItemToEmptyTable.java index e8445f8422..bde50af013 100644 --- a/tests/testbench/com/vaadin/tests/components/table/AddItemToEmptyTable.java +++ b/tests/testbench/com/vaadin/tests/components/table/AddItemToEmptyTable.java @@ -20,6 +20,7 @@ public class AddItemToEmptyTable extends TestBase { cb.setImmediate(true); cb.addListener(new ValueChangeListener() { + @Override public void valueChange(ValueChangeEvent event) { if ((Boolean) event.getProperty().getValue()) { rightTable.setColumnWidth("name", 150); @@ -36,6 +37,7 @@ public class AddItemToEmptyTable extends TestBase { cb.setImmediate(true); cb.addListener(new ValueChangeListener() { + @Override public void valueChange(ValueChangeEvent event) { if ((Boolean) event.getProperty().getValue()) { rightTable.setColumnWidth("info", 20); @@ -71,6 +73,7 @@ public class AddItemToEmptyTable extends TestBase { Button b = new Button("Add item", new Button.ClickListener() { + @Override public void buttonClick(ClickEvent event) { Object id = rightTable.addItem(); Item item = rightTable.getItem(id); @@ -83,6 +86,7 @@ public class AddItemToEmptyTable extends TestBase { b = new Button("Clear", new Button.ClickListener() { + @Override public void buttonClick(ClickEvent event) { rightTable.removeAllItems(); } diff --git a/tests/testbench/com/vaadin/tests/components/table/AddNonRenderedRow.java b/tests/testbench/com/vaadin/tests/components/table/AddNonRenderedRow.java index 5486d6248d..80b136d2ab 100644 --- a/tests/testbench/com/vaadin/tests/components/table/AddNonRenderedRow.java +++ b/tests/testbench/com/vaadin/tests/components/table/AddNonRenderedRow.java @@ -22,6 +22,7 @@ public class AddNonRenderedRow extends TestBase { Button addrowButton = new Button("Add row"); addrowButton.addListener(new ClickListener() { + @Override public void buttonClick(ClickEvent pEvent) { addRow(); } diff --git a/tests/testbench/com/vaadin/tests/components/table/CellStyleGeneratorTest.java b/tests/testbench/com/vaadin/tests/components/table/CellStyleGeneratorTest.java index 08bbd0790f..35f35c1407 100644 --- a/tests/testbench/com/vaadin/tests/components/table/CellStyleGeneratorTest.java +++ b/tests/testbench/com/vaadin/tests/components/table/CellStyleGeneratorTest.java @@ -16,6 +16,7 @@ public class CellStyleGeneratorTest extends TestBase { CellStyleGenerator g = new CellStyleGenerator() { + @Override public String getStyle(Object itemId, Object propertyId) { if (propertyId != null && propertyId.equals("red")) { return "red"; diff --git a/tests/testbench/com/vaadin/tests/components/table/ColumnCollapsingAndColumnExpansion.java b/tests/testbench/com/vaadin/tests/components/table/ColumnCollapsingAndColumnExpansion.java index 95e94bcd47..08b65e2ef5 100644 --- a/tests/testbench/com/vaadin/tests/components/table/ColumnCollapsingAndColumnExpansion.java +++ b/tests/testbench/com/vaadin/tests/components/table/ColumnCollapsingAndColumnExpansion.java @@ -30,10 +30,12 @@ public class ColumnCollapsingAndColumnExpansion extends TestBase { final Action H = new Action("Toggle Col2"); final Action[] actions = new Action[] { H }; + @Override public Action[] getActions(Object target, Object sender) { return actions; } + @Override public void handleAction(Action action, Object sender, Object target) { table.setColumnCollapsed("Col2", !table.isColumnCollapsed("Col2")); @@ -55,6 +57,7 @@ public class ColumnCollapsingAndColumnExpansion extends TestBase { final TextField tf = new TextField("Column name (ColX)"); Button hide = new Button("Collapse", new ClickListener() { + @Override public void buttonClick(ClickEvent event) { table.setColumnCollapsed(tf.getValue(), true); } @@ -63,6 +66,7 @@ public class ColumnCollapsingAndColumnExpansion extends TestBase { Button show = new Button("Show", new ClickListener() { + @Override public void buttonClick(ClickEvent event) { table.setColumnCollapsed(tf.getValue(), false); } diff --git a/tests/testbench/com/vaadin/tests/components/table/ColumnGeneratorAddingOrder.java b/tests/testbench/com/vaadin/tests/components/table/ColumnGeneratorAddingOrder.java index d3dfa61ceb..2898750113 100644 --- a/tests/testbench/com/vaadin/tests/components/table/ColumnGeneratorAddingOrder.java +++ b/tests/testbench/com/vaadin/tests/components/table/ColumnGeneratorAddingOrder.java @@ -23,6 +23,7 @@ public class ColumnGeneratorAddingOrder extends TestBase { Table t = new Table(); t.addGeneratedColumn("col2", new Table.ColumnGenerator() { + @Override public Component generateCell(Table source, Object itemId, Object columnId) { return new Button("generated b c2"); @@ -39,6 +40,7 @@ public class ColumnGeneratorAddingOrder extends TestBase { t.setContainerDataSource(c); t.addGeneratedColumn("col1", new Table.ColumnGenerator() { + @Override public Component generateCell(Table source, Object itemId, Object columnId) { return new Button("generated b c1"); diff --git a/tests/testbench/com/vaadin/tests/components/table/ColumnHeaderAlignments.java b/tests/testbench/com/vaadin/tests/components/table/ColumnHeaderAlignments.java index fdcb458a6a..324d1a63cf 100644 --- a/tests/testbench/com/vaadin/tests/components/table/ColumnHeaderAlignments.java +++ b/tests/testbench/com/vaadin/tests/components/table/ColumnHeaderAlignments.java @@ -30,6 +30,7 @@ public class ColumnHeaderAlignments extends TestBase { theme.setNullSelectionAllowed(false); theme.setImmediate(true); theme.addListener(new ValueChangeListener() { + @Override public void valueChange(ValueChangeEvent event) { setTheme(String.valueOf(event.getProperty().getValue())); } @@ -38,6 +39,7 @@ public class ColumnHeaderAlignments extends TestBase { CheckBox footers = new CheckBox("Show footers"); footers.addListener(new ValueChangeListener() { + @Override public void valueChange(ValueChangeEvent event) { boolean visible = (Boolean) event.getProperty().getValue(); fooTable.setFooterVisible(visible); diff --git a/tests/testbench/com/vaadin/tests/components/table/ColumnReorderEvent.java b/tests/testbench/com/vaadin/tests/components/table/ColumnReorderEvent.java index 4c1fc70e5e..f32633eece 100644 --- a/tests/testbench/com/vaadin/tests/components/table/ColumnReorderEvent.java +++ b/tests/testbench/com/vaadin/tests/components/table/ColumnReorderEvent.java @@ -83,6 +83,7 @@ public class ColumnReorderEvent extends TestBase { table.setColumnHeader("lastname", "LastName"); table.addListener(new Table.ColumnReorderListener() { + @Override public void columnReorder( com.vaadin.ui.Table.ColumnReorderEvent event) { order.setValue(aToString(table.getVisibleColumns())); diff --git a/tests/testbench/com/vaadin/tests/components/table/ColumnResizeEvent.java b/tests/testbench/com/vaadin/tests/components/table/ColumnResizeEvent.java index 29131b8d7a..f092ba8bca 100644 --- a/tests/testbench/com/vaadin/tests/components/table/ColumnResizeEvent.java +++ b/tests/testbench/com/vaadin/tests/components/table/ColumnResizeEvent.java @@ -84,6 +84,7 @@ public class ColumnResizeEvent extends TestBase { column3Width.setValue(table.getColumnWidth("150pxfixedCol") + "px"); table.addListener(new ColumnResizeListener() { + @Override public void columnResize(com.vaadin.ui.Table.ColumnResizeEvent event) { if (event.getPropertyId().equals("firstname")) { diff --git a/tests/testbench/com/vaadin/tests/components/table/ContainerChangeWithPartlySamePropertyIds.java b/tests/testbench/com/vaadin/tests/components/table/ContainerChangeWithPartlySamePropertyIds.java index b8e9226ad2..c76edca40d 100644 --- a/tests/testbench/com/vaadin/tests/components/table/ContainerChangeWithPartlySamePropertyIds.java +++ b/tests/testbench/com/vaadin/tests/components/table/ContainerChangeWithPartlySamePropertyIds.java @@ -68,6 +68,7 @@ public class ContainerChangeWithPartlySamePropertyIds extends TestBase { Button switchContainerButton = new Button("switch container"); switchContainerButton.addListener(new ClickListener() { + @Override public void buttonClick(ClickEvent event) { if (testTable.getContainerDataSource() == containerA) { testTable.setContainerDataSource(containerB); @@ -80,6 +81,7 @@ public class ContainerChangeWithPartlySamePropertyIds extends TestBase { Button clearButton = new Button("clear (click twice)"); clearButton.addListener(new ClickListener() { + @Override public void buttonClick(ClickEvent event) { try { me.removeComponent(testTable); diff --git a/tests/testbench/com/vaadin/tests/components/table/ContainerSizeChange.java b/tests/testbench/com/vaadin/tests/components/table/ContainerSizeChange.java index 84e98deffb..c24be6de96 100644 --- a/tests/testbench/com/vaadin/tests/components/table/ContainerSizeChange.java +++ b/tests/testbench/com/vaadin/tests/components/table/ContainerSizeChange.java @@ -32,6 +32,7 @@ public class ContainerSizeChange extends TestBase { Button b = new Button("Decrease size", new Button.ClickListener() { + @Override public void buttonClick(ClickEvent event) { ds.decreaseSize(); } @@ -42,6 +43,7 @@ public class ContainerSizeChange extends TestBase { b = new Button("Increase size", new Button.ClickListener() { + @Override public void buttonClick(ClickEvent event) { ds.increaseSize(); } diff --git a/tests/testbench/com/vaadin/tests/components/table/DisabledTableShouldNotSendPageLengthUpdates.java b/tests/testbench/com/vaadin/tests/components/table/DisabledTableShouldNotSendPageLengthUpdates.java index 86646f522f..c52f57358c 100644 --- a/tests/testbench/com/vaadin/tests/components/table/DisabledTableShouldNotSendPageLengthUpdates.java +++ b/tests/testbench/com/vaadin/tests/components/table/DisabledTableShouldNotSendPageLengthUpdates.java @@ -16,6 +16,7 @@ public class DisabledTableShouldNotSendPageLengthUpdates extends TestBase { HorizontalSplitPanel split = new HorizontalSplitPanel(); table.addContainerProperty("name", Integer.class, 0); Button button = new Button("Add items", new Button.ClickListener() { + @Override public void buttonClick(ClickEvent event) { for (int i = 0; i < 5; i++) { Object id = table.addItem(); diff --git a/tests/testbench/com/vaadin/tests/components/table/DoublesInTable.java b/tests/testbench/com/vaadin/tests/components/table/DoublesInTable.java index c048c770fa..920ccc2038 100644 --- a/tests/testbench/com/vaadin/tests/components/table/DoublesInTable.java +++ b/tests/testbench/com/vaadin/tests/components/table/DoublesInTable.java @@ -40,6 +40,7 @@ public class DoublesInTable extends TestBase { editMode.setImmediate(true); editMode.addListener(new ValueChangeListener() { + @Override public void valueChange(ValueChangeEvent event) { table.setEditable(editMode.getValue()); @@ -50,6 +51,7 @@ public class DoublesInTable extends TestBase { useCustomConverters.setImmediate(true); useCustomConverters.addListener(new ValueChangeListener() { + @Override public void valueChange(ValueChangeEvent event) { recreateTable(); } @@ -75,6 +77,7 @@ public class DoublesInTable extends TestBase { cb.setValue(Locale.US); cb.addListener(new ValueChangeListener() { + @Override public void valueChange(ValueChangeEvent event) { recreateTable(); } @@ -134,6 +137,7 @@ public class DoublesInTable extends TestBase { t.setImmediate(true); t.addListener(new ValueChangeListener() { + @Override public void valueChange(ValueChangeEvent event) { log.log("Value is now: " + event.getProperty().getValue()); @@ -145,12 +149,14 @@ public class DoublesInTable extends TestBase { private void addConverters(Table t) { t.setConverter("sex", new Converter<String, Sex>() { + @Override public Sex convertToModel(String value, Locale locale) throws com.vaadin.data.util.converter.Converter.ConversionException { // not used in this test - Table only converts to presentation return null; } + @Override public String convertToPresentation(Sex value, Locale locale) throws com.vaadin.data.util.converter.Converter.ConversionException { if (value == null) { @@ -159,22 +165,26 @@ public class DoublesInTable extends TestBase { return value.getStringRepresentation(); } + @Override public Class<Sex> getModelType() { return Sex.class; } + @Override public Class<String> getPresentationType() { return String.class; } }); t.setConverter("deceased", new Converter<String, Boolean>() { + @Override public Boolean convertToModel(String value, Locale locale) { // not used in this test - Table only converts from source to // target return null; } + @Override public String convertToPresentation(Boolean value, Locale locale) { if (value == null || value) { return "YES, DEAD!"; @@ -183,16 +193,19 @@ public class DoublesInTable extends TestBase { } } + @Override public Class<Boolean> getModelType() { return Boolean.class; } + @Override public Class<String> getPresentationType() { return String.class; } }); t.setConverter("age", new Converter<String, Integer>() { + @Override public Integer convertToModel(String value, Locale locale) throws com.vaadin.data.util.converter.Converter.ConversionException { // not used in this test - Table only converts from source to @@ -200,6 +213,7 @@ public class DoublesInTable extends TestBase { return null; } + @Override public String convertToPresentation(Integer value, Locale locale) throws com.vaadin.data.util.converter.Converter.ConversionException { if (value == null) { @@ -216,32 +230,38 @@ public class DoublesInTable extends TestBase { } } + @Override public Class<Integer> getModelType() { return Integer.class; } + @Override public Class<String> getPresentationType() { return String.class; } }); t.setConverter("address", new Converter<String, Address>() { + @Override public Address convertToModel(String value, Locale locale) throws ConversionException { // not used in this test - Table only converts to presentation return null; } + @Override public String convertToPresentation(Address value, Locale locale) throws ConversionException { return value.getStreetAddress() + ", " + value.getCity() + " (" + value.getCountry() + ")"; } + @Override public Class<Address> getModelType() { return Address.class; } + @Override public Class<String> getPresentationType() { return String.class; } diff --git a/tests/testbench/com/vaadin/tests/components/table/EditableModeChange.java b/tests/testbench/com/vaadin/tests/components/table/EditableModeChange.java index acb866a1da..5db294088a 100644 --- a/tests/testbench/com/vaadin/tests/components/table/EditableModeChange.java +++ b/tests/testbench/com/vaadin/tests/components/table/EditableModeChange.java @@ -44,6 +44,7 @@ public class EditableModeChange extends TestBase { items.addListener(new ItemClickEvent.ItemClickListener() { + @Override public void itemClick(ItemClickEvent event) { if (event.isDoubleClick()) { selectionEvent = event; diff --git a/tests/testbench/com/vaadin/tests/components/table/EditableTableLeak.java b/tests/testbench/com/vaadin/tests/components/table/EditableTableLeak.java index 8aa6d1277f..88c7c76889 100644 --- a/tests/testbench/com/vaadin/tests/components/table/EditableTableLeak.java +++ b/tests/testbench/com/vaadin/tests/components/table/EditableTableLeak.java @@ -9,7 +9,7 @@ import java.util.HashMap; import com.vaadin.data.Container; import com.vaadin.data.Property.ValueChangeEvent; import com.vaadin.data.Property.ValueChangeListener; -import com.vaadin.terminal.gwt.client.ui.label.ContentMode; +import com.vaadin.shared.ui.label.ContentMode; import com.vaadin.tests.components.TestBase; import com.vaadin.tests.util.TestUtils; import com.vaadin.ui.Button; @@ -88,6 +88,7 @@ public class EditableTableLeak extends TestBase { useFieldFactory.setImmediate(true); useFieldFactory.addListener(new ValueChangeListener() { + @Override public void valueChange(ValueChangeEvent event) { if (useFieldFactory.getValue()) { table.setTableFieldFactory(new CachingFieldFactory()); @@ -111,6 +112,7 @@ public class EditableTableLeak extends TestBase { addComponent(sizeLabel); addComponent(new Button("Show size of the table", new ClickListener() { + @Override public void buttonClick(ClickEvent event) { table.requestRepaintAll(); updateSize(); @@ -119,6 +121,7 @@ public class EditableTableLeak extends TestBase { })); addComponent(new Button("Select the second row", new ClickListener() { + @Override public void buttonClick(ClickEvent event) { table.select("AL"); updateSize(); diff --git a/tests/testbench/com/vaadin/tests/components/table/Footer.java b/tests/testbench/com/vaadin/tests/components/table/Footer.java index c962ce8468..7fd8d3563f 100644 --- a/tests/testbench/com/vaadin/tests/components/table/Footer.java +++ b/tests/testbench/com/vaadin/tests/components/table/Footer.java @@ -50,6 +50,7 @@ public class Footer extends TestBase { final CheckBox visible = new CheckBox("Footers Visible", true); visible.setImmediate(true); visible.addListener(new Property.ValueChangeListener() { + @Override public void valueChange(ValueChangeEvent event) { table.setFooterVisible((Boolean) visible.getValue()); @@ -61,6 +62,7 @@ public class Footer extends TestBase { final TextField footer1Value = new TextField(null, "Footer1"); footer1Value.setImmediate(true); Button footer1Btn = new Button("Change", new Button.ClickListener() { + @Override public void buttonClick(ClickEvent event) { table.setColumnFooter("col1", footer1Value.getValue() == null ? "" : footer1Value @@ -75,6 +77,7 @@ public class Footer extends TestBase { final TextField footer2Value = new TextField(null, "Footer2"); footer2Value.setImmediate(true); Button footer2Btn = new Button("Change", new Button.ClickListener() { + @Override public void buttonClick(ClickEvent event) { table.setColumnFooter("col2", footer2Value.getValue() == null ? "" : footer2Value @@ -89,6 +92,7 @@ public class Footer extends TestBase { final TextField footer3Value = new TextField(null, "Footer3"); footer3Value.setImmediate(true); Button footer3Btn = new Button("Change", new Button.ClickListener() { + @Override public void buttonClick(ClickEvent event) { table.setColumnFooter("col3", footer3Value.getValue() == null ? "" : footer3Value diff --git a/tests/testbench/com/vaadin/tests/components/table/FooterClick.java b/tests/testbench/com/vaadin/tests/components/table/FooterClick.java index 2ae663986b..08dc47908a 100644 --- a/tests/testbench/com/vaadin/tests/components/table/FooterClick.java +++ b/tests/testbench/com/vaadin/tests/components/table/FooterClick.java @@ -42,6 +42,7 @@ public class FooterClick extends TestBase { // Add a footer click listener table.addListener(new Table.FooterClickListener() { + @Override public void footerClick(FooterClickEvent event) { columnField.setValue(String.valueOf(event.getPropertyId())); log.log("Clicked on footer: " + event.getPropertyId()); @@ -53,6 +54,7 @@ public class FooterClick extends TestBase { immediateCheckbox.setValue(table.isImmediate()); immediateCheckbox.addListener(new Property.ValueChangeListener() { + @Override public void valueChange(ValueChangeEvent event) { table.setImmediate((Boolean) event.getProperty().getValue()); } @@ -65,6 +67,7 @@ public class FooterClick extends TestBase { columnReorderingCheckbox .addListener(new Property.ValueChangeListener() { + @Override public void valueChange(ValueChangeEvent event) { table.setColumnReorderingAllowed((Boolean) event .getProperty().getValue()); diff --git a/tests/testbench/com/vaadin/tests/components/table/HeaderClick.java b/tests/testbench/com/vaadin/tests/components/table/HeaderClick.java index d5debcfe16..b335e34d84 100644 --- a/tests/testbench/com/vaadin/tests/components/table/HeaderClick.java +++ b/tests/testbench/com/vaadin/tests/components/table/HeaderClick.java @@ -28,6 +28,7 @@ public class HeaderClick extends TestBase { // Add a header click listener table.addListener(new Table.HeaderClickListener() { + @Override public void headerClick(HeaderClickEvent event) { columnField.setValue(String.valueOf(event.getPropertyId())); } @@ -38,6 +39,7 @@ public class HeaderClick extends TestBase { immediateCheckbox.setValue(table.isImmediate()); immediateCheckbox.addListener(new Property.ValueChangeListener() { + @Override public void valueChange(ValueChangeEvent event) { table.setImmediate((Boolean) event.getProperty().getValue()); } @@ -48,6 +50,7 @@ public class HeaderClick extends TestBase { sortEnabledCheckbox.setValue(table.isSortEnabled()); sortEnabledCheckbox.addListener(new Property.ValueChangeListener() { + @Override public void valueChange(ValueChangeEvent event) { table.setSortDisabled(!(Boolean) event.getProperty().getValue()); } @@ -60,6 +63,7 @@ public class HeaderClick extends TestBase { columnReorderingCheckbox .addListener(new Property.ValueChangeListener() { + @Override public void valueChange(ValueChangeEvent event) { table.setColumnReorderingAllowed((Boolean) event .getProperty().getValue()); diff --git a/tests/testbench/com/vaadin/tests/components/table/HeaderFooterClickLeftRightMiddle.java b/tests/testbench/com/vaadin/tests/components/table/HeaderFooterClickLeftRightMiddle.java index cd54e21395..ec82b36575 100644 --- a/tests/testbench/com/vaadin/tests/components/table/HeaderFooterClickLeftRightMiddle.java +++ b/tests/testbench/com/vaadin/tests/components/table/HeaderFooterClickLeftRightMiddle.java @@ -33,6 +33,7 @@ public class HeaderFooterClickLeftRightMiddle extends TestBase { immediateCheckbox.setValue(table.isImmediate()); immediateCheckbox.addListener(new ValueChangeListener() { + @Override public void valueChange(ValueChangeEvent event) { table.setImmediate((Boolean) event.getProperty().getValue()); } @@ -45,6 +46,7 @@ public class HeaderFooterClickLeftRightMiddle extends TestBase { private HeaderClickListener headerClickListener = new HeaderClickListener() { + @Override public void headerClick(HeaderClickEvent event) { String type = event.isDoubleClick() ? "Double click" : "Click"; @@ -55,6 +57,7 @@ public class HeaderFooterClickLeftRightMiddle extends TestBase { }; + @Override public void valueChange(ValueChangeEvent event) { if (table.getListeners(HeaderClickEvent.class).isEmpty()) { table.addListener(headerClickListener); @@ -72,6 +75,7 @@ public class HeaderFooterClickLeftRightMiddle extends TestBase { private FooterClickListener footerClickListener = new FooterClickListener() { + @Override public void footerClick(FooterClickEvent event) { String type = event.isDoubleClick() ? "Double click" : "Click"; @@ -81,6 +85,7 @@ public class HeaderFooterClickLeftRightMiddle extends TestBase { } }; + @Override public void valueChange(ValueChangeEvent event) { if (table.getListeners(FooterClickEvent.class).isEmpty()) { table.addListener(footerClickListener); @@ -95,6 +100,7 @@ public class HeaderFooterClickLeftRightMiddle extends TestBase { sortEnabledCheckbox.setImmediate(true); sortEnabledCheckbox.setValue(table.isSortEnabled()); sortEnabledCheckbox.addListener(new ValueChangeListener() { + @Override public void valueChange(ValueChangeEvent event) { table.setSortEnabled((Boolean) event.getProperty().getValue()); } @@ -106,6 +112,7 @@ public class HeaderFooterClickLeftRightMiddle extends TestBase { columnReorderingCheckbox.setValue(table.isColumnReorderingAllowed()); columnReorderingCheckbox.addListener(new ValueChangeListener() { + @Override public void valueChange(ValueChangeEvent event) { table.setColumnReorderingAllowed((Boolean) event.getProperty() .getValue()); diff --git a/tests/testbench/com/vaadin/tests/components/table/HeaderUpdateWhenNoRows.java b/tests/testbench/com/vaadin/tests/components/table/HeaderUpdateWhenNoRows.java index f1e4e09d57..6dafdd3dd5 100644 --- a/tests/testbench/com/vaadin/tests/components/table/HeaderUpdateWhenNoRows.java +++ b/tests/testbench/com/vaadin/tests/components/table/HeaderUpdateWhenNoRows.java @@ -20,6 +20,7 @@ public class HeaderUpdateWhenNoRows extends TestBase { final CheckBox showHeaders = new CheckBox("Show headers"); showHeaders.addListener(new ValueChangeListener() { + @Override public void valueChange(ValueChangeEvent event) { if (showHeaders.getValue()) { table.setColumnHeaderMode(Table.COLUMN_HEADER_MODE_EXPLICIT_DEFAULTS_ID); diff --git a/tests/testbench/com/vaadin/tests/components/table/HiddenColumnsExpandRatios.java b/tests/testbench/com/vaadin/tests/components/table/HiddenColumnsExpandRatios.java index 007c93573f..4a729d221f 100644 --- a/tests/testbench/com/vaadin/tests/components/table/HiddenColumnsExpandRatios.java +++ b/tests/testbench/com/vaadin/tests/components/table/HiddenColumnsExpandRatios.java @@ -35,12 +35,14 @@ public class HiddenColumnsExpandRatios extends TestBase { } addComponent(new Button("All", new ClickListener() { + @Override public void buttonClick(ClickEvent event) { table.setVisibleColumns(table.getContainerPropertyIds() .toArray()); } })); addComponent(new Button("Some", new ClickListener() { + @Override public void buttonClick(ClickEvent event) { table.setWidth("100px"); table.setWidth("800px"); diff --git a/tests/testbench/com/vaadin/tests/components/table/HugeRowCount.java b/tests/testbench/com/vaadin/tests/components/table/HugeRowCount.java index 3478750622..434d650d6d 100644 --- a/tests/testbench/com/vaadin/tests/components/table/HugeRowCount.java +++ b/tests/testbench/com/vaadin/tests/components/table/HugeRowCount.java @@ -22,6 +22,7 @@ public class HugeRowCount extends TestBase { final TextField tf = new TextField("Rows"); tf.setValue(String.valueOf(100000)); tf.addListener(new Property.ValueChangeListener() { + @Override public void valueChange(ValueChangeEvent event) { container.setSize(Integer.parseInt(tf.getValue().toString())); } diff --git a/tests/testbench/com/vaadin/tests/components/table/ItemClickEvents.java b/tests/testbench/com/vaadin/tests/components/table/ItemClickEvents.java index 537461ce0f..4bdb20adea 100644 --- a/tests/testbench/com/vaadin/tests/components/table/ItemClickEvents.java +++ b/tests/testbench/com/vaadin/tests/components/table/ItemClickEvents.java @@ -27,6 +27,7 @@ public class ItemClickEvents extends TestBase { HorizontalLayout ol = createHorizontalLayout(tree); Button b = new Button("icon", new Button.ClickListener() { + @Override public void buttonClick(ClickEvent event) { if (tree.getItemIconPropertyId() == null) { tree.setItemIconPropertyId("icon"); @@ -55,6 +56,7 @@ public class ItemClickEvents extends TestBase { "http://www.itmill.com/res/images/itmill_logo.gif")); tree.addListener(new ItemClickListener() { + @Override public void itemClick(ItemClickEvent event) { logEvent(event, "tree"); } @@ -73,6 +75,7 @@ public class ItemClickEvents extends TestBase { } table.addListener(new ItemClickListener() { + @Override public void itemClick(ItemClickEvent event) { logEvent(event, "table"); } @@ -82,6 +85,7 @@ public class ItemClickEvents extends TestBase { addComponent(log); addComponent(new Button("Clear log", new Button.ClickListener() { + @Override public void buttonClick(ClickEvent event) { log.clear(); } diff --git a/tests/testbench/com/vaadin/tests/components/table/KeyControl.java b/tests/testbench/com/vaadin/tests/components/table/KeyControl.java index e662db338c..2998940db1 100644 --- a/tests/testbench/com/vaadin/tests/components/table/KeyControl.java +++ b/tests/testbench/com/vaadin/tests/components/table/KeyControl.java @@ -41,6 +41,7 @@ public class KeyControl extends TestBase { layout1.addComponent(table1); table1.addListener(new Table.ValueChangeListener() { + @Override public void valueChange(ValueChangeEvent event) { @SuppressWarnings("unchecked") Set<String> value = (Set<String>) table1.getValue(); @@ -63,6 +64,7 @@ public class KeyControl extends TestBase { layout2.addComponent(table2); table2.addListener(new Table.ValueChangeListener() { + @Override public void valueChange(ValueChangeEvent event) { String value = table2.getValue() == null ? "No selected items" : table2.getValue().toString(); @@ -86,6 +88,7 @@ public class KeyControl extends TestBase { layout3.addComponent(table3); table3.addListener(new Table.ValueChangeListener() { + @Override public void valueChange(ValueChangeEvent event) { @SuppressWarnings("unchecked") Set<String> value = (Set<String>) table3.getValue(); diff --git a/tests/testbench/com/vaadin/tests/components/table/KeyboardNavigationWithChangingContent.java b/tests/testbench/com/vaadin/tests/components/table/KeyboardNavigationWithChangingContent.java index 44a2dcd9a9..bc0601684f 100644 --- a/tests/testbench/com/vaadin/tests/components/table/KeyboardNavigationWithChangingContent.java +++ b/tests/testbench/com/vaadin/tests/components/table/KeyboardNavigationWithChangingContent.java @@ -35,6 +35,7 @@ public class KeyboardNavigationWithChangingContent extends TestBase { new Button("Change elements and selection", new ClickListener() { + @Override public void buttonClick(ClickEvent event) { bic.removeAllItems(); diff --git a/tests/testbench/com/vaadin/tests/components/table/LabelEmbeddedClickThroughForTable.java b/tests/testbench/com/vaadin/tests/components/table/LabelEmbeddedClickThroughForTable.java index de0d2b8d56..b9e7fde17a 100644 --- a/tests/testbench/com/vaadin/tests/components/table/LabelEmbeddedClickThroughForTable.java +++ b/tests/testbench/com/vaadin/tests/components/table/LabelEmbeddedClickThroughForTable.java @@ -3,8 +3,8 @@ package com.vaadin.tests.components.table; import com.vaadin.data.Item; import com.vaadin.event.ItemClickEvent; import com.vaadin.event.ItemClickEvent.ItemClickListener; +import com.vaadin.shared.ui.label.ContentMode; import com.vaadin.terminal.ThemeResource; -import com.vaadin.terminal.gwt.client.ui.label.ContentMode; import com.vaadin.tests.components.TestBase; import com.vaadin.ui.Component; import com.vaadin.ui.Embedded; @@ -56,6 +56,7 @@ public class LabelEmbeddedClickThroughForTable extends TestBase { table.addListener(new ItemClickListener() { + @Override public void itemClick(ItemClickEvent event) { System.out.println("Clickevent on item " + event.getItemId() + ", column: " + event.getPropertyId()); diff --git a/tests/testbench/com/vaadin/tests/components/table/LastColumnNegative.java b/tests/testbench/com/vaadin/tests/components/table/LastColumnNegative.java index 2100d3852e..b7379b4f2c 100644 --- a/tests/testbench/com/vaadin/tests/components/table/LastColumnNegative.java +++ b/tests/testbench/com/vaadin/tests/components/table/LastColumnNegative.java @@ -16,6 +16,7 @@ public class LastColumnNegative extends TestBase { Button addButton = new Button("Add a table", new Button.ClickListener() { + @Override public void buttonClick(ClickEvent event) { wrapper.addComponent(table); } @@ -24,6 +25,7 @@ public class LastColumnNegative extends TestBase { Button removeButton = new Button("Remove a table", new Button.ClickListener() { + @Override public void buttonClick(ClickEvent event) { wrapper.removeComponent(table); } @@ -31,6 +33,7 @@ public class LastColumnNegative extends TestBase { Button shrinkWrapper = new Button("Shrink wrapper", new Button.ClickListener() { + @Override public void buttonClick(ClickEvent event) { wrapper.setWidth("400px"); } diff --git a/tests/testbench/com/vaadin/tests/components/table/LongMultiselect.java b/tests/testbench/com/vaadin/tests/components/table/LongMultiselect.java index 0196395bf4..43a89e4211 100644 --- a/tests/testbench/com/vaadin/tests/components/table/LongMultiselect.java +++ b/tests/testbench/com/vaadin/tests/components/table/LongMultiselect.java @@ -41,6 +41,7 @@ public class LongMultiselect extends TestBase { // Add action button layout.addComponent(new Button("Do It", new Button.ClickListener() { + @Override public void buttonClick(Button.ClickEvent event) { // Set ItemProperty.COLUMN2 for all selected values of table Collection selectedIds = (Collection) table.getValue(); diff --git a/tests/testbench/com/vaadin/tests/components/table/MissingScrollbar.java b/tests/testbench/com/vaadin/tests/components/table/MissingScrollbar.java index 5f65b40f2f..e51cec2a6d 100644 --- a/tests/testbench/com/vaadin/tests/components/table/MissingScrollbar.java +++ b/tests/testbench/com/vaadin/tests/components/table/MissingScrollbar.java @@ -43,6 +43,7 @@ public class MissingScrollbar extends TestBase { Button b = new Button("Set items to 2", new Button.ClickListener() { + @Override public void buttonClick(ClickEvent event) { table.setContainerDataSource(container2); } @@ -51,6 +52,7 @@ public class MissingScrollbar extends TestBase { b = new Button("Set items to 50", new Button.ClickListener() { + @Override public void buttonClick(ClickEvent event) { table.setContainerDataSource(container50); } diff --git a/tests/testbench/com/vaadin/tests/components/table/ModifyContainerProperty.java b/tests/testbench/com/vaadin/tests/components/table/ModifyContainerProperty.java index a472b43ce7..00965220db 100644 --- a/tests/testbench/com/vaadin/tests/components/table/ModifyContainerProperty.java +++ b/tests/testbench/com/vaadin/tests/components/table/ModifyContainerProperty.java @@ -26,12 +26,14 @@ public class ModifyContainerProperty extends TestBase { table.setContainerDataSource(ic); addComponent(new Button("Remove container property", new Button.ClickListener() { + @Override public void buttonClick(com.vaadin.ui.Button.ClickEvent arg0) { ic.removeContainerProperty("one"); } })); addComponent(new Button("Add container property", new Button.ClickListener() { + @Override public void buttonClick(com.vaadin.ui.Button.ClickEvent arg0) { boolean added = ic.addContainerProperty("three", String.class, "three"); diff --git a/tests/testbench/com/vaadin/tests/components/table/MultiClickingItemThatDetachesTable.java b/tests/testbench/com/vaadin/tests/components/table/MultiClickingItemThatDetachesTable.java index d437ab7a04..0e440a95d0 100644 --- a/tests/testbench/com/vaadin/tests/components/table/MultiClickingItemThatDetachesTable.java +++ b/tests/testbench/com/vaadin/tests/components/table/MultiClickingItemThatDetachesTable.java @@ -21,6 +21,7 @@ public class MultiClickingItemThatDetachesTable extends TestBase { item.getItemProperty("p1").setValue(i + ""); } table.addListener(new ItemClickListener() { + @Override public void itemClick(ItemClickEvent event) { if (event.isDoubleClick()) { try { diff --git a/tests/testbench/com/vaadin/tests/components/table/MultiSelectValueOrder.html b/tests/testbench/com/vaadin/tests/components/table/MultiSelectValueOrder.html new file mode 100644 index 0000000000..4bac7741da --- /dev/null +++ b/tests/testbench/com/vaadin/tests/components/table/MultiSelectValueOrder.html @@ -0,0 +1,275 @@ +<?xml version="1.0" encoding="UTF-8"?> +<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd"> +<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en" lang="en"> +<head profile="http://selenium-ide.openqa.org/profiles/test-case"> +<meta http-equiv="Content-Type" content="text/html; charset=UTF-8" /> +<link rel="selenium.base" href="http://localhost:8888/" /> +<title>New Test</title> +</head> +<body> +<table cellpadding="1" cellspacing="1" border="1"> +<thead> +<tr><td rowspan="1" colspan="3">New Test</td></tr> +</thead><tbody> +<tr> + <td>open</td> + <td>/run/com.vaadin.tests.components.table.Tables?restartApplication</td> + <td></td> +</tr> +<!--Default multi select--> +<tr> + <td>mouseClick</td> + <td>vaadin=runcomvaadintestscomponentstableTables::PID_Smenu#item0</td> + <td>6,9</td> +</tr> +<tr> + <td>mouseClick</td> + <td>vaadin=runcomvaadintestscomponentstableTables::Root/VOverlay[0]/VMenuBar[0]#item4</td> + <td>73,0</td> +</tr> +<tr> + <td>mouseClick</td> + <td>vaadin=runcomvaadintestscomponentstableTables::Root/VOverlay[1]/VMenuBar[0]#item1</td> + <td>33,13</td> +</tr> +<!--ValueChangeListener--> +<tr> + <td>mouseClick</td> + <td>vaadin=runcomvaadintestscomponentstableTables::PID_Smenu#item0</td> + <td>14,10</td> +</tr> +<tr> + <td>mouseClick</td> + <td>vaadin=runcomvaadintestscomponentstableTables::Root/VOverlay[0]/VMenuBar[0]#item3</td> + <td>75,5</td> +</tr> +<tr> + <td>mouseClick</td> + <td>vaadin=runcomvaadintestscomponentstableTables::Root/VOverlay[1]/VMenuBar[0]#item0</td> + <td>64,6</td> +</tr> +<!--Disable sorting value change logging--> +<tr> + <td>mouseClick</td> + <td>vaadin=runcomvaadintestscomponentstableTables::PID_Smenu#item1</td> + <td>16,8</td> +</tr> +<tr> + <td>mouseClick</td> + <td>vaadin=runcomvaadintestscomponentstableTables::Root/VOverlay[0]/VMenuBar[0]#item3</td> + <td>22,6</td> +</tr> +<tr> + <td>mouseClick</td> + <td>vaadin=runcomvaadintestscomponentstableTables::Root/VOverlay[1]/VMenuBar[0]#item1</td> + <td>16,12</td> +</tr> +<!--Clear log to ensure numbers matches with the later case--> +<tr> + <td>mouseClick</td> + <td>vaadin=runcomvaadintestscomponentstableTables::PID_Smenu#item1</td> + <td>29,6</td> +</tr> +<tr> + <td>mouseClick</td> + <td>vaadin=runcomvaadintestscomponentstableTables::Root/VOverlay[0]/VMenuBar[0]#item1</td> + <td>40,7</td> +</tr> +<!--Start clicking--> +<tr> + <td>mouseClick</td> + <td>vaadin=runcomvaadintestscomponentstableTables::PID_StestComponent/domChild[1]/domChild[0]/domChild[1]/domChild[0]/domChild[4]/domChild[0]/domChild[0]</td> + <td>48,18</td> +</tr> +<tr> + <td>assertText</td> + <td>vaadin=runcomvaadintestscomponentstableTables::PID_SLog_row_0</td> + <td>0. ValueChangeEvent, new value: '[Item 5]'</td> +</tr> +<tr> + <td>mouseClick</td> + <td>vaadin=runcomvaadintestscomponentstableTables::PID_StestComponent/domChild[1]/domChild[0]/domChild[1]/domChild[0]/domChild[2]/domChild[1]/domChild[0]</td> + <td>40,12:ctrl</td> +</tr> +<tr> + <td>assertText</td> + <td>vaadin=runcomvaadintestscomponentstableTables::PID_SLog_row_0</td> + <td>1. ValueChangeEvent, new value: '[Item 5, Item 3]'</td> +</tr> +<tr> + <td>mouseClick</td> + <td>vaadin=runcomvaadintestscomponentstableTables::PID_StestComponent/domChild[1]/domChild[0]/domChild[1]/domChild[0]/domChild[6]/domChild[1]/domChild[0]</td> + <td>54,15:ctrl</td> +</tr> +<tr> + <td>assertText</td> + <td>vaadin=runcomvaadintestscomponentstableTables::PID_SLog_row_0</td> + <td>2. ValueChangeEvent, new value: '[Item 5, Item 3, Item 7]'</td> +</tr> +<tr> + <td>mouseClick</td> + <td>vaadin=runcomvaadintestscomponentstableTables::PID_StestComponent/domChild[1]/domChild[0]/domChild[1]/domChild[0]/domChild[8]/domChild[1]/domChild[0]</td> + <td>54,9:shift+ctrl</td> +</tr> +<tr> + <td>assertText</td> + <td>vaadin=runcomvaadintestscomponentstableTables::PID_SLog_row_0</td> + <td>3. ValueChangeEvent, new value: '[Item 5, Item 3, Item 7, Item 8, Item 9]'</td> +</tr> +<tr> + <td>mouseClick</td> + <td>vaadin=runcomvaadintestscomponentstableTables::PID_StestComponent/domChild[1]/domChild[0]/domChild[1]/domChild[0]/domChild[0]/domChild[1]/domChild[0]</td> + <td>67,8:ctrl</td> +</tr> +<tr> + <td>assertText</td> + <td>vaadin=runcomvaadintestscomponentstableTables::PID_SLog_row_0</td> + <td>4. ValueChangeEvent, new value: '[Item 5, Item 3, Item 7, Item 8, Item 9, Item 1]'</td> +</tr> +<tr> + <td>mouseClick</td> + <td>vaadin=runcomvaadintestscomponentstableTables::PID_StestComponent/domChild[1]/domChild[0]/domChild[1]/domChild[0]/domChild[3]/domChild[2]/domChild[0]</td> + <td>71,8:shift+ctrl</td> +</tr> +<tr> + <td>assertText</td> + <td>vaadin=runcomvaadintestscomponentstableTables::PID_SLog_row_0</td> + <td>5. ValueChangeEvent, new value: '[Item 5, Item 3, Item 7, Item 8, Item 9, Item 1, Item 2, Item 4]'</td> +</tr> +<tr> + <td>mouseClick</td> + <td>vaadin=runcomvaadintestscomponentstableTables::PID_StestComponent/domChild[1]/domChild[0]/domChild[1]/domChild[0]/domChild[4]/domChild[2]/domChild[0]</td> + <td>56,6:ctrl</td> +</tr> +<tr> + <td>assertText</td> + <td>vaadin=runcomvaadintestscomponentstableTables::PID_SLog_row_0</td> + <td>6. ValueChangeEvent, new value: '[Item 3, Item 7, Item 8, Item 9, Item 1, Item 2, Item 4]'</td> +</tr> +<tr> + <td>mouseClick</td> + <td>vaadin=runcomvaadintestscomponentstableTables::PID_StestComponent/domChild[1]/domChild[0]/domChild[1]/domChild[0]/domChild[4]/domChild[2]/domChild[0]</td> + <td>67,11:ctrl</td> +</tr> +<tr> + <td>assertText</td> + <td>vaadin=runcomvaadintestscomponentstableTables::PID_SLog_row_0</td> + <td>7. ValueChangeEvent, new value: '[Item 3, Item 7, Item 8, Item 9, Item 1, Item 2, Item 4, Item 5]'</td> +</tr> +<!--Simple multi select--> +<tr> + <td>mouseClick</td> + <td>vaadin=runcomvaadintestscomponentstableTables::PID_Smenu#item0</td> + <td>33,9</td> +</tr> +<tr> + <td>mouseClick</td> + <td>vaadin=runcomvaadintestscomponentstableTables::Root/VOverlay[0]/VMenuBar[0]#item4</td> + <td>44,7</td> +</tr> +<tr> + <td>mouseClick</td> + <td>vaadin=runcomvaadintestscomponentstableTables::Root/VOverlay[1]/VMenuBar[0]#item2</td> + <td>40,11</td> +</tr> +<tr> + <td>mouseClick</td> + <td>vaadin=runcomvaadintestscomponentstableTables::Root/VOverlay[2]/VMenuBar[0]#item2</td> + <td>58,8</td> +</tr> +<!--Clear value--> +<tr> + <td>mouseClick</td> + <td>vaadin=runcomvaadintestscomponentstableTables::PID_Smenu#item0</td> + <td>38,6</td> +</tr> +<tr> + <td>mouseClick</td> + <td>vaadin=runcomvaadintestscomponentstableTables::Root/VOverlay[0]/VMenuBar[0]#item4</td> + <td>14,8</td> +</tr> +<tr> + <td>mouseClick</td> + <td>vaadin=runcomvaadintestscomponentstableTables::Root/VOverlay[1]/VMenuBar[0]#item3</td> + <td>55,3</td> +</tr> +<tr> + <td>mouseClick</td> + <td>vaadin=runcomvaadintestscomponentstableTables::Root/VOverlay[2]/VMenuBar[0]#item0</td> + <td>21,3</td> +</tr> +<!--Clear log--> +<tr> + <td>mouseClick</td> + <td>vaadin=runcomvaadintestscomponentstableTables::PID_Smenu#item1</td> + <td>26,7</td> +</tr> +<tr> + <td>mouseClick</td> + <td>vaadin=runcomvaadintestscomponentstableTables::Root/VOverlay[0]/VMenuBar[0]#item1</td> + <td>30,6</td> +</tr> +<!--Start clicking--> +<tr> + <td>mouseClick</td> + <td>vaadin=runcomvaadintestscomponentstableTables::PID_StestComponent/domChild[1]/domChild[0]/domChild[1]/domChild[0]/domChild[4]/domChild[1]/domChild[0]</td> + <td>60,9</td> +</tr> +<tr> + <td>assertText</td> + <td>vaadin=runcomvaadintestscomponentstableTables::PID_SLog_row_0</td> + <td>0. ValueChangeEvent, new value: '[Item 5]'</td> +</tr> +<tr> + <td>mouseClick</td> + <td>vaadin=runcomvaadintestscomponentstableTables::PID_StestComponent/domChild[1]/domChild[0]/domChild[1]/domChild[0]/domChild[2]/domChild[1]/domChild[0]</td> + <td>38,9</td> +</tr> +<tr> + <td>assertText</td> + <td>vaadin=runcomvaadintestscomponentstableTables::PID_SLog_row_0</td> + <td>1. ValueChangeEvent, new value: '[Item 5, Item 3]'</td> +</tr> +<tr> + <td>mouseClick</td> + <td>vaadin=runcomvaadintestscomponentstableTables::PID_StestComponent/domChild[1]/domChild[0]/domChild[1]/domChild[0]/domChild[3]/domChild[1]/domChild[0]</td> + <td>46,13</td> +</tr> +<tr> + <td>assertText</td> + <td>vaadin=runcomvaadintestscomponentstableTables::PID_SLog_row_0</td> + <td>2. ValueChangeEvent, new value: '[Item 5, Item 3, Item 4]'</td> +</tr> +<tr> + <td>mouseClick</td> + <td>vaadin=runcomvaadintestscomponentstableTables::PID_StestComponent/domChild[1]/domChild[0]/domChild[1]/domChild[0]/domChild[2]/domChild[1]/domChild[0]</td> + <td>65,8</td> +</tr> +<tr> + <td>assertText</td> + <td>vaadin=runcomvaadintestscomponentstableTables::PID_SLog_row_0</td> + <td>3. ValueChangeEvent, new value: '[Item 5, Item 4]'</td> +</tr> +<tr> + <td>mouseClick</td> + <td>vaadin=runcomvaadintestscomponentstableTables::PID_StestComponent/domChild[1]/domChild[0]/domChild[1]/domChild[0]/domChild[4]/domChild[2]/domChild[0]</td> + <td>45,7</td> +</tr> +<tr> + <td>assertText</td> + <td>vaadin=runcomvaadintestscomponentstableTables::PID_SLog_row_0</td> + <td>4. ValueChangeEvent, new value: '[Item 4]'</td> +</tr> +<tr> + <td>mouseClick</td> + <td>vaadin=runcomvaadintestscomponentstableTables::PID_StestComponent/domChild[1]/domChild[0]/domChild[1]/domChild[0]/domChild[4]/domChild[2]/domChild[0]</td> + <td>35,9</td> +</tr> +<tr> + <td>assertText</td> + <td>vaadin=runcomvaadintestscomponentstableTables::PID_SLog_row_0</td> + <td>5. ValueChangeEvent, new value: '[Item 4, Item 5]'</td> +</tr> +</tbody></table> +</body> +</html> diff --git a/tests/testbench/com/vaadin/tests/components/table/MultiSelectWithNotIdentityEqualIds.java b/tests/testbench/com/vaadin/tests/components/table/MultiSelectWithNotIdentityEqualIds.java index 6773f0a96c..06deb98f7f 100644 --- a/tests/testbench/com/vaadin/tests/components/table/MultiSelectWithNotIdentityEqualIds.java +++ b/tests/testbench/com/vaadin/tests/components/table/MultiSelectWithNotIdentityEqualIds.java @@ -20,6 +20,7 @@ public class MultiSelectWithNotIdentityEqualIds extends TestBase { t.setSelectable(true); t.setImmediate(true); t.addListener(new Property.ValueChangeListener() { + @Override public void valueChange(ValueChangeEvent event) { Notification.show("Selected: " + event.getProperty()); diff --git a/tests/testbench/com/vaadin/tests/components/table/MultiSelectWithRemovedRow.html b/tests/testbench/com/vaadin/tests/components/table/MultiSelectWithRemovedRow.html new file mode 100644 index 0000000000..c41f3fbfdd --- /dev/null +++ b/tests/testbench/com/vaadin/tests/components/table/MultiSelectWithRemovedRow.html @@ -0,0 +1,150 @@ +<?xml version="1.0" encoding="UTF-8"?> +<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd"> +<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en" lang="en"> +<head profile="http://selenium-ide.openqa.org/profiles/test-case"> +<meta http-equiv="Content-Type" content="text/html; charset=UTF-8" /> +<link rel="selenium.base" href="" /> +<title>New Test</title> +</head> +<body> +<table cellpadding="1" cellspacing="1" border="1"> +<thead> +<tr><td rowspan="1" colspan="3">New Test</td></tr> +</thead><tbody> +<tr> + <td>open</td> + <td>/run/com.vaadin.tests.components.table.MultiSelectWithRemovedRow?restartApplication</td> + <td></td> +</tr> +<tr> + <td>mouseClick</td> + <td>vaadin=runcomvaadintestscomponentstableMultiSelectWithRemovedRow::/VVerticalLayout[0]/ChildComponentContainer[1]/VVerticalLayout[0]/ChildComponentContainer[1]/VScrollTable[0]/domChild[1]/domChild[0]/domChild[1]/domChild[0]/domChild[0]/domChild[0]/domChild[0]</td> + <td>34,9</td> +</tr> +<tr> + <td>click</td> + <td>vaadin=runcomvaadintestscomponentstableMultiSelectWithRemovedRow::/VVerticalLayout[0]/ChildComponentContainer[1]/VVerticalLayout[0]/ChildComponentContainer[2]/VButton[0]/domChild[0]/domChild[0]</td> + <td></td> +</tr> +<tr> + <td>assertText</td> + <td>vaadin=runcomvaadintestscomponentstableMultiSelectWithRemovedRow::PID_SLog_row_0</td> + <td>1. Selection: [Joe]</td> +</tr> +<!--Remove selection + shift select--> +<tr> + <td>click</td> + <td>vaadin=runcomvaadintestscomponentstableMultiSelectWithRemovedRow::/VVerticalLayout[0]/ChildComponentContainer[1]/VVerticalLayout[0]/ChildComponentContainer[3]/VButton[0]/domChild[0]/domChild[0]</td> + <td></td> +</tr> +<tr> + <td>mouseClick</td> + <td>vaadin=runcomvaadintestscomponentstableMultiSelectWithRemovedRow::/VVerticalLayout[0]/ChildComponentContainer[1]/VVerticalLayout[0]/ChildComponentContainer[1]/VScrollTable[0]/domChild[1]/domChild[0]/domChild[1]/domChild[0]/domChild[2]/domChild[0]/domChild[0]</td> + <td>19,4:shift</td> +</tr> +<tr> + <td>click</td> + <td>vaadin=runcomvaadintestscomponentstableMultiSelectWithRemovedRow::/VVerticalLayout[0]/ChildComponentContainer[1]/VVerticalLayout[0]/ChildComponentContainer[2]/VButton[0]/domChild[0]/domChild[0]</td> + <td></td> +</tr> +<tr> + <td>assertText</td> + <td>vaadin=runcomvaadintestscomponentstableMultiSelectWithRemovedRow::PID_SLog_row_0</td> + <td>2. Selection: [William, Jack, Averell]</td> +</tr> +<!--Remove first + shift select--> +<tr> + <td>mouseClick</td> + <td>vaadin=runcomvaadintestscomponentstableMultiSelectWithRemovedRow::/VVerticalLayout[0]/ChildComponentContainer[1]/VVerticalLayout[0]/ChildComponentContainer[1]/VScrollTable[0]/domChild[1]/domChild[0]/domChild[1]/domChild[0]/domChild[1]/domChild[0]/domChild[0]</td> + <td>23,13</td> +</tr> +<tr> + <td>mouseClick</td> + <td>vaadin=runcomvaadintestscomponentstableMultiSelectWithRemovedRow::/VVerticalLayout[0]/ChildComponentContainer[1]/VVerticalLayout[0]/ChildComponentContainer[1]/VScrollTable[0]/domChild[1]/domChild[0]/domChild[1]/domChild[0]/domChild[3]/domChild[0]/domChild[0]</td> + <td>26,10:shift</td> +</tr> +<tr> + <td>click</td> + <td>vaadin=runcomvaadintestscomponentstableMultiSelectWithRemovedRow::/VVerticalLayout[0]/ChildComponentContainer[1]/VVerticalLayout[0]/ChildComponentContainer[4]/VButton[0]/domChild[0]/domChild[0]</td> + <td></td> +</tr> +<tr> + <td>click</td> + <td>vaadin=runcomvaadintestscomponentstableMultiSelectWithRemovedRow::/VVerticalLayout[0]/ChildComponentContainer[1]/VVerticalLayout[0]/ChildComponentContainer[2]/VButton[0]/domChild[0]/domChild[0]</td> + <td></td> +</tr> +<tr> + <td>assertText</td> + <td>vaadin=runcomvaadintestscomponentstableMultiSelectWithRemovedRow::PID_SLog_row_0</td> + <td>3. Selection: [Jack, Averell, Bob]</td> +</tr> +<tr> + <td>mouseClick</td> + <td>vaadin=runcomvaadintestscomponentstableMultiSelectWithRemovedRow::/VVerticalLayout[0]/ChildComponentContainer[1]/VVerticalLayout[0]/ChildComponentContainer[1]/VScrollTable[0]/domChild[1]/domChild[0]/domChild[1]/domChild[0]/domChild[3]/domChild[0]/domChild[0]</td> + <td>34,14:shift</td> +</tr> +<tr> + <td>click</td> + <td>vaadin=runcomvaadintestscomponentstableMultiSelectWithRemovedRow::/VVerticalLayout[0]/ChildComponentContainer[1]/VVerticalLayout[0]/ChildComponentContainer[2]/VButton[0]/domChild[0]/domChild[0]</td> + <td></td> +</tr> +<tr> + <td>assertText</td> + <td>vaadin=runcomvaadintestscomponentstableMultiSelectWithRemovedRow::PID_SLog_row_0</td> + <td>4. Selection: [William, Averell, Bob, Grat]</td> +</tr> +<!--Sort + shift select down--> +<tr> + <td>mouseClick</td> + <td>vaadin=runcomvaadintestscomponentstableMultiSelectWithRemovedRow::/VVerticalLayout[0]/ChildComponentContainer[1]/VVerticalLayout[0]/ChildComponentContainer[1]/VScrollTable[0]/domChild[1]/domChild[0]/domChild[1]/domChild[0]/domChild[3]/domChild[0]/domChild[0]</td> + <td>31,15</td> +</tr> +<tr> + <td>mouseClick</td> + <td>vaadin=runcomvaadintestscomponentstableMultiSelectWithRemovedRow::/VVerticalLayout[0]/ChildComponentContainer[1]/VVerticalLayout[0]/ChildComponentContainer[1]/VScrollTable[0]/domChild[0]/domChild[0]/domChild[0]/domChild[0]/domChild[0]/domChild[0]/domChild[0]/domChild[2]</td> + <td>36,11</td> +</tr> +<tr> + <td>mouseClick</td> + <td>vaadin=runcomvaadintestscomponentstableMultiSelectWithRemovedRow::/VVerticalLayout[0]/ChildComponentContainer[1]/VVerticalLayout[0]/ChildComponentContainer[1]/VScrollTable[0]/domChild[1]/domChild[0]/domChild[1]/domChild[0]/domChild[2]/domChild[0]/domChild[0]</td> + <td>30,6:shift</td> +</tr> +<tr> + <td>click</td> + <td>vaadin=runcomvaadintestscomponentstableMultiSelectWithRemovedRow::/VVerticalLayout[0]/ChildComponentContainer[1]/VVerticalLayout[0]/ChildComponentContainer[2]/VButton[0]/domChild[0]/domChild[0]</td> + <td></td> +</tr> +<tr> + <td>assertText</td> + <td>vaadin=runcomvaadintestscomponentstableMultiSelectWithRemovedRow::PID_SLog_row_0</td> + <td>5. Selection: [Bob, Emmett, Grat]</td> +</tr> +<!--Sort + shift select up--> +<tr> + <td>mouseClick</td> + <td>vaadin=runcomvaadintestscomponentstableMultiSelectWithRemovedRow::/VVerticalLayout[0]/ChildComponentContainer[1]/VVerticalLayout[0]/ChildComponentContainer[1]/VScrollTable[0]/domChild[1]/domChild[0]/domChild[1]/domChild[0]/domChild[2]/domChild[0]/domChild[0]</td> + <td>24,8</td> +</tr> +<tr> + <td>mouseClick</td> + <td>vaadin=runcomvaadintestscomponentstableMultiSelectWithRemovedRow::/VVerticalLayout[0]/ChildComponentContainer[1]/VVerticalLayout[0]/ChildComponentContainer[1]/VScrollTable[0]/domChild[0]/domChild[0]/domChild[0]/domChild[0]/domChild[0]/domChild[0]/domChild[0]/domChild[1]</td> + <td>11,2</td> +</tr> +<tr> + <td>mouseClick</td> + <td>vaadin=runcomvaadintestscomponentstableMultiSelectWithRemovedRow::/VVerticalLayout[0]/ChildComponentContainer[1]/VVerticalLayout[0]/ChildComponentContainer[1]/VScrollTable[0]/domChild[1]/domChild[0]/domChild[1]/domChild[0]/domChild[1]/domChild[0]/domChild[0]</td> + <td>30,11:shift</td> +</tr> +<tr> + <td>click</td> + <td>vaadin=runcomvaadintestscomponentstableMultiSelectWithRemovedRow::/VVerticalLayout[0]/ChildComponentContainer[1]/VVerticalLayout[0]/ChildComponentContainer[2]/VButton[0]/domChild[0]/domChild[0]</td> + <td></td> +</tr> +<tr> + <td>assertText</td> + <td>vaadin=runcomvaadintestscomponentstableMultiSelectWithRemovedRow::PID_SLog_row_0</td> + <td>6. Selection: [Grat, Emmett, Bob]</td> +</tr> +</tbody></table> +</body> +</html> diff --git a/tests/testbench/com/vaadin/tests/components/table/MultiSelectWithRemovedRow.java b/tests/testbench/com/vaadin/tests/components/table/MultiSelectWithRemovedRow.java new file mode 100644 index 0000000000..12ae4a3c4d --- /dev/null +++ b/tests/testbench/com/vaadin/tests/components/table/MultiSelectWithRemovedRow.java @@ -0,0 +1,93 @@ +package com.vaadin.tests.components.table; + +import java.util.Arrays; +import java.util.Collection; + +import com.vaadin.data.util.BeanItemContainer; +import com.vaadin.tests.components.TestBase; +import com.vaadin.tests.util.Log; +import com.vaadin.ui.Button; +import com.vaadin.ui.Button.ClickEvent; +import com.vaadin.ui.Table; + +@SuppressWarnings("serial") +public class MultiSelectWithRemovedRow extends TestBase { + public static class Person { + private final String name; + + public Person(String name) { + this.name = name; + } + + public String getName() { + return name; + } + + @Override + public String toString() { + return name; + } + } + + @Override + protected void setup() { + final Log log = new Log(5); + addComponent(log); + + final BeanItemContainer<Person> container = new BeanItemContainer<Person>( + Person.class, Arrays.asList(new Person("Joe"), new Person( + "William"), new Person("Jack"), new Person("Averell"), + new Person("Bob"), new Person("Grat"), new Person( + "Bill"), new Person("Emmett"))); + final Table table = new Table("Table", container); + table.setSelectable(true); + table.setMultiSelect(true); + table.setImmediate(true); + addComponent(table); + + Button showButton = new Button("Show selection"); + showButton.addListener(new Button.ClickListener() { + @Override + public void buttonClick(Button.ClickEvent clickEvent) { + Collection<?> selection = (Collection<?>) table.getValue(); + log.log("Selection: " + selection); + } + }); + addComponent(showButton); + + Button removeButton = new Button("Remove selection"); + removeButton.addListener(new Button.ClickListener() { + @Override + public void buttonClick(Button.ClickEvent clickEvent) { + Collection<?> selection = (Collection<?>) table.getValue(); + for (Object selected : selection) { + container.removeItem(selected); + } + } + }); + addComponent(removeButton); + + addComponent(new Button("Remove first selected row", + new Button.ClickListener() { + @Override + public void buttonClick(ClickEvent event) { + Collection<?> selection = (Collection<?>) table + .getValue(); + if (!selection.isEmpty()) { + Object firstSelected = selection.iterator().next(); + container.removeItem(firstSelected); + } + } + })); + } + + @Override + protected String getDescription() { + return "Multi select using shift should work after removing the currently selected row"; + } + + @Override + protected Integer getTicketNumber() { + return Integer.valueOf(8584); + } +}
\ No newline at end of file diff --git a/tests/testbench/com/vaadin/tests/components/table/ProgrammaticUnselectInRange.java b/tests/testbench/com/vaadin/tests/components/table/ProgrammaticUnselectInRange.java index 758fa4bf1a..0b5b1d139c 100644 --- a/tests/testbench/com/vaadin/tests/components/table/ProgrammaticUnselectInRange.java +++ b/tests/testbench/com/vaadin/tests/components/table/ProgrammaticUnselectInRange.java @@ -29,6 +29,7 @@ public class ProgrammaticUnselectInRange extends TestBase { table.addItem(new Object[] { value }, value); } table.addListener(new Property.ValueChangeListener() { + @Override public void valueChange(ValueChangeEvent event) { updateSelectionLabel(); } @@ -37,6 +38,7 @@ public class ProgrammaticUnselectInRange extends TestBase { addComponent(table); addComponent(selectionLabel); addComponent(new Button("Deselect item 2", new Button.ClickListener() { + @Override public void buttonClick(ClickEvent event) { table.unselect(Integer.valueOf(2)); } diff --git a/tests/testbench/com/vaadin/tests/components/table/PropertyValueChange.java b/tests/testbench/com/vaadin/tests/components/table/PropertyValueChange.java index 311c3cf3c1..1bc9cf525d 100644 --- a/tests/testbench/com/vaadin/tests/components/table/PropertyValueChange.java +++ b/tests/testbench/com/vaadin/tests/components/table/PropertyValueChange.java @@ -44,6 +44,7 @@ public class PropertyValueChange extends TestBase { return i * 3; } + @Override public Component generateCell(Table source, Object itemId, Object columnId) { final Label l = new Label(); @@ -57,6 +58,7 @@ public class PropertyValueChange extends TestBase { if (integer instanceof Property.ValueChangeNotifier) { Property.ValueChangeNotifier notifier = (Property.ValueChangeNotifier) integer; notifier.addListener(new ValueChangeListener() { + @Override public void valueChange(ValueChangeEvent event) { l.setValue(String.valueOf(getMultipliedValue(integer))); } @@ -144,6 +146,7 @@ class MyFieldFactory extends DefaultFieldFactory { cb.setContainerDataSource(texts); cb.setNewItemsAllowed(true); cb.setNewItemHandler(new NewItemHandler() { + @Override public void addNewItem(String newItemCaption) { texts.addItem(newItemCaption); cb.setValue(newItemCaption); diff --git a/tests/testbench/com/vaadin/tests/components/table/RowAdditionTest.java b/tests/testbench/com/vaadin/tests/components/table/RowAdditionTest.java index 82d5508c72..c6d071f34c 100644 --- a/tests/testbench/com/vaadin/tests/components/table/RowAdditionTest.java +++ b/tests/testbench/com/vaadin/tests/components/table/RowAdditionTest.java @@ -33,6 +33,7 @@ public class RowAdditionTest extends TestBase { HorizontalLayout hl = new HorizontalLayout(); hl.addComponent(new Button("Add first", new Button.ClickListener() { + @Override public void buttonClick(ClickEvent event) { Item item = container.addItemAt(0, new Object()); item.getItemProperty("column1").setValue("0"); @@ -40,6 +41,7 @@ public class RowAdditionTest extends TestBase { })); hl.addComponent(new Button("Add at position 50", new Button.ClickListener() { + @Override public void buttonClick(ClickEvent event) { Item item = container.addItemAt(50, new Object()); item.getItemProperty("column1").setValue("50"); @@ -47,6 +49,7 @@ public class RowAdditionTest extends TestBase { })); hl.addComponent(new Button("Add at position 100", new Button.ClickListener() { + @Override public void buttonClick(ClickEvent event) { Item item = container.addItemAt(100, new Object()); item.getItemProperty("column1").setValue("100"); diff --git a/tests/testbench/com/vaadin/tests/components/table/RowGenerators.java b/tests/testbench/com/vaadin/tests/components/table/RowGenerators.java index 1ddb03c316..c3bf46c12d 100644 --- a/tests/testbench/com/vaadin/tests/components/table/RowGenerators.java +++ b/tests/testbench/com/vaadin/tests/components/table/RowGenerators.java @@ -34,6 +34,7 @@ public class RowGenerators extends TestBase implements RowGenerator { return c; } + @Override public GeneratedRow generateRow(Table table, Object itemId) { if ((Integer) itemId % 5 == 0) { if ((Integer) itemId % 10 == 0) { diff --git a/tests/testbench/com/vaadin/tests/components/table/RowUpdateShouldRetainContextMenu.java b/tests/testbench/com/vaadin/tests/components/table/RowUpdateShouldRetainContextMenu.java index d3ba232f79..a9d5869e5f 100644 --- a/tests/testbench/com/vaadin/tests/components/table/RowUpdateShouldRetainContextMenu.java +++ b/tests/testbench/com/vaadin/tests/components/table/RowUpdateShouldRetainContextMenu.java @@ -18,6 +18,7 @@ public class RowUpdateShouldRetainContextMenu extends TestBase { protected void setup() { indicator.setWidth("200px"); indicator.addListener(new ValueChangeListener() { + @Override public void valueChange(ValueChangeEvent event) { // Do some changes to the table table.setColumnHeader("Column", "Column " + ctr); @@ -49,9 +50,11 @@ public class RowUpdateShouldRetainContextMenu extends TestBase { table.setHeight("200px"); table.addActionHandler(new Action.Handler() { + @Override public void handleAction(Action action, Object sender, Object target) { } + @Override public Action[] getActions(Object target, Object sender) { return new Action[] { new Action("Action 1"), new Action("Action 2"), }; diff --git a/tests/testbench/com/vaadin/tests/components/table/SafariRenderingBugWhiteSpace.java b/tests/testbench/com/vaadin/tests/components/table/SafariRenderingBugWhiteSpace.java index 133a5e83a5..dffab6dbad 100644 --- a/tests/testbench/com/vaadin/tests/components/table/SafariRenderingBugWhiteSpace.java +++ b/tests/testbench/com/vaadin/tests/components/table/SafariRenderingBugWhiteSpace.java @@ -33,6 +33,7 @@ public class SafariRenderingBugWhiteSpace extends TestBase { table.setSizeFull(); table.addListener(new ValueChangeListener() { + @Override public void valueChange(ValueChangeEvent event) { if (table.getValue() == null) { split.setSplitPosition(100, Sizeable.UNITS_PERCENTAGE); diff --git a/tests/testbench/com/vaadin/tests/components/table/ScrollDetachSynchronization.java b/tests/testbench/com/vaadin/tests/components/table/ScrollDetachSynchronization.java index 44367d0fe1..5cc77f23d9 100644 --- a/tests/testbench/com/vaadin/tests/components/table/ScrollDetachSynchronization.java +++ b/tests/testbench/com/vaadin/tests/components/table/ScrollDetachSynchronization.java @@ -47,6 +47,7 @@ public class ScrollDetachSynchronization extends TestBase { first.addListener(new Button.ClickListener() { + @Override public void buttonClick(ClickEvent event) { if (mainLayout.getComponent(1).equals(secondLayout)) { mainLayout.replaceComponent(secondLayout, firstLayout); @@ -56,6 +57,7 @@ public class ScrollDetachSynchronization extends TestBase { }); second.addListener(new Button.ClickListener() { + @Override public void buttonClick(ClickEvent event) { if (mainLayout.getComponent(1).equals(firstLayout)) { mainLayout.replaceComponent(firstLayout, secondLayout); diff --git a/tests/testbench/com/vaadin/tests/components/table/SelectableEditable.html b/tests/testbench/com/vaadin/tests/components/table/SelectableEditable.html new file mode 100644 index 0000000000..8d46523c40 --- /dev/null +++ b/tests/testbench/com/vaadin/tests/components/table/SelectableEditable.html @@ -0,0 +1,32 @@ +<?xml version="1.0" encoding="UTF-8"?> +<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd"> +<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en" lang="en"> +<head profile="http://selenium-ide.openqa.org/profiles/test-case"> +<meta http-equiv="Content-Type" content="text/html; charset=UTF-8" /> +<link rel="selenium.base" href="" /> +<title>SelectableEditable</title> +</head> +<body> +<table cellpadding="1" cellspacing="1" border="1"> +<thead> +<tr><td rowspan="1" colspan="3">SelectableEditable</td></tr> +</thead><tbody> +<tr> + <td>open</td> + <td>/run/com.vaadin.tests.components.table.SelectableEditable?restartApplication</td> + <td></td> +</tr> +<tr> + <td>mouseClick</td> + <td>vaadin=runcomvaadintestscomponentstableSelectableEditable::/VVerticalLayout[0]/ChildComponentContainer[1]/VVerticalLayout[0]/ChildComponentContainer[0]/VScrollTable[0]/domChild[1]/domChild[0]/domChild[1]/domChild[0]/domChild[0]/domChild[1]/domChild[0]</td> + <td>70,12</td> +</tr> +<tr> + <td>assertCSSClass</td> + <td>vaadin=runcomvaadintestscomponentstableSelectableEditable::/VVerticalLayout[0]/ChildComponentContainer[1]/VVerticalLayout[0]/ChildComponentContainer[0]/VScrollTable[0]/domChild[1]/domChild[0]/domChild[1]/domChild[0]/domChild[0]</td> + <td>v-selected</td> +</tr> + +</tbody></table> +</body> +</html> diff --git a/tests/testbench/com/vaadin/tests/components/table/SelectableEditable.java b/tests/testbench/com/vaadin/tests/components/table/SelectableEditable.java new file mode 100644 index 0000000000..2b33c71d2a --- /dev/null +++ b/tests/testbench/com/vaadin/tests/components/table/SelectableEditable.java @@ -0,0 +1,37 @@ +package com.vaadin.tests.components.table; + +import com.vaadin.tests.components.TestBase; +import com.vaadin.ui.Table; + +public class SelectableEditable extends TestBase { + + @Override + protected void setup() { + // TODO Auto-generated method stub + + final Table table = new Table(); + table.setWidth("500px"); + table.setSelectable(true); + table.setEditable(true); + + table.addContainerProperty("name", String.class, null); + table.addContainerProperty("alive", Boolean.class, false); + for (int i = 0; i < 10; ++i) { + table.addItem(new Object[] { "Person " + i, false }, i); + } + + addComponent(table); + } + + @Override + protected String getDescription() { + // TODO Auto-generated method stub + return "It is difficult to select rows of an editable Table, especially columns with checkboxes."; + } + + @Override + protected Integer getTicketNumber() { + // TODO Auto-generated method stub + return 9064; + } +} diff --git a/tests/testbench/com/vaadin/tests/components/table/SelectingItemScrollsRight.java b/tests/testbench/com/vaadin/tests/components/table/SelectingItemScrollsRight.java index cfe0301775..d9401c21b4 100644 --- a/tests/testbench/com/vaadin/tests/components/table/SelectingItemScrollsRight.java +++ b/tests/testbench/com/vaadin/tests/components/table/SelectingItemScrollsRight.java @@ -14,6 +14,7 @@ public class SelectingItemScrollsRight extends TestBase { table.setWidth("300px"); table.setColumnWidth("Column", 500); table.addGeneratedColumn("Column", new Table.ColumnGenerator() { + @Override public Component generateCell(Table source, Object itemId, Object columnId) { return new Label( diff --git a/tests/testbench/com/vaadin/tests/components/table/SetCurrentPageFirstItemId.java b/tests/testbench/com/vaadin/tests/components/table/SetCurrentPageFirstItemId.java index 536348a393..aebb494247 100644 --- a/tests/testbench/com/vaadin/tests/components/table/SetCurrentPageFirstItemId.java +++ b/tests/testbench/com/vaadin/tests/components/table/SetCurrentPageFirstItemId.java @@ -30,6 +30,7 @@ public class SetCurrentPageFirstItemId extends TestBase { Button addrowButton = new Button("Add row"); addrowButton.addListener(new ClickListener() { + @Override public void buttonClick(ClickEvent pEvent) { Object id = addRow(); table.setCurrentPageFirstItemId(id); diff --git a/tests/testbench/com/vaadin/tests/components/table/TableAndBrowserContextMenu.java b/tests/testbench/com/vaadin/tests/components/table/TableAndBrowserContextMenu.java index a616d4dfb3..18eec814bc 100644 --- a/tests/testbench/com/vaadin/tests/components/table/TableAndBrowserContextMenu.java +++ b/tests/testbench/com/vaadin/tests/components/table/TableAndBrowserContextMenu.java @@ -25,6 +25,7 @@ public class TableAndBrowserContextMenu extends TestBase implements cb.setImmediate(true); cb.addListener(new ValueChangeListener() { + @Override public void valueChange(ValueChangeEvent event) { if (((Boolean) event.getProperty().getValue())) { table.addListener(TableAndBrowserContextMenu.this); @@ -40,6 +41,7 @@ public class TableAndBrowserContextMenu extends TestBase implements cbActionHandler.setImmediate(true); cbActionHandler.addListener(new ValueChangeListener() { + @Override public void valueChange(ValueChangeEvent event) { if (((Boolean) event.getProperty().getValue())) { table.addActionHandler(TableAndBrowserContextMenu.this); @@ -55,6 +57,7 @@ public class TableAndBrowserContextMenu extends TestBase implements cbActionHasActions.setImmediate(true); cbActionHasActions.addListener(new ValueChangeListener() { + @Override public void valueChange(ValueChangeEvent event) { actionHandlerHasActions = ((Boolean) event.getProperty() .getValue()); @@ -80,6 +83,7 @@ public class TableAndBrowserContextMenu extends TestBase implements // Add a generated column with a link to Google table.addGeneratedColumn("Search", new Table.ColumnGenerator() { + @Override public Component generateCell(Table source, Object itemId, Object columnId) { Item item = source.getItem(itemId); @@ -131,11 +135,13 @@ public class TableAndBrowserContextMenu extends TestBase implements return 5924; } + @Override public void itemClick(ItemClickEvent event) { getMainWindow() .showNotification("Click using " + event.getButtonName()); } + @Override public Action[] getActions(Object target, Object sender) { if (!actionHandlerHasActions) { return null; @@ -144,6 +150,7 @@ public class TableAndBrowserContextMenu extends TestBase implements return new Action[] { new Action("test") }; } + @Override public void handleAction(Action action, Object sender, Object target) { getMainWindow().showNotification("Action: " + action.getCaption()); } diff --git a/tests/testbench/com/vaadin/tests/components/table/TableCacheBuildEfficiency.java b/tests/testbench/com/vaadin/tests/components/table/TableCacheBuildEfficiency.java index 3c6445349a..75f2679234 100644 --- a/tests/testbench/com/vaadin/tests/components/table/TableCacheBuildEfficiency.java +++ b/tests/testbench/com/vaadin/tests/components/table/TableCacheBuildEfficiency.java @@ -45,6 +45,7 @@ public class TableCacheBuildEfficiency extends TestBase { Button b = new Button("Click to add row", new Button.ClickListener() { + @Override public void buttonClick(ClickEvent event) { table.addItem(); diff --git a/tests/testbench/com/vaadin/tests/components/table/TableClickAndDragOnIconAndComponents.java b/tests/testbench/com/vaadin/tests/components/table/TableClickAndDragOnIconAndComponents.java index ee04813ce6..1a8fc37634 100644 --- a/tests/testbench/com/vaadin/tests/components/table/TableClickAndDragOnIconAndComponents.java +++ b/tests/testbench/com/vaadin/tests/components/table/TableClickAndDragOnIconAndComponents.java @@ -43,6 +43,7 @@ public class TableClickAndDragOnIconAndComponents extends TestBase { private static final long serialVersionUID = -5042109683675242407L; + @Override public Component generateCell(Table source, Object itemId, Object columnId) { Item item = source.getItem(itemId); @@ -53,6 +54,7 @@ public class TableClickAndDragOnIconAndComponents extends TestBase { private static final long serialVersionUID = -5042109683675242407L; + @Override public Component generateCell(Table source, Object itemId, Object columnId) { Item item = source.getItem(itemId); @@ -66,6 +68,7 @@ public class TableClickAndDragOnIconAndComponents extends TestBase { private static final long serialVersionUID = -5042109683675242407L; + @Override public Component generateCell(Table source, Object itemId, Object columnId) { Item item = source.getItem(itemId); @@ -80,6 +83,7 @@ public class TableClickAndDragOnIconAndComponents extends TestBase { private static final long serialVersionUID = -5042109683675242407L; + @Override public Component generateCell(Table source, Object itemId, Object columnId) { Embedded embedded = new Embedded(null, new ThemeResource( @@ -91,10 +95,12 @@ public class TableClickAndDragOnIconAndComponents extends TestBase { table.setDragMode(TableDragMode.ROW); table.setDropHandler(new DropHandler() { + @Override public AcceptCriterion getAcceptCriterion() { return AcceptAll.get(); } + @Override public void drop(DragAndDropEvent event) { DataBoundTransferable t = (DataBoundTransferable) event .getTransferable(); diff --git a/tests/testbench/com/vaadin/tests/components/table/TableClickValueChangeInteraction.java b/tests/testbench/com/vaadin/tests/components/table/TableClickValueChangeInteraction.java index 79a7eca852..00df9fa3c3 100644 --- a/tests/testbench/com/vaadin/tests/components/table/TableClickValueChangeInteraction.java +++ b/tests/testbench/com/vaadin/tests/components/table/TableClickValueChangeInteraction.java @@ -61,6 +61,7 @@ public class TableClickValueChangeInteraction extends TestBase { if (listenClicks) { table.addListener(new ItemClickListener() { + @Override public void itemClick(ItemClickEvent event) { table.requestRepaint(); clickLabel.setValue("Click " + event.getItemId()); @@ -70,6 +71,7 @@ public class TableClickValueChangeInteraction extends TestBase { if (listenValueChanges) { table.addListener(new ValueChangeListener() { + @Override public void valueChange(ValueChangeEvent event) { valueChangeLabel.setValue("Value " + event.getProperty().getValue()); diff --git a/tests/testbench/com/vaadin/tests/components/table/TableColumnResizeContentsWidth.java b/tests/testbench/com/vaadin/tests/components/table/TableColumnResizeContentsWidth.java index fbe7ed88ef..1895191cc4 100644 --- a/tests/testbench/com/vaadin/tests/components/table/TableColumnResizeContentsWidth.java +++ b/tests/testbench/com/vaadin/tests/components/table/TableColumnResizeContentsWidth.java @@ -15,6 +15,7 @@ public class TableColumnResizeContentsWidth extends TestBase { protected void setup() { final Table table = new Table(); table.addGeneratedColumn(COL1, new ColumnGenerator() { + @Override public Object generateCell(Table source, Object itemId, Object columnId) { TextField textField = new TextField(); @@ -30,12 +31,14 @@ public class TableColumnResizeContentsWidth extends TestBase { addComponent(table); addComponent(new Button("Increase width", new Button.ClickListener() { + @Override public void buttonClick(ClickEvent event) { table.setColumnWidth(COL1, table.getColumnWidth(COL1) + 20); table.requestRepaint(); } })); addComponent(new Button("Decrease width", new Button.ClickListener() { + @Override public void buttonClick(ClickEvent event) { table.setColumnWidth(COL1, table.getColumnWidth(COL1) - 40); table.requestRepaint(); diff --git a/tests/testbench/com/vaadin/tests/components/table/TableContextMenu.java b/tests/testbench/com/vaadin/tests/components/table/TableContextMenu.java index 06afd406ef..9416ffe70c 100644 --- a/tests/testbench/com/vaadin/tests/components/table/TableContextMenu.java +++ b/tests/testbench/com/vaadin/tests/components/table/TableContextMenu.java @@ -16,10 +16,12 @@ public class TableContextMenu extends TestBase { table.setMultiSelect(true); table.addActionHandler(new Action.Handler() { + @Override public void handleAction(Action action, Object sender, Object target) { Notification.show("Done that :-)"); } + @Override public Action[] getActions(Object target, Object sender) { return new Action[] { ACTION_MYACTION }; } diff --git a/tests/testbench/com/vaadin/tests/components/table/TableContextMenuOnField.java b/tests/testbench/com/vaadin/tests/components/table/TableContextMenuOnField.java index 4c6f658a24..3b639be21f 100644 --- a/tests/testbench/com/vaadin/tests/components/table/TableContextMenuOnField.java +++ b/tests/testbench/com/vaadin/tests/components/table/TableContextMenuOnField.java @@ -22,11 +22,13 @@ public class TableContextMenuOnField extends TestBase { table.setMultiSelect(true); table.addActionHandler(new Action.Handler() { + @Override public void handleAction(Action action, Object sender, Object target) { // TODO Auto-generated method stub } + @Override public Action[] getActions(Object target, Object sender) { return new Action[] { ACTION_MYACTION }; } @@ -34,6 +36,7 @@ public class TableContextMenuOnField extends TestBase { table.addGeneratedColumn("layout", new Table.ColumnGenerator() { + @Override public Component generateCell(Table source, Object itemId, Object columnId) { @@ -42,6 +45,7 @@ public class TableContextMenuOnField extends TestBase { layout.addListener(new LayoutClickListener() { + @Override public void layoutClick(LayoutClickEvent event) { getMainWindow().showNotification("HELLO"); @@ -53,6 +57,7 @@ public class TableContextMenuOnField extends TestBase { }); table.addGeneratedColumn("textfield", new Table.ColumnGenerator() { + @Override public Component generateCell(Table source, Object itemId, Object columnId) { return new TextField(); @@ -60,6 +65,7 @@ public class TableContextMenuOnField extends TestBase { }); table.addGeneratedColumn("link", new Table.ColumnGenerator() { + @Override public Component generateCell(Table source, Object itemId, Object columnId) { return new Link("Link", null); @@ -67,6 +73,7 @@ public class TableContextMenuOnField extends TestBase { }); table.addGeneratedColumn("button", new Table.ColumnGenerator() { + @Override public Component generateCell(Table source, Object itemId, Object columnId) { return new Button("Button"); diff --git a/tests/testbench/com/vaadin/tests/components/table/TableHeightWhenHidingHeaders.java b/tests/testbench/com/vaadin/tests/components/table/TableHeightWhenHidingHeaders.java index 27b962cddd..0173f928dd 100644 --- a/tests/testbench/com/vaadin/tests/components/table/TableHeightWhenHidingHeaders.java +++ b/tests/testbench/com/vaadin/tests/components/table/TableHeightWhenHidingHeaders.java @@ -34,6 +34,7 @@ public class TableHeightWhenHidingHeaders extends AbstractTestCase { CheckBox showHeaders = new CheckBox("Show headers"); showHeaders.addListener(new ValueChangeListener() { + @Override public void valueChange(ValueChangeEvent event) { if ((Boolean) event.getProperty().getValue()) { // table body height is now 77px, which together diff --git a/tests/testbench/com/vaadin/tests/components/table/TableInTabsheet.java b/tests/testbench/com/vaadin/tests/components/table/TableInTabsheet.java index 27e624b810..136dcfe9a5 100644 --- a/tests/testbench/com/vaadin/tests/components/table/TableInTabsheet.java +++ b/tests/testbench/com/vaadin/tests/components/table/TableInTabsheet.java @@ -2,8 +2,8 @@ package com.vaadin.tests.components.table; import java.net.MalformedURLException; +import com.vaadin.shared.ui.label.ContentMode; import com.vaadin.terminal.WrappedRequest; -import com.vaadin.terminal.gwt.client.ui.label.ContentMode; import com.vaadin.tests.components.AbstractTestRoot; import com.vaadin.ui.AbsoluteLayout; import com.vaadin.ui.HorizontalLayout; diff --git a/tests/testbench/com/vaadin/tests/components/table/TableItemDescriptionGeneratorTest.java b/tests/testbench/com/vaadin/tests/components/table/TableItemDescriptionGeneratorTest.java index 1f15b224dc..0d5d6802d7 100644 --- a/tests/testbench/com/vaadin/tests/components/table/TableItemDescriptionGeneratorTest.java +++ b/tests/testbench/com/vaadin/tests/components/table/TableItemDescriptionGeneratorTest.java @@ -23,6 +23,7 @@ public class TableItemDescriptionGeneratorTest extends TestBase { addComponent(table); table.setItemDescriptionGenerator(new ItemDescriptionGenerator() { + @Override public String generateDescription(Component source, Object itemId, Object propertyId) { if (propertyId == null) { @@ -37,6 +38,7 @@ public class TableItemDescriptionGeneratorTest extends TestBase { table.addGeneratedColumn(COLUMN3_PROPERTY_ID, new Table.ColumnGenerator() { + @Override public Component generateCell(Table source, Object itemId, Object columnId) { TextField lbl = new TextField(); diff --git a/tests/testbench/com/vaadin/tests/components/table/TableModifcationsWhenScrolledRight.java b/tests/testbench/com/vaadin/tests/components/table/TableModifcationsWhenScrolledRight.java index 91ca8256c8..74a5089a84 100644 --- a/tests/testbench/com/vaadin/tests/components/table/TableModifcationsWhenScrolledRight.java +++ b/tests/testbench/com/vaadin/tests/components/table/TableModifcationsWhenScrolledRight.java @@ -28,6 +28,7 @@ public class TableModifcationsWhenScrolledRight extends TestBase { btn.addListener(new ClickListener() { Integer row = 2; + @Override public void buttonClick(ClickEvent event) { t.addItem(row).getItemProperty("name").setValue("Row" + row); row++; diff --git a/tests/testbench/com/vaadin/tests/components/table/TableMultiSelectSimple.java b/tests/testbench/com/vaadin/tests/components/table/TableMultiSelectSimple.java index c33ba30193..88d20b9eb0 100644 --- a/tests/testbench/com/vaadin/tests/components/table/TableMultiSelectSimple.java +++ b/tests/testbench/com/vaadin/tests/components/table/TableMultiSelectSimple.java @@ -28,6 +28,7 @@ public class TableMultiSelectSimple extends TestBase { t.setImmediate(true); t.addListener(new ValueChangeListener() { + @Override public void valueChange(ValueChangeEvent event) { TreeSet<?> sorted = new TreeSet<Object>((Set<?>) event .getProperty().getValue()); diff --git a/tests/testbench/com/vaadin/tests/components/table/TablePageLengthUpdate.java b/tests/testbench/com/vaadin/tests/components/table/TablePageLengthUpdate.java index c7f138ea8f..75b672a277 100644 --- a/tests/testbench/com/vaadin/tests/components/table/TablePageLengthUpdate.java +++ b/tests/testbench/com/vaadin/tests/components/table/TablePageLengthUpdate.java @@ -47,6 +47,7 @@ public class TablePageLengthUpdate extends TestBase { Button updateButton = new Button("Update pageLength", new ClickListener() { + @Override public void buttonClick(ClickEvent event) { updatePageLengthLabel(); } diff --git a/tests/testbench/com/vaadin/tests/components/table/TableRepaintWhenMadeVisibile.java b/tests/testbench/com/vaadin/tests/components/table/TableRepaintWhenMadeVisibile.java index 5354525f1e..2b02e89c80 100644 --- a/tests/testbench/com/vaadin/tests/components/table/TableRepaintWhenMadeVisibile.java +++ b/tests/testbench/com/vaadin/tests/components/table/TableRepaintWhenMadeVisibile.java @@ -17,6 +17,7 @@ public class TableRepaintWhenMadeVisibile extends TestBase { Button show = new Button("show", new ClickListener() { + @Override public void buttonClick(ClickEvent event) { table.setVisible(true); } @@ -24,6 +25,7 @@ public class TableRepaintWhenMadeVisibile extends TestBase { addComponent(show); Button hide = new Button("hide", new ClickListener() { + @Override public void buttonClick(ClickEvent event) { table.setVisible(false); } diff --git a/tests/testbench/com/vaadin/tests/components/table/TableRowHeight.java b/tests/testbench/com/vaadin/tests/components/table/TableRowHeight.java index b3864ae0e4..eb5efbc4f3 100644 --- a/tests/testbench/com/vaadin/tests/components/table/TableRowHeight.java +++ b/tests/testbench/com/vaadin/tests/components/table/TableRowHeight.java @@ -89,6 +89,7 @@ public class TableRowHeight extends TestBase { public class LabelColumnGenerator implements ColumnGenerator { + @Override public Component generateCell(Table source, Object itemId, Object columnId) { Item item = source.getItem(itemId); @@ -104,6 +105,7 @@ public class TableRowHeight extends TestBase { public class LayoutColumnGenerator implements ColumnGenerator { + @Override public Component generateCell(Table source, Object itemId, Object columnId) { Item item = source.getItem(itemId); diff --git a/tests/testbench/com/vaadin/tests/components/table/TableRowNoHeightNoRows.html b/tests/testbench/com/vaadin/tests/components/table/TableRowNoHeightNoRows.html new file mode 100644 index 0000000000..35d64c3a0c --- /dev/null +++ b/tests/testbench/com/vaadin/tests/components/table/TableRowNoHeightNoRows.html @@ -0,0 +1,122 @@ +<?xml version="1.0" encoding="UTF-8"?> +<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd"> +<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en" lang="en"> +<head profile="http://selenium-ide.openqa.org/profiles/test-case"> +<meta http-equiv="Content-Type" content="text/html; charset=UTF-8" /> +<link rel="selenium.base" href="" /> +<title>New Test</title> +</head> +<body> +<table cellpadding="1" cellspacing="1" border="1"> +<thead> +<tr><td rowspan="1" colspan="3">New Test</td></tr> +</thead><tbody> +<tr> + <td>open</td> + <td>/run/com.vaadin.tests.components.table.Tables?restartApplication</td> + <td></td> +</tr> +<!--Remove all rows--> +<tr> + <td>mouseClick</td> + <td>vaadin=runcomvaadintestscomponentstableTables::PID_Smenu#item0</td> + <td>29,11</td> +</tr> +<tr> + <td>mouseClick</td> + <td>vaadin=runcomvaadintestscomponentstableTables::Root/VOverlay[0]/VMenuBar[0]#item5</td> + <td>40,5</td> +</tr> +<tr> + <td>mouseClick</td> + <td>vaadin=runcomvaadintestscomponentstableTables::Root/VOverlay[1]/VMenuBar[0]#item1</td> + <td>53,9</td> +</tr> +<tr> + <td>mouseClick</td> + <td>vaadin=runcomvaadintestscomponentstableTables::Root/VOverlay[2]/VMenuBar[0]#item0</td> + <td>4,6</td> +</tr> +<!--Add generated column--> +<tr> + <td>mouseClick</td> + <td>vaadin=runcomvaadintestscomponentstableTables::PID_Smenu#item0</td> + <td>34,8</td> +</tr> +<tr> + <td>mouseClick</td> + <td>vaadin=runcomvaadintestscomponentstableTables::Root/VOverlay[0]/VMenuBar[0]#item8</td> + <td>40,6</td> +</tr> +<tr> + <td>mouseClick</td> + <td>vaadin=runcomvaadintestscomponentstableTables::Root/VOverlay[1]/VMenuBar[0]#item4</td> + <td>97,5</td> +</tr> +<tr> + <td>mouseClick</td> + <td>vaadin=runcomvaadintestscomponentstableTables::Root/VOverlay[2]/VMenuBar[0]#item0</td> + <td>55,6</td> +</tr> +<!--Screenshot of initial state--> +<tr> + <td>screenCapture</td> + <td></td> + <td>1-no-rows-small</td> +</tr> +<!--Add a row to make the row height increase--> +<tr> + <td>mouseClick</td> + <td>vaadin=runcomvaadintestscomponentstableTables::PID_Smenu#item0</td> + <td>23,5</td> +</tr> +<tr> + <td>mouseClick</td> + <td>vaadin=runcomvaadintestscomponentstableTables::Root/VOverlay[0]/VMenuBar[0]#item5</td> + <td>26,1</td> +</tr> +<tr> + <td>mouseClick</td> + <td>vaadin=runcomvaadintestscomponentstableTables::Root/VOverlay[1]/VMenuBar[0]#item1</td> + <td>68,10</td> +</tr> +<tr> + <td>mouseClick</td> + <td>vaadin=runcomvaadintestscomponentstableTables::Root/VOverlay[2]/VMenuBar[0]#item1</td> + <td>18,13</td> +</tr> +<tr> + <td>screenCapture</td> + <td></td> + <td>2-one-row-big</td> +</tr> +<!--Remove the row - height should be retained--> +<tr> + <td>mouseClick</td> + <td>vaadin=runcomvaadintestscomponentstableTables::PID_Smenu#item0</td> + <td>28,10</td> +</tr> +<tr> + <td>mouseClick</td> + <td>vaadin=runcomvaadintestscomponentstableTables::Root/VOverlay[0]/VMenuBar[0]#item5</td> + <td>34,6</td> +</tr> +<tr> + <td>mouseClick</td> + <td>vaadin=runcomvaadintestscomponentstableTables::Root/VOverlay[1]/VMenuBar[0]#item1</td> + <td>62,4</td> +</tr> +<tr> + <td>mouseClick</td> + <td>vaadin=runcomvaadintestscomponentstableTables::Root/VOverlay[2]/VMenuBar[0]#item0</td> + <td>25,4</td> +</tr> +<tr> + <td>screenCapture</td> + <td></td> + <td>3-no-rows-big</td> +</tr> + +</tbody></table> +</body> +</html> diff --git a/tests/testbench/com/vaadin/tests/components/table/TableScrollOnFocus.java b/tests/testbench/com/vaadin/tests/components/table/TableScrollOnFocus.java index 4053665898..4782ca94f7 100644 --- a/tests/testbench/com/vaadin/tests/components/table/TableScrollOnFocus.java +++ b/tests/testbench/com/vaadin/tests/components/table/TableScrollOnFocus.java @@ -14,6 +14,7 @@ public class TableScrollOnFocus extends TestBase { chkSelectable.setImmediate(true); chkSelectable.addListener(new ValueChangeListener() { + @Override public void valueChange(ValueChangeEvent event) { table.setSelectable((Boolean) chkSelectable.getValue()); } diff --git a/tests/testbench/com/vaadin/tests/components/table/TableShouldNotEatValueChanges.java b/tests/testbench/com/vaadin/tests/components/table/TableShouldNotEatValueChanges.java index d64bc0035d..030a4ee259 100644 --- a/tests/testbench/com/vaadin/tests/components/table/TableShouldNotEatValueChanges.java +++ b/tests/testbench/com/vaadin/tests/components/table/TableShouldNotEatValueChanges.java @@ -26,6 +26,7 @@ public class TableShouldNotEatValueChanges extends TestBase { tf.setTabIndex(1); ItemClickListener l = new ItemClickListener() { + @Override public void itemClick(ItemClickEvent event) { Notification.show("TF Value on the server:" + tf.getValue(), Notification.TYPE_WARNING_MESSAGE); diff --git a/tests/testbench/com/vaadin/tests/components/table/TableSingleSelect.java b/tests/testbench/com/vaadin/tests/components/table/TableSingleSelect.java index 62d0cce9df..827593cd91 100644 --- a/tests/testbench/com/vaadin/tests/components/table/TableSingleSelect.java +++ b/tests/testbench/com/vaadin/tests/components/table/TableSingleSelect.java @@ -22,6 +22,7 @@ public class TableSingleSelect extends TestBase { t.setImmediate(true); t.addListener(new ValueChangeListener() { + @Override public void valueChange(ValueChangeEvent event) { log.log("Selected value: " + event.getProperty().getValue()); } diff --git a/tests/testbench/com/vaadin/tests/components/table/TableSorting.java b/tests/testbench/com/vaadin/tests/components/table/TableSorting.java index a0d9b8e69d..6417e8e853 100644 --- a/tests/testbench/com/vaadin/tests/components/table/TableSorting.java +++ b/tests/testbench/com/vaadin/tests/components/table/TableSorting.java @@ -32,6 +32,7 @@ public class TableSorting extends TestBase { // Handle selection change. testTable.addListener(new Property.ValueChangeListener() { + @Override public void valueChange(ValueChangeEvent event) { System.out.println("ValueChanged: " + testTable.getValue().toString()); diff --git a/tests/testbench/com/vaadin/tests/components/table/TableToggleVisibility.java b/tests/testbench/com/vaadin/tests/components/table/TableToggleVisibility.java index 0cc125acaa..0465d2f886 100644 --- a/tests/testbench/com/vaadin/tests/components/table/TableToggleVisibility.java +++ b/tests/testbench/com/vaadin/tests/components/table/TableToggleVisibility.java @@ -140,6 +140,7 @@ public class TableToggleVisibility extends AbstractTestCase { addListener(new ClickListener() { + @Override public void buttonClick(ClickEvent event) { boolean wasVisible = ToggleButton.this.table.isVisible(); diff --git a/tests/testbench/com/vaadin/tests/components/table/TableUndefinedSize.java b/tests/testbench/com/vaadin/tests/components/table/TableUndefinedSize.java index 73b80f62f4..544fe9bb67 100644 --- a/tests/testbench/com/vaadin/tests/components/table/TableUndefinedSize.java +++ b/tests/testbench/com/vaadin/tests/components/table/TableUndefinedSize.java @@ -39,6 +39,7 @@ public class TableUndefinedSize extends TestBase { controls.addComponent(new Button("Fixed size (200x200)", new Button.ClickListener() { + @Override public void buttonClick(ClickEvent event) { tbl.setWidth("200px"); tbl.setHeight("200px"); @@ -48,6 +49,7 @@ public class TableUndefinedSize extends TestBase { controls.addComponent(new Button("Fixed size (600x200)", new Button.ClickListener() { + @Override public void buttonClick(ClickEvent event) { tbl.setWidth("600px"); tbl.setHeight("200px"); @@ -57,6 +59,7 @@ public class TableUndefinedSize extends TestBase { controls.addComponent(new Button("Undefined size", new Button.ClickListener() { + @Override public void buttonClick(ClickEvent event) { tbl.setSizeUndefined(); log.log("Size undefined"); @@ -68,6 +71,7 @@ public class TableUndefinedSize extends TestBase { pageLength.setImmediate(true); pageLength.setNullSelectionAllowed(false); pageLength.addListener(new Property.ValueChangeListener() { + @Override public void valueChange(ValueChangeEvent event) { int pageLength = Integer.valueOf(event.getProperty().getValue() .toString()); @@ -81,6 +85,7 @@ public class TableUndefinedSize extends TestBase { cb.setValue(true); cb.addListener(new ValueChangeListener() { + @Override public void valueChange(ValueChangeEvent event) { Boolean value = (Boolean) event.getProperty().getValue(); tbl.setColumnCollapsed("Column 1", !value); @@ -98,6 +103,7 @@ public class TableUndefinedSize extends TestBase { cb.setValue(true); cb.addListener(new ValueChangeListener() { + @Override public void valueChange(ValueChangeEvent event) { Boolean value = (Boolean) event.getProperty().getValue(); tbl.setColumnCollapsed("Column 2", !value); @@ -116,6 +122,7 @@ public class TableUndefinedSize extends TestBase { cb.setValue(true); cb.addListener(new ValueChangeListener() { + @Override public void valueChange(ValueChangeEvent event) { Boolean value = (Boolean) event.getProperty().getValue(); diff --git a/tests/testbench/com/vaadin/tests/components/table/TableUnregisterComponent.java b/tests/testbench/com/vaadin/tests/components/table/TableUnregisterComponent.java index 6fd4a9db52..11f450baf2 100644 --- a/tests/testbench/com/vaadin/tests/components/table/TableUnregisterComponent.java +++ b/tests/testbench/com/vaadin/tests/components/table/TableUnregisterComponent.java @@ -76,12 +76,14 @@ public class TableUnregisterComponent extends TestBase { addComponent(table); addComponent(new Button("Switch column collapse", new ClickListener() { + @Override public void buttonClick(ClickEvent event) { table.setColumnCollapsed(COL_A, !table.isColumnCollapsed(COL_A)); } })); addComponent(new Button("Switch editable", new ClickListener() { + @Override public void buttonClick(ClickEvent event) { table.setEditable(!table.isEditable()); } diff --git a/tests/testbench/com/vaadin/tests/components/table/TableVisibleColumnsUpdate.java b/tests/testbench/com/vaadin/tests/components/table/TableVisibleColumnsUpdate.java index ad8eacb4b7..98cd4e0aaa 100644 --- a/tests/testbench/com/vaadin/tests/components/table/TableVisibleColumnsUpdate.java +++ b/tests/testbench/com/vaadin/tests/components/table/TableVisibleColumnsUpdate.java @@ -46,6 +46,7 @@ public class TableVisibleColumnsUpdate extends TestBase { Button updateButton = new Button("Change columns", new ClickListener() { private boolean one = true; + @Override public void buttonClick(ClickEvent event) { table.setVisibleColumns((one ? cols2 : cols1)); one = !one; diff --git a/tests/testbench/com/vaadin/tests/components/table/TableWithChildComponents.java b/tests/testbench/com/vaadin/tests/components/table/TableWithChildComponents.java index 1d1c162cae..7eb9c3239c 100644 --- a/tests/testbench/com/vaadin/tests/components/table/TableWithChildComponents.java +++ b/tests/testbench/com/vaadin/tests/components/table/TableWithChildComponents.java @@ -27,6 +27,7 @@ public class TableWithChildComponents extends TestBase implements ClickListener table.addGeneratedColumn(COL2, new ColumnGenerator() { + @Override public Object generateCell(Table source, Object itemId, Object columnId) { return new Button( @@ -58,6 +59,7 @@ public class TableWithChildComponents extends TestBase implements ClickListener return null; } + @Override public void buttonClick(ClickEvent event) { log.log("Click on " + event.getButton().getCaption()); diff --git a/tests/testbench/com/vaadin/tests/components/table/TableWithContainerRequiringEqualsForItemId.java b/tests/testbench/com/vaadin/tests/components/table/TableWithContainerRequiringEqualsForItemId.java index 1b0335b673..733f46959a 100644 --- a/tests/testbench/com/vaadin/tests/components/table/TableWithContainerRequiringEqualsForItemId.java +++ b/tests/testbench/com/vaadin/tests/components/table/TableWithContainerRequiringEqualsForItemId.java @@ -23,6 +23,7 @@ public class TableWithContainerRequiringEqualsForItemId extends TestBase { super(MyEntity.class); setBeanIdResolver(new BeanIdResolver<Long, TableWithContainerRequiringEqualsForItemId.MyEntity>() { + @Override public Long getIdForBean(MyEntity bean) { // Return a new instance every time to ensure Table can // handle it @@ -46,10 +47,12 @@ public class TableWithContainerRequiringEqualsForItemId extends TestBase { protected void setup() { Table t = new Table("Table with 1000 item"); t.addGeneratedColumn("Actions", new Table.ColumnGenerator() { + @Override public Component generateCell(final Table source, final Object itemId, final Object columnId) { Button tripFolderLink = new Button("Button" + itemId); tripFolderLink.addListener(new Button.ClickListener() { + @Override public void buttonClick(final ClickEvent event) { log.log("Button " + event.getButton().getCaption() + " clicked"); diff --git a/tests/testbench/com/vaadin/tests/components/table/TableWithNoncollapsibleColumns.java b/tests/testbench/com/vaadin/tests/components/table/TableWithNoncollapsibleColumns.java index 404ba5d779..226fde3b29 100644 --- a/tests/testbench/com/vaadin/tests/components/table/TableWithNoncollapsibleColumns.java +++ b/tests/testbench/com/vaadin/tests/components/table/TableWithNoncollapsibleColumns.java @@ -30,6 +30,7 @@ public class TableWithNoncollapsibleColumns extends TestBase { final Button button1 = new Button("Column 1: collapse/show", new Button.ClickListener() { + @Override public void buttonClick(ClickEvent event) { table.setColumnCollapsed( "Column 1 - noncollapsible", @@ -38,6 +39,7 @@ public class TableWithNoncollapsibleColumns extends TestBase { }); final Button button2 = new Button("Column 2: collapse/show", new Button.ClickListener() { + @Override public void buttonClick(ClickEvent event) { table.setColumnCollapsed( "Column 2 - collapsible", @@ -47,6 +49,7 @@ public class TableWithNoncollapsibleColumns extends TestBase { final Button button3 = new Button("Column 3: collapse/show", new Button.ClickListener() { + @Override public void buttonClick(ClickEvent event) { table.setColumnCollapsed( "Column 3 - toggle collapsing", @@ -56,6 +59,7 @@ public class TableWithNoncollapsibleColumns extends TestBase { final Button button4 = new Button( "Column 3: make noncollapsible/collapsible", new Button.ClickListener() { + @Override public void buttonClick(ClickEvent event) { table.setColumnCollapsible( "Column 3 - toggle collapsing", diff --git a/tests/testbench/com/vaadin/tests/components/table/Tables.java b/tests/testbench/com/vaadin/tests/components/table/Tables.java index 11ffff0655..79a5fb367d 100644 --- a/tests/testbench/com/vaadin/tests/components/table/Tables.java +++ b/tests/testbench/com/vaadin/tests/components/table/Tables.java @@ -8,8 +8,8 @@ import java.util.List; import com.vaadin.event.Action; import com.vaadin.event.Action.Handler; import com.vaadin.event.ItemClickEvent.ItemClickListener; +import com.vaadin.shared.ui.label.ContentMode; import com.vaadin.terminal.Resource; -import com.vaadin.terminal.gwt.client.ui.label.ContentMode; import com.vaadin.tests.components.select.AbstractSelectTestCase; import com.vaadin.ui.AbstractSelect.MultiSelectMode; import com.vaadin.ui.Button; @@ -47,6 +47,7 @@ public class Tables<T extends Table> extends AbstractSelectTestCase<T> /* COMMANDS */ private Command<T, Align> columnAlignmentCommand = new Command<T, Align>() { + @Override public void execute(T c, Align alignment, Object propertyId) { c.setColumnAlignment(propertyId, alignment); } @@ -54,6 +55,7 @@ public class Tables<T extends Table> extends AbstractSelectTestCase<T> }; private Command<T, Boolean> columnVisibleCommand = new Command<T, Boolean>() { + @Override public void execute(Table c, Boolean visible, Object propertyId) { List<Object> visibleColumns = new ArrayList<Object>(Arrays.asList(c .getVisibleColumns())); @@ -72,6 +74,7 @@ public class Tables<T extends Table> extends AbstractSelectTestCase<T> private Command<T, Boolean> columnCollapsed = new Command<T, Boolean>() { + @Override public void execute(T c, Boolean collapsed, Object propertyId) { c.setColumnCollapsed(propertyId, collapsed); @@ -80,6 +83,7 @@ public class Tables<T extends Table> extends AbstractSelectTestCase<T> private Command<T, Boolean> columnCollapsibleCommand = new Command<T, Boolean>() { + @Override public void execute(T c, Boolean collapsible, Object propertyId) { c.setColumnCollapsible(propertyId, collapsible); @@ -88,6 +92,7 @@ public class Tables<T extends Table> extends AbstractSelectTestCase<T> protected Command<T, Boolean> columnResizeListenerCommand = new Command<T, Boolean>() { + @Override public void execute(Table c, Boolean value, Object data) { if (value) { c.addListener((ColumnResizeListener) Tables.this); @@ -99,6 +104,7 @@ public class Tables<T extends Table> extends AbstractSelectTestCase<T> protected Command<T, Boolean> headerClickListenerCommand = new Command<T, Boolean>() { + @Override public void execute(T c, Boolean value, Object data) { if (value) { c.addListener((HeaderClickListener) Tables.this); @@ -110,6 +116,7 @@ public class Tables<T extends Table> extends AbstractSelectTestCase<T> protected Command<T, Boolean> footerClickListenerCommand = new Command<T, Boolean>() { + @Override public void execute(Table c, Boolean value, Object data) { if (value) { c.addListener((FooterClickListener) Tables.this); @@ -121,6 +128,7 @@ public class Tables<T extends Table> extends AbstractSelectTestCase<T> protected Command<T, RowHeaderMode> rowHeaderModeCommand = new Command<T, RowHeaderMode>() { + @Override public void execute(Table c, RowHeaderMode value, Object data) { if (value == RowHeaderMode.PROPERTY) { c.setItemCaptionPropertyId("Property 3"); @@ -131,6 +139,7 @@ public class Tables<T extends Table> extends AbstractSelectTestCase<T> protected Command<T, String> footerTextCommand = new Command<T, String>() { + @Override public void execute(Table c, String value, Object data) { for (Object propertyId : c.getContainerPropertyIds()) { if (value != null) { @@ -145,6 +154,7 @@ public class Tables<T extends Table> extends AbstractSelectTestCase<T> protected Command<T, Object> alignColumnLeftCommand = new Command<T, Object>() { + @Override public void execute(T c, Object propertyId, Object data) { c.setColumnAlignment(propertyId, (Align) data); } @@ -152,17 +162,20 @@ public class Tables<T extends Table> extends AbstractSelectTestCase<T> private Command<T, ContextMenu> contextMenuCommand = new Command<T, ContextMenu>() { + @Override public void execute(T c, final ContextMenu value, Object data) { c.removeAllActionHandlers(); if (value != null) { c.addActionHandler(new Handler() { + @Override public void handleAction(Action action, Object sender, Object target) { log("Action " + action.getCaption() + " performed on " + target); } + @Override public Action[] getActions(Object target, Object sender) { return value.getActions(target, sender); } @@ -172,6 +185,7 @@ public class Tables<T extends Table> extends AbstractSelectTestCase<T> }; private Command<T, Integer> columnWidthCommand = new Command<T, Integer>() { + @Override public void execute(T c, Integer width, Object propertyId) { c.setColumnWidth(propertyId, width); @@ -180,6 +194,7 @@ public class Tables<T extends Table> extends AbstractSelectTestCase<T> private Command<T, Resource> columnIconCommand = new Command<T, Resource>() { + @Override public void execute(T c, Resource icon, Object propertyId) { c.setColumnIcon(propertyId, icon); @@ -187,6 +202,7 @@ public class Tables<T extends Table> extends AbstractSelectTestCase<T> }; private Command<T, ColumnHeaderMode> columnHeaderModeCommand = new Command<T, ColumnHeaderMode>() { + @Override public void execute(T c, ColumnHeaderMode columnHeaderMode, Object data) { c.setColumnHeaderMode(columnHeaderMode); @@ -194,6 +210,7 @@ public class Tables<T extends Table> extends AbstractSelectTestCase<T> }; private Command<T, String> columnHeaderCommand = new Command<T, String>() { + @Override public void execute(T c, String header, Object propertyId) { c.setColumnHeader(propertyId, header); @@ -201,6 +218,7 @@ public class Tables<T extends Table> extends AbstractSelectTestCase<T> }; private Command<T, Float> columnExpandRatioCommand = new Command<T, Float>() { + @Override public void execute(T c, Float expandRatio, Object propertyId) { c.setColumnExpandRatio(propertyId, expandRatio); } @@ -224,6 +242,7 @@ public class Tables<T extends Table> extends AbstractSelectTestCase<T> private Command<T, GeneratedColumn> addGeneratedColumnCommand = new Command<T, GeneratedColumn>() { + @Override public void execute(T c, final GeneratedColumn col, Object data) { while (c.getColumnGenerator(generatedColumnId + generatedColumnNextNr) != null) { @@ -233,6 +252,7 @@ public class Tables<T extends Table> extends AbstractSelectTestCase<T> c.addGeneratedColumn(generatedColumnId + generatedColumnNextNr, new ColumnGenerator() { + @Override public Object generateCell(Table source, Object itemId, Object columnId) { String value = ""; @@ -273,6 +293,7 @@ public class Tables<T extends Table> extends AbstractSelectTestCase<T> }; private Command<T, Object> removeGeneratedColumnsCommand = new Command<T, Object>() { + @Override public void execute(T c, Object value, Object data) { for (int i = 0; i < generatedColumnNextNr; i++) { String columnId = generatedColumnId + i; @@ -306,12 +327,14 @@ public class Tables<T extends Table> extends AbstractSelectTestCase<T> private Command<T, CellStyleInfo> cellStyleCommand = new Command<T, CellStyleInfo>() { + @Override public void execute(T c, final CellStyleInfo cellStyleInfo, Object data) { if (cellStyleInfo == null) { c.setCellStyleGenerator(null); } else { c.setCellStyleGenerator(new CellStyleGenerator() { + @Override public String getStyle(Object itemId, Object propertyId) { if (cellStyleInfo.appliesTo(itemId, propertyId)) { return cellStyleInfo.styleName; @@ -349,6 +372,7 @@ public class Tables<T extends Table> extends AbstractSelectTestCase<T> private Command<T, GeneratedRowInfo> rowGeneratorCommand = new Command<T, GeneratedRowInfo>() { + @Override public void execute(T c, final GeneratedRowInfo generatedRowInfo, Object data) { if (generatedRowInfo == null) { @@ -356,6 +380,7 @@ public class Tables<T extends Table> extends AbstractSelectTestCase<T> } else { c.setRowGenerator(new RowGenerator() { + @Override public GeneratedRow generateRow(Table table, Object itemId) { if (generatedRowInfo.appliesTo(itemId)) { GeneratedRow generatedRow = new GeneratedRow( @@ -373,6 +398,7 @@ public class Tables<T extends Table> extends AbstractSelectTestCase<T> private Command<T, Boolean> setSortEnabledCommand = new Command<T, Boolean>() { + @Override public void execute(T c, Boolean value, Object data) { c.setSortDisabled(!value); @@ -546,6 +572,7 @@ public class Tables<T extends Table> extends AbstractSelectTestCase<T> private void createColumnReorderingAllowedCheckbox(String category) { createBooleanAction("Column reordering allowed", category, true, new Command<T, Boolean>() { + @Override public void execute(Table c, Boolean value, Object data) { c.setColumnReorderingAllowed(value); } @@ -555,6 +582,7 @@ public class Tables<T extends Table> extends AbstractSelectTestCase<T> private void createColumnCollapsingAllowedCheckbox(String category) { createBooleanAction("Column collapsing allowed", category, true, new Command<T, Boolean>() { + @Override public void execute(T c, Boolean value, Object data) { c.setColumnCollapsingAllowed(value); } @@ -697,6 +725,7 @@ public class Tables<T extends Table> extends AbstractSelectTestCase<T> createSelectAction("Texts in header", category, options, "None", new Command<T, String>() { + @Override public void execute(T c, String value, Object data) { int nr = 0; for (Object propertyId : c.getContainerPropertyIds()) { @@ -746,6 +775,7 @@ public class Tables<T extends Table> extends AbstractSelectTestCase<T> createBooleanAction("Footer visible", category, true, new Command<T, Boolean>() { + @Override public void execute(T c, Boolean value, Object data) { c.setFooterVisible(value); } @@ -763,6 +793,7 @@ public class Tables<T extends Table> extends AbstractSelectTestCase<T> createSelectAction("Header mode", category, options, "Explicit defaults id", new Command<T, ColumnHeaderMode>() { + @Override public void execute(T c, ColumnHeaderMode value, Object data) { c.setColumnHeaderMode(value); @@ -781,6 +812,7 @@ public class Tables<T extends Table> extends AbstractSelectTestCase<T> createSelectAction("PageLength", category, options, "10", new Command<T, Integer>() { + @Override public void execute(Table t, Integer value, Object data) { t.setPageLength(value); } @@ -801,6 +833,7 @@ public class Tables<T extends Table> extends AbstractSelectTestCase<T> createSelectAction("Selection Mode", category, options, "Multi - ctrl/shift", new Command<T, SelectMode>() { + @Override public void execute(Table t, SelectMode value, Object data) { switch (value) { case NONE: @@ -825,16 +858,19 @@ public class Tables<T extends Table> extends AbstractSelectTestCase<T> }); } + @Override public void columnResize(ColumnResizeEvent event) { log("ColumnResize on " + event.getPropertyId() + " from " + event.getPreviousWidth() + " to " + event.getCurrentWidth()); } + @Override public void footerClick(FooterClickEvent event) { log("FooterClick on " + event.getPropertyId() + " using " + event.getButtonName()); } + @Override public void headerClick(HeaderClickEvent event) { log("HeaderClick on " + event.getPropertyId() + " using " + event.getButtonName()); diff --git a/tests/testbench/com/vaadin/tests/components/table/TestCurrentPageFirstItem.java b/tests/testbench/com/vaadin/tests/components/table/TestCurrentPageFirstItem.java index 7fb096739a..d629c9a917 100644 --- a/tests/testbench/com/vaadin/tests/components/table/TestCurrentPageFirstItem.java +++ b/tests/testbench/com/vaadin/tests/components/table/TestCurrentPageFirstItem.java @@ -50,6 +50,7 @@ public class TestCurrentPageFirstItem extends TestBase implements ClickListener baseLayout.addComponent(buttonItem); } + @Override public void buttonClick(ClickEvent event) { Item item = container.addItem(++counter); item.getItemProperty("row").setValue(counter + ""); diff --git a/tests/testbench/com/vaadin/tests/components/table/TextFieldRelativeWidth.java b/tests/testbench/com/vaadin/tests/components/table/TextFieldRelativeWidth.java index f3a92d410c..5c7479d060 100644 --- a/tests/testbench/com/vaadin/tests/components/table/TextFieldRelativeWidth.java +++ b/tests/testbench/com/vaadin/tests/components/table/TextFieldRelativeWidth.java @@ -54,6 +54,7 @@ public class TextFieldRelativeWidth extends TestBase { addListener(new Property.ValueChangeListener() { private static final long serialVersionUID = 448896474865195605L; + @Override public void valueChange( com.vaadin.data.Property.ValueChangeEvent event) { // IndexedContainer idc = (IndexedContainer) @@ -98,6 +99,7 @@ public class TextFieldRelativeWidth extends TestBase { addButton.setCaption(caption); } + @Override public void buttonClick(ClickEvent event) { Button b = event.getButton(); if (b == addButton) { diff --git a/tests/testbench/com/vaadin/tests/components/table/TextFieldValueGoesMissing.java b/tests/testbench/com/vaadin/tests/components/table/TextFieldValueGoesMissing.java index f3ff5e983e..9ffad7f1e4 100644 --- a/tests/testbench/com/vaadin/tests/components/table/TextFieldValueGoesMissing.java +++ b/tests/testbench/com/vaadin/tests/components/table/TextFieldValueGoesMissing.java @@ -20,6 +20,7 @@ public class TextFieldValueGoesMissing extends TestBase { Button button = new Button("Replace label"); button.addListener(new Button.ClickListener() { + @Override public void buttonClick(ClickEvent event) { if (verticalLayout.getComponentIndex(label1) > -1) { verticalLayout.replaceComponent(label1, label2); diff --git a/tests/testbench/com/vaadin/tests/components/table/UncollapsedCollumnWidth.java b/tests/testbench/com/vaadin/tests/components/table/UncollapsedCollumnWidth.java index 99b954fa63..8e623499cf 100644 --- a/tests/testbench/com/vaadin/tests/components/table/UncollapsedCollumnWidth.java +++ b/tests/testbench/com/vaadin/tests/components/table/UncollapsedCollumnWidth.java @@ -23,6 +23,7 @@ public class UncollapsedCollumnWidth extends TestBase { addComponent(table); addComponent(new Button("Uncollapse col2", new Button.ClickListener() { + @Override public void buttonClick(ClickEvent event) { table.setColumnCollapsed("Col2", false); } diff --git a/tests/testbench/com/vaadin/tests/components/tabsheet/AddAndRemoveTabs.java b/tests/testbench/com/vaadin/tests/components/tabsheet/AddAndRemoveTabs.java index 3b5166a21e..4b5d216906 100644 --- a/tests/testbench/com/vaadin/tests/components/tabsheet/AddAndRemoveTabs.java +++ b/tests/testbench/com/vaadin/tests/components/tabsheet/AddAndRemoveTabs.java @@ -20,6 +20,7 @@ public class AddAndRemoveTabs extends TestBase { Button addTabBtn = new Button("Add new tab", new Button.ClickListener() { + @Override public void buttonClick(ClickEvent event) { addTab(); } @@ -34,6 +35,7 @@ public class AddAndRemoveTabs extends TestBase { Button closeTab = new Button("Close tab", new Button.ClickListener() { + @Override public void buttonClick(ClickEvent event) { tabSheet.removeComponent(layout); diff --git a/tests/testbench/com/vaadin/tests/components/tabsheet/PreventTabChange.java b/tests/testbench/com/vaadin/tests/components/tabsheet/PreventTabChange.java index f1faecb711..434c73f778 100644 --- a/tests/testbench/com/vaadin/tests/components/tabsheet/PreventTabChange.java +++ b/tests/testbench/com/vaadin/tests/components/tabsheet/PreventTabChange.java @@ -46,6 +46,7 @@ public class PreventTabChange extends TestBase implements addComponent(tabSheet); } + @Override public void selectedTabChange(SelectedTabChangeEvent event) { TabSheet tabsheet = event.getTabSheet(); diff --git a/tests/testbench/com/vaadin/tests/components/tabsheet/RemoveTabs.java b/tests/testbench/com/vaadin/tests/components/tabsheet/RemoveTabs.java index 1cd96c5c4c..2b37c4358e 100644 --- a/tests/testbench/com/vaadin/tests/components/tabsheet/RemoveTabs.java +++ b/tests/testbench/com/vaadin/tests/components/tabsheet/RemoveTabs.java @@ -49,6 +49,7 @@ public class RemoveTabs extends TestBase { closeCurrent = new Button("Close current tab"); closeCurrent.addListener(new Button.ClickListener() { + @Override public void buttonClick(ClickEvent event) { closeCurrentTab(); @@ -57,6 +58,7 @@ public class RemoveTabs extends TestBase { closeCurrentWithTab = new Button("Close current tab with Tab"); closeCurrentWithTab.addListener(new Button.ClickListener() { + @Override public void buttonClick(ClickEvent event) { closeCurrentTabWithTab(); @@ -65,6 +67,7 @@ public class RemoveTabs extends TestBase { closeFirst = new Button("close first tab"); closeFirst.addListener(new Button.ClickListener() { + @Override public void buttonClick(ClickEvent event) { closeFirstTab(); @@ -73,6 +76,7 @@ public class RemoveTabs extends TestBase { closeLast = new Button("close last tab"); closeLast.addListener(new Button.ClickListener() { + @Override public void buttonClick(ClickEvent event) { closeLastTab(); @@ -81,6 +85,7 @@ public class RemoveTabs extends TestBase { reorderTabs = new Button("reorder"); reorderTabs.addListener(new Button.ClickListener() { + @Override public void buttonClick(ClickEvent event) { reorder(); diff --git a/tests/testbench/com/vaadin/tests/components/tabsheet/TabGetAndReplaceComponent.java b/tests/testbench/com/vaadin/tests/components/tabsheet/TabGetAndReplaceComponent.java index c49133dd7c..0d4f1fe562 100644 --- a/tests/testbench/com/vaadin/tests/components/tabsheet/TabGetAndReplaceComponent.java +++ b/tests/testbench/com/vaadin/tests/components/tabsheet/TabGetAndReplaceComponent.java @@ -25,6 +25,7 @@ public class TabGetAndReplaceComponent extends TestBase { Button replace2 = new Button("Replace Content 2", new Button.ClickListener() { + @Override public void buttonClick(ClickEvent event) { Iterator<Component> iter = tabs.getComponentIterator(); iter.next(); diff --git a/tests/testbench/com/vaadin/tests/components/tabsheet/TabKeyboardNavigation.java b/tests/testbench/com/vaadin/tests/components/tabsheet/TabKeyboardNavigation.java index a3886853ff..ba737f1df8 100644 --- a/tests/testbench/com/vaadin/tests/components/tabsheet/TabKeyboardNavigation.java +++ b/tests/testbench/com/vaadin/tests/components/tabsheet/TabKeyboardNavigation.java @@ -32,12 +32,14 @@ public class TabKeyboardNavigation extends TestBase { ts.setHeight("500px"); ts.addListener(new FocusListener() { + @Override public void focus(FocusEvent event) { focusblur.log("Tabsheet focused!"); } }); ts.addListener(new BlurListener() { + @Override public void blur(BlurEvent event) { focusblur.log("Tabsheet blurred!"); } @@ -48,11 +50,13 @@ public class TabKeyboardNavigation extends TestBase { } Button addTab = new Button("Add a tab", new ClickListener() { + @Override public void buttonClick(ClickEvent event) { addTab(); } }); Button focus = new Button("Focus tabsheet", new ClickListener() { + @Override public void buttonClick(ClickEvent event) { ts.focus(); } diff --git a/tests/testbench/com/vaadin/tests/components/tabsheet/TabSheetCaptions.java b/tests/testbench/com/vaadin/tests/components/tabsheet/TabSheetCaptions.java index 3d8d02b8b6..e3867cff9f 100644 --- a/tests/testbench/com/vaadin/tests/components/tabsheet/TabSheetCaptions.java +++ b/tests/testbench/com/vaadin/tests/components/tabsheet/TabSheetCaptions.java @@ -42,6 +42,7 @@ public class TabSheetCaptions extends TestBase { Button button = new Button("Update tab caption"); button.addListener(new Button.ClickListener() { + @Override public void buttonClick(ClickEvent event) { tabSheet.getTab(panel1).setCaption( "This is a new tab caption " @@ -51,6 +52,7 @@ public class TabSheetCaptions extends TestBase { Button button2 = new Button("Update panel caption"); button2.addListener(new Button.ClickListener() { + @Override public void buttonClick(ClickEvent event) { panel1.setCaption("This is a new panel caption " + dateFormatter.format(date)); diff --git a/tests/testbench/com/vaadin/tests/components/tabsheet/TabSheetDisabling.java b/tests/testbench/com/vaadin/tests/components/tabsheet/TabSheetDisabling.java index bdce3e83d0..dfe37f2e27 100644 --- a/tests/testbench/com/vaadin/tests/components/tabsheet/TabSheetDisabling.java +++ b/tests/testbench/com/vaadin/tests/components/tabsheet/TabSheetDisabling.java @@ -20,6 +20,7 @@ public class TabSheetDisabling extends TestBase { buttons[i] = new Button("Disable this tab", new ClickListener() { + @Override public void buttonClick(ClickEvent event) { Button b = event.getButton(); tabSheet.getTab(b).setEnabled(false); @@ -30,6 +31,7 @@ public class TabSheetDisabling extends TestBase { } else { buttons[i] = new Button("Hide this tab", new ClickListener() { + @Override public void buttonClick(ClickEvent event) { Button b = event.getButton(); tabSheet.getTab(b).setVisible(false); @@ -41,6 +43,7 @@ public class TabSheetDisabling extends TestBase { } Button button = new Button("Enable/disable", new ClickListener() { + @Override public void buttonClick(ClickEvent event) { tabSheet.setEnabled(!tabSheet.isEnabled()); } diff --git a/tests/testbench/com/vaadin/tests/components/tabsheet/TabSheetDiscardsMovedComponents.java b/tests/testbench/com/vaadin/tests/components/tabsheet/TabSheetDiscardsMovedComponents.java index 410172ddb0..8d312f0cd8 100644 --- a/tests/testbench/com/vaadin/tests/components/tabsheet/TabSheetDiscardsMovedComponents.java +++ b/tests/testbench/com/vaadin/tests/components/tabsheet/TabSheetDiscardsMovedComponents.java @@ -32,6 +32,7 @@ public class TabSheetDiscardsMovedComponents extends TestBase { private void addTestComponent(final Component component) { grid.addComponent(component); grid.addComponent(new Button("Move to tab", new Button.ClickListener() { + @Override public void buttonClick(ClickEvent event) { tabSheet.addTab(component); grid.removeComponent(event.getButton()); diff --git a/tests/testbench/com/vaadin/tests/components/tabsheet/TabSheetIndexOperations.java b/tests/testbench/com/vaadin/tests/components/tabsheet/TabSheetIndexOperations.java index 5ae9e69975..de637bbed7 100644 --- a/tests/testbench/com/vaadin/tests/components/tabsheet/TabSheetIndexOperations.java +++ b/tests/testbench/com/vaadin/tests/components/tabsheet/TabSheetIndexOperations.java @@ -24,6 +24,7 @@ public class TabSheetIndexOperations extends TestBase { Button addTab = new Button("Add tab at index 2", new Button.ClickListener() { + @Override public void buttonClick(ClickEvent event) { tabs.addTab(new Label("Content " + tabCounter), "Added Tab " + tabCounter, null, 2); @@ -34,6 +35,7 @@ public class TabSheetIndexOperations extends TestBase { Button setCaption = new Button("Invert tab caption at index 2", new Button.ClickListener() { + @Override public void buttonClick(ClickEvent event) { Tab tab = tabs.getTab(2); tab.setCaption(new StringBuffer(tab.getCaption()) @@ -44,6 +46,7 @@ public class TabSheetIndexOperations extends TestBase { Button move = new Button("Move selected tab to index 2", new Button.ClickListener() { + @Override public void buttonClick(ClickEvent event) { tabs.setTabPosition(tabs.getTab(tabs.getSelectedTab()), 2); @@ -53,6 +56,7 @@ public class TabSheetIndexOperations extends TestBase { Button getIndex = new Button("Get selected tab index", new Button.ClickListener() { + @Override public void buttonClick(ClickEvent event) { getMainWindow().showNotification( "Index: " diff --git a/tests/testbench/com/vaadin/tests/components/tabsheet/TabSheetMinimal.java b/tests/testbench/com/vaadin/tests/components/tabsheet/TabSheetMinimal.java index 105b4149a1..b6cf27f6bb 100644 --- a/tests/testbench/com/vaadin/tests/components/tabsheet/TabSheetMinimal.java +++ b/tests/testbench/com/vaadin/tests/components/tabsheet/TabSheetMinimal.java @@ -16,6 +16,7 @@ public class TabSheetMinimal extends TestBase { ts.setStyleName("minimal"); Button b = new Button("Add a tab", new Button.ClickListener() { + @Override public void buttonClick(ClickEvent event) { ts.addTab(new Label("" + index), "Tab " + index, null); index++; diff --git a/tests/testbench/com/vaadin/tests/components/tabsheet/TabSheetTabStyleNames.java b/tests/testbench/com/vaadin/tests/components/tabsheet/TabSheetTabStyleNames.java index 3c3dec478c..54a5ed4857 100644 --- a/tests/testbench/com/vaadin/tests/components/tabsheet/TabSheetTabStyleNames.java +++ b/tests/testbench/com/vaadin/tests/components/tabsheet/TabSheetTabStyleNames.java @@ -25,6 +25,7 @@ public class TabSheetTabStyleNames extends TestBase { new Button.ClickListener() { int counter = 0; + @Override public void buttonClick(ClickEvent event) { if (tab1.getStyleName() == null) { tab1.setStyleName(STYLE_NAME); diff --git a/tests/testbench/com/vaadin/tests/components/tabsheet/TabSheetTest.java b/tests/testbench/com/vaadin/tests/components/tabsheet/TabSheetTest.java index 3077c1a97b..fea255a98d 100644 --- a/tests/testbench/com/vaadin/tests/components/tabsheet/TabSheetTest.java +++ b/tests/testbench/com/vaadin/tests/components/tabsheet/TabSheetTest.java @@ -16,6 +16,7 @@ public class TabSheetTest<T extends TabSheet> extends private Command<T, Integer> setTabCaption = new Command<T, Integer>() { + @Override public void execute(T c, Integer value, Object data) { c.getTab(value).setCaption((String) data); @@ -23,6 +24,7 @@ public class TabSheetTest<T extends TabSheet> extends }; private Command<T, Integer> setTabIcon = new Command<T, Integer>() { + @Override public void execute(T c, Integer value, Object data) { c.getTab(value).setIcon((Resource) data); @@ -30,15 +32,18 @@ public class TabSheetTest<T extends TabSheet> extends }; private Command<T, Integer> setTabClosable = new Command<T, Integer>() { + @Override public void execute(T c, Integer value, Object data) { c.getTab(value).setClosable((Boolean) data); } }; private Command<T, Boolean> setCloseHandlerListener = new Command<T, Boolean>() { + @Override public void execute(T c, Boolean value, Object data) { if (value) { c.setCloseHandler(new CloseHandler() { + @Override public void onTabClose(TabSheet tabsheet, Component c) { tabClosed(tabsheet, tabsheet.getTab(c)); tabsheet.removeComponent(c); @@ -47,6 +52,7 @@ public class TabSheetTest<T extends TabSheet> extends }); } else { c.setCloseHandler(new CloseHandler() { + @Override public void onTabClose(TabSheet tabsheet, Component c) { tabsheet.removeComponent(c); } @@ -57,6 +63,7 @@ public class TabSheetTest<T extends TabSheet> extends }; private Command<T, Boolean> setSelectedTabListener = new Command<T, Boolean>() { + @Override public void execute(T c, Boolean value, Object data) { if (value) { c.addListener((SelectedTabChangeListener) TabSheetTest.this); @@ -68,12 +75,14 @@ public class TabSheetTest<T extends TabSheet> extends }; private Command<T, Integer> selectTab = new Command<T, Integer>() { + @Override public void execute(T c, Integer index, Object data) { c.setSelectedTab(c.getTab(index).getComponent()); } }; private Command<T, Boolean> hideTabs = new Command<T, Boolean>() { + @Override public void execute(T c, Boolean value, Object data) { c.hideTabs(value); @@ -194,6 +203,7 @@ public class TabSheetTest<T extends TabSheet> extends log("Tab " + tabSheet.getTabPosition(tab) + " closed"); } + @Override public void selectedTabChange(SelectedTabChangeEvent event) { TabSheet ts = event.getTabSheet(); log("Tab " + ts.getTabPosition(ts.getTab(ts.getSelectedTab())) diff --git a/tests/testbench/com/vaadin/tests/components/tabsheet/TabsheetNPE.java b/tests/testbench/com/vaadin/tests/components/tabsheet/TabsheetNPE.java index 24077b972c..8e4c4d40fb 100644 --- a/tests/testbench/com/vaadin/tests/components/tabsheet/TabsheetNPE.java +++ b/tests/testbench/com/vaadin/tests/components/tabsheet/TabsheetNPE.java @@ -49,6 +49,7 @@ public class TabsheetNPE extends AbstractTestCase implements ClickListener { return layout; } + @Override public void buttonClick(ClickEvent event) { for (int i = 0; i < TABS_COUNT; i++) { tab[i].setEnabled(true); diff --git a/tests/testbench/com/vaadin/tests/components/tabsheet/TabsheetScrolling.java b/tests/testbench/com/vaadin/tests/components/tabsheet/TabsheetScrolling.java index 5321b51f9c..da449a2461 100644 --- a/tests/testbench/com/vaadin/tests/components/tabsheet/TabsheetScrolling.java +++ b/tests/testbench/com/vaadin/tests/components/tabsheet/TabsheetScrolling.java @@ -22,6 +22,7 @@ public class TabsheetScrolling extends TestBase { Button b = new Button("Hide this tab (" + i + ")", new ClickListener() { + @Override public void buttonClick(ClickEvent event) { fixedSizeTabSheet.getTab(event.getButton()) .setVisible(false); @@ -44,6 +45,7 @@ public class TabsheetScrolling extends TestBase { Button b = new Button("Hide this tab (" + i + ")", new ClickListener() { + @Override public void buttonClick(ClickEvent event) { autoWideTabSheet.getTab(event.getButton()) .setVisible(false); diff --git a/tests/testbench/com/vaadin/tests/components/tabsheet/WrapTabSheetInTabSheet.java b/tests/testbench/com/vaadin/tests/components/tabsheet/WrapTabSheetInTabSheet.java index 3872f7a8dd..7a676c63fb 100644 --- a/tests/testbench/com/vaadin/tests/components/tabsheet/WrapTabSheetInTabSheet.java +++ b/tests/testbench/com/vaadin/tests/components/tabsheet/WrapTabSheetInTabSheet.java @@ -17,6 +17,7 @@ public class WrapTabSheetInTabSheet extends TestBase { Button b = new Button("Wrap main layout in a TabSheet"); b.addListener(new Button.ClickListener() { + @Override public void buttonClick(ClickEvent event) { TabSheet tabsheet = new TabSheet(); ComponentContainer mainParent = (ComponentContainer) mainLayout diff --git a/tests/testbench/com/vaadin/tests/components/textarea/TextAreaCursorPosition.java b/tests/testbench/com/vaadin/tests/components/textarea/TextAreaCursorPosition.java index 0fc63860e1..992f20843b 100644 --- a/tests/testbench/com/vaadin/tests/components/textarea/TextAreaCursorPosition.java +++ b/tests/testbench/com/vaadin/tests/components/textarea/TextAreaCursorPosition.java @@ -33,6 +33,7 @@ public class TextAreaCursorPosition extends TestBase { newTextField.setTextChangeEventMode(TextChangeEventMode.EAGER); newTextField.addListener(new TextChangeListener() { + @Override public void textChange(TextChangeEvent event) { AbstractTextField component = (AbstractTextField) event .getComponent(); diff --git a/tests/testbench/com/vaadin/tests/components/textarea/TextAreaTest.java b/tests/testbench/com/vaadin/tests/components/textarea/TextAreaTest.java index 278d14e43d..e071bdd8fb 100644 --- a/tests/testbench/com/vaadin/tests/components/textarea/TextAreaTest.java +++ b/tests/testbench/com/vaadin/tests/components/textarea/TextAreaTest.java @@ -8,12 +8,14 @@ import com.vaadin.ui.TextArea; public class TextAreaTest extends AbstractTextFieldTest<TextArea> { private Command<TextArea, Boolean> wordwrapCommand = new Command<TextArea, Boolean>() { + @Override public void execute(TextArea c, Boolean value, Object data) { c.setWordwrap(value); } }; private Command<TextArea, Integer> rowsCommand = new Command<TextArea, Integer>() { + @Override public void execute(TextArea c, Integer value, Object data) { c.setRows(value); } diff --git a/tests/testbench/com/vaadin/tests/components/textarea/Wordwrap.java b/tests/testbench/com/vaadin/tests/components/textarea/Wordwrap.java index b33a1a4765..8672d4019e 100644 --- a/tests/testbench/com/vaadin/tests/components/textarea/Wordwrap.java +++ b/tests/testbench/com/vaadin/tests/components/textarea/Wordwrap.java @@ -31,6 +31,7 @@ public class Wordwrap extends TestBase { CheckBox onoff = new CheckBox("Wrap state for the right field"); onoff.setValue(false); onoff.addListener(new Property.ValueChangeListener() { + @Override public void valueChange(ValueChangeEvent event) { boolean wrap = (Boolean) event.getProperty().getValue(); area2.setWordwrap(wrap); diff --git a/tests/testbench/com/vaadin/tests/components/textfield/EnterShortcutMaySendInputPromptAsValue.java b/tests/testbench/com/vaadin/tests/components/textfield/EnterShortcutMaySendInputPromptAsValue.java index bf9924cdbb..938ecf60ce 100644 --- a/tests/testbench/com/vaadin/tests/components/textfield/EnterShortcutMaySendInputPromptAsValue.java +++ b/tests/testbench/com/vaadin/tests/components/textfield/EnterShortcutMaySendInputPromptAsValue.java @@ -31,10 +31,12 @@ public class EnterShortcutMaySendInputPromptAsValue extends TestBase { final Action enter = new ShortcutAction("enter", ShortcutAction.KeyCode.ENTER, null); + @Override public Action[] getActions(Object target, Object sender) { return new Action[] { enter }; } + @Override public void handleAction(Action action, Object sender, Object target) { if (action == enter) { @@ -43,6 +45,7 @@ public class EnterShortcutMaySendInputPromptAsValue extends TestBase { }); testField.addListener(new ValueChangeListener() { + @Override public void valueChange(ValueChangeEvent event) { String value = event.getProperty().getValue().toString(); addComponent(new Label("TextField sent value: " + value)); diff --git a/tests/testbench/com/vaadin/tests/components/textfield/MultipleTextChangeEvents.java b/tests/testbench/com/vaadin/tests/components/textfield/MultipleTextChangeEvents.java index 62d3a1679a..58bc4c5383 100644 --- a/tests/testbench/com/vaadin/tests/components/textfield/MultipleTextChangeEvents.java +++ b/tests/testbench/com/vaadin/tests/components/textfield/MultipleTextChangeEvents.java @@ -20,6 +20,7 @@ public class MultipleTextChangeEvents extends TestBase { tf.setTextChangeEventMode(TextChangeEventMode.TIMEOUT); tf.setTextChangeTimeout(500); tf.addListener(new TextChangeListener() { + @Override public void textChange(TextChangeEvent event) { log.log("TextChangeEvent: " + event.getText()); } @@ -35,10 +36,12 @@ public class MultipleTextChangeEvents extends TestBase { Action actionenter = new ShortcutAction("Enter", ShortcutAction.KeyCode.ENTER, null); + @Override public Action[] getActions(Object theTarget, Object theSender) { return new Action[] { actionenter }; } + @Override public void handleAction(Action theAction, Object theSender, Object theTarget) { log.log("Enter"); diff --git a/tests/testbench/com/vaadin/tests/components/textfield/OutOfSyncIssueWithKeyboardShortcut.java b/tests/testbench/com/vaadin/tests/components/textfield/OutOfSyncIssueWithKeyboardShortcut.java index cf59a9d7f4..89f9ffda40 100644 --- a/tests/testbench/com/vaadin/tests/components/textfield/OutOfSyncIssueWithKeyboardShortcut.java +++ b/tests/testbench/com/vaadin/tests/components/textfield/OutOfSyncIssueWithKeyboardShortcut.java @@ -82,6 +82,7 @@ public class OutOfSyncIssueWithKeyboardShortcut extends TestBase { saveButton.setClickShortcut(KeyCode.ENTER); table.addListener(new ValueChangeListener() { + @Override public void valueChange(ValueChangeEvent event) { Object value = event.getProperty().getValue(); if (value != null) { @@ -96,6 +97,7 @@ public class OutOfSyncIssueWithKeyboardShortcut extends TestBase { }); saveButton.addListener(new ClickListener() { + @Override public void buttonClick(ClickEvent event) { form.commit(); Topping entity = getEntityForItem(form.getItemDataSource()); diff --git a/tests/testbench/com/vaadin/tests/components/textfield/SelectionAndCursorPosition.java b/tests/testbench/com/vaadin/tests/components/textfield/SelectionAndCursorPosition.java index 962a85ffcb..f6368f0c78 100644 --- a/tests/testbench/com/vaadin/tests/components/textfield/SelectionAndCursorPosition.java +++ b/tests/testbench/com/vaadin/tests/components/textfield/SelectionAndCursorPosition.java @@ -28,6 +28,7 @@ public class SelectionAndCursorPosition extends TestBase { CheckBox ml = new CheckBox("Multiline"); ml.setImmediate(true); ml.addListener(new Property.ValueChangeListener() { + @Override public void valueChange(ValueChangeEvent event) { if (textField.getApplication() == null) { replaceComponent(textArea, textField); @@ -42,6 +43,7 @@ public class SelectionAndCursorPosition extends TestBase { Button b = new Button("Select all ( selectAll() )"); b.addListener(new ClickListener() { + @Override public void buttonClick(ClickEvent event) { activeComponent.selectAll(); } @@ -55,6 +57,7 @@ public class SelectionAndCursorPosition extends TestBase { final TextField length = new TextField("Selection length:"); b = new Button("select"); b.addListener(new ClickListener() { + @Override public void buttonClick(ClickEvent event) { int startPos = Integer.parseInt(start.getValue()); int lenght = Integer.parseInt(length.getValue()); @@ -72,6 +75,7 @@ public class SelectionAndCursorPosition extends TestBase { final TextField pos = new TextField("Position:"); b = new Button("set"); b.addListener(new ClickListener() { + @Override public void buttonClick(ClickEvent event) { int startPos = Integer.parseInt(pos.getValue()); activeComponent.setCursorPosition(startPos); diff --git a/tests/testbench/com/vaadin/tests/components/textfield/SetTabIndex.java b/tests/testbench/com/vaadin/tests/components/textfield/SetTabIndex.java index d81d26591a..da4ea9de0b 100644 --- a/tests/testbench/com/vaadin/tests/components/textfield/SetTabIndex.java +++ b/tests/testbench/com/vaadin/tests/components/textfield/SetTabIndex.java @@ -28,6 +28,7 @@ public class SetTabIndex extends TestBase { final CheckBox readonly = new CheckBox("Readonly"); readonly.setImmediate(true); readonly.addListener(new Property.ValueChangeListener() { + @Override public void valueChange(ValueChangeEvent event) { boolean readonly = Boolean.valueOf(event.getProperty() .getValue().toString()); diff --git a/tests/testbench/com/vaadin/tests/components/textfield/TextChangeEvents.java b/tests/testbench/com/vaadin/tests/components/textfield/TextChangeEvents.java index b3ea5b8186..a12a5a8836 100644 --- a/tests/testbench/com/vaadin/tests/components/textfield/TextChangeEvents.java +++ b/tests/testbench/com/vaadin/tests/components/textfield/TextChangeEvents.java @@ -19,6 +19,7 @@ public class TextChangeEvents extends TestBase { TextChangeListener inputEventListener = new TextChangeListener() { + @Override public void textChange(TextChangeEvent event) { l.log("Text change event for " + event.getComponent().getCaption() @@ -91,6 +92,7 @@ public class TextChangeEvents extends TestBase { + ".nomatch {background:red;}"); } + @Override public void textChange(TextChangeEvent event) { boolean atTheEndOfText = event.getText().length() == getCursorPosition(); String match = findMatch(event.getText()); diff --git a/tests/testbench/com/vaadin/tests/components/textfield/TextChangeEvents2.java b/tests/testbench/com/vaadin/tests/components/textfield/TextChangeEvents2.java index b40ebb2434..363e9d448d 100644 --- a/tests/testbench/com/vaadin/tests/components/textfield/TextChangeEvents2.java +++ b/tests/testbench/com/vaadin/tests/components/textfield/TextChangeEvents2.java @@ -23,12 +23,14 @@ public class TextChangeEvents2 extends TestBase { getLayout().addComponent(tf); tf.addListener(new TextChangeListener() { + @Override public void textChange(TextChangeEvent event) { System.err.println(tf.getCaption() + " textChange"); } }); tf.addListener(new ValueChangeListener() { + @Override public void valueChange(ValueChangeEvent event) { System.err.println(tf.getCaption() + " valueChange"); } @@ -36,12 +38,14 @@ public class TextChangeEvents2 extends TestBase { tf.addListener(new BlurListener() { + @Override public void blur(BlurEvent event) { System.err.println(tf.getCaption() + " blur"); } }); tf.addListener(new FocusListener() { + @Override public void focus(FocusEvent event) { System.err.println(tf.getCaption() + " focus"); } @@ -55,12 +59,14 @@ public class TextChangeEvents2 extends TestBase { final Label l = new Label(); getLayout().addComponent(l); tf.addListener(new TextChangeListener() { + @Override public void textChange(TextChangeEvent event) { l.setValue(event.getText()); } }); tf.addListener(new ValueChangeListener() { + @Override public void valueChange(ValueChangeEvent event) { System.err.println(tf.getCaption() + " valueChange"); } @@ -77,12 +83,14 @@ public class TextChangeEvents2 extends TestBase { getLayout().addComponent(l); tf.addListener(new TextChangeListener() { + @Override public void textChange(TextChangeEvent event) { l.setValue(event.getText()); } }); tf.addListener(new ValueChangeListener() { + @Override public void valueChange(ValueChangeEvent event) { System.err.println(tf.getCaption() + " valueChange"); } @@ -98,12 +106,14 @@ public class TextChangeEvents2 extends TestBase { getLayout().addComponent(l); tf.addListener(new TextChangeListener() { + @Override public void textChange(TextChangeEvent event) { tf.setValue(event.getText().toUpperCase()); } }); tf.addListener(new ValueChangeListener() { + @Override public void valueChange(ValueChangeEvent event) { System.err.println(tf.getCaption() + " valueChange"); } @@ -124,6 +134,7 @@ public class TextChangeEvents2 extends TestBase { tf.addListener(new TextChangeListener() { + @Override public void textChange(TextChangeEvent event) { String txt = event.getText(); int len = txt.length(); @@ -149,6 +160,7 @@ public class TextChangeEvents2 extends TestBase { }); tf.addListener(new ValueChangeListener() { + @Override public void valueChange(ValueChangeEvent event) { TextField tf = (TextField) event.getProperty(); String val = (String) tf.getValue(); diff --git a/tests/testbench/com/vaadin/tests/components/textfield/TextChangeEventsEternalLoop.java b/tests/testbench/com/vaadin/tests/components/textfield/TextChangeEventsEternalLoop.java index 22348bb5b5..1a49729b6f 100644 --- a/tests/testbench/com/vaadin/tests/components/textfield/TextChangeEventsEternalLoop.java +++ b/tests/testbench/com/vaadin/tests/components/textfield/TextChangeEventsEternalLoop.java @@ -13,6 +13,7 @@ public class TextChangeEventsEternalLoop extends TestBase { getLayout().addComponent(tf); tf.addListener(new TextChangeListener() { + @Override public void textChange(TextChangeEvent event) { tf.setValue(event.getText()); } diff --git a/tests/testbench/com/vaadin/tests/components/textfield/TextChangeEventsWithNonImmediateValueChange.java b/tests/testbench/com/vaadin/tests/components/textfield/TextChangeEventsWithNonImmediateValueChange.java index ab3fd49cd6..ebb8b88411 100644 --- a/tests/testbench/com/vaadin/tests/components/textfield/TextChangeEventsWithNonImmediateValueChange.java +++ b/tests/testbench/com/vaadin/tests/components/textfield/TextChangeEventsWithNonImmediateValueChange.java @@ -18,6 +18,7 @@ public class TextChangeEventsWithNonImmediateValueChange extends TestBase { TextChangeListener inputEventListener = new TextChangeListener() { + @Override public void textChange(TextChangeEvent event) { l.log("Text change event, text content currently:'" + event.getText() + "' Cursor at index:" @@ -31,6 +32,7 @@ public class TextChangeEventsWithNonImmediateValueChange extends TestBase { tf.addListener(new ValueChangeListener() { + @Override public void valueChange(ValueChangeEvent event) { l.log("Value change: '" + event.getProperty().getValue() + "'"); } diff --git a/tests/testbench/com/vaadin/tests/components/textfield/TextChangeListenerChangingNonTextProperties.java b/tests/testbench/com/vaadin/tests/components/textfield/TextChangeListenerChangingNonTextProperties.java index 8a3678ab62..5b84ff20f2 100644 --- a/tests/testbench/com/vaadin/tests/components/textfield/TextChangeListenerChangingNonTextProperties.java +++ b/tests/testbench/com/vaadin/tests/components/textfield/TextChangeListenerChangingNonTextProperties.java @@ -31,6 +31,7 @@ public class TextChangeListenerChangingNonTextProperties extends TestBase { }; tf2.setTextChangeEventMode(TextChangeEventMode.EAGER); tf2.addListener(new TextChangeListener() { + @Override public void textChange(TextChangeEvent event) { tf2.setStyleName(getNextStyle()); } diff --git a/tests/testbench/com/vaadin/tests/components/textfield/TextChangeTimeoutAfterDetach.java b/tests/testbench/com/vaadin/tests/components/textfield/TextChangeTimeoutAfterDetach.java index 2f0c54ee39..00783e0106 100644 --- a/tests/testbench/com/vaadin/tests/components/textfield/TextChangeTimeoutAfterDetach.java +++ b/tests/testbench/com/vaadin/tests/components/textfield/TextChangeTimeoutAfterDetach.java @@ -18,6 +18,7 @@ public class TextChangeTimeoutAfterDetach extends TestBase { field.setTextChangeTimeout(2000); field.setTextChangeEventMode(TextChangeEventMode.TIMEOUT); field.addListener(new TextChangeListener() { + @Override public void textChange(TextChangeEvent event) { // Need to add a listener for events to occur } @@ -26,6 +27,7 @@ public class TextChangeTimeoutAfterDetach extends TestBase { Button detachBtn = new Button("detach field", new Button.ClickListener() { + @Override public void buttonClick(ClickEvent event) { removeComponent(field); getLayout().addComponentAsFirst( diff --git a/tests/testbench/com/vaadin/tests/components/textfield/TextFieldEagerRepaint.java b/tests/testbench/com/vaadin/tests/components/textfield/TextFieldEagerRepaint.java index 08751a59fd..e103afbe62 100644 --- a/tests/testbench/com/vaadin/tests/components/textfield/TextFieldEagerRepaint.java +++ b/tests/testbench/com/vaadin/tests/components/textfield/TextFieldEagerRepaint.java @@ -14,6 +14,7 @@ public class TextFieldEagerRepaint extends TestBase { final TextField tf1 = new TextField("Updates value"); tf1.setTextChangeEventMode(TextChangeEventMode.EAGER); tf1.addListener(new TextChangeListener() { + @Override public void textChange(TextChangeEvent event) { String text = event.getText(); if (!text.matches("[a-z]*")) { @@ -26,6 +27,7 @@ public class TextFieldEagerRepaint extends TestBase { final TextField tf2 = new TextField("Updates width"); tf2.setTextChangeEventMode(TextChangeEventMode.EAGER); tf2.addListener(new TextChangeListener() { + @Override public void textChange(TextChangeEvent event) { String text = event.getText(); if (!text.matches("[a-z]*")) { diff --git a/tests/testbench/com/vaadin/tests/components/textfield/TextFieldFocusAndBlurListeners.java b/tests/testbench/com/vaadin/tests/components/textfield/TextFieldFocusAndBlurListeners.java index e2f5c45b72..21dba6a196 100644 --- a/tests/testbench/com/vaadin/tests/components/textfield/TextFieldFocusAndBlurListeners.java +++ b/tests/testbench/com/vaadin/tests/components/textfield/TextFieldFocusAndBlurListeners.java @@ -40,12 +40,14 @@ public class TextFieldFocusAndBlurListeners extends TestBase implements tf2.setWidth("300px"); tf2.addListener(new ValueChangeListener() { + @Override public void valueChange(ValueChangeEvent event) { TextFieldFocusAndBlurListeners.this.valueChange(event); } }); tf2.addListener(new FocusListener() { + @Override public void focus(FocusEvent event) { TextFieldFocusAndBlurListeners.this.focus(event); } @@ -53,6 +55,7 @@ public class TextFieldFocusAndBlurListeners extends TestBase implements }); tf2.addListener(new BlurListener() { + @Override public void blur(BlurEvent event) { TextFieldFocusAndBlurListeners.this.blur(event); } @@ -76,11 +79,13 @@ public class TextFieldFocusAndBlurListeners extends TestBase implements addComponent(tf4); } + @Override public void focus(FocusEvent event) { log.log(event.getComponent().getCaption() + ": Focus"); } + @Override public void blur(BlurEvent event) { TextField tf = (TextField) event.getComponent(); log.log(tf.getCaption() + ": Blur. Value is: " @@ -88,6 +93,7 @@ public class TextFieldFocusAndBlurListeners extends TestBase implements } + @Override public void valueChange(ValueChangeEvent event) { TextField tf = (TextField) event.getProperty(); log.log(tf.getCaption() + ": ValueChange: " + tf.getValue().toString()); diff --git a/tests/testbench/com/vaadin/tests/components/textfield/TextFieldInputPromptAndClickShortcut.java b/tests/testbench/com/vaadin/tests/components/textfield/TextFieldInputPromptAndClickShortcut.java index c04c9d6c13..d52efa0572 100644 --- a/tests/testbench/com/vaadin/tests/components/textfield/TextFieldInputPromptAndClickShortcut.java +++ b/tests/testbench/com/vaadin/tests/components/textfield/TextFieldInputPromptAndClickShortcut.java @@ -19,6 +19,7 @@ public class TextFieldInputPromptAndClickShortcut extends TestBase { final TextField textField = new TextField(); Button button = new Button("Show Text", new ClickListener() { + @Override public void buttonClick(ClickEvent event) { log.log("Field value: " + textField.getValue()); } @@ -28,6 +29,7 @@ public class TextFieldInputPromptAndClickShortcut extends TestBase { final CheckBox inputPromptSelection = new CheckBox("Input prompt"); inputPromptSelection.setImmediate(true); inputPromptSelection.addListener(new ValueChangeListener() { + @Override public void valueChange(ValueChangeEvent event) { if (event.getProperty().getValue() == Boolean.TRUE) { textField.setInputPrompt("Input prompt"); diff --git a/tests/testbench/com/vaadin/tests/components/textfield/TextFieldWithProperty.java b/tests/testbench/com/vaadin/tests/components/textfield/TextFieldWithProperty.java index b753978666..747301f4e4 100644 --- a/tests/testbench/com/vaadin/tests/components/textfield/TextFieldWithProperty.java +++ b/tests/testbench/com/vaadin/tests/components/textfield/TextFieldWithProperty.java @@ -24,6 +24,7 @@ public class TextFieldWithProperty extends TestBase { Button b = new Button( "Set BAR to underlaying property (should propagate to UI)"); b.addListener(new ClickListener() { + @Override public void buttonClick(ClickEvent event) { op.setValue("BAR"); } diff --git a/tests/testbench/com/vaadin/tests/components/textfield/TextFieldWithPropertyFormatter.java b/tests/testbench/com/vaadin/tests/components/textfield/TextFieldWithPropertyFormatter.java index ea4b572604..4184892545 100644 --- a/tests/testbench/com/vaadin/tests/components/textfield/TextFieldWithPropertyFormatter.java +++ b/tests/testbench/com/vaadin/tests/components/textfield/TextFieldWithPropertyFormatter.java @@ -28,10 +28,12 @@ public class TextFieldWithPropertyFormatter extends TestBase { property = new Property<BigDecimal>() { private BigDecimal value; + @Override public BigDecimal getValue() { return value; } + @Override public void setValue(Object newValue) throws ReadOnlyException { if (newValue == null) { value = null; @@ -43,14 +45,17 @@ public class TextFieldWithPropertyFormatter extends TestBase { } } + @Override public Class<BigDecimal> getType() { return BigDecimal.class; } + @Override public boolean isReadOnly() { return false; } + @Override public void setReadOnly(boolean newStatus) { // ignore } @@ -98,12 +103,14 @@ public class TextFieldWithPropertyFormatter extends TestBase { Button b = new Button( "Sync (typing 12345.6789 and clicking this should format field)"); b.addListener(new ClickListener() { + @Override public void buttonClick(ClickEvent event) { } }); addComponent(b); b = new Button("Set '12345.6789' to textfield on the server side"); b.addListener(new ClickListener() { + @Override public void buttonClick(ClickEvent event) { tf1.setValue("12345.6789"); } diff --git a/tests/testbench/com/vaadin/tests/components/tree/CtrlShiftMultiselect.java b/tests/testbench/com/vaadin/tests/components/tree/CtrlShiftMultiselect.java index 69956e4d2c..03645557f2 100644 --- a/tests/testbench/com/vaadin/tests/components/tree/CtrlShiftMultiselect.java +++ b/tests/testbench/com/vaadin/tests/components/tree/CtrlShiftMultiselect.java @@ -30,6 +30,7 @@ public class CtrlShiftMultiselect extends TestBase { tree.expandItemsRecursively("Item 4"); tree.addListener(new Property.ValueChangeListener() { + @Override public void valueChange(ValueChangeEvent event) { if (tree.getValue() instanceof Set) { @SuppressWarnings("unchecked") diff --git a/tests/testbench/com/vaadin/tests/components/tree/ExpandCollapseTree.java b/tests/testbench/com/vaadin/tests/components/tree/ExpandCollapseTree.java index e23213fafc..d5c3654b4e 100644 --- a/tests/testbench/com/vaadin/tests/components/tree/ExpandCollapseTree.java +++ b/tests/testbench/com/vaadin/tests/components/tree/ExpandCollapseTree.java @@ -30,6 +30,7 @@ public class ExpandCollapseTree extends TestBase { tree.expandItemsRecursively("Item 4"); tree.addListener(new Property.ValueChangeListener() { + @Override public void valueChange(ValueChangeEvent event) { if (tree.getValue() instanceof Set) { @SuppressWarnings("unchecked") diff --git a/tests/testbench/com/vaadin/tests/components/tree/ItemStyleGenerator.java b/tests/testbench/com/vaadin/tests/components/tree/ItemStyleGenerator.java index f2ca2a85bd..33bd4cef65 100644 --- a/tests/testbench/com/vaadin/tests/components/tree/ItemStyleGenerator.java +++ b/tests/testbench/com/vaadin/tests/components/tree/ItemStyleGenerator.java @@ -32,6 +32,7 @@ public class ItemStyleGenerator extends TestBase { Tree tree = new Tree(); tree.setItemStyleGenerator(new Tree.ItemStyleGenerator() { + @Override public String getStyle(Object itemId) { // simple return itemId as css style name return itemId.toString(); diff --git a/tests/testbench/com/vaadin/tests/components/tree/TreeConnectors.java b/tests/testbench/com/vaadin/tests/components/tree/TreeConnectors.java index b37d371b17..4072610996 100644 --- a/tests/testbench/com/vaadin/tests/components/tree/TreeConnectors.java +++ b/tests/testbench/com/vaadin/tests/components/tree/TreeConnectors.java @@ -27,6 +27,7 @@ public class TreeConnectors extends TestBase { cb.setImmediate(true); cb.addListener(new ValueChangeListener() { + @Override public void valueChange(ValueChangeEvent event) { if ((Boolean) event.getProperty().getValue()) { tree.addStyleName(BaseTheme.TREE_CONNECTORS); @@ -50,11 +51,13 @@ public class TreeConnectors extends TestBase { tree.setDragMode(TreeDragMode.NODE); tree.setDropHandler(new DropHandler() { + @Override public void drop(DragAndDropEvent event) { // TODO Auto-generated method stub } + @Override public AcceptCriterion getAcceptCriterion() { return AcceptAll.get(); } diff --git a/tests/testbench/com/vaadin/tests/components/tree/TreeContainerChange.java b/tests/testbench/com/vaadin/tests/components/tree/TreeContainerChange.java index df2682a14c..f4374ca2ee 100644 --- a/tests/testbench/com/vaadin/tests/components/tree/TreeContainerChange.java +++ b/tests/testbench/com/vaadin/tests/components/tree/TreeContainerChange.java @@ -57,6 +57,7 @@ public class TreeContainerChange extends TestBase { Button b = new Button("Use ds1"); b.addListener(new Button.ClickListener() { + @Override public void buttonClick(ClickEvent event) { tree.setContainerDataSource(ds1); currentDS.setValue("ds1"); @@ -72,6 +73,7 @@ public class TreeContainerChange extends TestBase { b = new Button("Use ds2"); b.addListener(new Button.ClickListener() { + @Override public void buttonClick(ClickEvent event) { tree.setContainerDataSource(ds2); currentDS.setValue("ds2"); @@ -82,6 +84,7 @@ public class TreeContainerChange extends TestBase { addComponent(hl); tree.addListener(new Property.ValueChangeListener() { + @Override public void valueChange(ValueChangeEvent event) { currentValue.setValue(event.getProperty().getValue()); } diff --git a/tests/testbench/com/vaadin/tests/components/tree/TreeDragAndDropFromTable.java b/tests/testbench/com/vaadin/tests/components/tree/TreeDragAndDropFromTable.java index dca2d96628..7aa3933752 100644 --- a/tests/testbench/com/vaadin/tests/components/tree/TreeDragAndDropFromTable.java +++ b/tests/testbench/com/vaadin/tests/components/tree/TreeDragAndDropFromTable.java @@ -38,10 +38,12 @@ public class TreeDragAndDropFromTable extends TestBase { final Tree tree = new Tree(); tree.setDropHandler(new DropHandler() { + @Override public AcceptCriterion getAcceptCriterion() { return TargetItemAllowsChildren.get(); } + @Override public void drop(DragAndDropEvent dropEvent) { // criteria verify that this is safe DataBoundTransferable t = (DataBoundTransferable) dropEvent diff --git a/tests/testbench/com/vaadin/tests/components/tree/TreeFiltering.java b/tests/testbench/com/vaadin/tests/components/tree/TreeFiltering.java index 20d1eacb97..bd7984cdeb 100644 --- a/tests/testbench/com/vaadin/tests/components/tree/TreeFiltering.java +++ b/tests/testbench/com/vaadin/tests/components/tree/TreeFiltering.java @@ -47,6 +47,7 @@ public class TreeFiltering extends TestBase { filterType.setImmediate(true); filterType.addListener(new ValueChangeListener() { + @Override public void valueChange(ValueChangeEvent event) { cont.setIncludeParentsWhenFiltering((Boolean) ((CheckBox) event .getProperty()).getValue()); @@ -56,6 +57,7 @@ public class TreeFiltering extends TestBase { addComponent(filterType); final Button b = new Button("Add filter 'foo'", new ClickListener() { + @Override public void buttonClick(final ClickEvent event) { cont.addContainerFilter("caption", "foo", true, false); @@ -63,6 +65,7 @@ public class TreeFiltering extends TestBase { }); addComponent(b); final Button b2 = new Button("Add filter 'Num'", new ClickListener() { + @Override public void buttonClick(final ClickEvent event) { cont.addContainerFilter("caption", "Num", true, false); @@ -71,6 +74,7 @@ public class TreeFiltering extends TestBase { addComponent(b2); final Button num = new Button("Add filter '0'", new ClickListener() { + @Override public void buttonClick(final ClickEvent event) { cont.addContainerFilter("caption", "0", true, false); @@ -79,6 +83,7 @@ public class TreeFiltering extends TestBase { addComponent(num); final Button num2 = new Button("Add filter '0-'", new ClickListener() { + @Override public void buttonClick(final ClickEvent event) { cont.addContainerFilter("caption", "0-", true, false); @@ -88,6 +93,7 @@ public class TreeFiltering extends TestBase { addComponent(num2); final Button num3 = new Button("Add filter 'Number 4'", new ClickListener() { + @Override public void buttonClick(final ClickEvent event) { cont.addContainerFilter("caption", "Number 4", true, false); @@ -98,6 +104,7 @@ public class TreeFiltering extends TestBase { addComponent(num3); final Button p1 = new Button("Set Number 3 parent to Number 0", new ClickListener() { + @Override public void buttonClick(final ClickEvent event) { cont.setParent(3, 0); @@ -105,6 +112,7 @@ public class TreeFiltering extends TestBase { }); addComponent(p1); final Button r = new Button("Remove filters", new ClickListener() { + @Override public void buttonClick(final ClickEvent event) { cont.removeAllContainerFilters(); diff --git a/tests/testbench/com/vaadin/tests/components/tree/TreeFocusGaining.java b/tests/testbench/com/vaadin/tests/components/tree/TreeFocusGaining.java index 87170214ca..dd407fd62a 100644 --- a/tests/testbench/com/vaadin/tests/components/tree/TreeFocusGaining.java +++ b/tests/testbench/com/vaadin/tests/components/tree/TreeFocusGaining.java @@ -20,6 +20,7 @@ public class TreeFocusGaining extends TestBase { addComponent(textField); textField.addListener(new Property.ValueChangeListener() { + @Override public void valueChange(ValueChangeEvent event) { log.log("TF value now:" + event.getProperty().getValue()); } @@ -30,6 +31,7 @@ public class TreeFocusGaining extends TestBase { addComponent(tree); tree.addListener(new Property.ValueChangeListener() { + @Override public void valueChange(ValueChangeEvent event) { log.log("Tree value now:" + event.getProperty().getValue()); } @@ -39,6 +41,7 @@ public class TreeFocusGaining extends TestBase { tree = new Tree("Simple tree with itemm click listener"); tree.addItem("Item1"); tree.addListener(new ItemClickEvent.ItemClickListener() { + @Override public void itemClick(ItemClickEvent event) { log.log("Item click event"); } diff --git a/tests/testbench/com/vaadin/tests/components/tree/TreeItemClickListening.java b/tests/testbench/com/vaadin/tests/components/tree/TreeItemClickListening.java index e772be7cde..182bc97c44 100644 --- a/tests/testbench/com/vaadin/tests/components/tree/TreeItemClickListening.java +++ b/tests/testbench/com/vaadin/tests/components/tree/TreeItemClickListening.java @@ -28,6 +28,7 @@ public class TreeItemClickListening extends TestBase { tree.setItemCaptionPropertyId("caption"); tree.addListener(new ItemClickEvent.ItemClickListener() { + @Override public void itemClick(ItemClickEvent event) { clickCounter++; switch (event.getButton()) { diff --git a/tests/testbench/com/vaadin/tests/components/tree/TreeScrollingOnSelection.java b/tests/testbench/com/vaadin/tests/components/tree/TreeScrollingOnSelection.java index a6079160ab..b3ab5c2b01 100644 --- a/tests/testbench/com/vaadin/tests/components/tree/TreeScrollingOnSelection.java +++ b/tests/testbench/com/vaadin/tests/components/tree/TreeScrollingOnSelection.java @@ -29,6 +29,7 @@ public class TreeScrollingOnSelection extends TestBase { private static final long serialVersionUID = 5955518276555388126L; + @Override public void itemClick(ItemClickEvent event) { charLabel.setValue(event.getItemId().toString()); } diff --git a/tests/testbench/com/vaadin/tests/components/tree/TreeToolTips.java b/tests/testbench/com/vaadin/tests/components/tree/TreeToolTips.java index c6e29bc3b8..4b892c2150 100644 --- a/tests/testbench/com/vaadin/tests/components/tree/TreeToolTips.java +++ b/tests/testbench/com/vaadin/tests/components/tree/TreeToolTips.java @@ -13,6 +13,7 @@ public class TreeToolTips extends TestBase { protected void setup() { final Tree tree = new Tree(null, createContainer()); tree.setItemDescriptionGenerator(new AbstractSelect.ItemDescriptionGenerator() { + @Override public String generateDescription(Component source, Object itemId, Object propertyId) { return "This is a tooltip for item id '" + itemId + "'"; diff --git a/tests/testbench/com/vaadin/tests/components/tree/TreeWithPreselectedItemNotShown.java b/tests/testbench/com/vaadin/tests/components/tree/TreeWithPreselectedItemNotShown.java index 92c82a6ccf..8da6759b20 100644 --- a/tests/testbench/com/vaadin/tests/components/tree/TreeWithPreselectedItemNotShown.java +++ b/tests/testbench/com/vaadin/tests/components/tree/TreeWithPreselectedItemNotShown.java @@ -11,6 +11,7 @@ public class TreeWithPreselectedItemNotShown extends TestBase { protected void setup() { Button open = new Button("Open modal window with tree", new Button.ClickListener() { + @Override public void buttonClick(Button.ClickEvent event) { getMainWindow().addWindow(new SubwindowWithTree()); } diff --git a/tests/testbench/com/vaadin/tests/components/tree/Trees.java b/tests/testbench/com/vaadin/tests/components/tree/Trees.java index 79de4de412..3ee1d7b0de 100644 --- a/tests/testbench/com/vaadin/tests/components/tree/Trees.java +++ b/tests/testbench/com/vaadin/tests/components/tree/Trees.java @@ -26,6 +26,7 @@ public class Trees extends AbstractSelectTestCase<Tree> implements private ItemStyleGenerator rootGreenSecondLevelRed = new com.vaadin.ui.Tree.ItemStyleGenerator() { + @Override public String getStyle(Object itemId) { Hierarchical c = (Container.Hierarchical) getComponent() .getContainerDataSource(); @@ -50,6 +51,7 @@ public class Trees extends AbstractSelectTestCase<Tree> implements private ItemStyleGenerator evenItemsBold = new com.vaadin.ui.Tree.ItemStyleGenerator() { + @Override public String getStyle(Object itemId) { Hierarchical c = (Container.Hierarchical) getComponent() .getContainerDataSource(); @@ -80,17 +82,20 @@ public class Trees extends AbstractSelectTestCase<Tree> implements private Command<Tree, ContextMenu> contextMenuCommand = new Command<Tree, ContextMenu>() { + @Override public void execute(Tree c, final ContextMenu value, Object data) { c.removeAllActionHandlers(); if (value != null) { c.addActionHandler(new Handler() { + @Override public void handleAction(Action action, Object sender, Object target) { log("Action " + action.getCaption() + " performed on " + target); } + @Override public Action[] getActions(Object target, Object sender) { return value.getActions(target, sender); } @@ -176,6 +181,7 @@ public class Trees extends AbstractSelectTestCase<Tree> implements createSelectAction("Selection Mode", category, options, "Multi - ctrl/shift", new Command<Tree, SelectMode>() { + @Override public void execute(Tree t, SelectMode value, Object data) { switch (value) { case NONE: @@ -318,6 +324,7 @@ public class Trees extends AbstractSelectTestCase<Tree> implements */ private Command<Tree, Integer> rootItemIdsCommand = new Command<Tree, Integer>() { + @Override public void execute(Tree c, Integer value, Object data) { rootItemIds = value; updateContainer(); @@ -326,12 +333,14 @@ public class Trees extends AbstractSelectTestCase<Tree> implements private Command<Tree, Object> expandItemCommand = new Command<Tree, Object>() { + @Override public void execute(Tree c, Object itemId, Object data) { c.expandItem(itemId); } }; private Command<Tree, Object> expandItemRecursivelyCommand = new Command<Tree, Object>() { + @Override public void execute(Tree c, Object itemId, Object data) { c.expandItemsRecursively(itemId); } @@ -339,6 +348,7 @@ public class Trees extends AbstractSelectTestCase<Tree> implements private Command<Tree, Object> collapseItemCommand = new Command<Tree, Object>() { + @Override public void execute(Tree c, Object itemId, Object data) { c.collapseItem(itemId); } @@ -346,12 +356,14 @@ public class Trees extends AbstractSelectTestCase<Tree> implements private Command<Tree, Boolean> setChildrenAllowedCommand = new Command<Tree, Boolean>() { + @Override public void execute(Tree c, Boolean areChildrenAllowed, Object itemId) { c.setChildrenAllowed(itemId, areChildrenAllowed); } }; private Command<Tree, Boolean> expandListenerCommand = new Command<Tree, Boolean>() { + @Override public void execute(Tree c, Boolean value, Object data) { if (value) { c.addListener((ExpandListener) Trees.this); @@ -362,6 +374,7 @@ public class Trees extends AbstractSelectTestCase<Tree> implements }; private Command<Tree, Boolean> collapseListenerCommand = new Command<Tree, Boolean>() { + @Override public void execute(Tree c, Boolean value, Object data) { if (value) { c.addListener((CollapseListener) Trees.this); @@ -373,6 +386,7 @@ public class Trees extends AbstractSelectTestCase<Tree> implements private Command<Tree, com.vaadin.ui.Tree.ItemStyleGenerator> itemStyleGeneratorCommand = new Command<Tree, com.vaadin.ui.Tree.ItemStyleGenerator>() { + @Override public void execute(Tree c, com.vaadin.ui.Tree.ItemStyleGenerator value, Object data) { c.setItemStyleGenerator(value); @@ -380,10 +394,12 @@ public class Trees extends AbstractSelectTestCase<Tree> implements } }; + @Override public void nodeCollapse(CollapseEvent event) { log(event.getClass().getSimpleName() + ": " + event.getItemId()); } + @Override public void nodeExpand(ExpandEvent event) { log(event.getClass().getSimpleName() + ": " + event.getItemId()); } diff --git a/tests/testbench/com/vaadin/tests/components/treetable/AddNodesOnExpand.java b/tests/testbench/com/vaadin/tests/components/treetable/AddNodesOnExpand.java index 5bf0370bab..f6b32aa4a9 100644 --- a/tests/testbench/com/vaadin/tests/components/treetable/AddNodesOnExpand.java +++ b/tests/testbench/com/vaadin/tests/components/treetable/AddNodesOnExpand.java @@ -18,11 +18,13 @@ public class AddNodesOnExpand extends TestBase { treetable.setPageLength(0); treetable.addContainerProperty("foo", String.class, ""); treetable.addListener(new Tree.ExpandListener() { + @Override public void nodeExpand(ExpandEvent event) { Object openedItemId = event.getItemId(); if (!treetable.hasChildren(openedItemId)) { for (int j = 0; j < 3; j++) { - treetable.addItem(openedItemId + "-" + j); + treetable.addItem(new String[] { "Subitem " + j }, + openedItemId + "-" + j); treetable.setParent(openedItemId + "-" + j, openedItemId); } @@ -30,6 +32,7 @@ public class AddNodesOnExpand extends TestBase { } }); treetable.addListener(new Tree.CollapseListener() { + @Override public void nodeCollapse(CollapseEvent event) { /* Uncomment this to "fix" the TreeTable */ // orgTree.refreshRowCache(); @@ -37,7 +40,7 @@ public class AddNodesOnExpand extends TestBase { }); for (int i = 0; i < 3; i++) { - treetable.addItem(Integer.valueOf(i)); + treetable.addItem(new String[] { "Item " + i }, Integer.valueOf(i)); } addComponent(treetable); diff --git a/tests/testbench/com/vaadin/tests/components/treetable/ChangeDataSourcePageLengthZero.java b/tests/testbench/com/vaadin/tests/components/treetable/ChangeDataSourcePageLengthZero.java index 9cb60efd74..0fe8a3d1b9 100644 --- a/tests/testbench/com/vaadin/tests/components/treetable/ChangeDataSourcePageLengthZero.java +++ b/tests/testbench/com/vaadin/tests/components/treetable/ChangeDataSourcePageLengthZero.java @@ -21,12 +21,14 @@ public class ChangeDataSourcePageLengthZero extends TestBase { addComponent(tt); Button page1 = new Button("Set new data source (20 items)"); page1.addListener(new Button.ClickListener() { + @Override public void buttonClick(ClickEvent event) { setupContainer(tt, 20); } }); Button page2 = new Button("Set new data source (10 items)"); page2.addListener(new Button.ClickListener() { + @Override public void buttonClick(ClickEvent event) { setupContainer(tt, 10); } @@ -35,6 +37,7 @@ public class ChangeDataSourcePageLengthZero extends TestBase { addButton.addListener(new Button.ClickListener() { private int i = 1; + @Override public void buttonClick(ClickEvent event) { HierarchicalContainer container = (HierarchicalContainer) tt .getContainerDataSource(); diff --git a/tests/testbench/com/vaadin/tests/components/treetable/ComponentsInTreeTable.html b/tests/testbench/com/vaadin/tests/components/treetable/ComponentsInTreeTable.html new file mode 100644 index 0000000000..05c5986e6b --- /dev/null +++ b/tests/testbench/com/vaadin/tests/components/treetable/ComponentsInTreeTable.html @@ -0,0 +1,32 @@ +<?xml version="1.0" encoding="UTF-8"?> +<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd"> +<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en" lang="en"> +<head profile="http://selenium-ide.openqa.org/profiles/test-case"> +<meta http-equiv="Content-Type" content="text/html; charset=UTF-8" /> +<link rel="selenium.base" href="" /> +<title>ComponentsInTreeTable</title> +</head> +<body> +<table cellpadding="1" cellspacing="1" border="1"> +<thead> +<tr><td rowspan="1" colspan="3">ComponentsInTreeTable</td></tr> +</thead><tbody> +<tr> + <td>open</td> + <td>/run/com.vaadin.tests.components.treetable.ComponentsInTreeTable?restartApplication</td> + <td></td> +</tr> +<tr> + <td>mouseClick</td> + <td>vaadin=runcomvaadintestscomponentstreetableComponentsInTreeTable::/VVerticalLayout[0]/ChildComponentContainer[1]/VVerticalLayout[0]/ChildComponentContainer[0]/VTreeTable[0]/domChild[1]/domChild[0]/domChild[1]/domChild[0]/domChild[2]/domChild[0]/domChild[0]/domChild[0]</td> + <td>15,7</td> +</tr> +<tr> + <td>screenCapture</td> + <td></td> + <td></td> +</tr> + +</tbody></table> +</body> +</html> diff --git a/tests/testbench/com/vaadin/tests/components/treetable/ComponentsInTreeTable.java b/tests/testbench/com/vaadin/tests/components/treetable/ComponentsInTreeTable.java index 5b7700bc6e..8ff80204cc 100644 --- a/tests/testbench/com/vaadin/tests/components/treetable/ComponentsInTreeTable.java +++ b/tests/testbench/com/vaadin/tests/components/treetable/ComponentsInTreeTable.java @@ -7,6 +7,7 @@ import com.vaadin.ui.HorizontalLayout; import com.vaadin.ui.Label; import com.vaadin.ui.Layout; import com.vaadin.ui.TreeTable; +import com.vaadin.ui.VerticalLayout; public class ComponentsInTreeTable extends TestBase { @@ -14,28 +15,28 @@ public class ComponentsInTreeTable extends TestBase { protected void setup() { TreeTable tt = new TreeTable(); tt.setWidth("300px"); + tt.setHeight("300px"); addComponent(tt); - Object id, id2; + tt.addContainerProperty("component", Component.class, ""); + tt.addContainerProperty("type", String.class, "bar"); - tt.addContainerProperty("foo", Component.class, ""); - tt.addContainerProperty("bar", String.class, "bar"); - tt.addContainerProperty("baz", String.class, "baz"); - - id = tt.addItem(); Layout l = new HorizontalLayout(); l.addComponent(new Label("bar")); l.addComponent(new Label("bar")); - tt.getContainerProperty(id, "foo").setValue(l); + tt.addItem(new Object[] { l, "HorizontalLayout" }, 1); + + l = new VerticalLayout(); + l.addComponent(new Label("baz")); + l.addComponent(new Label("baz")); + tt.addItem(new Object[] { l, "VerticalLayout" }, 2); - id = tt.addItem(); Label lbl = new Label("<b>foo</b><br/><i>bar</i>"); lbl.setContentMode(Label.CONTENT_XHTML); - tt.getContainerProperty(id, "foo").setValue(lbl); + tt.addItem(new Object[] { lbl, "Label" }, 3); - id2 = tt.addItem(); - tt.setParent(id2, id); - tt.getContainerProperty(id2, "foo").setValue(new Button("Test")); + tt.addItem(new Object[] { new Button("Test"), "Button" }, 4); + tt.setParent(4, 3); } @Override diff --git a/tests/testbench/com/vaadin/tests/components/treetable/DynamicallyModified.java b/tests/testbench/com/vaadin/tests/components/treetable/DynamicallyModified.java index 89211dbecc..6dc5417d28 100644 --- a/tests/testbench/com/vaadin/tests/components/treetable/DynamicallyModified.java +++ b/tests/testbench/com/vaadin/tests/components/treetable/DynamicallyModified.java @@ -87,6 +87,7 @@ public class DynamicallyModified extends TestBase implements private int newChild = 1; + @Override public void nodeExpand(ExpandEvent event) { Object expandedItemId = event.getItemId(); // 7 == "Customer Project 1" @@ -100,6 +101,7 @@ public class DynamicallyModified extends TestBase implements treetable.setChildrenAllowed(newChildId, false); } + @Override public void nodeCollapse(CollapseEvent event) { Object collapsedItemId = event.getItemId(); diff --git a/tests/testbench/com/vaadin/tests/components/treetable/KeepAllItemsVisible.java b/tests/testbench/com/vaadin/tests/components/treetable/KeepAllItemsVisible.java index ad0255a2da..799537f923 100644 --- a/tests/testbench/com/vaadin/tests/components/treetable/KeepAllItemsVisible.java +++ b/tests/testbench/com/vaadin/tests/components/treetable/KeepAllItemsVisible.java @@ -37,6 +37,7 @@ public class KeepAllItemsVisible extends TestBase implements ExpandListener, tt.addListener((CollapseListener) this); tt.addListener(new ValueChangeListener() { + @Override public void valueChange(ValueChangeEvent event) { recalculatePageLength(tt); tt.requestRepaint(); @@ -49,6 +50,7 @@ public class KeepAllItemsVisible extends TestBase implements ExpandListener, Button b = new Button("Set pagelength to 10", new Button.ClickListener() { + @Override public void buttonClick(ClickEvent event) { tt.setPageLength(10); } @@ -56,6 +58,7 @@ public class KeepAllItemsVisible extends TestBase implements ExpandListener, addComponent(b); b = new Button("Set pagelength to 20", new Button.ClickListener() { + @Override public void buttonClick(ClickEvent event) { tt.setPageLength(20); } @@ -63,6 +66,7 @@ public class KeepAllItemsVisible extends TestBase implements ExpandListener, addComponent(b); b = new Button("Set pagelength to 0", new Button.ClickListener() { + @Override public void buttonClick(ClickEvent event) { tt.setPageLength(0); } @@ -121,11 +125,13 @@ public class KeepAllItemsVisible extends TestBase implements ExpandListener, return 7292; } + @Override public void nodeCollapse(CollapseEvent event) { recalculatePageLength((TreeTable) event.getSource()); } + @Override public void nodeExpand(ExpandEvent event) { recalculatePageLength((TreeTable) event.getSource()); } diff --git a/tests/testbench/com/vaadin/tests/components/treetable/ProgrammaticCollapse.java b/tests/testbench/com/vaadin/tests/components/treetable/ProgrammaticCollapse.java index 447ce6c465..ea76a9639a 100644 --- a/tests/testbench/com/vaadin/tests/components/treetable/ProgrammaticCollapse.java +++ b/tests/testbench/com/vaadin/tests/components/treetable/ProgrammaticCollapse.java @@ -30,6 +30,7 @@ public class ProgrammaticCollapse extends TestBase { layout.addComponent(table); layout.addComponent(new Button("Expand / Collapse", new ClickListener() { + @Override public void buttonClick(ClickEvent event) { boolean collapsed = !table.isCollapsed(1); Notification.show("set collapsed: " + collapsed); @@ -38,6 +39,7 @@ public class ProgrammaticCollapse extends TestBase { })); layout.addComponent(new Button("Expand / Collapse last", new ClickListener() { + @Override public void buttonClick(ClickEvent event) { boolean collapsed = !table.isCollapsed(100); Notification.show("set collapsed: " + collapsed); @@ -48,6 +50,7 @@ public class ProgrammaticCollapse extends TestBase { new ClickListener() { private boolean collapsed = true; + @Override public void buttonClick(ClickEvent event) { collapsed = !collapsed; Notification.show("set collapsed: " + collapsed); diff --git a/tests/testbench/com/vaadin/tests/components/treetable/ProgrammaticSelect.java b/tests/testbench/com/vaadin/tests/components/treetable/ProgrammaticSelect.java index fc68d0be15..7088497b4e 100644 --- a/tests/testbench/com/vaadin/tests/components/treetable/ProgrammaticSelect.java +++ b/tests/testbench/com/vaadin/tests/components/treetable/ProgrammaticSelect.java @@ -23,6 +23,7 @@ public class ProgrammaticSelect extends TestBase { Button selectItem = new Button("Select first row", new Button.ClickListener() { + @Override public void buttonClick(ClickEvent event) { Object id = tt.getItemIds().iterator().next(); tt.select(id); diff --git a/tests/testbench/com/vaadin/tests/components/treetable/RemoveAllItemsRefresh.java b/tests/testbench/com/vaadin/tests/components/treetable/RemoveAllItemsRefresh.java index 69198ca006..a92a9e045e 100644 --- a/tests/testbench/com/vaadin/tests/components/treetable/RemoveAllItemsRefresh.java +++ b/tests/testbench/com/vaadin/tests/components/treetable/RemoveAllItemsRefresh.java @@ -39,6 +39,7 @@ public class RemoveAllItemsRefresh extends TestBase { Button cleanUp = new Button("clear"); cleanUp.addListener(new ClickListener() { + @Override public void buttonClick(ClickEvent event) { treeContainer.removeAllItems(); } @@ -47,6 +48,7 @@ public class RemoveAllItemsRefresh extends TestBase { Button refresh = new Button("fill"); refresh.addListener(new ClickListener() { + @Override public void buttonClick(ClickEvent event) { fill(); } diff --git a/tests/testbench/com/vaadin/tests/components/treetable/TreeTableCacheOnPartialUpdates.java b/tests/testbench/com/vaadin/tests/components/treetable/TreeTableCacheOnPartialUpdates.java index ae6a9d0c0b..c2bd3da860 100644 --- a/tests/testbench/com/vaadin/tests/components/treetable/TreeTableCacheOnPartialUpdates.java +++ b/tests/testbench/com/vaadin/tests/components/treetable/TreeTableCacheOnPartialUpdates.java @@ -68,6 +68,7 @@ public class TreeTableCacheOnPartialUpdates extends TestBase { } public class Col3ColumnGenerator implements ColumnGenerator { + @Override public Component generateCell(final com.vaadin.ui.Table source, final Object itemId, Object columnId) { TestBean tb = (TestBean) itemId; @@ -78,6 +79,7 @@ public class TreeTableCacheOnPartialUpdates extends TestBase { System.out.println("Generating new Button for " + identifier); Button btnCol3 = new NativeButton(identifier); btnCol3.addListener(new Button.ClickListener() { + @Override public void buttonClick(ClickEvent event) { log.log("Button " + event.getButton().getCaption() + " clicked. Row index: " @@ -117,6 +119,7 @@ public class TreeTableCacheOnPartialUpdates extends TestBase { addComponent(b); b.addListener(new ClickListener() { + @Override public void buttonClick(ClickEvent event) { log.log("First visible item id is: " + treeTable.getCurrentPageFirstItemId()); @@ -131,6 +134,7 @@ public class TreeTableCacheOnPartialUpdates extends TestBase { cacheRateSelect.setValue(2); cacheRateSelect.addListener(new ValueChangeListener() { + @Override public void valueChange(ValueChangeEvent event) { treeTable .setCacheRate((Integer) event.getProperty().getValue()); @@ -154,6 +158,7 @@ public class TreeTableCacheOnPartialUpdates extends TestBase { treeTable.addGeneratedColumn("col3", new Col3ColumnGenerator()); treeTable.addListener(new ExpandListener() { + @Override public void nodeExpand(ExpandEvent event) { logExpandCollapse(event.getItemId(), "expanded"); @@ -161,6 +166,7 @@ public class TreeTableCacheOnPartialUpdates extends TestBase { }); treeTable.addListener(new CollapseListener() { + @Override public void nodeCollapse(CollapseEvent event) { logExpandCollapse(event.getItemId(), "collapsed"); diff --git a/tests/testbench/com/vaadin/tests/components/treetable/TreeTableModifyAndSetCollapsed.java b/tests/testbench/com/vaadin/tests/components/treetable/TreeTableModifyAndSetCollapsed.java index 336ffb5a52..02ce397a05 100644 --- a/tests/testbench/com/vaadin/tests/components/treetable/TreeTableModifyAndSetCollapsed.java +++ b/tests/testbench/com/vaadin/tests/components/treetable/TreeTableModifyAndSetCollapsed.java @@ -26,6 +26,7 @@ public class TreeTableModifyAndSetCollapsed extends TestBase { addComponent(tt); Button repopulate = new Button("Repopulate", new ClickListener() { + @Override public void buttonClick(ClickEvent event) { // repopulate the container and expand root item container.removeAllItems(); diff --git a/tests/testbench/com/vaadin/tests/components/treetable/TreeTableNegativeArraySize.html b/tests/testbench/com/vaadin/tests/components/treetable/TreeTableNegativeArraySize.html index 2e69052162..b57c5f978e 100644 --- a/tests/testbench/com/vaadin/tests/components/treetable/TreeTableNegativeArraySize.html +++ b/tests/testbench/com/vaadin/tests/components/treetable/TreeTableNegativeArraySize.html @@ -40,6 +40,11 @@ </tr> <!--collapse root2--> <tr> + <td>pause</td> + <td>1000</td> + <td></td> +</tr> +<tr> <td>mouseClick</td> <td>vaadin=runcomvaadintestscomponentstreetableTreeTablePartialUpdates::/VVerticalLayout[0]/ChildComponentContainer[1]/VVerticalLayout[0]/ChildComponentContainer[0]/VTreeTable[0]/domChild[1]/domChild[0]/domChild[1]/domChild[0]/domChild[42]/domChild[0]/domChild[0]/domChild[0]</td> <td>11,-182</td> @@ -49,7 +54,6 @@ <td></td> <td>root1-expanded-scrolled-to-end</td> </tr> - </tbody></table> </body> </html> diff --git a/tests/testbench/com/vaadin/tests/components/treetable/TreeTableOutOfSync.java b/tests/testbench/com/vaadin/tests/components/treetable/TreeTableOutOfSync.java index 0c1fcdbfd8..e688e039eb 100644 --- a/tests/testbench/com/vaadin/tests/components/treetable/TreeTableOutOfSync.java +++ b/tests/testbench/com/vaadin/tests/components/treetable/TreeTableOutOfSync.java @@ -16,6 +16,7 @@ public class TreeTableOutOfSync extends TestBase { TreeTable tt = new TreeTable(); tt.addContainerProperty("i", Integer.class, null); tt.addGeneratedColumn("text", new Table.ColumnGenerator() { + @Override public Object generateCell(Table source, Object itemId, Object columnId) { if ("text".equals(columnId)) { @@ -23,6 +24,7 @@ public class TreeTableOutOfSync extends TestBase { + source.getContainerDataSource().getItem(itemId) .getItemProperty("i").getValue()); button.addListener(new Button.ClickListener() { + @Override public void buttonClick(ClickEvent event) { getMainWindow().showNotification("click"); } diff --git a/tests/testbench/com/vaadin/tests/components/treetable/TreeTableSetCollapsed.java b/tests/testbench/com/vaadin/tests/components/treetable/TreeTableSetCollapsed.java index 2a14c946f3..7159addb5b 100644 --- a/tests/testbench/com/vaadin/tests/components/treetable/TreeTableSetCollapsed.java +++ b/tests/testbench/com/vaadin/tests/components/treetable/TreeTableSetCollapsed.java @@ -12,6 +12,7 @@ public class TreeTableSetCollapsed extends TestBase { createTreeTableAndPopulate(); addComponent(new Button("Create another TreeTable", new Button.ClickListener() { + @Override public void buttonClick(ClickEvent event) { createTreeTableAndPopulate(); } diff --git a/tests/testbench/com/vaadin/tests/components/treetable/TreeTableTest.java b/tests/testbench/com/vaadin/tests/components/treetable/TreeTableTest.java index d7d9c18d7e..f27a47f12b 100644 --- a/tests/testbench/com/vaadin/tests/components/treetable/TreeTableTest.java +++ b/tests/testbench/com/vaadin/tests/components/treetable/TreeTableTest.java @@ -27,6 +27,7 @@ public class TreeTableTest extends Tables<TreeTable> implements private int rootItemIds = 3; private CellStyleGenerator rootGreenSecondLevelRed = new com.vaadin.ui.Table.CellStyleGenerator() { + @Override public String getStyle(Object itemId, Object propertyId) { if (propertyId != null) { return null; @@ -54,6 +55,7 @@ public class TreeTableTest extends Tables<TreeTable> implements private CellStyleGenerator evenItemsBold = new CellStyleGenerator() { + @Override public String getStyle(Object itemId, Object propertyId) { if (propertyId != null) { return null; @@ -235,6 +237,7 @@ public class TreeTableTest extends Tables<TreeTable> implements */ private Command<TreeTable, Integer> rootItemIdsCommand = new Command<TreeTable, Integer>() { + @Override public void execute(TreeTable c, Integer value, Object data) { rootItemIds = value; updateContainer(); @@ -243,6 +246,7 @@ public class TreeTableTest extends Tables<TreeTable> implements private Command<TreeTable, Object> expandItemCommand = new Command<TreeTable, Object>() { + @Override public void execute(TreeTable c, Object itemId, Object data) { c.setCollapsed(itemId, false); } @@ -250,6 +254,7 @@ public class TreeTableTest extends Tables<TreeTable> implements private Command<TreeTable, Object> collapseItemCommand = new Command<TreeTable, Object>() { + @Override public void execute(TreeTable c, Object itemId, Object data) { c.setCollapsed(itemId, true); } @@ -257,6 +262,7 @@ public class TreeTableTest extends Tables<TreeTable> implements private Command<TreeTable, Boolean> setChildrenAllowedCommand = new Command<TreeTable, Boolean>() { + @Override public void execute(TreeTable c, Boolean areChildrenAllowed, Object itemId) { c.setChildrenAllowed(itemId, areChildrenAllowed); @@ -264,6 +270,7 @@ public class TreeTableTest extends Tables<TreeTable> implements }; private Command<TreeTable, Boolean> expandListenerCommand = new Command<TreeTable, Boolean>() { + @Override public void execute(TreeTable c, Boolean value, Object data) { if (value) { c.addListener((ExpandListener) TreeTableTest.this); @@ -274,6 +281,7 @@ public class TreeTableTest extends Tables<TreeTable> implements }; private Command<TreeTable, Boolean> collapseListenerCommand = new Command<TreeTable, Boolean>() { + @Override public void execute(TreeTable c, Boolean value, Object data) { if (value) { c.addListener((CollapseListener) TreeTableTest.this); @@ -285,15 +293,18 @@ public class TreeTableTest extends Tables<TreeTable> implements protected Command<TreeTable, Boolean> animationCommand = new Command<TreeTable, Boolean>() { + @Override public void execute(TreeTable c, Boolean enabled, Object data) { c.setAnimationsEnabled(enabled); } }; + @Override public void nodeCollapse(CollapseEvent event) { log(event.getClass().getSimpleName() + ": " + event.getItemId()); } + @Override public void nodeExpand(ExpandEvent event) { log(event.getClass().getSimpleName() + ": " + event.getItemId()); } diff --git a/tests/testbench/com/vaadin/tests/components/twincolselect/TwinColSelects.java b/tests/testbench/com/vaadin/tests/components/twincolselect/TwinColSelects.java index ddb418dab3..fc1b11bb94 100644 --- a/tests/testbench/com/vaadin/tests/components/twincolselect/TwinColSelects.java +++ b/tests/testbench/com/vaadin/tests/components/twincolselect/TwinColSelects.java @@ -51,12 +51,14 @@ public class TwinColSelects extends AbstractSelectTestCase<TwinColSelect> { private Command<TwinColSelect, Integer> columnsAction = new Command<TwinColSelect, Integer>() { + @Override public void execute(TwinColSelect c, Integer value, Object data) { c.setColumns(value); } }; private Command<TwinColSelect, Integer> rowsAction = new Command<TwinColSelect, Integer>() { + @Override public void execute(TwinColSelect c, Integer value, Object data) { c.setRows(value); } diff --git a/tests/testbench/com/vaadin/tests/components/upload/ForceSubmit.java b/tests/testbench/com/vaadin/tests/components/upload/ForceSubmit.java index 84e266dea2..47aad46348 100644 --- a/tests/testbench/com/vaadin/tests/components/upload/ForceSubmit.java +++ b/tests/testbench/com/vaadin/tests/components/upload/ForceSubmit.java @@ -21,6 +21,7 @@ public class ForceSubmit extends TestBase implements Receiver { return 6630; } + @Override public OutputStream receiveUpload(String filename, String MIMEType) { return new ByteArrayOutputStream(); } @@ -40,6 +41,7 @@ public class ForceSubmit extends TestBase implements Receiver { addComponent(u); u.addListener(new Upload.FinishedListener() { + @Override public void uploadFinished(FinishedEvent event) { String filename = event.getFilename(); long length = event.getLength(); @@ -49,12 +51,14 @@ public class ForceSubmit extends TestBase implements Receiver { }); u.addListener(new Upload.FailedListener() { + @Override public void uploadFailed(FailedEvent event) { getMainWindow().showNotification("Failed. No file selected?"); } }); u.addListener(new Upload.StartedListener() { + @Override public void uploadStarted(StartedEvent event) { getMainWindow().showNotification( "Started upload. TF value :" + textField.getValue()); @@ -64,6 +68,7 @@ public class ForceSubmit extends TestBase implements Receiver { Button button = new Button( "I'm an external button (not the uploads builtin), hit me to start upload."); button.addListener(new ClickListener() { + @Override public void buttonClick(ClickEvent event) { u.submitUpload(); } diff --git a/tests/testbench/com/vaadin/tests/components/upload/TestFileUpload.java b/tests/testbench/com/vaadin/tests/components/upload/TestFileUpload.java index 4f1e8358f4..529a977ede 100644 --- a/tests/testbench/com/vaadin/tests/components/upload/TestFileUpload.java +++ b/tests/testbench/com/vaadin/tests/components/upload/TestFileUpload.java @@ -21,6 +21,7 @@ public class TestFileUpload extends TestBase implements Receiver { protected void setup() { Upload u = new Upload("Upload", new Upload.Receiver() { + @Override public OutputStream receiveUpload(String filename, String mimeType) { return baos; } @@ -28,6 +29,7 @@ public class TestFileUpload extends TestBase implements Receiver { u.setDebugId("UPL"); u.addListener(new Upload.FinishedListener() { + @Override public void uploadFinished(FinishedEvent event) { String hash = DigestUtils.md5Hex(baos.toByteArray()); log.log("Upload finished. Name: " + event.getFilename() @@ -40,6 +42,7 @@ public class TestFileUpload extends TestBase implements Receiver { addComponent(u); } + @Override public OutputStream receiveUpload(String filename, String MIMEType) { getMainWindow().showNotification("Receiving upload"); return new ByteArrayOutputStream(); diff --git a/tests/testbench/com/vaadin/tests/components/upload/TestImmediateUploadInFormLayout.java b/tests/testbench/com/vaadin/tests/components/upload/TestImmediateUploadInFormLayout.java index b6126f41da..7607536357 100644 --- a/tests/testbench/com/vaadin/tests/components/upload/TestImmediateUploadInFormLayout.java +++ b/tests/testbench/com/vaadin/tests/components/upload/TestImmediateUploadInFormLayout.java @@ -46,6 +46,7 @@ public class TestImmediateUploadInFormLayout extends return Collections.emptyList(); } + @Override public OutputStream receiveUpload(String filename, String MIMEType) { getMainWindow().showNotification("Receiving upload"); return new ByteArrayOutputStream(); diff --git a/tests/testbench/com/vaadin/tests/components/upload/TestUpload.java b/tests/testbench/com/vaadin/tests/components/upload/TestUpload.java index 535372f710..9ca0cb9c38 100644 --- a/tests/testbench/com/vaadin/tests/components/upload/TestUpload.java +++ b/tests/testbench/com/vaadin/tests/components/upload/TestUpload.java @@ -32,6 +32,7 @@ public class TestUpload extends ComponentTestCase<Upload> implements Receiver { addTestComponent(u); u.addListener(new Upload.FinishedListener() { + @Override public void uploadFinished(FinishedEvent event) { getMainWindow().showNotification("Done"); } @@ -51,6 +52,7 @@ public class TestUpload extends ComponentTestCase<Upload> implements Receiver { return actions; } + @Override public OutputStream receiveUpload(String filename, String MIMEType) { getMainWindow().showNotification("Receiving upload"); return new ByteArrayOutputStream(); diff --git a/tests/testbench/com/vaadin/tests/components/upload/TestUploadAndDisableOnSuccess.java b/tests/testbench/com/vaadin/tests/components/upload/TestUploadAndDisableOnSuccess.java index 0aa8e809c4..516ca2d7c9 100644 --- a/tests/testbench/com/vaadin/tests/components/upload/TestUploadAndDisableOnSuccess.java +++ b/tests/testbench/com/vaadin/tests/components/upload/TestUploadAndDisableOnSuccess.java @@ -51,6 +51,7 @@ public class TestUploadAndDisableOnSuccess extends ComponentTestCase<Upload> u.addListener(new Upload.StartedListener() { + @Override public void uploadStarted(StartedEvent event) { /* * Remove component before upload from the same vertical layout. @@ -63,6 +64,7 @@ public class TestUploadAndDisableOnSuccess extends ComponentTestCase<Upload> }); u.addListener(new Upload.FinishedListener() { + @Override public void uploadFinished(FinishedEvent event) { getMainWindow().showNotification("Done"); l.setValue(getUploadcount()); @@ -81,6 +83,7 @@ public class TestUploadAndDisableOnSuccess extends ComponentTestCase<Upload> actions.add(createButtonAction("Toggle Enabled", new Command<Upload, Boolean>() { + @Override public void execute(Upload c, Boolean value, Object data) { c.setEnabled(!c.isEnabled()); } @@ -89,6 +92,7 @@ public class TestUploadAndDisableOnSuccess extends ComponentTestCase<Upload> return actions; } + @Override public OutputStream receiveUpload(String filename, String MIMEType) { // sleep to ensure change before upload is complete try { diff --git a/tests/testbench/com/vaadin/tests/components/upload/TestUploadFilename.java b/tests/testbench/com/vaadin/tests/components/upload/TestUploadFilename.java index 12006412f2..de0cca5009 100644 --- a/tests/testbench/com/vaadin/tests/components/upload/TestUploadFilename.java +++ b/tests/testbench/com/vaadin/tests/components/upload/TestUploadFilename.java @@ -23,6 +23,7 @@ public class TestUploadFilename extends TestBase { addComponent(result); upload.addListener(new Upload.FinishedListener() { + @Override public void uploadFinished(FinishedEvent event) { result.setValue("Got file (should not contain path): " + receiver.getFilename()); @@ -35,6 +36,7 @@ public class TestUploadFilename extends TestBase { private String filename; + @Override public OutputStream receiveUpload(String filename, String MIMEType) { this.filename = filename; return new ByteArrayOutputStream(); diff --git a/tests/testbench/com/vaadin/tests/components/window/AttachShouldBeCalledForSubWindows.java b/tests/testbench/com/vaadin/tests/components/window/AttachShouldBeCalledForSubWindows.java index ae3d4bc053..52a94daec7 100644 --- a/tests/testbench/com/vaadin/tests/components/window/AttachShouldBeCalledForSubWindows.java +++ b/tests/testbench/com/vaadin/tests/components/window/AttachShouldBeCalledForSubWindows.java @@ -84,6 +84,7 @@ public class AttachShouldBeCalledForSubWindows extends AbstractTestCase }; okButton.addListener(new ClickListener() { + @Override public void buttonClick(ClickEvent event) { log.log("Button clicked"); @@ -114,6 +115,7 @@ public class AttachShouldBeCalledForSubWindows extends AbstractTestCase return 8170; } + @Override public void onRequestStart(HttpServletRequest request, HttpServletResponse response) { if (request.getParameter("attachMainFirst") != null) { @@ -122,6 +124,7 @@ public class AttachShouldBeCalledForSubWindows extends AbstractTestCase } + @Override public void onRequestEnd(HttpServletRequest request, HttpServletResponse response) { // TODO Auto-generated method stub diff --git a/tests/testbench/com/vaadin/tests/components/window/CloseSubWindow.java b/tests/testbench/com/vaadin/tests/components/window/CloseSubWindow.java index bcfbc7f55a..e618cd38b5 100644 --- a/tests/testbench/com/vaadin/tests/components/window/CloseSubWindow.java +++ b/tests/testbench/com/vaadin/tests/components/window/CloseSubWindow.java @@ -18,6 +18,7 @@ public class CloseSubWindow extends TestBase { Button openWindowButton = new Button("Open sub-window"); openWindowButton.setDebugId("opensub"); openWindowButton.addListener(new ClickListener() { + @Override public void buttonClick(ClickEvent event) { Window sub = createClosableSubWindow("Sub-window"); getMainWindow().addWindow(sub); @@ -36,6 +37,7 @@ public class CloseSubWindow extends TestBase { Button closeButton = new Button("Close"); closeButton.addListener(new ClickListener() { + @Override public void buttonClick(ClickEvent event) { event.getButton().findAncestor(Window.class).close(); } @@ -44,6 +46,7 @@ public class CloseSubWindow extends TestBase { Button removeButton = new Button("Remove from parent"); removeButton.addListener(new ClickListener() { + @Override public void buttonClick(ClickEvent event) { window.close(); } @@ -51,6 +54,7 @@ public class CloseSubWindow extends TestBase { window.addComponent(closeButton); window.addListener(new CloseListener() { + @Override public void windowClose(CloseEvent e) { log.log("Window '" + title + "' closed"); } diff --git a/tests/testbench/com/vaadin/tests/components/window/DownloadAndUpdate.java b/tests/testbench/com/vaadin/tests/components/window/DownloadAndUpdate.java index ca9c31513f..76b93cae56 100644 --- a/tests/testbench/com/vaadin/tests/components/window/DownloadAndUpdate.java +++ b/tests/testbench/com/vaadin/tests/components/window/DownloadAndUpdate.java @@ -12,6 +12,7 @@ public class DownloadAndUpdate extends TestBase { protected void setup() { addComponent(new Button("Download and update", new Button.ClickListener() { + @Override public void buttonClick(ClickEvent event) { downloadAndUpdate(); } diff --git a/tests/testbench/com/vaadin/tests/components/window/ExecuteJavaScript.java b/tests/testbench/com/vaadin/tests/components/window/ExecuteJavaScript.java index bf979b1aa3..a9744b2c06 100644 --- a/tests/testbench/com/vaadin/tests/components/window/ExecuteJavaScript.java +++ b/tests/testbench/com/vaadin/tests/components/window/ExecuteJavaScript.java @@ -26,6 +26,7 @@ public class ExecuteJavaScript extends AbstractTestCase { Button b = new Button(script); b.addListener(new Button.ClickListener() { + @Override public void buttonClick(ClickEvent event) { getMainWindow().executeJavaScript(script); } diff --git a/tests/testbench/com/vaadin/tests/components/window/ExtraWindowShown.java b/tests/testbench/com/vaadin/tests/components/window/ExtraWindowShown.java index e81e02b22b..fc8d7474af 100644 --- a/tests/testbench/com/vaadin/tests/components/window/ExtraWindowShown.java +++ b/tests/testbench/com/vaadin/tests/components/window/ExtraWindowShown.java @@ -13,12 +13,14 @@ public class ExtraWindowShown extends TestBase { protected void setup() { Button b = new Button("Open window", new Button.ClickListener() { + @Override public void buttonClick(ClickEvent event) { final Window w = new Window("Sub window"); w.center(); w.addComponent(new Button("Close", new Button.ClickListener() { + @Override public void buttonClick(ClickEvent event) { w.close(); } diff --git a/tests/testbench/com/vaadin/tests/components/window/LazyWindowResize.java b/tests/testbench/com/vaadin/tests/components/window/LazyWindowResize.java index 9eaabf7340..eb4803630f 100644 --- a/tests/testbench/com/vaadin/tests/components/window/LazyWindowResize.java +++ b/tests/testbench/com/vaadin/tests/components/window/LazyWindowResize.java @@ -2,9 +2,9 @@ package com.vaadin.tests.components.window; import com.vaadin.data.Property.ValueChangeEvent; import com.vaadin.data.Property.ValueChangeListener; +import com.vaadin.shared.ui.label.ContentMode; import com.vaadin.terminal.Page.BrowserWindowResizeEvent; import com.vaadin.terminal.Page.BrowserWindowResizeListener; -import com.vaadin.terminal.gwt.client.ui.label.ContentMode; import com.vaadin.tests.components.AbstractTestCase; import com.vaadin.tests.util.Log; import com.vaadin.tests.util.LoremIpsum; @@ -25,12 +25,14 @@ public class LazyWindowResize extends AbstractTestCase { protected ResizeListener resizeListener = new ResizeListener() { + @Override public void windowResized(ResizeEvent e) { log.log("Sub window resized"); } }; protected BrowserWindowResizeListener browserWindowResizeListener = new BrowserWindowResizeListener() { + @Override public void browserWindowResized(BrowserWindowResizeEvent event) { log.log("Main window resized"); } @@ -63,6 +65,7 @@ public class LazyWindowResize extends AbstractTestCase { lazyMode.setImmediate(true); lazyMode.addListener(new ValueChangeListener() { + @Override public void valueChange(ValueChangeEvent event) { setLazy(lazyMode.getValue()); } @@ -72,6 +75,7 @@ public class LazyWindowResize extends AbstractTestCase { resizeListenerCheckBox.setImmediate(true); resizeListenerCheckBox.addListener(new ValueChangeListener() { + @Override public void valueChange(ValueChangeEvent event) { if (resizeListenerCheckBox.getValue()) { subWindow.addListener(resizeListener); @@ -88,6 +92,7 @@ public class LazyWindowResize extends AbstractTestCase { immediateCheckBox.setImmediate(true); immediateCheckBox.addListener(new ValueChangeListener() { + @Override public void valueChange(ValueChangeEvent event) { mainWindow.setImmediate(immediateCheckBox.getValue()); subWindow.setImmediate(immediateCheckBox.getValue()); diff --git a/tests/testbench/com/vaadin/tests/components/window/LongNotifications.java b/tests/testbench/com/vaadin/tests/components/window/LongNotifications.java index c916973713..be67cfe9a0 100644 --- a/tests/testbench/com/vaadin/tests/components/window/LongNotifications.java +++ b/tests/testbench/com/vaadin/tests/components/window/LongNotifications.java @@ -25,6 +25,7 @@ public class LongNotifications extends TestBase { Button b = new Button("Show loooong notification", new Button.ClickListener() { + @Override public void buttonClick(ClickEvent event) { getMainWindow().showNotification( @@ -38,6 +39,7 @@ public class LongNotifications extends TestBase { b = new Button("Show notifications", new Button.ClickListener() { + @Override public void buttonClick(ClickEvent event) { getMainWindow().showNotification("Example failed", @@ -51,6 +53,7 @@ public class LongNotifications extends TestBase { b = new Button("Show loooong notification (error)", new Button.ClickListener() { + @Override public void buttonClick(ClickEvent event) { getMainWindow() @@ -65,6 +68,7 @@ public class LongNotifications extends TestBase { b = new Button("Show notification (error)", new Button.ClickListener() { + @Override public void buttonClick(ClickEvent event) { getMainWindow().showNotification("Example failed", diff --git a/tests/testbench/com/vaadin/tests/components/window/RepaintWindowContents.java b/tests/testbench/com/vaadin/tests/components/window/RepaintWindowContents.java index 353eb535ca..59cd35c2cb 100644 --- a/tests/testbench/com/vaadin/tests/components/window/RepaintWindowContents.java +++ b/tests/testbench/com/vaadin/tests/components/window/RepaintWindowContents.java @@ -30,6 +30,7 @@ public class RepaintWindowContents extends AbstractTestRoot { button1.addListener(new ClickListener() { + @Override public void buttonClick(ClickEvent event) { window.setContent(layout2); } @@ -37,6 +38,7 @@ public class RepaintWindowContents extends AbstractTestRoot { button2.addListener(new ClickListener() { + @Override public void buttonClick(ClickEvent event) { window.setContent(layout1); } diff --git a/tests/testbench/com/vaadin/tests/components/window/SubWindowFocus.java b/tests/testbench/com/vaadin/tests/components/window/SubWindowFocus.java index f0dccda66c..389c926986 100644 --- a/tests/testbench/com/vaadin/tests/components/window/SubWindowFocus.java +++ b/tests/testbench/com/vaadin/tests/components/window/SubWindowFocus.java @@ -41,6 +41,7 @@ public class SubWindowFocus extends TestBase { addComponent(tf); Button b = new Button("new", new Button.ClickListener() { + @Override public void buttonClick(ClickEvent event) { final Window win = new Window("Subwin"); win.getContent().setWidth(null); @@ -56,10 +57,12 @@ public class SubWindowFocus extends TestBase { ShortcutAction spc = new ShortcutAction("Space", ShortcutAction.KeyCode.SPACEBAR, null); + @Override public Action[] getActions(Object target, Object sender) { return new Action[] { esc, spc }; } + @Override public void handleAction(Action action, Object sender, Object target) { if (action == esc) { diff --git a/tests/testbench/com/vaadin/tests/components/window/SubWindowFocusAndBlurListeners.java b/tests/testbench/com/vaadin/tests/components/window/SubWindowFocusAndBlurListeners.java index 1e342abe01..061ee7900f 100644 --- a/tests/testbench/com/vaadin/tests/components/window/SubWindowFocusAndBlurListeners.java +++ b/tests/testbench/com/vaadin/tests/components/window/SubWindowFocusAndBlurListeners.java @@ -36,12 +36,14 @@ public class SubWindowFocusAndBlurListeners extends TestBase { window.addComponent(new TextField()); window.addListener(new FocusListener() { + @Override public void focus(FocusEvent event) { Notification.show("Focused window"); } }); window.addListener(new BlurListener() { + @Override public void blur(BlurEvent event) { Notification.show("Blurred window"); } @@ -51,10 +53,12 @@ public class SubWindowFocusAndBlurListeners extends TestBase { private Action[] s = new Action[] { new ShortcutAction("^Save") }; + @Override public Action[] getActions(Object target, Object sender) { return s; } + @Override public void handleAction(Action action, Object sender, Object target) { Notification.show("Action!"); } @@ -68,6 +72,7 @@ public class SubWindowFocusAndBlurListeners extends TestBase { Button button = new Button("Bring to front (should focus too)", new Button.ClickListener() { + @Override public void buttonClick(ClickEvent event) { window.bringToFront(); } diff --git a/tests/testbench/com/vaadin/tests/components/window/SubWindowOrder.java b/tests/testbench/com/vaadin/tests/components/window/SubWindowOrder.java index 9b4fcea22b..02241476d5 100644 --- a/tests/testbench/com/vaadin/tests/components/window/SubWindowOrder.java +++ b/tests/testbench/com/vaadin/tests/components/window/SubWindowOrder.java @@ -64,6 +64,7 @@ public class SubWindowOrder extends TestBase { toggleModality.addListener(this); } + @Override public void buttonClick(ClickEvent event) { if (event.getButton() == bf) { getCurWindow().bringToFront(); diff --git a/tests/testbench/com/vaadin/tests/components/window/SubWindowWithUndefinedHeight.java b/tests/testbench/com/vaadin/tests/components/window/SubWindowWithUndefinedHeight.java index fc99309b50..5bda762d3f 100644 --- a/tests/testbench/com/vaadin/tests/components/window/SubWindowWithUndefinedHeight.java +++ b/tests/testbench/com/vaadin/tests/components/window/SubWindowWithUndefinedHeight.java @@ -38,6 +38,7 @@ public class SubWindowWithUndefinedHeight extends TestBase { tabsheet.addComponent(tabButton); tabsheet.addComponent(table); tabsheet.addListener(new TabSheet.SelectedTabChangeListener() { + @Override public void selectedTabChange(TabSheet.SelectedTabChangeEvent event) { if (tabsheet.getSelectedTab() == tabButton) { tabsheet.setSizeUndefined(); @@ -54,6 +55,7 @@ public class SubWindowWithUndefinedHeight extends TestBase { subwindow.addComponent(tabsheet); Button button = new Button("click me", new Button.ClickListener() { + @Override public void buttonClick(Button.ClickEvent event) { getMainWindow().addWindow(subwindow); } diff --git a/tests/testbench/com/vaadin/tests/components/window/SubWindows.java b/tests/testbench/com/vaadin/tests/components/window/SubWindows.java index e939f0b9a4..c39bfdb713 100644 --- a/tests/testbench/com/vaadin/tests/components/window/SubWindows.java +++ b/tests/testbench/com/vaadin/tests/components/window/SubWindows.java @@ -32,6 +32,7 @@ public class SubWindows extends TestBase { Button b = new Button("Remove"); b.addListener(new ClickListener() { + @Override public void buttonClick(ClickEvent event) { Button b = event.getButton(); ComponentContainer cc = (ComponentContainer) b.getParent(); @@ -51,6 +52,7 @@ public class SubWindows extends TestBase { autoWideWindow.addComponent(new TextField("Field 2")); autoWideWindow.addComponent(new Button("Add", new ClickListener() { + @Override public void buttonClick(ClickEvent event) { autoWideWindow.addComponent(createRemoveButton()); diff --git a/tests/testbench/com/vaadin/tests/components/window/SubwindowDraggability.java b/tests/testbench/com/vaadin/tests/components/window/SubwindowDraggability.java index e1927982cd..45fb343b45 100644 --- a/tests/testbench/com/vaadin/tests/components/window/SubwindowDraggability.java +++ b/tests/testbench/com/vaadin/tests/components/window/SubwindowDraggability.java @@ -21,6 +21,7 @@ public class SubwindowDraggability extends TestBase { Button b = new Button("Swap", new Button.ClickListener() { + @Override public void buttonClick(ClickEvent event) { boolean b = draggableSubWindow.isDraggable(); diff --git a/tests/testbench/com/vaadin/tests/components/window/TooltipInWindow.html b/tests/testbench/com/vaadin/tests/components/window/TooltipInWindow.html new file mode 100644 index 0000000000..d734cab9ea --- /dev/null +++ b/tests/testbench/com/vaadin/tests/components/window/TooltipInWindow.html @@ -0,0 +1,69 @@ +<?xml version="1.0" encoding="UTF-8"?> +<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd"> +<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en" lang="en"> +<head profile="http://selenium-ide.openqa.org/profiles/test-case"> +<meta http-equiv="Content-Type" content="text/html; charset=UTF-8" /> +<link rel="selenium.base" href="" /> +<title>TooltipInWindow</title> +</head> +<body> +<table cellpadding="1" cellspacing="1" border="1"> +<thead> +<tr><td rowspan="1" colspan="3">TooltipInWindow</td></tr> +</thead><tbody> +<tr> + <td>open</td> + <td>/run/com.vaadin.tests.components.window.TooltipInWindow?restartApplication</td> + <td></td> +</tr> +<!--Show tooltip in Root--> +<tr> + <td>showTooltip</td> + <td>vaadin=runcomvaadintestscomponentswindowTooltipInWindow::/VVerticalLayout[0]/VVerticalLayout[0]/VTextField[0]</td> + <td>5,5</td> +</tr> +<tr> + <td>pause</td> + <td>1000</td> + <td></td> +</tr> +<tr> + <td>assertText</td> + <td>vaadin=runcomvaadintestscomponentswindowTooltipInWindow::Root/VTooltip[0]/FlowPanel[0]/domChild[1]</td> + <td>My tooltip</td> +</tr> +<!--Hide the tooltip--> +<tr> + <td>showTooltip</td> + <td>vaadin=runcomvaadintestscomponentswindowTooltipInWindow::/VVerticalLayout[0]</td> + <td>0,0</td> +</tr> +<tr> + <td>pause</td> + <td>1000</td> + <td></td> +</tr> +<tr> + <td>assertElementNotPresent</td> + <td>vaadin=runcomvaadintestscomponentswindowTooltipInWindow::Root/VTooltip[0]</td> + <td></td> +</tr> +<!--Show tooltip in Window--> +<tr> + <td>showTooltip</td> + <td>vaadin=runcomvaadintestscomponentswindowTooltipInWindow::/VWindow[0]/FocusableScrollPanel[0]/VVerticalLayout[0]/VTextField[0]</td> + <td>5,5</td> +</tr> +<tr> + <td>pause</td> + <td>1000</td> + <td></td> +</tr> +<tr> + <td>assertText</td> + <td>vaadin=runcomvaadintestscomponentswindowTooltipInWindow::Root/VTooltip[0]/FlowPanel[0]/domChild[1]</td> + <td>My tooltip</td> +</tr> +</tbody></table> +</body> +</html> diff --git a/tests/testbench/com/vaadin/tests/components/window/TooltipInWindow.java b/tests/testbench/com/vaadin/tests/components/window/TooltipInWindow.java new file mode 100644 index 0000000000..184bde9b14 --- /dev/null +++ b/tests/testbench/com/vaadin/tests/components/window/TooltipInWindow.java @@ -0,0 +1,41 @@ +/* +@VaadinApache2LicenseForJavaFiles@ + */ + +package com.vaadin.tests.components.window; + +import com.vaadin.terminal.WrappedRequest; +import com.vaadin.tests.components.AbstractTestRoot; +import com.vaadin.ui.TextField; +import com.vaadin.ui.Window; + +public class TooltipInWindow extends AbstractTestRoot { + + @Override + protected void setup(WrappedRequest request) { + Window window = new Window("Window"); + window.getContent().setSizeUndefined(); + window.center(); + window.addComponent(createTextField()); + + addWindow(window); + addComponent(createTextField()); + } + + private TextField createTextField() { + TextField tf = new TextField("TextField with a tooltip"); + tf.setDescription("My tooltip"); + return tf; + } + + @Override + protected String getTestDescription() { + return "Tooltips should also work in a Window (as well as in other overlays)"; + } + + @Override + protected Integer getTicketNumber() { + return Integer.valueOf(9172); + } + +} diff --git a/tests/testbench/com/vaadin/tests/components/window/UndefinedHeightSubWindowAndContent.java b/tests/testbench/com/vaadin/tests/components/window/UndefinedHeightSubWindowAndContent.java index ed259b2f4c..715d089f57 100644 --- a/tests/testbench/com/vaadin/tests/components/window/UndefinedHeightSubWindowAndContent.java +++ b/tests/testbench/com/vaadin/tests/components/window/UndefinedHeightSubWindowAndContent.java @@ -28,6 +28,7 @@ public class UndefinedHeightSubWindowAndContent extends TestBase { field1.setImmediate(true); field1.addValidator(new Validator() { + @Override public void validate(Object value) throws InvalidValueException { if (!isValid(value)) { throw new InvalidValueException("FAIL!"); diff --git a/tests/testbench/com/vaadin/tests/components/window/WindowClickEvents.java b/tests/testbench/com/vaadin/tests/components/window/WindowClickEvents.java index 041ccaaf30..a4120b7d42 100644 --- a/tests/testbench/com/vaadin/tests/components/window/WindowClickEvents.java +++ b/tests/testbench/com/vaadin/tests/components/window/WindowClickEvents.java @@ -29,6 +29,7 @@ public class WindowClickEvents extends TestBase { protected void setup() { VerticalLayout layout = new VerticalLayout(); layout.addListener(new LayoutClickListener() { + @Override public void layoutClick(LayoutClickEvent event) { WindowClickEvents.this.click("Sub window layout", event); } @@ -36,6 +37,7 @@ public class WindowClickEvents extends TestBase { ((VerticalLayout) getMainWindow().getContent()) .addListener(new LayoutClickListener() { + @Override public void layoutClick(LayoutClickEvent event) { WindowClickEvents.this.click("Main window layout", event); @@ -45,6 +47,7 @@ public class WindowClickEvents extends TestBase { Window centered = new Window("A window with a click listener", layout); centered.addListener(new ClickListener() { + @Override public void click(ClickEvent event) { WindowClickEvents.this.click("Sub window", event); } @@ -60,6 +63,7 @@ public class WindowClickEvents extends TestBase { "Clicking here should not produce a layout click event"); b.addListener(new Button.ClickListener() { + @Override public void buttonClick(com.vaadin.ui.Button.ClickEvent event) { log.log("Click on button"); } @@ -73,6 +77,7 @@ public class WindowClickEvents extends TestBase { addComponent(log); getMainWindow().addListener(new ClickListener() { + @Override public void click(ClickEvent event) { WindowClickEvents.this.click("Main window", event); } diff --git a/tests/testbench/com/vaadin/tests/components/window/WindowResizeListener.java b/tests/testbench/com/vaadin/tests/components/window/WindowResizeListener.java index ac6c313d29..74d7b564db 100644 --- a/tests/testbench/com/vaadin/tests/components/window/WindowResizeListener.java +++ b/tests/testbench/com/vaadin/tests/components/window/WindowResizeListener.java @@ -34,6 +34,7 @@ public class WindowResizeListener extends TestBase { getLayout().addComponent(l); getMainWindow().addListener(new Page.BrowserWindowResizeListener() { + @Override public void browserWindowResized(BrowserWindowResizeEvent event) { l.setValue("Current browser window size: " + getMainWindow().getBrowserWindowWidth() + " x " @@ -45,6 +46,7 @@ public class WindowResizeListener extends TestBase { subwindow.setImmediate(true); subwindow.addListener(new Property.ValueChangeListener() { + @Override public void valueChange(ValueChangeEvent event) { if ((Boolean) event.getProperty().getValue()) { getMainWindow().addWindow(subwin); @@ -58,6 +60,7 @@ public class WindowResizeListener extends TestBase { CheckBox immediate = new CheckBox("immediate"); immediate.addListener(new Property.ValueChangeListener() { + @Override public void valueChange(ValueChangeEvent event) { boolean booleanValue = (Boolean) event.getProperty().getValue(); getMainWindow().setImmediate(booleanValue); @@ -87,6 +90,7 @@ class ResizeListenerWindow extends Window { hl.addComponent(sizeLabel); addListener(new ResizeListener() { + @Override public void windowResized(ResizeEvent e) { updateLabel(); } diff --git a/tests/testbench/com/vaadin/tests/components/window/WindowScrollingComponentIntoView.java b/tests/testbench/com/vaadin/tests/components/window/WindowScrollingComponentIntoView.java index 9f3f27cf6a..fdeb21d29c 100644 --- a/tests/testbench/com/vaadin/tests/components/window/WindowScrollingComponentIntoView.java +++ b/tests/testbench/com/vaadin/tests/components/window/WindowScrollingComponentIntoView.java @@ -60,6 +60,7 @@ public class WindowScrollingComponentIntoView extends AbstractTestCase { window.addComponent(new Button("Scroll mainwin to X9", new ClickListener() { + @Override public void buttonClick(ClickEvent event) { getMainWindow().scrollIntoView(x9); @@ -67,6 +68,7 @@ public class WindowScrollingComponentIntoView extends AbstractTestCase { })); window.addComponent(new Button("Scroll mainwin to Y9", new ClickListener() { + @Override public void buttonClick(ClickEvent event) { getMainWindow().scrollIntoView(y9); @@ -100,6 +102,7 @@ public class WindowScrollingComponentIntoView extends AbstractTestCase { ((VerticalLayout) getMainWindow().getContent()).addComponent( new Button("Scroll win to X9", new ClickListener() { + @Override public void buttonClick(ClickEvent event) { throw new RuntimeException("Currently not implemented"); // window.scrollIntoView(x29); @@ -107,6 +110,7 @@ public class WindowScrollingComponentIntoView extends AbstractTestCase { }), 0); ((VerticalLayout) getMainWindow().getContent()).addComponent( new Button("Scroll win to Y9", new ClickListener() { + @Override public void buttonClick(ClickEvent event) { throw new RuntimeException("Currently not implemented"); // window.scrollIntoView(y29); diff --git a/tests/testbench/com/vaadin/tests/components/window/WindowScrollingUp.java b/tests/testbench/com/vaadin/tests/components/window/WindowScrollingUp.java index 2054b751ef..43f8297a5d 100644 --- a/tests/testbench/com/vaadin/tests/components/window/WindowScrollingUp.java +++ b/tests/testbench/com/vaadin/tests/components/window/WindowScrollingUp.java @@ -26,6 +26,7 @@ public class WindowScrollingUp extends AbstractTestCase { final Button up = new Button("up"); up.addListener(new Button.ClickListener() { + @Override public void buttonClick(ClickEvent event) { up.getRoot().setScrollTop(0); } diff --git a/tests/testbench/com/vaadin/tests/components/window/WindowShouldRemoveActionHandler.java b/tests/testbench/com/vaadin/tests/components/window/WindowShouldRemoveActionHandler.java index 88fb014690..fa01706c56 100644 --- a/tests/testbench/com/vaadin/tests/components/window/WindowShouldRemoveActionHandler.java +++ b/tests/testbench/com/vaadin/tests/components/window/WindowShouldRemoveActionHandler.java @@ -30,6 +30,7 @@ public class WindowShouldRemoveActionHandler extends TestBase { Button add = new Button("Add an action handler", new Button.ClickListener() { + @Override public void buttonClick(ClickEvent event) { add(); } @@ -38,6 +39,7 @@ public class WindowShouldRemoveActionHandler extends TestBase { Button addAnother = new Button("Add another action handler", new Button.ClickListener() { + @Override public void buttonClick(ClickEvent event) { addAnother(); } @@ -46,6 +48,7 @@ public class WindowShouldRemoveActionHandler extends TestBase { Button remove = new Button("Remove an action handler", new Button.ClickListener() { + @Override public void buttonClick(ClickEvent event) { remove(); } @@ -71,12 +74,14 @@ public class WindowShouldRemoveActionHandler extends TestBase { getMainWindow().getCaption() + " - Added handler"); Handler actionHandler = new Handler() { + @Override public Action[] getActions(Object target, Object sender) { return new Action[] { new ShortcutAction("Ctrl+Left", ShortcutAction.KeyCode.ARROW_LEFT, new int[] { ModifierKey.CTRL }) }; } + @Override public void handleAction(Action action, Object sender, Object target) { getMainWindow().showNotification( "Handling action " + action.getCaption()); @@ -90,12 +95,14 @@ public class WindowShouldRemoveActionHandler extends TestBase { public void addAnother() { Handler actionHandler = new Handler() { + @Override public Action[] getActions(Object target, Object sender) { return new Action[] { new ShortcutAction("Ctrl+Right", ShortcutAction.KeyCode.ARROW_RIGHT, new int[] { ModifierKey.CTRL }) }; } + @Override public void handleAction(Action action, Object sender, Object target) { getMainWindow().showNotification( "Handling action " + action.getCaption()); diff --git a/tests/testbench/com/vaadin/tests/components/window/WindowStyleNames.java b/tests/testbench/com/vaadin/tests/components/window/WindowStyleNames.java index 3a36926b42..615f391613 100644 --- a/tests/testbench/com/vaadin/tests/components/window/WindowStyleNames.java +++ b/tests/testbench/com/vaadin/tests/components/window/WindowStyleNames.java @@ -22,6 +22,7 @@ public class WindowStyleNames extends TestBase { setWindowStyle("old"); addComponent(new Button("Set style to 'new'", new ClickListener() { + @Override public void buttonClick(ClickEvent event) { setWindowStyle("new"); } @@ -30,6 +31,7 @@ public class WindowStyleNames extends TestBase { addComponent(new Button("Set style to 'custom'", new ClickListener() { + @Override public void buttonClick(ClickEvent event) { setWindowStyle("custom"); } @@ -38,6 +40,7 @@ public class WindowStyleNames extends TestBase { addComponent(new Button("Add 'foo' style", new ClickListener() { + @Override public void buttonClick(ClickEvent event) { getMainWindow().addStyleName("foo"); } diff --git a/tests/testbench/com/vaadin/tests/containers/BeanItemContainerFilteringTest.java b/tests/testbench/com/vaadin/tests/containers/BeanItemContainerFilteringTest.java index 77a3efa6ad..4f41410ba3 100644 --- a/tests/testbench/com/vaadin/tests/containers/BeanItemContainerFilteringTest.java +++ b/tests/testbench/com/vaadin/tests/containers/BeanItemContainerFilteringTest.java @@ -89,6 +89,7 @@ public class BeanItemContainerFilteringTest extends TestBase { final CheckBox cb = new CheckBox("Filter on value"); cb.addListener(new ValueChangeListener() { + @Override public void valueChange(ValueChangeEvent event) { container.removeAllContainerFilters(); if (((CheckBox) event.getProperty()).getValue()) { @@ -108,6 +109,7 @@ public class BeanItemContainerFilteringTest extends TestBase { final Button addItemButton = new Button("addItem()", new Button.ClickListener() { + @Override public void buttonClick(ClickEvent event) { container.addItem(new TestBean("addItem() " + nextToAdd, "value " + nextToAdd)); @@ -120,6 +122,7 @@ public class BeanItemContainerFilteringTest extends TestBase { final Button addItemAfterButton = new Button("addItemAfter()", new Button.ClickListener() { + @Override public void buttonClick(ClickEvent event) { Object selection = table.getValue(); if (selection == null) { @@ -145,6 +148,7 @@ public class BeanItemContainerFilteringTest extends TestBase { final Button addItemAtButton = new Button("addItemAt()", new Button.ClickListener() { + @Override public void buttonClick(ClickEvent event) { int index = Integer.parseInt(position.getValue() .toString()); diff --git a/tests/testbench/com/vaadin/tests/containers/HierarchicalWrapperOrdering.java b/tests/testbench/com/vaadin/tests/containers/HierarchicalWrapperOrdering.java index f60e0c74e7..eba8ded705 100644 --- a/tests/testbench/com/vaadin/tests/containers/HierarchicalWrapperOrdering.java +++ b/tests/testbench/com/vaadin/tests/containers/HierarchicalWrapperOrdering.java @@ -94,6 +94,7 @@ public class HierarchicalWrapperOrdering extends TestBase { new ClickListener() { private static final long serialVersionUID = 1L; + @Override public void buttonClick(ClickEvent event) { // Get first item Object itemId = indexedContainer.getIdByIndex(0); diff --git a/tests/testbench/com/vaadin/tests/containers/IndexedContainerFilteringTest.java b/tests/testbench/com/vaadin/tests/containers/IndexedContainerFilteringTest.java index 2ed5de3bfa..b30ef3e616 100644 --- a/tests/testbench/com/vaadin/tests/containers/IndexedContainerFilteringTest.java +++ b/tests/testbench/com/vaadin/tests/containers/IndexedContainerFilteringTest.java @@ -56,6 +56,7 @@ public class IndexedContainerFilteringTest extends TestBase { final CheckBox cb = new CheckBox("Filter"); cb.addListener(new ValueChangeListener() { + @Override public void valueChange(ValueChangeEvent event) { container.removeAllContainerFilters(); if (((CheckBox) event.getProperty()).getValue()) { @@ -75,6 +76,7 @@ public class IndexedContainerFilteringTest extends TestBase { final Button addItemButton = new Button("addItem()", new Button.ClickListener() { + @Override public void buttonClick(ClickEvent event) { Item item = container.addItem("addItem() " + nextToAdd); if (item != null) { @@ -90,6 +92,7 @@ public class IndexedContainerFilteringTest extends TestBase { final Button addItemAfterButton = new Button("addItemAfter()", new Button.ClickListener() { + @Override public void buttonClick(ClickEvent event) { Object selection = table.getValue(); if (selection == null) { @@ -117,6 +120,7 @@ public class IndexedContainerFilteringTest extends TestBase { final Button addItemAtButton = new Button("addItemAt()", new Button.ClickListener() { + @Override public void buttonClick(ClickEvent event) { int index = Integer.parseInt(position.getValue() .toString()); diff --git a/tests/testbench/com/vaadin/tests/containers/TestItemSorter.java b/tests/testbench/com/vaadin/tests/containers/TestItemSorter.java index 0a1c592876..46c4e004c1 100644 --- a/tests/testbench/com/vaadin/tests/containers/TestItemSorter.java +++ b/tests/testbench/com/vaadin/tests/containers/TestItemSorter.java @@ -27,6 +27,7 @@ public class TestItemSorter extends TestBase { populateContainer(container); container.setItemSorter(new DefaultItemSorter(new Comparator<Object>() { + @Override public int compare(Object o1, Object o2) { if (o1 instanceof CheckBox && o2 instanceof CheckBox) { Boolean b1 = (Boolean) ((CheckBox) o1).getValue(); diff --git a/tests/testbench/com/vaadin/tests/containers/filesystemcontainer/FileSystemContainerInTreeTable.java b/tests/testbench/com/vaadin/tests/containers/filesystemcontainer/FileSystemContainerInTreeTable.java index 91403f54d6..0afaf2c15f 100644 --- a/tests/testbench/com/vaadin/tests/containers/filesystemcontainer/FileSystemContainerInTreeTable.java +++ b/tests/testbench/com/vaadin/tests/containers/filesystemcontainer/FileSystemContainerInTreeTable.java @@ -51,6 +51,7 @@ public class FileSystemContainerInTreeTable extends TestBase { treeTable.setColumnWidth("Name", 400); treeTable.addListener(new ExpandListener() { + @Override public void nodeExpand(ExpandEvent event) { logExpandCollapse(event.getItemId(), "expanded"); @@ -58,6 +59,7 @@ public class FileSystemContainerInTreeTable extends TestBase { }); treeTable.addListener(new CollapseListener() { + @Override public void nodeCollapse(CollapseEvent event) { logExpandCollapse(event.getItemId(), "collapsed"); @@ -71,6 +73,7 @@ public class FileSystemContainerInTreeTable extends TestBase { buttonLayout.setSpacing(true); buttonLayout.addComponent(new Button("Create dir11", new Button.ClickListener() { + @Override public void buttonClick(ClickEvent event) { new File(folder, "dir11").mkdir(); log.log("Row dir11 created"); @@ -78,6 +81,7 @@ public class FileSystemContainerInTreeTable extends TestBase { })); buttonLayout.addComponent(new Button("Delete dir11", new Button.ClickListener() { + @Override public void buttonClick(ClickEvent event) { new File(folder, "dir11").delete(); log.log("Row dir11 deleted"); @@ -86,6 +90,7 @@ public class FileSystemContainerInTreeTable extends TestBase { // to clean up explicitly before ending an automated test buttonLayout.addComponent(new Button("Clean all files", new Button.ClickListener() { + @Override public void buttonClick(ClickEvent event) { folder.delete(); } diff --git a/tests/testbench/com/vaadin/tests/containers/sqlcontainer/CheckboxUpdateProblem.java b/tests/testbench/com/vaadin/tests/containers/sqlcontainer/CheckboxUpdateProblem.java index 674f610ed7..f34c12607a 100644 --- a/tests/testbench/com/vaadin/tests/containers/sqlcontainer/CheckboxUpdateProblem.java +++ b/tests/testbench/com/vaadin/tests/containers/sqlcontainer/CheckboxUpdateProblem.java @@ -1,8 +1,6 @@ package com.vaadin.tests.containers.sqlcontainer; -import java.sql.Connection; import java.sql.SQLException; -import java.sql.Statement; import com.vaadin.Application; import com.vaadin.data.Container.ItemSetChangeEvent; @@ -10,11 +8,6 @@ import com.vaadin.data.Container.ItemSetChangeListener; import com.vaadin.data.Item; import com.vaadin.data.Property; import com.vaadin.data.Property.ValueChangeEvent; -import com.vaadin.data.util.sqlcontainer.AllTests; -import com.vaadin.data.util.sqlcontainer.SQLContainer; -import com.vaadin.data.util.sqlcontainer.connection.JDBCConnectionPool; -import com.vaadin.data.util.sqlcontainer.connection.SimpleJDBCConnectionPool; -import com.vaadin.data.util.sqlcontainer.query.TableQuery; import com.vaadin.ui.Button; import com.vaadin.ui.Button.ClickEvent; import com.vaadin.ui.Form; @@ -45,6 +38,7 @@ public class CheckboxUpdateProblem extends Application.LegacyApplication databaseHelper.getTestContainer().addListener( new ItemSetChangeListener() { + @Override public void containerItemSetChange(ItemSetChangeEvent event) { Object selected = testList.getValue(); if (selected != null) { @@ -62,6 +56,7 @@ public class CheckboxUpdateProblem extends Application.LegacyApplication getMainWindow().setContent(horizontalSplit); } + @Override public void valueChange(ValueChangeEvent event) { Property<?> property = event.getProperty(); @@ -89,6 +84,7 @@ public class CheckboxUpdateProblem extends Application.LegacyApplication getFooter().setVisible(false); } + @Override public void buttonClick(ClickEvent event) { if (event.getSource() == save) { super.commit(); @@ -115,75 +111,4 @@ public class CheckboxUpdateProblem extends Application.LegacyApplication } - private class DatabaseHelper { - - private JDBCConnectionPool connectionPool = null; - private SQLContainer testContainer = null; - private static final String TABLENAME = "testtable"; - - public DatabaseHelper() { - initConnectionPool(); - initDatabase(); - initContainers(); - } - - private void initDatabase() { - try { - Connection conn = connectionPool.reserveConnection(); - Statement statement = conn.createStatement(); - try { - statement.execute("drop table " + TABLENAME); - } catch (SQLException e) { - // Will fail if table doesn't exist, which is OK. - conn.rollback(); - } - switch (AllTests.db) { - case MYSQL: - statement - .execute("create table " - + TABLENAME - + " (id integer auto_increment not null, field1 varchar(100), field2 boolean, primary key(id))"); - break; - case POSTGRESQL: - statement - .execute("create table " - + TABLENAME - + " (\"id\" serial primary key, \"field1\" varchar(100), \"field2\" boolean)"); - break; - } - statement.executeUpdate("insert into " + TABLENAME - + " values(default, 'Kalle', 'true')"); - statement.close(); - conn.commit(); - connectionPool.releaseConnection(conn); - } catch (SQLException e) { - e.printStackTrace(); - } - } - - private void initContainers() { - try { - TableQuery q1 = new TableQuery(TABLENAME, connectionPool); - q1.setVersionColumn("id"); - testContainer = new SQLContainer(q1); - } catch (SQLException e) { - e.printStackTrace(); - } - } - - private void initConnectionPool() { - try { - connectionPool = new SimpleJDBCConnectionPool( - AllTests.dbDriver, AllTests.dbURL, AllTests.dbUser, - AllTests.dbPwd, 2, 5); - } catch (SQLException e) { - e.printStackTrace(); - } - } - - public SQLContainer getTestContainer() { - return testContainer; - } - } - } diff --git a/tests/testbench/com/vaadin/tests/containers/sqlcontainer/ComboBoxUpdateProblem.java b/tests/testbench/com/vaadin/tests/containers/sqlcontainer/ComboBoxUpdateProblem.java new file mode 100644 index 0000000000..b7d1b8c37e --- /dev/null +++ b/tests/testbench/com/vaadin/tests/containers/sqlcontainer/ComboBoxUpdateProblem.java @@ -0,0 +1,27 @@ +package com.vaadin.tests.containers.sqlcontainer; + +import com.vaadin.Application; +import com.vaadin.ui.AbstractSelect.Filtering; +import com.vaadin.ui.ComboBox; +import com.vaadin.ui.Root; + +/** + * See http://dev.vaadin.com/ticket/9155 . + */ +public class ComboBoxUpdateProblem extends Application.LegacyApplication { + private final DatabaseHelper databaseHelper = new DatabaseHelper(); + + @Override + public void init() { + setMainWindow(new Root.LegacyWindow("Test window")); + + ComboBox combo = new ComboBox("Names", + databaseHelper.getTestContainer()); + combo.setItemCaptionPropertyId("FIELD1"); + combo.setFilteringMode(Filtering.FILTERINGMODE_CONTAINS); + combo.setImmediate(true); + + getMainWindow().addComponent(combo); + } + +}
\ No newline at end of file diff --git a/tests/testbench/com/vaadin/tests/containers/sqlcontainer/DatabaseHelper.java b/tests/testbench/com/vaadin/tests/containers/sqlcontainer/DatabaseHelper.java new file mode 100644 index 0000000000..b7b1e74eb0 --- /dev/null +++ b/tests/testbench/com/vaadin/tests/containers/sqlcontainer/DatabaseHelper.java @@ -0,0 +1,91 @@ +package com.vaadin.tests.containers.sqlcontainer; + +import java.sql.Connection; +import java.sql.SQLException; +import java.sql.Statement; + +import com.vaadin.data.util.sqlcontainer.AllTests; +import com.vaadin.data.util.sqlcontainer.SQLContainer; +import com.vaadin.data.util.sqlcontainer.connection.JDBCConnectionPool; +import com.vaadin.data.util.sqlcontainer.connection.SimpleJDBCConnectionPool; +import com.vaadin.data.util.sqlcontainer.query.TableQuery; + +class DatabaseHelper { + + private JDBCConnectionPool connectionPool = null; + private SQLContainer testContainer = null; + private static final String TABLENAME = "testtable"; + + public DatabaseHelper() { + initConnectionPool(); + initDatabase(); + initContainers(); + } + + private void initDatabase() { + try { + Connection conn = connectionPool.reserveConnection(); + Statement statement = conn.createStatement(); + try { + statement.execute("drop table " + TABLENAME); + } catch (SQLException e) { + // Will fail if table doesn't exist, which is OK. + conn.rollback(); + } + switch (AllTests.db) { + case HSQLDB: + statement + .execute("create table " + + TABLENAME + + " (id integer GENERATED BY DEFAULT AS IDENTITY, field1 varchar(100), field2 boolean, primary key(id))"); + break; + case MYSQL: + statement + .execute("create table " + + TABLENAME + + " (id integer auto_increment not null, field1 varchar(100), field2 boolean, primary key(id))"); + break; + case POSTGRESQL: + statement + .execute("create table " + + TABLENAME + + " (\"id\" serial primary key, \"field1\" varchar(100), \"field2\" boolean)"); + break; + } + statement.executeUpdate("insert into " + TABLENAME + + " values(default, 'Kalle', 'true')"); + statement.executeUpdate("insert into " + TABLENAME + + " values(default, 'Ville', 'true')"); + statement.executeUpdate("insert into " + TABLENAME + + " values(default, 'Jussi', 'true')"); + statement.close(); + conn.commit(); + connectionPool.releaseConnection(conn); + } catch (SQLException e) { + e.printStackTrace(); + } + } + + private void initContainers() { + try { + TableQuery q1 = new TableQuery(TABLENAME, connectionPool); + q1.setVersionColumn("id"); + testContainer = new SQLContainer(q1); + } catch (SQLException e) { + e.printStackTrace(); + } + } + + private void initConnectionPool() { + try { + connectionPool = new SimpleJDBCConnectionPool(AllTests.dbDriver, + AllTests.dbURL, AllTests.dbUser, AllTests.dbPwd, 2, 5); + } catch (SQLException e) { + e.printStackTrace(); + } + } + + public SQLContainer getTestContainer() { + return testContainer; + } +}
\ No newline at end of file diff --git a/tests/testbench/com/vaadin/tests/containers/sqlcontainer/MassInsertMemoryLeakTestApp.java b/tests/testbench/com/vaadin/tests/containers/sqlcontainer/MassInsertMemoryLeakTestApp.java index 2b76612c35..dc919fdb12 100644 --- a/tests/testbench/com/vaadin/tests/containers/sqlcontainer/MassInsertMemoryLeakTestApp.java +++ b/tests/testbench/com/vaadin/tests/containers/sqlcontainer/MassInsertMemoryLeakTestApp.java @@ -35,6 +35,7 @@ public class MassInsertMemoryLeakTestApp extends Application.LegacyApplication { setMainWindow(new LegacyWindow("SQLContainer Test", buildLayout())); process.addListener(new Button.ClickListener() { + @Override public void buttonClick(ClickEvent event) { MassInsert mi = new MassInsert(); mi.start(); diff --git a/tests/testbench/com/vaadin/tests/converter/ConverterThatEnforcesAFormat.java b/tests/testbench/com/vaadin/tests/converter/ConverterThatEnforcesAFormat.java index 8b17cb3f48..59aa45dc36 100644 --- a/tests/testbench/com/vaadin/tests/converter/ConverterThatEnforcesAFormat.java +++ b/tests/testbench/com/vaadin/tests/converter/ConverterThatEnforcesAFormat.java @@ -16,6 +16,7 @@ public class ConverterThatEnforcesAFormat extends TestBase { "This field should always be formatted with 3 digits"); tf.setConverter(new StringToDoubleConverterWithThreeFractionDigits()); tf.addListener(new ValueChangeListener() { + @Override public void valueChange(ValueChangeEvent event) { log.log("Value changed to " + event.getProperty().getValue() diff --git a/tests/testbench/com/vaadin/tests/dd/AcceptAnythingWindow.java b/tests/testbench/com/vaadin/tests/dd/AcceptAnythingWindow.java index 308f002e4f..5d57de388c 100644 --- a/tests/testbench/com/vaadin/tests/dd/AcceptAnythingWindow.java +++ b/tests/testbench/com/vaadin/tests/dd/AcceptAnythingWindow.java @@ -7,7 +7,7 @@ import com.vaadin.event.dd.DragAndDropEvent; import com.vaadin.event.dd.DropHandler; import com.vaadin.event.dd.acceptcriteria.AcceptAll; import com.vaadin.event.dd.acceptcriteria.AcceptCriterion; -import com.vaadin.terminal.gwt.client.MouseEventDetails; +import com.vaadin.shared.MouseEventDetails; import com.vaadin.ui.AbsoluteLayout; import com.vaadin.ui.AbsoluteLayout.ComponentPosition; import com.vaadin.ui.Component; @@ -28,10 +28,12 @@ public class AcceptAnythingWindow extends Window { final DragAndDropWrapper wrapper = new DragAndDropWrapper(layout); wrapper.setDropHandler(new DropHandler() { + @Override public AcceptCriterion getAcceptCriterion() { return AcceptAll.get(); } + @Override public void drop(DragAndDropEvent event) { WrapperTargetDetails ed = (WrapperTargetDetails) event .getTargetDetails(); diff --git a/tests/testbench/com/vaadin/tests/dd/AcceptFromComponent.java b/tests/testbench/com/vaadin/tests/dd/AcceptFromComponent.java index 43bdce2ad4..99dd069142 100644 --- a/tests/testbench/com/vaadin/tests/dd/AcceptFromComponent.java +++ b/tests/testbench/com/vaadin/tests/dd/AcceptFromComponent.java @@ -7,7 +7,7 @@ import com.vaadin.event.dd.DragAndDropEvent; import com.vaadin.event.dd.DropHandler; import com.vaadin.event.dd.acceptcriteria.AcceptCriterion; import com.vaadin.event.dd.acceptcriteria.ServerSideCriterion; -import com.vaadin.terminal.gwt.client.MouseEventDetails; +import com.vaadin.shared.MouseEventDetails; import com.vaadin.ui.AbsoluteLayout; import com.vaadin.ui.AbsoluteLayout.ComponentPosition; import com.vaadin.ui.Component; @@ -37,6 +37,7 @@ public class AcceptFromComponent extends Window { final ServerSideCriterion serverSideCriterion = new ServerSideCriterion() { + @Override public boolean accept(DragAndDropEvent dragEvent) { Transferable transferable = dragEvent.getTransferable(); if (transferable instanceof TransferableImpl) { @@ -51,10 +52,12 @@ public class AcceptFromComponent extends Window { wrapper.setDropHandler(new DropHandler() { + @Override public AcceptCriterion getAcceptCriterion() { return serverSideCriterion; } + @Override public void drop(DragAndDropEvent event) { WrapperTargetDetails ed = (WrapperTargetDetails) event diff --git a/tests/testbench/com/vaadin/tests/dd/ActiveDragSourceClassName.java b/tests/testbench/com/vaadin/tests/dd/ActiveDragSourceClassName.java index 93e99274bb..9ef1b4029b 100644 --- a/tests/testbench/com/vaadin/tests/dd/ActiveDragSourceClassName.java +++ b/tests/testbench/com/vaadin/tests/dd/ActiveDragSourceClassName.java @@ -23,6 +23,7 @@ public class ActiveDragSourceClassName extends TestBase { private static final String GREENBOXES = ".greenblock {float:left; width:60px;height:60px;background: green !important; padding:0; margin:2px;-webkit-transition: width 0.3s ease-in-out;}"; private static final String HIDEDRAGSOURCE = ".v-active-drag-source { overflow:hidden; width:0px !important;}"; + @Override protected void setup() { TestUtils.injectCSS(getMainWindow(), GREENBOXES + HIDEDRAGSOURCE); @@ -69,10 +70,12 @@ public class ActiveDragSourceClassName extends TestBase { private DropHandler dh = new DropHandler() { + @Override public AcceptCriterion getAcceptCriterion() { return AcceptAll.get(); } + @Override public void drop(DragAndDropEvent dropEvent) { Transferable transferable = dropEvent.getTransferable(); if (transferable instanceof TransferableImpl) { diff --git a/tests/testbench/com/vaadin/tests/dd/CustomDDImplementation.java b/tests/testbench/com/vaadin/tests/dd/CustomDDImplementation.java index 2b38a3438e..f6e196761e 100644 --- a/tests/testbench/com/vaadin/tests/dd/CustomDDImplementation.java +++ b/tests/testbench/com/vaadin/tests/dd/CustomDDImplementation.java @@ -38,14 +38,17 @@ public class CustomDDImplementation extends CustomComponent { * */ class MyDropTarget extends AbstractComponent implements DropTarget { + @Override public DropHandler getDropHandler() { return new DropHandler() { + @Override public void drop(DragAndDropEvent event) { // Do something with data return; } + @Override public AcceptCriterion getAcceptCriterion() { return AcceptAll.get(); } @@ -53,6 +56,7 @@ public class CustomDDImplementation extends CustomComponent { }; } + @Override public TargetDetails translateDropTargetDetails( Map<String, Object> clientVariables) { // If component has some special drop details that it needs to diff --git a/tests/testbench/com/vaadin/tests/dd/DDTest1.java b/tests/testbench/com/vaadin/tests/dd/DDTest1.java index 0d709844e9..2067d559d7 100644 --- a/tests/testbench/com/vaadin/tests/dd/DDTest1.java +++ b/tests/testbench/com/vaadin/tests/dd/DDTest1.java @@ -10,8 +10,8 @@ import com.vaadin.event.dd.DragAndDropEvent; import com.vaadin.event.dd.DropHandler; import com.vaadin.event.dd.acceptcriteria.AcceptCriterion; import com.vaadin.event.dd.acceptcriteria.ServerSideCriterion; +import com.vaadin.shared.ui.dd.VerticalDropLocation; import com.vaadin.terminal.ExternalResource; -import com.vaadin.terminal.gwt.client.ui.dd.VerticalDropLocation; import com.vaadin.tests.components.TestBase; import com.vaadin.ui.AbstractSelect.AcceptItem; import com.vaadin.ui.Component; @@ -62,6 +62,7 @@ public class DDTest1 extends TestBase { */ private static final long serialVersionUID = 1L; + @Override public boolean accept(DragAndDropEvent dragEvent) { Transferable transferable = dragEvent.getTransferable(); // System.out.println("Simulating 500ms processing..."); @@ -188,6 +189,7 @@ public class DDTest1 extends TestBase { } + @Override public void drop(DragAndDropEvent event) { TreeTargetDetails details = (TreeTargetDetails) event .getTargetDetails(); @@ -224,6 +226,7 @@ public class DDTest1 extends TestBase { return; } + @Override public AcceptCriterion getAcceptCriterion() { // TODO should actually check that source is same as target return AcceptItem.ALL; diff --git a/tests/testbench/com/vaadin/tests/dd/DDTest2.java b/tests/testbench/com/vaadin/tests/dd/DDTest2.java index 0dda0d693c..272be53034 100644 --- a/tests/testbench/com/vaadin/tests/dd/DDTest2.java +++ b/tests/testbench/com/vaadin/tests/dd/DDTest2.java @@ -88,6 +88,7 @@ public class DDTest2 extends TestBase { }; tree3.setDropHandler(new DropHandler() { + @Override public void drop(DragAndDropEvent dropEvent) { Transferable transferable = dropEvent.getTransferable(); @@ -110,6 +111,7 @@ public class DDTest2 extends TestBase { } + @Override public AcceptCriterion getAcceptCriterion() { return crit; } @@ -136,6 +138,7 @@ public class DDTest2 extends TestBase { DropHandler dropHandler = new DropHandler() { + @Override public void drop(DragAndDropEvent event) { /* * We know transferrable is from table, so it is of type @@ -177,6 +180,7 @@ public class DDTest2 extends TestBase { } + @Override public AcceptCriterion getAcceptCriterion() { return and; } @@ -194,6 +198,7 @@ public class DDTest2 extends TestBase { */ dropHandler = new DropHandler() { + @Override public void drop(DragAndDropEvent event) { AbstractSelectTargetDetails details = (AbstractSelectTargetDetails) event .getTargetDetails(); @@ -233,6 +238,7 @@ public class DDTest2 extends TestBase { } } + @Override public AcceptCriterion getAcceptCriterion() { return AcceptItem.ALL; } diff --git a/tests/testbench/com/vaadin/tests/dd/DDTest4.java b/tests/testbench/com/vaadin/tests/dd/DDTest4.java index 654a30486a..c7f0c6960b 100644 --- a/tests/testbench/com/vaadin/tests/dd/DDTest4.java +++ b/tests/testbench/com/vaadin/tests/dd/DDTest4.java @@ -9,7 +9,7 @@ import com.vaadin.event.dd.DragAndDropEvent; import com.vaadin.event.dd.DropHandler; import com.vaadin.event.dd.acceptcriteria.AcceptCriterion; import com.vaadin.event.dd.acceptcriteria.SourceIs; -import com.vaadin.terminal.gwt.client.ui.dd.VerticalDropLocation; +import com.vaadin.shared.ui.dd.VerticalDropLocation; import com.vaadin.tests.components.TestBase; import com.vaadin.tests.util.Person; import com.vaadin.tests.util.PersonContainer; @@ -64,10 +64,12 @@ public class DDTest4 extends TestBase { // accept only drags from this table AcceptCriterion crit = new SourceIs(table); + @Override public AcceptCriterion getAcceptCriterion() { return crit; } + @Override public void drop(DragAndDropEvent dropEvent) { AbstractSelectTargetDetails dropTargetData = (AbstractSelectTargetDetails) dropEvent .getTargetDetails(); diff --git a/tests/testbench/com/vaadin/tests/dd/DDTest5.java b/tests/testbench/com/vaadin/tests/dd/DDTest5.java index a5d97f4473..63d1e9e3c2 100644 --- a/tests/testbench/com/vaadin/tests/dd/DDTest5.java +++ b/tests/testbench/com/vaadin/tests/dd/DDTest5.java @@ -86,10 +86,12 @@ public class DDTest5 extends TestBase { dh = new DropHandler() { + @Override public AcceptCriterion getAcceptCriterion() { return AcceptAll.get(); } + @Override public void drop(DragAndDropEvent dropEvent) { /* diff --git a/tests/testbench/com/vaadin/tests/dd/DDTest6.java b/tests/testbench/com/vaadin/tests/dd/DDTest6.java index c6c6689bcb..c6ac0b1859 100644 --- a/tests/testbench/com/vaadin/tests/dd/DDTest6.java +++ b/tests/testbench/com/vaadin/tests/dd/DDTest6.java @@ -25,12 +25,12 @@ import com.vaadin.event.dd.acceptcriteria.AcceptAll; import com.vaadin.event.dd.acceptcriteria.AcceptCriterion; import com.vaadin.event.dd.acceptcriteria.Not; import com.vaadin.event.dd.acceptcriteria.SourceIsTarget; +import com.vaadin.shared.MouseEventDetails; import com.vaadin.terminal.Resource; import com.vaadin.terminal.StreamResource; import com.vaadin.terminal.StreamResource.StreamSource; import com.vaadin.terminal.StreamVariable; import com.vaadin.terminal.ThemeResource; -import com.vaadin.terminal.gwt.client.MouseEventDetails; import com.vaadin.tests.components.TestBase; import com.vaadin.tests.util.TestUtils; import com.vaadin.ui.AbsoluteLayout; @@ -97,10 +97,12 @@ public class DDTest6 extends TestBase { tree1.setDragMode(TreeDragMode.NODE); DropHandler dropHandler = new DropHandler() { + @Override public AcceptCriterion getAcceptCriterion() { return AcceptAll.get(); } + @Override public void drop(DragAndDropEvent dropEvent) { File file = null; Folder folder = null; @@ -127,12 +129,14 @@ public class DDTest6 extends TestBase { private Action[] actions = new Action[] { new Action("Remove") }; + @Override public void handleAction(Action action, Object sender, Object target) { ContainerHierarchicalWrapper containerDataSource = (ContainerHierarchicalWrapper) tree1 .getContainerDataSource(); containerDataSource.removeItemRecursively(target); } + @Override public Action[] getActions(Object target, Object sender) { return actions; } @@ -140,6 +144,7 @@ public class DDTest6 extends TestBase { tree1.addActionHandler(actionHandler); tree1.addListener(new Property.ValueChangeListener() { + @Override public void valueChange(ValueChangeEvent event) { Object value = event.getProperty().getValue(); if (value != null && !(value instanceof Folder)) { @@ -215,6 +220,7 @@ public class DDTest6 extends TestBase { public Resource getResource() { StreamSource streamSource = new StreamSource() { + @Override public InputStream getStream() { if (bas != null) { byte[] byteArray = bas.toByteArray(); @@ -355,6 +361,7 @@ public class DDTest6 extends TestBase { } + @Override @SuppressWarnings("static-access") public void drop(DragAndDropEvent dropEvent) { @@ -402,29 +409,36 @@ public class DDTest6 extends TestBase { StreamVariable streamVariable = new StreamVariable() { + @Override public OutputStream getOutputStream() { return bas; } + @Override public boolean listenProgress() { return false; } + @Override public void onProgress(StreamingProgressEvent event) { } + @Override public void streamingStarted( StreamingStartEvent event) { } + @Override public void streamingFinished( StreamingEndEvent event) { } + @Override public void streamingFailed( StreamingErrorEvent event) { } + @Override public boolean isInterrupted() { return false; } @@ -448,6 +462,7 @@ public class DDTest6 extends TestBase { } } + @Override public AcceptCriterion getAcceptCriterion() { return AcceptAll.get(); } @@ -473,6 +488,7 @@ public class DDTest6 extends TestBase { l.addComponent(new Label(name)); l.addListener(new LayoutClickListener() { + @Override @SuppressWarnings("static-access") public void layoutClick(LayoutClickEvent event) { if (event.isDoubleClick()) { @@ -506,10 +522,12 @@ public class DDTest6 extends TestBase { setDropHandler(new DropHandler() { + @Override public AcceptCriterion getAcceptCriterion() { return new Not(SourceIsTarget.get()); } + @Override public void drop(DragAndDropEvent dropEvent) { File f = null; diff --git a/tests/testbench/com/vaadin/tests/dd/DDTest7.java b/tests/testbench/com/vaadin/tests/dd/DDTest7.java index 26521f5a57..f9be935b23 100644 --- a/tests/testbench/com/vaadin/tests/dd/DDTest7.java +++ b/tests/testbench/com/vaadin/tests/dd/DDTest7.java @@ -95,10 +95,12 @@ public class DDTest7 extends TestBase { } }; + @Override public AcceptCriterion getAcceptCriterion() { return crit; } + @Override public void drop(DragAndDropEvent dropEvent) { AbstractSelectTargetDetails dropTargetData = (AbstractSelectTargetDetails) dropEvent .getTargetDetails(); diff --git a/tests/testbench/com/vaadin/tests/dd/DDTest8.java b/tests/testbench/com/vaadin/tests/dd/DDTest8.java index fed889b5c1..ee7d8d9dc5 100644 --- a/tests/testbench/com/vaadin/tests/dd/DDTest8.java +++ b/tests/testbench/com/vaadin/tests/dd/DDTest8.java @@ -10,7 +10,7 @@ import com.vaadin.event.dd.DragAndDropEvent; import com.vaadin.event.dd.DropHandler; import com.vaadin.event.dd.acceptcriteria.AcceptCriterion; import com.vaadin.event.dd.acceptcriteria.Or; -import com.vaadin.terminal.gwt.client.ui.dd.VerticalDropLocation; +import com.vaadin.shared.ui.dd.VerticalDropLocation; import com.vaadin.tests.components.TestBase; import com.vaadin.ui.AbstractSelect; import com.vaadin.ui.Tree; @@ -113,6 +113,7 @@ public class DDTest8 extends TestBase { } + @Override public void drop(DragAndDropEvent event) { TreeTargetDetails details = (TreeTargetDetails) event .getTargetDetails(); @@ -149,6 +150,7 @@ public class DDTest8 extends TestBase { return; } + @Override public AcceptCriterion getAcceptCriterion() { return new Or(new AbstractSelect.TargetItemIs(t, "Foo", "Bar"), new AbstractSelect.AcceptItem(t, "Foo"), diff --git a/tests/testbench/com/vaadin/tests/dd/DragAndDropFiles.java b/tests/testbench/com/vaadin/tests/dd/DragAndDropFiles.java index 4b4ec75f0e..bea00ae0ad 100644 --- a/tests/testbench/com/vaadin/tests/dd/DragAndDropFiles.java +++ b/tests/testbench/com/vaadin/tests/dd/DragAndDropFiles.java @@ -35,10 +35,12 @@ public class DragAndDropFiles extends TestBase { dragAndDropWrapper.setSizeUndefined(); dragAndDropWrapper.setDropHandler(new DropHandler() { + @Override public AcceptCriterion getAcceptCriterion() { return AcceptAll.get(); } + @Override public void drop(DragAndDropEvent event) { WrapperTransferable transferable = (WrapperTransferable) event .getTransferable(); @@ -59,19 +61,23 @@ public class DragAndDropFiles extends TestBase { StreamVariable streamVariable = new StreamVariable() { + @Override public OutputStream getOutputStream() { return new NullOutputStream(); } + @Override public boolean listenProgress() { return true; } + @Override public void onProgress(StreamingProgressEvent event) { System.err.println("Progress" + event.getBytesReceived()); } + @Override public void streamingStarted( StreamingStartEvent event) { getMainWindow().showNotification( @@ -79,6 +85,7 @@ public class DragAndDropFiles extends TestBase { + event.getFileName()); } + @Override public void streamingFinished( StreamingEndEvent event) { getMainWindow().showNotification( @@ -86,6 +93,7 @@ public class DragAndDropFiles extends TestBase { + event.getFileName()); } + @Override public void streamingFailed( StreamingErrorEvent event) { getMainWindow().showNotification( @@ -93,6 +101,7 @@ public class DragAndDropFiles extends TestBase { + event.getFileName()); } + @Override public boolean isInterrupted() { return false; } diff --git a/tests/testbench/com/vaadin/tests/dd/DragDropPane.java b/tests/testbench/com/vaadin/tests/dd/DragDropPane.java index 1b7b7b997b..a94b676f2c 100644 --- a/tests/testbench/com/vaadin/tests/dd/DragDropPane.java +++ b/tests/testbench/com/vaadin/tests/dd/DragDropPane.java @@ -9,8 +9,8 @@ import com.vaadin.event.dd.DragAndDropEvent; import com.vaadin.event.dd.DropHandler; import com.vaadin.event.dd.acceptcriteria.AcceptAll; import com.vaadin.event.dd.acceptcriteria.AcceptCriterion; +import com.vaadin.shared.MouseEventDetails; import com.vaadin.terminal.StreamVariable; -import com.vaadin.terminal.gwt.client.MouseEventDetails; import com.vaadin.ui.AbsoluteLayout; import com.vaadin.ui.AbsoluteLayout.ComponentPosition; import com.vaadin.ui.Component; @@ -51,6 +51,7 @@ public class DragDropPane extends DragAndDropWrapper implements DropHandler { this.crit = crit; } + @Override public void drop(DragAndDropEvent event) { WrapperTargetDetails ed = (WrapperTargetDetails) event @@ -135,28 +136,35 @@ public class DragDropPane extends DragAndDropWrapper implements DropHandler { html5File.setStreamVariable(new StreamVariable() { ByteArrayOutputStream byteArrayOutputStream = new ByteArrayOutputStream(); + @Override public OutputStream getOutputStream() { return byteArrayOutputStream; } + @Override public boolean listenProgress() { return false; } + @Override public void onProgress(StreamingProgressEvent event) { } + @Override public void streamingStarted(StreamingStartEvent event) { } + @Override public void streamingFinished(StreamingEndEvent event) { l.setValue((new String(byteArrayOutputStream .toByteArray()).substring(0, 80) + "...")); } + @Override public void streamingFailed(StreamingErrorEvent event) { } + @Override public boolean isInterrupted() { return false; } @@ -172,6 +180,7 @@ public class DragDropPane extends DragAndDropWrapper implements DropHandler { return; } + @Override public AcceptCriterion getAcceptCriterion() { return crit != null ? crit : AcceptAll.get(); } diff --git a/tests/testbench/com/vaadin/tests/dd/HorizontalLayoutSortableWithWrappers.java b/tests/testbench/com/vaadin/tests/dd/HorizontalLayoutSortableWithWrappers.java index aa51dd539d..fe33bce76b 100644 --- a/tests/testbench/com/vaadin/tests/dd/HorizontalLayoutSortableWithWrappers.java +++ b/tests/testbench/com/vaadin/tests/dd/HorizontalLayoutSortableWithWrappers.java @@ -54,10 +54,12 @@ public class HorizontalLayoutSortableWithWrappers extends Window { AcceptCriterion crit = new And(new TargetDetailIs("horizontalLocation", "LEFT"), new Not(SourceIsTarget.get())); + @Override public AcceptCriterion getAcceptCriterion() { return crit; } + @Override public void drop(DragAndDropEvent dropEvent) { Transferable transferable = dropEvent.getTransferable(); if (transferable instanceof TransferableImpl) { diff --git a/tests/testbench/com/vaadin/tests/dd/HorizontalSortableCssLayoutWithWrappers.java b/tests/testbench/com/vaadin/tests/dd/HorizontalSortableCssLayoutWithWrappers.java index a77faffd2e..4e9e89add5 100644 --- a/tests/testbench/com/vaadin/tests/dd/HorizontalSortableCssLayoutWithWrappers.java +++ b/tests/testbench/com/vaadin/tests/dd/HorizontalSortableCssLayoutWithWrappers.java @@ -48,10 +48,12 @@ public class HorizontalSortableCssLayoutWithWrappers extends Window { private DropHandler dh = new DropHandler() { + @Override public AcceptCriterion getAcceptCriterion() { return AcceptAll.get(); } + @Override public void drop(DragAndDropEvent dropEvent) { Transferable transferable = dropEvent.getTransferable(); if (transferable instanceof TransferableImpl) { diff --git a/tests/testbench/com/vaadin/tests/dd/MyDragSourceConnector.java b/tests/testbench/com/vaadin/tests/dd/MyDragSourceConnector.java index 2b01bad2cf..8a1921cd50 100644 --- a/tests/testbench/com/vaadin/tests/dd/MyDragSourceConnector.java +++ b/tests/testbench/com/vaadin/tests/dd/MyDragSourceConnector.java @@ -3,17 +3,18 @@ */ package com.vaadin.tests.dd; +import com.vaadin.shared.ui.Connect; import com.vaadin.terminal.gwt.client.ApplicationConnection; import com.vaadin.terminal.gwt.client.Paintable; import com.vaadin.terminal.gwt.client.UIDL; import com.vaadin.terminal.gwt.client.ui.AbstractComponentConnector; -import com.vaadin.terminal.gwt.client.ui.Connect; import com.vaadin.tests.dd.CustomDDImplementation.MyDragSource; @Connect(MyDragSource.class) public class MyDragSourceConnector extends AbstractComponentConnector implements Paintable { + @Override public void updateFromUIDL(UIDL uidl, ApplicationConnection client) { if (!isRealUpdate(uidl)) { return; diff --git a/tests/testbench/com/vaadin/tests/dd/MyDropTargetConnector.java b/tests/testbench/com/vaadin/tests/dd/MyDropTargetConnector.java index 5671efa236..6f7dc820ee 100644 --- a/tests/testbench/com/vaadin/tests/dd/MyDropTargetConnector.java +++ b/tests/testbench/com/vaadin/tests/dd/MyDropTargetConnector.java @@ -3,17 +3,18 @@ */ package com.vaadin.tests.dd; +import com.vaadin.shared.ui.Connect; import com.vaadin.terminal.gwt.client.ApplicationConnection; import com.vaadin.terminal.gwt.client.Paintable; import com.vaadin.terminal.gwt.client.UIDL; import com.vaadin.terminal.gwt.client.ui.AbstractComponentConnector; -import com.vaadin.terminal.gwt.client.ui.Connect; import com.vaadin.tests.dd.CustomDDImplementation.MyDropTarget; @Connect(MyDropTarget.class) public class MyDropTargetConnector extends AbstractComponentConnector implements Paintable { + @Override public void updateFromUIDL(UIDL uidl, ApplicationConnection client) { if (!isRealUpdate(uidl)) { return; diff --git a/tests/testbench/com/vaadin/tests/dd/NotPaintedAcceptSource.java b/tests/testbench/com/vaadin/tests/dd/NotPaintedAcceptSource.java index 74774f09ab..abe8553267 100644 --- a/tests/testbench/com/vaadin/tests/dd/NotPaintedAcceptSource.java +++ b/tests/testbench/com/vaadin/tests/dd/NotPaintedAcceptSource.java @@ -26,10 +26,12 @@ public class NotPaintedAcceptSource extends TestBase { source2.setDragMode(TableDragMode.ROW); target.setDropHandler(new DropHandler() { + @Override public AcceptCriterion getAcceptCriterion() { return new SourceIs(source1, source2); } + @Override public void drop(DragAndDropEvent event) { TableTransferable transferable = (TableTransferable) event .getTransferable(); @@ -55,6 +57,7 @@ public class NotPaintedAcceptSource extends TestBase { addComponent(horizontalLayout); addComponent(new Button("Swap sources", new Button.ClickListener() { + @Override public void buttonClick(ClickEvent event) { if (source1.getParent() != null) { horizontalLayout.replaceComponent(source1, source2); diff --git a/tests/testbench/com/vaadin/tests/dd/NotPaintedAcceptSourceInTabSheet.java b/tests/testbench/com/vaadin/tests/dd/NotPaintedAcceptSourceInTabSheet.java index ac92193764..e19bbaf2c5 100644 --- a/tests/testbench/com/vaadin/tests/dd/NotPaintedAcceptSourceInTabSheet.java +++ b/tests/testbench/com/vaadin/tests/dd/NotPaintedAcceptSourceInTabSheet.java @@ -24,10 +24,12 @@ public class NotPaintedAcceptSourceInTabSheet extends TestBase { source2.setDragMode(TableDragMode.ROW); target.setDropHandler(new DropHandler() { + @Override public AcceptCriterion getAcceptCriterion() { return new SourceIs(source1, source2); } + @Override public void drop(DragAndDropEvent event) { TableTransferable transferable = (TableTransferable) event .getTransferable(); diff --git a/tests/testbench/com/vaadin/tests/dd/ScrolledDropTarget.java b/tests/testbench/com/vaadin/tests/dd/ScrolledDropTarget.java index 093e12f84a..951b9a4a57 100644 --- a/tests/testbench/com/vaadin/tests/dd/ScrolledDropTarget.java +++ b/tests/testbench/com/vaadin/tests/dd/ScrolledDropTarget.java @@ -3,7 +3,7 @@ package com.vaadin.tests.dd; import com.vaadin.event.dd.DragAndDropEvent; import com.vaadin.event.dd.DropHandler; import com.vaadin.event.dd.acceptcriteria.AcceptCriterion; -import com.vaadin.terminal.gwt.client.ui.dd.VerticalDropLocation; +import com.vaadin.shared.ui.dd.VerticalDropLocation; import com.vaadin.tests.components.TestBase; import com.vaadin.tests.util.Log; import com.vaadin.ui.AbstractSelect.AbstractSelectTargetDetails; @@ -28,10 +28,12 @@ public class ScrolledDropTarget extends TestBase { table.setDragMode(TableDragMode.ROW); table.setDropHandler(new DropHandler() { + @Override public AcceptCriterion getAcceptCriterion() { return VerticalLocationIs.MIDDLE; } + @Override public void drop(DragAndDropEvent event) { AbstractSelectTargetDetails targetDetails = (AbstractSelectTargetDetails) event .getTargetDetails(); @@ -44,6 +46,7 @@ public class ScrolledDropTarget extends TestBase { addComponent(table); addComponent(new Button("Scroll body", new Button.ClickListener() { + @Override public void buttonClick(ClickEvent event) { getMainWindow().executeJavaScript( "document.body.style.overflow = 'auto';" diff --git a/tests/testbench/com/vaadin/tests/dd/StartHtml5Drag.java b/tests/testbench/com/vaadin/tests/dd/StartHtml5Drag.java index 2cdef65d31..1a01564220 100644 --- a/tests/testbench/com/vaadin/tests/dd/StartHtml5Drag.java +++ b/tests/testbench/com/vaadin/tests/dd/StartHtml5Drag.java @@ -27,10 +27,12 @@ public class StartHtml5Drag extends TestBase { "over here")); dropTarget.setDropHandler(new DropHandler() { + @Override public AcceptCriterion getAcceptCriterion() { return AcceptAll.get(); } + @Override public void drop(DragAndDropEvent event) { getWindows() .iterator() diff --git a/tests/testbench/com/vaadin/tests/dd/TreeDragStart.java b/tests/testbench/com/vaadin/tests/dd/TreeDragStart.java index 4ef7023aa6..27ac8b6586 100644 --- a/tests/testbench/com/vaadin/tests/dd/TreeDragStart.java +++ b/tests/testbench/com/vaadin/tests/dd/TreeDragStart.java @@ -17,7 +17,7 @@ import com.vaadin.event.dd.DropHandler; import com.vaadin.event.dd.acceptcriteria.AcceptCriterion; import com.vaadin.event.dd.acceptcriteria.Not; import com.vaadin.event.dd.acceptcriteria.Or; -import com.vaadin.terminal.gwt.client.ui.dd.VerticalDropLocation; +import com.vaadin.shared.ui.dd.VerticalDropLocation; import com.vaadin.tests.components.TestBase; import com.vaadin.ui.AbstractSelect.AbstractSelectTargetDetails; import com.vaadin.ui.AbstractSelect.VerticalLocationIs; @@ -38,6 +38,7 @@ public class TreeDragStart extends TestBase { checkBox.setImmediate(true); checkBox.setValue(true); checkBox.addListener(new ValueChangeListener() { + @Override public void valueChange(ValueChangeEvent event) { tree.setEnabled(!tree.isEnabled()); } @@ -47,6 +48,7 @@ public class TreeDragStart extends TestBase { checkBox.setImmediate(true); checkBox.setValue(true); checkBox.addListener(new ValueChangeListener() { + @Override public void valueChange(ValueChangeEvent event) { if ((Boolean) ((CheckBox) event.getProperty()).getValue()) { tree.setDragMode(TreeDragMode.NODE); @@ -75,6 +77,7 @@ public class TreeDragStart extends TestBase { // Allow the tree to receive drag drops and handle them tree.setDropHandler(new DropHandler() { + @Override public AcceptCriterion getAcceptCriterion() { // Accept drops in the middle of container items // and below and above all items. @@ -82,6 +85,7 @@ public class TreeDragStart extends TestBase { VerticalLocationIs.MIDDLE)); } + @Override public void drop(DragAndDropEvent event) { // Wrapper for the object that is dragged DataBoundTransferable t = (DataBoundTransferable) event @@ -152,10 +156,12 @@ public class TreeDragStart extends TestBase { // Allow the table to receive drops and handle them table.setDropHandler(new DropHandler() { + @Override public AcceptCriterion getAcceptCriterion() { return new Not(VerticalLocationIs.MIDDLE); } + @Override public void drop(DragAndDropEvent event) { // Wrapper for the object that is dragged DataBoundTransferable t = (DataBoundTransferable) event diff --git a/tests/testbench/com/vaadin/tests/dd/VMyDragSource.java b/tests/testbench/com/vaadin/tests/dd/VMyDragSource.java index 7e91d2b9aa..e6c7078e8e 100644 --- a/tests/testbench/com/vaadin/tests/dd/VMyDragSource.java +++ b/tests/testbench/com/vaadin/tests/dd/VMyDragSource.java @@ -43,6 +43,7 @@ public class VMyDragSource extends Composite implements MouseDownHandler, * mouse is moved 5 pixels with left mouse key down. */ + @Override public void onMouseDown(MouseDownEvent event) { if (event.getNativeButton() == NativeEvent.BUTTON_LEFT) { mouseDown = true; @@ -50,6 +51,7 @@ public class VMyDragSource extends Composite implements MouseDownHandler, } } + @Override public void onMouseMove(MouseMoveEvent event) { if (mouseDown) { int deltaX = Math.abs(mDownEvent.getClientX() - event.getClientX()); @@ -74,6 +76,7 @@ public class VMyDragSource extends Composite implements MouseDownHandler, } + @Override public void onMouseOut(MouseOutEvent event) { mouseDown = false; mDownEvent = null; diff --git a/tests/testbench/com/vaadin/tests/dd/VMyDropTarget.java b/tests/testbench/com/vaadin/tests/dd/VMyDropTarget.java index 582c951251..627f0554f6 100644 --- a/tests/testbench/com/vaadin/tests/dd/VMyDropTarget.java +++ b/tests/testbench/com/vaadin/tests/dd/VMyDropTarget.java @@ -12,33 +12,40 @@ public class VMyDropTarget extends Composite implements VHasDropHandler, ApplicationConnection client; + @Override public void dragEnter(VDragEvent drag) { } + @Override public void dragLeave(VDragEvent drag) { // TODO Auto-generated method stub } + @Override public void dragOver(VDragEvent currentDrag) { // TODO Auto-generated method stub } + @Override public boolean drop(VDragEvent drag) { // TODO Auto-generated method stub // return true to tell DDManager do server visit return false; } + @Override public VDropHandler getDropHandler() { // Drophandler implemented by widget itself return this; } + @Override public ComponentConnector getConnector() { // TODO Auto-generated method stub return null; } + @Override public ApplicationConnection getApplicationConnection() { return client; } diff --git a/tests/testbench/com/vaadin/tests/extensions/BasicExtension.java b/tests/testbench/com/vaadin/tests/extensions/BasicExtension.java new file mode 100644 index 0000000000..551d24735a --- /dev/null +++ b/tests/testbench/com/vaadin/tests/extensions/BasicExtension.java @@ -0,0 +1,15 @@ +/* +@VaadinApache2LicenseForJavaFiles@ + */ + +package com.vaadin.tests.extensions; + +import com.vaadin.terminal.AbstractClientConnector; +import com.vaadin.terminal.AbstractExtension; + +public class BasicExtension extends AbstractExtension { + @Override + public void extend(AbstractClientConnector target) { + super.extend(target); + } +}
\ No newline at end of file diff --git a/tests/testbench/com/vaadin/tests/extensions/BasicExtensionTest.html b/tests/testbench/com/vaadin/tests/extensions/BasicExtensionTest.html new file mode 100644 index 0000000000..6e8a0bf97f --- /dev/null +++ b/tests/testbench/com/vaadin/tests/extensions/BasicExtensionTest.html @@ -0,0 +1,32 @@ +<?xml version="1.0" encoding="UTF-8"?> +<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd"> +<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en" lang="en"> +<head profile="http://selenium-ide.openqa.org/profiles/test-case"> +<meta http-equiv="Content-Type" content="text/html; charset=UTF-8" /> +<link rel="selenium.base" href="http://192.168.2.41:8888/" /> +<title>New Test</title> +</head> +<body> +<table cellpadding="1" cellspacing="1" border="1"> +<thead> +<tr><td rowspan="1" colspan="3">New Test</td></tr> +</thead><tbody> +<tr> + <td>open</td> + <td>/run/com.vaadin.tests.extensions.BasicExtensionTest?restartApplication</td> + <td></td> +</tr> +<tr> + <td>assertText</td> + <td>//div[1]</td> + <td>BasicExtensionTestConnector extending LabelConnector</td> +</tr> +<tr> + <td>assertText</td> + <td>//div[2]</td> + <td>BasicExtensionTestConnector extending RootConnector</td> +</tr> + +</tbody></table> +</body> +</html> diff --git a/tests/testbench/com/vaadin/tests/extensions/BasicExtensionTest.java b/tests/testbench/com/vaadin/tests/extensions/BasicExtensionTest.java new file mode 100644 index 0000000000..02bdadca34 --- /dev/null +++ b/tests/testbench/com/vaadin/tests/extensions/BasicExtensionTest.java @@ -0,0 +1,34 @@ +/* +@VaadinApache2LicenseForJavaFiles@ + */ + +package com.vaadin.tests.extensions; + +import com.vaadin.annotations.Widgetset; +import com.vaadin.terminal.WrappedRequest; +import com.vaadin.tests.components.AbstractTestRoot; +import com.vaadin.ui.Label; + +@Widgetset("com.vaadin.tests.widgetset.TestingWidgetSet") +public class BasicExtensionTest extends AbstractTestRoot { + + @Override + protected void setup(WrappedRequest request) { + Label label = new Label(); + addComponent(label); + + new BasicExtension().extend(this); + new BasicExtension().extend(label); + } + + @Override + protected String getTestDescription() { + return "Simple test for extending components"; + } + + @Override + protected Integer getTicketNumber() { + return Integer.valueOf(6690); + } + +} diff --git a/src/com/vaadin/ui/HelloWorldExtension.java b/tests/testbench/com/vaadin/tests/extensions/HelloWorldExtension.java index e705954f2e..cb26cd7a83 100644 --- a/src/com/vaadin/ui/HelloWorldExtension.java +++ b/tests/testbench/com/vaadin/tests/extensions/HelloWorldExtension.java @@ -1,17 +1,19 @@ /* @VaadinApache2LicenseForJavaFiles@ */ -package com.vaadin.ui; +package com.vaadin.tests.extensions; import com.vaadin.terminal.AbstractExtension; -import com.vaadin.terminal.gwt.client.ui.helloworldfeature.GreetAgainRpc; -import com.vaadin.terminal.gwt.client.ui.helloworldfeature.HelloWorldRpc; -import com.vaadin.terminal.gwt.client.ui.helloworldfeature.HelloWorldState; +import com.vaadin.tests.widgetset.client.helloworldfeature.GreetAgainRpc; +import com.vaadin.tests.widgetset.client.helloworldfeature.HelloWorldRpc; +import com.vaadin.tests.widgetset.client.helloworldfeature.HelloWorldState; +import com.vaadin.ui.Notification; public class HelloWorldExtension extends AbstractExtension { public HelloWorldExtension() { registerRpc(new HelloWorldRpc() { + @Override public void onMessageSent(String message) { Notification.show(message); } diff --git a/tests/testbench/com/vaadin/tests/extensions/HelloWorldExtensionTest.java b/tests/testbench/com/vaadin/tests/extensions/HelloWorldExtensionTest.java index b56e05b2a0..001e913734 100644 --- a/tests/testbench/com/vaadin/tests/extensions/HelloWorldExtensionTest.java +++ b/tests/testbench/com/vaadin/tests/extensions/HelloWorldExtensionTest.java @@ -3,12 +3,13 @@ */ package com.vaadin.tests.extensions; +import com.vaadin.annotations.Widgetset; import com.vaadin.terminal.WrappedRequest; import com.vaadin.tests.components.AbstractTestRoot; import com.vaadin.ui.Button; import com.vaadin.ui.Button.ClickEvent; -import com.vaadin.ui.HelloWorldExtension; +@Widgetset("com.vaadin.tests.widgetset.TestingWidgetSet") public class HelloWorldExtensionTest extends AbstractTestRoot { @Override @@ -18,6 +19,7 @@ public class HelloWorldExtensionTest extends AbstractTestRoot { addExtension(extension); addComponent(new Button("Greet again", new Button.ClickListener() { + @Override public void buttonClick(ClickEvent event) { extension.greetAgain(); } diff --git a/tests/testbench/com/vaadin/tests/extensions/JavascriptManagerTest.java b/tests/testbench/com/vaadin/tests/extensions/JavascriptManagerTest.java index 65f0735ab5..a16f131475 100644 --- a/tests/testbench/com/vaadin/tests/extensions/JavascriptManagerTest.java +++ b/tests/testbench/com/vaadin/tests/extensions/JavascriptManagerTest.java @@ -22,6 +22,7 @@ public class JavascriptManagerTest extends AbstractTestRoot { addComponent(log); final JavaScript js = JavaScript.getCurrent(); js.addCallback("testing.doTest", new JavaScriptCallback() { + @Override public void call(JSONArray arguments) throws JSONException { log.log("Got " + arguments.length() + " arguments"); log.log("Argument 1 as a number: " + arguments.getInt(0)); diff --git a/tests/testbench/com/vaadin/tests/extensions/SimpleJavaScriptExtensionTest.java b/tests/testbench/com/vaadin/tests/extensions/SimpleJavaScriptExtensionTest.java index bbfe3f0f46..cb05bde493 100644 --- a/tests/testbench/com/vaadin/tests/extensions/SimpleJavaScriptExtensionTest.java +++ b/tests/testbench/com/vaadin/tests/extensions/SimpleJavaScriptExtensionTest.java @@ -4,21 +4,21 @@ package com.vaadin.tests.extensions; -import com.vaadin.annotations.LoadScripts; +import com.vaadin.annotations.JavaScript; +import com.vaadin.annotations.StyleSheet; import com.vaadin.external.json.JSONArray; import com.vaadin.external.json.JSONException; +import com.vaadin.shared.JavaScriptExtensionState; +import com.vaadin.shared.communication.ClientRpc; +import com.vaadin.shared.communication.ServerRpc; import com.vaadin.terminal.AbstractJavaScriptExtension; import com.vaadin.terminal.WrappedRequest; -import com.vaadin.terminal.gwt.client.JavaScriptExtensionState; -import com.vaadin.terminal.gwt.client.communication.ClientRpc; -import com.vaadin.terminal.gwt.client.communication.ServerRpc; import com.vaadin.tests.components.AbstractTestRoot; import com.vaadin.ui.Button; import com.vaadin.ui.Button.ClickEvent; import com.vaadin.ui.JavaScriptCallback; import com.vaadin.ui.Notification; -@LoadScripts({ "/statictestfiles/jsextension.js" }) public class SimpleJavaScriptExtensionTest extends AbstractTestRoot { public static class SimpleJavaScriptExtensionState extends @@ -44,16 +44,20 @@ public class SimpleJavaScriptExtensionTest extends AbstractTestRoot { public void greet(String message); } + @JavaScript("/statictestfiles/jsextension.js") + @StyleSheet("/VAADIN/external1.css") public static class SimpleJavascriptExtension extends AbstractJavaScriptExtension { public SimpleJavascriptExtension() { registerRpc(new SimpleJavaScriptExtensionServerRpc() { + @Override public void greet(String message) { Notification.show(getState().getPrefix() + message); } }); registerCallback("greetToServer", new JavaScriptCallback() { + @Override public void call(JSONArray arguments) throws JSONException { Notification.show(getState().getPrefix() + arguments.getString(0)); @@ -88,12 +92,14 @@ public class SimpleJavaScriptExtensionTest extends AbstractTestRoot { addExtension(simpleJavascriptExtension); addComponent(new Button("Send rpc greeting", new Button.ClickListener() { + @Override public void buttonClick(ClickEvent event) { simpleJavascriptExtension.greetRpc("Rpc greeting"); } })); addComponent(new Button("Send callback greeting", new Button.ClickListener() { + @Override public void buttonClick(ClickEvent event) { simpleJavascriptExtension .greetCallback("Callback greeting"); diff --git a/tests/testbench/com/vaadin/tests/fieldgroup/AbstractBeanFieldGroupTest.java b/tests/testbench/com/vaadin/tests/fieldgroup/AbstractBeanFieldGroupTest.java index b73a29efea..894944d186 100644 --- a/tests/testbench/com/vaadin/tests/fieldgroup/AbstractBeanFieldGroupTest.java +++ b/tests/testbench/com/vaadin/tests/fieldgroup/AbstractBeanFieldGroupTest.java @@ -27,6 +27,7 @@ public abstract class AbstractBeanFieldGroupTest extends TestBase { if (discardButton == null) { discardButton = new Button("Discard", new Button.ClickListener() { + @Override public void buttonClick(ClickEvent event) { getFieldBinder().discard(); log.log("Discarded changes"); @@ -42,6 +43,7 @@ public abstract class AbstractBeanFieldGroupTest extends TestBase { showBeanButton = new Button("Show bean values", new Button.ClickListener() { + @Override public void buttonClick(ClickEvent event) { log.log(getFieldBinder().getItemDataSource() .getBean().toString()); @@ -57,6 +59,7 @@ public abstract class AbstractBeanFieldGroupTest extends TestBase { commitButton = new Button("Commit"); commitButton.addListener(new ClickListener() { + @Override public void buttonClick(ClickEvent event) { String msg = "Commit succesful"; try { diff --git a/tests/testbench/com/vaadin/tests/fieldgroup/BasicPersonForm.java b/tests/testbench/com/vaadin/tests/fieldgroup/BasicPersonForm.java index c86cb6f5e8..b399857b3b 100644 --- a/tests/testbench/com/vaadin/tests/fieldgroup/BasicPersonForm.java +++ b/tests/testbench/com/vaadin/tests/fieldgroup/BasicPersonForm.java @@ -84,6 +84,7 @@ public class BasicPersonForm extends TestBase { final FieldGroup fieldGroup = new BeanFieldGroup<Person>(Person.class); fieldGroup.addCommitHandler(new CommitHandler() { + @Override public void preCommit(CommitEvent commitEvent) throws CommitException { if (configuration.preCommitFails) { @@ -95,6 +96,7 @@ public class BasicPersonForm extends TestBase { } + @Override public void postCommit(CommitEvent commitEvent) throws CommitException { if (configuration.postCommitFails) { @@ -118,6 +120,7 @@ public class BasicPersonForm extends TestBase { Button commitButton = new Button("Commit", new Button.ClickListener() { + @Override public void buttonClick(ClickEvent event) { String msg = "Commit succesful"; try { @@ -133,6 +136,7 @@ public class BasicPersonForm extends TestBase { Button discardButton = new Button("Discard", new Button.ClickListener() { + @Override public void buttonClick(ClickEvent event) { fieldGroup.discard(); log.log("Discarded changes"); @@ -142,6 +146,7 @@ public class BasicPersonForm extends TestBase { Button showBean = new Button("Show bean values", new Button.ClickListener() { + @Override public void buttonClick(ClickEvent event) { log.log(getPerson(fieldGroup).toString()); diff --git a/tests/testbench/com/vaadin/tests/fieldgroup/FieldBinderWithBeanValidation.java b/tests/testbench/com/vaadin/tests/fieldgroup/FieldBinderWithBeanValidation.java index 6c6cd8024b..4f83f5d0fd 100644 --- a/tests/testbench/com/vaadin/tests/fieldgroup/FieldBinderWithBeanValidation.java +++ b/tests/testbench/com/vaadin/tests/fieldgroup/FieldBinderWithBeanValidation.java @@ -45,6 +45,7 @@ public class FieldBinderWithBeanValidation extends TestBase { Button commitButton = new Button("Commit", new Button.ClickListener() { + @Override public void buttonClick(ClickEvent event) { String msg = "Commit succesful"; try { @@ -60,6 +61,7 @@ public class FieldBinderWithBeanValidation extends TestBase { Button discardButton = new Button("Discard", new Button.ClickListener() { + @Override public void buttonClick(ClickEvent event) { fieldGroup.discard(); log.log("Discarded changes"); @@ -69,6 +71,7 @@ public class FieldBinderWithBeanValidation extends TestBase { Button showBean = new Button("Show bean values", new Button.ClickListener() { + @Override public void buttonClick(ClickEvent event) { log.log(getPerson(fieldGroup).toString()); diff --git a/tests/testbench/com/vaadin/tests/fieldgroup/IntegerRangeValidator.html b/tests/testbench/com/vaadin/tests/fieldgroup/IntegerRangeValidator.html index 078aede82f..b7c40b4d9e 100644 --- a/tests/testbench/com/vaadin/tests/fieldgroup/IntegerRangeValidator.html +++ b/tests/testbench/com/vaadin/tests/fieldgroup/IntegerRangeValidator.html @@ -47,6 +47,12 @@ <td>vaadin=runcomvaadintestsfieldgroupBasicPersonForm::/VVerticalLayout[0]/VVerticalLayout[0]/domChild[5]/domChild[0]/domChild[1]</td> <td>v-errorindicator</td> </tr> +<!--Hide tooltip--> +<tr> + <td>showTooltip</td> + <td>vaadin=runcomvaadintestsfieldgroupBasicPersonForm::/VVerticalLayout[0]/VVerticalLayout[0]</td> + <td></td> +</tr> <!--10 -> age--> <tr> <td>enterCharacter</td> diff --git a/tests/testbench/com/vaadin/tests/integration/EmbedSizeTest.java b/tests/testbench/com/vaadin/tests/integration/EmbedSizeTest.java index 1b6d384e70..f1345bca13 100644 --- a/tests/testbench/com/vaadin/tests/integration/EmbedSizeTest.java +++ b/tests/testbench/com/vaadin/tests/integration/EmbedSizeTest.java @@ -22,6 +22,7 @@ public class EmbedSizeTest extends TestBase { CheckBox lazyCheckBox = new CheckBox("Lazy resize"); lazyCheckBox.addListener(new ValueChangeListener() { + @Override public void valueChange(ValueChangeEvent event) { CheckBox cb = (CheckBox) event.getProperty(); Boolean resizeLazy = cb.getValue(); @@ -35,6 +36,7 @@ public class EmbedSizeTest extends TestBase { addComponent(log); mainWindow.addListener(new Page.BrowserWindowResizeListener() { + @Override public void browserWindowResized(BrowserWindowResizeEvent event) { log.log("Resize event: " + event.getWidth() + " x " + event.getHeight()); diff --git a/tests/testbench/com/vaadin/tests/integration/IntegrationTestApplication.java b/tests/testbench/com/vaadin/tests/integration/IntegrationTestApplication.java index b2001bdd7e..c464409153 100644 --- a/tests/testbench/com/vaadin/tests/integration/IntegrationTestApplication.java +++ b/tests/testbench/com/vaadin/tests/integration/IntegrationTestApplication.java @@ -37,6 +37,7 @@ public class IntegrationTestApplication extends Application.LegacyApplication { final Label selectedLabel = new Label(); table.addListener(new ValueChangeListener() { + @Override public void valueChange(ValueChangeEvent event) { selectedLabel.setValue(table.getValue()); } diff --git a/tests/testbench/com/vaadin/tests/integration/JSR286PortletRoot.java b/tests/testbench/com/vaadin/tests/integration/JSR286PortletApplication.java index b4de4fd3da..3374342947 100644 --- a/tests/testbench/com/vaadin/tests/integration/JSR286PortletRoot.java +++ b/tests/testbench/com/vaadin/tests/integration/JSR286PortletApplication.java @@ -18,9 +18,10 @@ import javax.portlet.ResourceRequest; import javax.portlet.ResourceResponse; import javax.portlet.WindowState; +import com.vaadin.Application; +import com.vaadin.annotations.StyleSheet; +import com.vaadin.shared.ui.label.ContentMode; import com.vaadin.terminal.ExternalResource; -import com.vaadin.terminal.WrappedRequest; -import com.vaadin.terminal.gwt.client.ui.label.ContentMode; import com.vaadin.terminal.gwt.server.PortletApplicationContext2; import com.vaadin.terminal.gwt.server.PortletApplicationContext2.PortletListener; import com.vaadin.ui.Embedded; @@ -28,16 +29,22 @@ import com.vaadin.ui.Label; import com.vaadin.ui.Link; import com.vaadin.ui.Notification; import com.vaadin.ui.Root; +import com.vaadin.ui.Root.LegacyWindow; import com.vaadin.ui.TextField; import com.vaadin.ui.Upload; import com.vaadin.ui.Upload.Receiver; -import com.vaadin.ui.VerticalLayout; /** * Adapted from old PortletDemo to support integration testing. */ -public class JSR286PortletRoot extends Root { +public class JSR286PortletApplication extends Application.LegacyApplication { + @StyleSheet("PortletConnectorResource.css") + public final class LegacyWindowWithStylesheet extends LegacyWindow { + + } + + LegacyWindow main = new LegacyWindowWithStylesheet(); TextField tf = new TextField("Some value"); Label userInfo = new Label(); Link portletEdit = new Link(); @@ -45,19 +52,17 @@ public class JSR286PortletRoot extends Root { Link someAction = null; @Override - protected void init(WrappedRequest request) { - VerticalLayout main = new VerticalLayout(); - tf.setDebugId("tf"); - userInfo.setDebugId("userInfo"); - portletEdit.setDebugId("portletEdit"); - portletMax.setDebugId("portletMax"); + public void init() { + setMainWindow(main); + Embedded appResourceTest = new Embedded( "Test of ApplicationResources with full path", - new FlagSeResource(getApplication())); + new FlagSeResource(this)); main.addComponent(appResourceTest); Embedded specialNameResourceTest = new Embedded( "Test ApplicationResources with special names", - new SpecialNameResource(getApplication())); + new SpecialNameResource(this)); + specialNameResourceTest.addStyleName("hugeBorder"); main.addComponent(specialNameResourceTest); userInfo.setCaption("User info"); @@ -75,18 +80,18 @@ public class JSR286PortletRoot extends Root { Upload upload = new Upload("Upload a file", new Receiver() { + @Override public OutputStream receiveUpload(String filename, String mimeType) { return new ByteArrayOutputStream(); } }); main.addComponent(upload); - if (getApplication().getContext() instanceof PortletApplicationContext2) { - PortletApplicationContext2 ctx = (PortletApplicationContext2) getApplication() - .getContext(); - ctx.addPortletListener(getApplication(), new DemoPortletListener()); + if (getContext() instanceof PortletApplicationContext2) { + PortletApplicationContext2 ctx = (PortletApplicationContext2) getContext(); + ctx.addPortletListener(this, new DemoPortletListener()); } else { - Notification.show("Not inited via Portal!", + getMainWindow().showNotification("Not inited via Portal!", Notification.TYPE_ERROR_MESSAGE); } @@ -94,11 +99,13 @@ public class JSR286PortletRoot extends Root { private class DemoPortletListener implements PortletListener { + @Override public void handleActionRequest(ActionRequest request, ActionResponse response, Root window) { - getContent().addComponent(new Label("Action received")); + main.addComponent(new Label("Action received")); } + @Override public void handleRenderRequest(RenderRequest request, RenderResponse response, Root window) { // Portlet up-and-running, enable stuff @@ -109,10 +116,11 @@ public class JSR286PortletRoot extends Root { tf.setEnabled((request.getPortletMode() == PortletMode.EDIT)); // Show notification about current mode and state - new Notification("Portlet status", "Mode: " - + request.getPortletMode() + " State: " - + request.getWindowState(), - Notification.TYPE_WARNING_MESSAGE).show(getPage()); + getMainWindow().showNotification( + "Portlet status", + "Mode: " + request.getPortletMode() + " State: " + + request.getWindowState(), + Notification.TYPE_WARNING_MESSAGE); // Display current user info Map<?, ?> uinfo = (Map<?, ?>) request @@ -162,9 +170,7 @@ public class JSR286PortletRoot extends Root { try { someAction = new Link("An action", new ExternalResource( url.toString())); - someAction.setDebugId("someAction"); - - addComponent(someAction); + main.addComponent(someAction); } catch (Exception e) { // Oops System.err.println("Could not create someAction: " + e); @@ -173,11 +179,13 @@ public class JSR286PortletRoot extends Root { } } + @Override public void handleEventRequest(EventRequest request, EventResponse response, Root window) { // events not used by this test } + @Override public void handleResourceRequest(ResourceRequest request, ResourceResponse response, Root window) { // nothing special to do here diff --git a/tests/testbench/com/vaadin/tests/integration/LiferayThemeDemo.java b/tests/testbench/com/vaadin/tests/integration/LiferayThemeDemo.java index 9397206f1e..1ea800821b 100644 --- a/tests/testbench/com/vaadin/tests/integration/LiferayThemeDemo.java +++ b/tests/testbench/com/vaadin/tests/integration/LiferayThemeDemo.java @@ -8,11 +8,11 @@ import com.vaadin.Application; import com.vaadin.data.Property; import com.vaadin.data.Property.ValueChangeEvent; import com.vaadin.event.Action; +import com.vaadin.shared.ui.label.ContentMode; import com.vaadin.terminal.ExternalResource; import com.vaadin.terminal.Page; import com.vaadin.terminal.Resource; import com.vaadin.terminal.ThemeResource; -import com.vaadin.terminal.gwt.client.ui.label.ContentMode; import com.vaadin.ui.AbstractComponent; import com.vaadin.ui.AbstractSelect; import com.vaadin.ui.Accordion; @@ -71,10 +71,12 @@ public class LiferayThemeDemo extends Application.LegacyApplication { private Action.Handler handler = new Action.Handler() { + @Override public void handleAction(Action action, Object sender, Object target) { // NOP } + @Override public Action[] getActions(Object target, Object sender) { return new Action[] { new Action("Open"), @@ -318,6 +320,7 @@ public class LiferayThemeDemo extends Application.LegacyApplication { closable.addListener(new Property.ValueChangeListener() { + @Override public void valueChange(ValueChangeEvent event) { Iterator<Component> it = ts.getComponentIterator(); for (; it.hasNext();) { @@ -415,6 +418,7 @@ public class LiferayThemeDemo extends Application.LegacyApplication { ContentMode.XHTML)); tabs.addListener(new TabSheet.SelectedTabChangeListener() { + @Override public void selectedTabChange(SelectedTabChangeEvent event) { if (event.getTabSheet().getSelectedTab() == l) { getMainWindow().addWindow(w); @@ -472,6 +476,7 @@ public class LiferayThemeDemo extends Application.LegacyApplication { lockCheckBox.addListener(new Property.ValueChangeListener() { + @Override public void valueChange(ValueChangeEvent event) { sp.setLocked((Boolean) event.getProperty().getValue()); sp2.setLocked((Boolean) event.getProperty().getValue()); @@ -595,18 +600,22 @@ public class LiferayThemeDemo extends Application.LegacyApplication { l.addComponent(new Label("Humanized", ContentMode.XHTML)); Button show = new Button("Humanized Notification", new Button.ClickListener() { + @Override public void buttonClick(ClickEvent event) { - new Notification(title.getValue(), message.getValue()) - .show(Page.getCurrent()); + Notification notification = new Notification( + title.getValue(), message.getValue()); + notification.setHtmlContentAllowed(true); + notification.show(Page.getCurrent()); } }); l.addComponent(show); l.addComponent(new Label("Warning", ContentMode.XHTML)); show = new Button("Warning Notification", new Button.ClickListener() { + @Override public void buttonClick(ClickEvent event) { new Notification(title.getValue(), message.getValue(), - Notification.TYPE_WARNING_MESSAGE).show(Page + Notification.TYPE_WARNING_MESSAGE, true).show(Page .getCurrent()); } @@ -615,9 +624,11 @@ public class LiferayThemeDemo extends Application.LegacyApplication { l.addComponent(new Label("Error", ContentMode.XHTML)); show = new Button("Error Notification", new Button.ClickListener() { + @Override public void buttonClick(ClickEvent event) { new Notification(title.getValue(), message.getValue(), - Notification.TYPE_ERROR_MESSAGE).show(Page.getCurrent()); + Notification.TYPE_ERROR_MESSAGE, true).show(Page + .getCurrent()); } }); @@ -625,9 +636,10 @@ public class LiferayThemeDemo extends Application.LegacyApplication { l.addComponent(new Label("Tray", ContentMode.XHTML)); show = new Button("Tray Notification", new Button.ClickListener() { + @Override public void buttonClick(ClickEvent event) { new Notification(title.getValue(), message.getValue(), - Notification.TYPE_TRAY_NOTIFICATION).show(Page + Notification.TYPE_TRAY_NOTIFICATION, true).show(Page .getCurrent()); } @@ -691,6 +703,7 @@ public class LiferayThemeDemo extends Application.LegacyApplication { final MenuBar.MenuItem find = edit.addItem("Find/Replace", null); find.addItem("Google Search", new Command() { + @Override public void menuSelected(MenuItem selectedItem) { getMainWindow().open( new ExternalResource("http://www.google.com")); diff --git a/tests/testbench/com/vaadin/tests/integration/PortletConnectorResource.css b/tests/testbench/com/vaadin/tests/integration/PortletConnectorResource.css new file mode 100644 index 0000000000..7338e4708a --- /dev/null +++ b/tests/testbench/com/vaadin/tests/integration/PortletConnectorResource.css @@ -0,0 +1,3 @@ +.hugeBorder { + border: 10px solid green; +}
\ No newline at end of file diff --git a/tests/testbench/com/vaadin/tests/layouts/AbsoluteLayoutAddRemove.java b/tests/testbench/com/vaadin/tests/layouts/AbsoluteLayoutAddRemove.java index 6193fd238e..b2cadebd02 100644 --- a/tests/testbench/com/vaadin/tests/layouts/AbsoluteLayoutAddRemove.java +++ b/tests/testbench/com/vaadin/tests/layouts/AbsoluteLayoutAddRemove.java @@ -31,6 +31,7 @@ public class AbsoluteLayoutAddRemove extends TestBase { final Button b = new Button("Add", new Button.ClickListener() { + @Override public void buttonClick(ClickEvent event) { if (l.getParent() == null) { al.addComponent(l); diff --git a/tests/testbench/com/vaadin/tests/layouts/CaptionsInLayouts.java b/tests/testbench/com/vaadin/tests/layouts/CaptionsInLayouts.java index 4388639893..77b8e249ba 100644 --- a/tests/testbench/com/vaadin/tests/layouts/CaptionsInLayouts.java +++ b/tests/testbench/com/vaadin/tests/layouts/CaptionsInLayouts.java @@ -61,6 +61,7 @@ public class CaptionsInLayouts extends TestBase { Button b = new Button("Add caption text"); b.addListener(new ClickListener() { + @Override public void buttonClick(ClickEvent event) { prependCaptions("a"); } @@ -81,6 +82,7 @@ public class CaptionsInLayouts extends TestBase { requiredToggle.setCaption("Required"); requiredToggle.addListener(new ValueChangeListener() { + @Override public void valueChange(ValueChangeEvent event) { setRequired((Boolean) event.getProperty().getValue()); } @@ -94,6 +96,7 @@ public class CaptionsInLayouts extends TestBase { iconToggle.setCaption("Icons"); iconToggle.addListener(new ValueChangeListener() { + @Override public void valueChange(ValueChangeEvent event) { setIcon((Boolean) event.getProperty().getValue()); } @@ -125,6 +128,7 @@ public class CaptionsInLayouts extends TestBase { errorToggle.setCaption("Error"); errorToggle.addListener(new ValueChangeListener() { + @Override public void valueChange(ValueChangeEvent event) { setError((Boolean) event.getProperty().getValue()); } @@ -250,6 +254,7 @@ public class CaptionsInLayouts extends TestBase { layoutSelect.setImmediate(true); layoutSelect.addListener(new ValueChangeListener() { + @Override @SuppressWarnings("unchecked") public void valueChange(ValueChangeEvent event) { Item i = layoutSelect.getItem(event.getProperty().getValue()); diff --git a/tests/testbench/com/vaadin/tests/layouts/ComplexGLColumnExpansionWithColSpan.java b/tests/testbench/com/vaadin/tests/layouts/ComplexGLColumnExpansionWithColSpan.java index f1e05b6fee..51f9e2d88e 100644 --- a/tests/testbench/com/vaadin/tests/layouts/ComplexGLColumnExpansionWithColSpan.java +++ b/tests/testbench/com/vaadin/tests/layouts/ComplexGLColumnExpansionWithColSpan.java @@ -45,6 +45,7 @@ public class ComplexGLColumnExpansionWithColSpan extends AbstractTestCase { b1.setWidth(270, Sizeable.UNITS_PIXELS); b2.setWidth(270, Sizeable.UNITS_PIXELS); b1.addListener(new Button.ClickListener() { + @Override public void buttonClick(Button.ClickEvent event) { cols++; gl.setColumns(cols); @@ -70,6 +71,7 @@ public class ComplexGLColumnExpansionWithColSpan extends AbstractTestCase { Button restart = new Button("restart"); mainLayout.addComponent(restart); restart.addListener(new Button.ClickListener() { + @Override public void buttonClick(Button.ClickEvent event) { mainLayout.getRoot().getApplication().close(); } diff --git a/tests/testbench/com/vaadin/tests/layouts/CssLayoutCustomCss.java b/tests/testbench/com/vaadin/tests/layouts/CssLayoutCustomCss.java index 0e2d570101..792bcb1aab 100644 --- a/tests/testbench/com/vaadin/tests/layouts/CssLayoutCustomCss.java +++ b/tests/testbench/com/vaadin/tests/layouts/CssLayoutCustomCss.java @@ -46,6 +46,7 @@ public class CssLayoutCustomCss extends TestBase implements ClickListener { cb.setImmediate(true); cb.addListener(new ValueChangeListener() { + @Override public void valueChange(ValueChangeEvent event) { layout.setMargin(cb.getValue()); } @@ -73,6 +74,7 @@ public class CssLayoutCustomCss extends TestBase implements ClickListener { return null; } + @Override public void buttonClick(ClickEvent event) { Button b = event.getButton(); if (b.getCaption().contains("not ")) { diff --git a/tests/testbench/com/vaadin/tests/layouts/CssLayoutRemoveComponent.java b/tests/testbench/com/vaadin/tests/layouts/CssLayoutRemoveComponent.java index ef07b2c5f5..093dc782fb 100644 --- a/tests/testbench/com/vaadin/tests/layouts/CssLayoutRemoveComponent.java +++ b/tests/testbench/com/vaadin/tests/layouts/CssLayoutRemoveComponent.java @@ -16,6 +16,7 @@ public class CssLayoutRemoveComponent extends TestBase { final TextField tf = new TextField("Caption1"); Button b = new Button("Remove field ", new ClickListener() { + @Override public void buttonClick(ClickEvent event) { layout.removeComponent(tf); } diff --git a/tests/testbench/com/vaadin/tests/layouts/CssLayoutRemoveComponentWithCaption.java b/tests/testbench/com/vaadin/tests/layouts/CssLayoutRemoveComponentWithCaption.java index 4f081af347..df4fc8615d 100644 --- a/tests/testbench/com/vaadin/tests/layouts/CssLayoutRemoveComponentWithCaption.java +++ b/tests/testbench/com/vaadin/tests/layouts/CssLayoutRemoveComponentWithCaption.java @@ -15,6 +15,7 @@ public class CssLayoutRemoveComponentWithCaption extends TestBase { final TextField tf = new TextField("Caption"); Button b = new Button("Remove field and add new", new ClickListener() { + @Override public void buttonClick(ClickEvent event) { layout.removeComponent(tf); addComponent(new TextField("new field")); diff --git a/tests/testbench/com/vaadin/tests/layouts/CssLayoutSizeChangePropagation.java b/tests/testbench/com/vaadin/tests/layouts/CssLayoutSizeChangePropagation.java index 0be605c795..ed3c5e66d3 100644 --- a/tests/testbench/com/vaadin/tests/layouts/CssLayoutSizeChangePropagation.java +++ b/tests/testbench/com/vaadin/tests/layouts/CssLayoutSizeChangePropagation.java @@ -35,6 +35,7 @@ public class CssLayoutSizeChangePropagation extends TestBase { button.addListener(new ClickListener() { boolean bool = true; + @Override public void buttonClick(ClickEvent event) { sp.setExpandRatio(cssLayout, bool ? 1 : 0); bool = !bool; diff --git a/tests/testbench/com/vaadin/tests/layouts/DeepComponentTrees.java b/tests/testbench/com/vaadin/tests/layouts/DeepComponentTrees.java index 47cb095efa..e119b91b82 100644 --- a/tests/testbench/com/vaadin/tests/layouts/DeepComponentTrees.java +++ b/tests/testbench/com/vaadin/tests/layouts/DeepComponentTrees.java @@ -44,6 +44,7 @@ public class DeepComponentTrees extends TestBase { final Button b = new Button("Go try your luck with " + i + " layouts!"); b.addListener(new Button.ClickListener() { + @Override public void buttonClick(ClickEvent event) { FF2KILLER(i++); b.setCaption("Go try your luck with " + i + " layouts!"); @@ -60,6 +61,7 @@ public class DeepComponentTrees extends TestBase { s.addItem(GridLayout.class); s.addListener(new ComboBox.ValueChangeListener() { + @Override public void valueChange(ValueChangeEvent event) { Object value = s.getValue(); if (!value.equals("-- Choose value --")) { diff --git a/tests/testbench/com/vaadin/tests/layouts/FormLayoutWithInvisibleComponent.java b/tests/testbench/com/vaadin/tests/layouts/FormLayoutWithInvisibleComponent.java index 7fc33edfc7..f596fdb77e 100644 --- a/tests/testbench/com/vaadin/tests/layouts/FormLayoutWithInvisibleComponent.java +++ b/tests/testbench/com/vaadin/tests/layouts/FormLayoutWithInvisibleComponent.java @@ -27,6 +27,7 @@ public class FormLayoutWithInvisibleComponent extends TestBase { CheckBox control = new CheckBox("Messages On/Off"); control.addListener(new ValueChangeListener() { + @Override public void valueChange(ValueChangeEvent event) { messages.setVisible((Boolean) event.getProperty().getValue()); messages.setRequired(true); diff --git a/tests/testbench/com/vaadin/tests/layouts/GridLayoutCaptions.java b/tests/testbench/com/vaadin/tests/layouts/GridLayoutCaptions.java index 9ad9adb43a..8713208dc6 100644 --- a/tests/testbench/com/vaadin/tests/layouts/GridLayoutCaptions.java +++ b/tests/testbench/com/vaadin/tests/layouts/GridLayoutCaptions.java @@ -29,6 +29,7 @@ public class GridLayoutCaptions extends TestBase { private FormFieldFactory fff = new FormFieldFactory() { + @Override public Field<?> createField(Item item, Object propertyId, Component uiContext) { @@ -195,6 +196,7 @@ public class GridLayoutCaptions extends TestBase { Button b = new Button("Give me an error!", new Button.ClickListener() { + @Override public void buttonClick(ClickEvent event) { aFormWithGl.createErrors(); @@ -205,6 +207,7 @@ public class GridLayoutCaptions extends TestBase { Button b2 = new Button("Get rid of an error!", new Button.ClickListener() { + @Override public void buttonClick(ClickEvent event) { aFormWithGl.clearErrors(); diff --git a/tests/testbench/com/vaadin/tests/layouts/GridLayoutExpandRatioModification.java b/tests/testbench/com/vaadin/tests/layouts/GridLayoutExpandRatioModification.java index 314a8d7b03..84f27e5f03 100644 --- a/tests/testbench/com/vaadin/tests/layouts/GridLayoutExpandRatioModification.java +++ b/tests/testbench/com/vaadin/tests/layouts/GridLayoutExpandRatioModification.java @@ -59,6 +59,7 @@ public class GridLayoutExpandRatioModification extends TestBase implements vl2.setSizeFull(); } + @Override public void buttonClick(ClickEvent event) { if (isVisible) { mainLayout.setRowExpandRatio(2, 0); diff --git a/tests/testbench/com/vaadin/tests/layouts/GridLayoutMoveComponent.java b/tests/testbench/com/vaadin/tests/layouts/GridLayoutMoveComponent.java index 1442dc3421..efd1277653 100644 --- a/tests/testbench/com/vaadin/tests/layouts/GridLayoutMoveComponent.java +++ b/tests/testbench/com/vaadin/tests/layouts/GridLayoutMoveComponent.java @@ -29,6 +29,7 @@ public class GridLayoutMoveComponent extends TestBase { addComponent(new Button("Shift label right", new Button.ClickListener() { + @Override public void buttonClick(ClickEvent event) { // Moving component from 0,0 -> 1,0 grid.removeComponent(l); @@ -38,6 +39,7 @@ public class GridLayoutMoveComponent extends TestBase { addComponent(new Button("Shift button right", new Button.ClickListener() { + @Override public void buttonClick(ClickEvent event) { grid.removeComponent(b); grid.addComponent(b, 1, 1); @@ -46,6 +48,7 @@ public class GridLayoutMoveComponent extends TestBase { addComponent(new Button("Shift text field right", new Button.ClickListener() { + @Override public void buttonClick(ClickEvent event) { grid.removeComponent(tf); grid.addComponent(tf, 1, 2); diff --git a/tests/testbench/com/vaadin/tests/layouts/GridLayoutNPE.java b/tests/testbench/com/vaadin/tests/layouts/GridLayoutNPE.java index 6424177fe1..3531a4e13c 100644 --- a/tests/testbench/com/vaadin/tests/layouts/GridLayoutNPE.java +++ b/tests/testbench/com/vaadin/tests/layouts/GridLayoutNPE.java @@ -31,6 +31,7 @@ public class GridLayoutNPE extends TestBase { b.addListener(new Button.ClickListener() { + @Override public void buttonClick(Button.ClickEvent event) { gl.removeComponent(toRemove); @@ -50,6 +51,7 @@ public class GridLayoutNPE extends TestBase { b2.addListener(new Button.ClickListener() { + @Override public void buttonClick(ClickEvent event) { toEdit.setValue("Second (edited)"); } diff --git a/tests/testbench/com/vaadin/tests/layouts/GridLayoutRemoveFinalRow.java b/tests/testbench/com/vaadin/tests/layouts/GridLayoutRemoveFinalRow.java index 8689503332..5d45f72142 100644 --- a/tests/testbench/com/vaadin/tests/layouts/GridLayoutRemoveFinalRow.java +++ b/tests/testbench/com/vaadin/tests/layouts/GridLayoutRemoveFinalRow.java @@ -26,6 +26,7 @@ public class GridLayoutRemoveFinalRow extends TestBase { Button removeRowBtn = new Button("Remove row", new Button.ClickListener() { + @Override public void buttonClick(ClickEvent event) { layout.removeRow(0); } diff --git a/tests/testbench/com/vaadin/tests/layouts/GridLayoutWidthChange.java b/tests/testbench/com/vaadin/tests/layouts/GridLayoutWidthChange.java index 78984d33a2..c0e6b27c7d 100644 --- a/tests/testbench/com/vaadin/tests/layouts/GridLayoutWidthChange.java +++ b/tests/testbench/com/vaadin/tests/layouts/GridLayoutWidthChange.java @@ -43,6 +43,7 @@ public class GridLayoutWidthChange extends TestBase { Button testButton = new Button("Reduce GridLayout parent width", new Button.ClickListener() { + @Override public void buttonClick(ClickEvent event) { cc.setWidth((cc.getWidth() - 10) + "px"); } diff --git a/tests/testbench/com/vaadin/tests/layouts/HiddenHorizontalLayout.java b/tests/testbench/com/vaadin/tests/layouts/HiddenHorizontalLayout.java index 8c05df6ca9..dc0c8958ea 100644 --- a/tests/testbench/com/vaadin/tests/layouts/HiddenHorizontalLayout.java +++ b/tests/testbench/com/vaadin/tests/layouts/HiddenHorizontalLayout.java @@ -1,6 +1,6 @@ package com.vaadin.tests.layouts; -import com.vaadin.terminal.gwt.client.ui.label.ContentMode; +import com.vaadin.shared.ui.label.ContentMode; import com.vaadin.tests.components.TestBase; import com.vaadin.ui.Button; import com.vaadin.ui.Button.ClickEvent; @@ -47,6 +47,7 @@ public class HiddenHorizontalLayout extends TestBase { Button b = new Button("toggle layout visibility", new Button.ClickListener() { + @Override public void buttonClick(ClickEvent event) { hl.setVisible(!hl.isVisible()); } diff --git a/tests/testbench/com/vaadin/tests/layouts/LayoutPerformanceTests.java b/tests/testbench/com/vaadin/tests/layouts/LayoutPerformanceTests.java index 23cf868085..57c6173895 100644 --- a/tests/testbench/com/vaadin/tests/layouts/LayoutPerformanceTests.java +++ b/tests/testbench/com/vaadin/tests/layouts/LayoutPerformanceTests.java @@ -213,12 +213,14 @@ public class LayoutPerformanceTests extends TestBase { controls.addComponent(childAmount); controls.addComponent(new Button("Clear", new Button.ClickListener() { + @Override public void buttonClick(ClickEvent event) { setTestLayout(new Label("")); } })); controls.addComponent(new Button("Apply", new Button.ClickListener() { + @Override public void buttonClick(ClickEvent event) { SampleType leafType = (SampleType) leafSelector.getValue(); if (leafType == null) { diff --git a/tests/testbench/com/vaadin/tests/layouts/MovingComponentsWhileOldParentInvisible.java b/tests/testbench/com/vaadin/tests/layouts/MovingComponentsWhileOldParentInvisible.java index bf5de2976f..5f91786571 100644 --- a/tests/testbench/com/vaadin/tests/layouts/MovingComponentsWhileOldParentInvisible.java +++ b/tests/testbench/com/vaadin/tests/layouts/MovingComponentsWhileOldParentInvisible.java @@ -53,6 +53,7 @@ public class MovingComponentsWhileOldParentInvisible extends TestBase { } componentContainerSelect.addListener(new ValueChangeListener() { + @Override @SuppressWarnings("unchecked") public void valueChange(ValueChangeEvent event) { ComponentContainer oldCC = cc; @@ -69,6 +70,7 @@ public class MovingComponentsWhileOldParentInvisible extends TestBase { Button but1 = new Button("Move in and out of component container", new Button.ClickListener() { + @Override public void buttonClick(ClickEvent event) { cc.setVisible(!cc.isVisible()); if (!cc.isVisible()) { diff --git a/tests/testbench/com/vaadin/tests/layouts/MovingInvisibleField.java b/tests/testbench/com/vaadin/tests/layouts/MovingInvisibleField.java index 23ae31d786..1285e5b52e 100644 --- a/tests/testbench/com/vaadin/tests/layouts/MovingInvisibleField.java +++ b/tests/testbench/com/vaadin/tests/layouts/MovingInvisibleField.java @@ -23,6 +23,7 @@ public class MovingInvisibleField extends TestBase { Button b = new Button("Move hidden textfield to other layout"); b.addListener(new ClickListener() { + @Override public void buttonClick(ClickEvent event) { if (layout1.getComponentIndex(tfHidden) != -1) { layout2.addComponent(tfVisible); diff --git a/tests/testbench/com/vaadin/tests/layouts/OrderedLayoutBasics.java b/tests/testbench/com/vaadin/tests/layouts/OrderedLayoutBasics.java index 9f18ef7887..2ceb6428ed 100644 --- a/tests/testbench/com/vaadin/tests/layouts/OrderedLayoutBasics.java +++ b/tests/testbench/com/vaadin/tests/layouts/OrderedLayoutBasics.java @@ -1005,6 +1005,7 @@ public class OrderedLayoutBasics extends TestBase { private Button createAddButton(AbstractOrderedLayout ol) { Button b = new Button("Add before", new ClickListener() { + @Override public void buttonClick(ClickEvent event) { addBefore((AbstractOrderedLayout) event.getButton().getData(), event.getButton().getParent(), ""); @@ -1019,6 +1020,7 @@ public class OrderedLayoutBasics extends TestBase { private Button createWideAddButton(AbstractOrderedLayout ol) { Button b = new Button("Add 100% before", new ClickListener() { + @Override public void buttonClick(ClickEvent event) { addBefore((AbstractOrderedLayout) event.getButton().getData(), event.getButton().getParent(), "100%"); @@ -1033,6 +1035,7 @@ public class OrderedLayoutBasics extends TestBase { private Button createRemoveButton(AbstractOrderedLayout ol, String suffix) { Button b = new Button("Remove this " + suffix, new ClickListener() { + @Override public void buttonClick(ClickEvent event) { remove((AbstractOrderedLayout) event.getButton().getData(), event.getButton().getParent()); diff --git a/tests/testbench/com/vaadin/tests/layouts/TestAbsoluteLayout.java b/tests/testbench/com/vaadin/tests/layouts/TestAbsoluteLayout.java index 2f0f16b4a5..d2f14c114e 100644 --- a/tests/testbench/com/vaadin/tests/layouts/TestAbsoluteLayout.java +++ b/tests/testbench/com/vaadin/tests/layouts/TestAbsoluteLayout.java @@ -130,6 +130,7 @@ public class TestAbsoluteLayout extends TestBase { Button componentChooser = new Button("choose component to edit"); componentChooser.addListener(new Button.ClickListener() { + @Override public void buttonClick(ClickEvent event) { final Window chooser = new Window("Choose component"); chooser.getContent().setSizeUndefined(); @@ -166,6 +167,7 @@ public class TestAbsoluteLayout extends TestBase { select.setImmediate(true); select.addListener(new ValueChangeListener() { + @Override public void valueChange(ValueChangeEvent event) { editcomponent((Component) event.getProperty() .getValue()); @@ -185,6 +187,7 @@ public class TestAbsoluteLayout extends TestBase { Button addComp = new Button("add component"); addComp.addListener(new Button.ClickListener() { + @Override public void buttonClick(ClickEvent event) { final Window chooser = new Window( "Choose component type to add"); @@ -235,6 +238,7 @@ public class TestAbsoluteLayout extends TestBase { select.setImmediate(true); select.addListener(new ValueChangeListener() { + @Override public void valueChange(ValueChangeEvent event) { Class<?> c = (Class<?>) event.getProperty() .getValue(); @@ -279,6 +283,7 @@ public class TestAbsoluteLayout extends TestBase { addComponent(positionEditor); Button b = new Button("Commit changes", new Button.ClickListener() { + @Override public void buttonClick(ClickEvent event) { positionEditor.commit(); componentEditor.commit(); diff --git a/tests/testbench/com/vaadin/tests/layouts/TestLayoutClickListeners.java b/tests/testbench/com/vaadin/tests/layouts/TestLayoutClickListeners.java index 619e4581fa..b998abeb02 100644 --- a/tests/testbench/com/vaadin/tests/layouts/TestLayoutClickListeners.java +++ b/tests/testbench/com/vaadin/tests/layouts/TestLayoutClickListeners.java @@ -60,6 +60,7 @@ public class TestLayoutClickListeners extends AbstractTestCase { al.addComponent(new Button("A button with its own click listener", new Button.ClickListener() { + @Override public void buttonClick( com.vaadin.ui.Button.ClickEvent event) { log.log("Button " + event.getButton().getCaption() @@ -69,6 +70,7 @@ public class TestLayoutClickListeners extends AbstractTestCase { })); al.addListener(new LayoutClickListener() { + @Override public void layoutClick(LayoutClickEvent event) { logLayoutClick("AbsoluteLayout", event); } @@ -92,6 +94,7 @@ public class TestLayoutClickListeners extends AbstractTestCase { cl.addComponent(new Button("A button with its own click listener", new Button.ClickListener() { + @Override public void buttonClick( com.vaadin.ui.Button.ClickEvent event) { log.log("Button " + event.getButton().getCaption() @@ -101,6 +104,7 @@ public class TestLayoutClickListeners extends AbstractTestCase { })); cl.addListener(new LayoutClickListener() { + @Override public void layoutClick(LayoutClickEvent event) { logLayoutClick("CSSLayout", event); } @@ -125,6 +129,7 @@ public class TestLayoutClickListeners extends AbstractTestCase { gl.addListener(new LayoutClickListener() { + @Override public void layoutClick(LayoutClickEvent event) { logLayoutClick("GridLayout", event); } @@ -166,6 +171,7 @@ public class TestLayoutClickListeners extends AbstractTestCase { gl.addListener(new LayoutClickListener() { + @Override public void layoutClick(LayoutClickEvent event) { logLayoutClick("VerticalLayout", event); diff --git a/tests/testbench/com/vaadin/tests/layouts/TestLayoutPerformance.java b/tests/testbench/com/vaadin/tests/layouts/TestLayoutPerformance.java index 3d496fa446..85ecf2897b 100644 --- a/tests/testbench/com/vaadin/tests/layouts/TestLayoutPerformance.java +++ b/tests/testbench/com/vaadin/tests/layouts/TestLayoutPerformance.java @@ -1,6 +1,6 @@ package com.vaadin.tests.layouts; -import com.vaadin.terminal.gwt.client.ui.label.ContentMode; +import com.vaadin.shared.ui.label.ContentMode; import com.vaadin.tests.components.TestBase; import com.vaadin.ui.AbstractComponent; import com.vaadin.ui.Button; @@ -65,6 +65,7 @@ public class TestLayoutPerformance extends TestBase { b.addListener(new Button.ClickListener() { + @Override public void buttonClick(ClickEvent event) { int components = Integer.parseInt(n.getValue()); Layout layout = getCurrentLayout(); diff --git a/tests/testbench/com/vaadin/tests/layouts/VerticalLayoutExpandRatioModification.java b/tests/testbench/com/vaadin/tests/layouts/VerticalLayoutExpandRatioModification.java index 44a1e27cb8..916a82bb85 100644 --- a/tests/testbench/com/vaadin/tests/layouts/VerticalLayoutExpandRatioModification.java +++ b/tests/testbench/com/vaadin/tests/layouts/VerticalLayoutExpandRatioModification.java @@ -55,6 +55,7 @@ public class VerticalLayoutExpandRatioModification extends TestBase implements vl2.setSizeFull(); } + @Override public void buttonClick(ClickEvent event) { if (isVisible) { mainLayout.setExpandRatio(vl2, 0); diff --git a/tests/testbench/com/vaadin/tests/layouts/VerticalLayoutWithRelativeSizeComponentsInitiallyHidden.java b/tests/testbench/com/vaadin/tests/layouts/VerticalLayoutWithRelativeSizeComponentsInitiallyHidden.java index 98c5425bc6..f3d4029663 100644 --- a/tests/testbench/com/vaadin/tests/layouts/VerticalLayoutWithRelativeSizeComponentsInitiallyHidden.java +++ b/tests/testbench/com/vaadin/tests/layouts/VerticalLayoutWithRelativeSizeComponentsInitiallyHidden.java @@ -43,6 +43,7 @@ public class VerticalLayoutWithRelativeSizeComponentsInitiallyHidden extends "Click to set bar visible. Button should stay visible."); b.addListener(new ClickListener() { + @Override public void buttonClick(ClickEvent event) { bar.setVisible(true); foobar.setVisible(true); diff --git a/tests/testbench/com/vaadin/tests/layouts/layouttester/GridLayoutTests.java b/tests/testbench/com/vaadin/tests/layouts/layouttester/GridLayoutTests.java index 467705a103..d53fda1748 100644 --- a/tests/testbench/com/vaadin/tests/layouts/layouttester/GridLayoutTests.java +++ b/tests/testbench/com/vaadin/tests/layouts/layouttester/GridLayoutTests.java @@ -150,6 +150,7 @@ public class GridLayoutTests extends AbstractLayoutTests { button1.addListener(new Button.ClickListener() { private static final long serialVersionUID = 7716267156088629379L; + @Override public void buttonClick(ClickEvent event) { glo.addComponent(cc1); button1.setEnabled(false); @@ -159,6 +160,7 @@ public class GridLayoutTests extends AbstractLayoutTests { button2.addListener(new Button.ClickListener() { private static final long serialVersionUID = 7716267156088629379L; + @Override public void buttonClick(ClickEvent event) { glo.replaceComponent(x22, cc2); button2.setEnabled(false); @@ -168,6 +170,7 @@ public class GridLayoutTests extends AbstractLayoutTests { button3.addListener(new Button.ClickListener() { private static final long serialVersionUID = 7716267156088629379L; + @Override public void buttonClick(ClickEvent event) { glo.moveComponentsFrom(source); button3.setEnabled(false); @@ -177,6 +180,7 @@ public class GridLayoutTests extends AbstractLayoutTests { button4.addListener(new Button.ClickListener() { private static final long serialVersionUID = 7716267156088629379L; + @Override public void buttonClick(ClickEvent event) { glo.removeComponent(1, 1); button4.setEnabled(false); @@ -187,6 +191,7 @@ public class GridLayoutTests extends AbstractLayoutTests { button5.addListener(new Button.ClickListener() { private static final long serialVersionUID = 7716267156088629379L; + @Override public void buttonClick(ClickEvent event) { glo.removeRow(0); button5.setEnabled(false); @@ -196,6 +201,7 @@ public class GridLayoutTests extends AbstractLayoutTests { button6.addListener(new Button.ClickListener() { private static final long serialVersionUID = 7716267156088629379L; + @Override public void buttonClick(ClickEvent event) { glo.removeComponent(row3); button6.setEnabled(false); @@ -230,6 +236,7 @@ public class GridLayoutTests extends AbstractLayoutTests { button1.addListener(new Button.ClickListener() { private static final long serialVersionUID = 7716267156088629379L; + @Override public void buttonClick(ClickEvent event) { x3.setSizeFull(); button1.setEnabled(false); @@ -239,6 +246,7 @@ public class GridLayoutTests extends AbstractLayoutTests { button2.addListener(new Button.ClickListener() { private static final long serialVersionUID = 7716267156088629379L; + @Override public void buttonClick(ClickEvent event) { x3.setWidth("200px"); button2.setEnabled(false); @@ -248,6 +256,7 @@ public class GridLayoutTests extends AbstractLayoutTests { button3.addListener(new Button.ClickListener() { private static final long serialVersionUID = 7716267156088629379L; + @Override public void buttonClick(ClickEvent event) { x22.setWidth("200px"); button3.setEnabled(false); @@ -257,6 +266,7 @@ public class GridLayoutTests extends AbstractLayoutTests { button4.addListener(new Button.ClickListener() { private static final long serialVersionUID = 7716267156088629379L; + @Override public void buttonClick(ClickEvent event) { x22.setSizeUndefined(); ((Table) x22).addItem(new Object[] { "NEW ROW1" }, 3); @@ -292,6 +302,7 @@ public class GridLayoutTests extends AbstractLayoutTests { button1.addListener(new Button.ClickListener() { private static final long serialVersionUID = 7716267156088629379L; + @Override public void buttonClick(ClickEvent event) { glo.setColumnExpandRatio(3, 1); button1.setEnabled(false); @@ -301,6 +312,7 @@ public class GridLayoutTests extends AbstractLayoutTests { button2.addListener(new Button.ClickListener() { private static final long serialVersionUID = 7716267156088629379L; + @Override public void buttonClick(ClickEvent event) { glo.setColumnExpandRatio(0, 0.25f); glo.setColumnExpandRatio(1, 0.25f); @@ -313,6 +325,7 @@ public class GridLayoutTests extends AbstractLayoutTests { button3.addListener(new Button.ClickListener() { private static final long serialVersionUID = 7716267156088629379L; + @Override public void buttonClick(ClickEvent event) { glo.setRowExpandRatio(0, 0.5f); button3.setEnabled(false); @@ -322,6 +335,7 @@ public class GridLayoutTests extends AbstractLayoutTests { button4.addListener(new Button.ClickListener() { private static final long serialVersionUID = 7716267156088629379L; + @Override public void buttonClick(ClickEvent event) { glo.setRowExpandRatio(3, 0.3f); button4.setEnabled(false); @@ -394,6 +408,7 @@ public class GridLayoutTests extends AbstractLayoutTests { button1.addListener(new Button.ClickListener() { private static final long serialVersionUID = 7716267156088629379L; + @Override public void buttonClick(ClickEvent event) { glo.setHeight("350px"); button1.setEnabled(false); @@ -403,6 +418,7 @@ public class GridLayoutTests extends AbstractLayoutTests { button2.addListener(new Button.ClickListener() { private static final long serialVersionUID = 7716267156088629379L; + @Override public void buttonClick(ClickEvent event) { glo.setSizeUndefined(); glo.addComponent(new Label("--- NEW LABEL ---")); @@ -413,6 +429,7 @@ public class GridLayoutTests extends AbstractLayoutTests { button3.addListener(new Button.ClickListener() { private static final long serialVersionUID = 7716267156088629379L; + @Override public void buttonClick(ClickEvent event) { glo.setWidth("75%"); glo.setHeight("75%"); @@ -423,6 +440,7 @@ public class GridLayoutTests extends AbstractLayoutTests { button4.addListener(new Button.ClickListener() { private static final long serialVersionUID = 7716267156088629379L; + @Override public void buttonClick(ClickEvent event) { glo.setSizeFull(); button4.setEnabled(false); @@ -457,6 +475,7 @@ public class GridLayoutTests extends AbstractLayoutTests { button1.addListener(new Button.ClickListener() { private static final long serialVersionUID = 7716267156088629379L; + @Override public void buttonClick(ClickEvent event) { glo.setMargin(true); button1.setEnabled(false); @@ -466,6 +485,7 @@ public class GridLayoutTests extends AbstractLayoutTests { button2.addListener(new Button.ClickListener() { private static final long serialVersionUID = 7716267156088629379L; + @Override public void buttonClick(ClickEvent event) { glo.setSpacing(true); button2.setEnabled(false); @@ -475,6 +495,7 @@ public class GridLayoutTests extends AbstractLayoutTests { button3.addListener(new Button.ClickListener() { private static final long serialVersionUID = 7716267156088629379L; + @Override public void buttonClick(ClickEvent event) { glo.setMargin(false); button3.setEnabled(false); @@ -484,6 +505,7 @@ public class GridLayoutTests extends AbstractLayoutTests { button4.addListener(new Button.ClickListener() { private static final long serialVersionUID = 7716267156088629379L; + @Override public void buttonClick(ClickEvent event) { glo.setSpacing(false); button4.setEnabled(false); diff --git a/tests/testbench/com/vaadin/tests/layouts/layouttester/HorizontalLayoutTests.java b/tests/testbench/com/vaadin/tests/layouts/layouttester/HorizontalLayoutTests.java index bd60e9ff21..ab4bb265c5 100644 --- a/tests/testbench/com/vaadin/tests/layouts/layouttester/HorizontalLayoutTests.java +++ b/tests/testbench/com/vaadin/tests/layouts/layouttester/HorizontalLayoutTests.java @@ -1,11 +1,11 @@ package com.vaadin.tests.layouts.layouttester; import com.vaadin.Application; +import com.vaadin.shared.ui.label.ContentMode; import com.vaadin.terminal.Resource; import com.vaadin.terminal.SystemError; import com.vaadin.terminal.ThemeResource; import com.vaadin.terminal.UserError; -import com.vaadin.terminal.gwt.client.ui.label.ContentMode; import com.vaadin.ui.AbstractComponent; import com.vaadin.ui.AbstractField; import com.vaadin.ui.Alignment; @@ -132,6 +132,7 @@ public class HorizontalLayoutTests extends AbstractLayoutTests { addButton.addListener(new Button.ClickListener() { private static final long serialVersionUID = 7716267156088629379L; + @Override public void buttonClick(ClickEvent event) { vlo.addComponent(new TextField()); addButton.setEnabled(false); @@ -141,6 +142,7 @@ public class HorizontalLayoutTests extends AbstractLayoutTests { replaceButton.addListener(new Button.ClickListener() { private static final long serialVersionUID = 7716267156088629379L; + @Override public void buttonClick(ClickEvent event) { vlo.replaceComponent(c1, c3); replaceButton.setEnabled(false); @@ -150,6 +152,7 @@ public class HorizontalLayoutTests extends AbstractLayoutTests { moveButton.addListener(new Button.ClickListener() { private static final long serialVersionUID = 7716267156088629379L; + @Override public void buttonClick(ClickEvent event) { vlo.moveComponentsFrom(source); moveButton.setEnabled(false); @@ -159,6 +162,7 @@ public class HorizontalLayoutTests extends AbstractLayoutTests { removeButton.addListener(new Button.ClickListener() { private static final long serialVersionUID = 7716267156088629379L; + @Override public void buttonClick(ClickEvent event) { vlo.removeComponent(c1); vlo.removeComponent(c2); @@ -203,6 +207,7 @@ public class HorizontalLayoutTests extends AbstractLayoutTests { biggerButton.addListener(new Button.ClickListener() { private static final long serialVersionUID = 7716267156088629379L; + @Override public void buttonClick(ClickEvent event) { c.setSizeFull(); biggerButton.setEnabled(false); @@ -212,6 +217,7 @@ public class HorizontalLayoutTests extends AbstractLayoutTests { smallerButton.addListener(new Button.ClickListener() { private static final long serialVersionUID = 7716267156088629379L; + @Override public void buttonClick(ClickEvent event) { c.setWidth("200px"); smallerButton.setEnabled(false); @@ -221,6 +227,7 @@ public class HorizontalLayoutTests extends AbstractLayoutTests { originalButton.addListener(new Button.ClickListener() { private static final long serialVersionUID = 7716267156088629379L; + @Override public void buttonClick(ClickEvent event) { originalButton.setEnabled(false); c.setSizeUndefined(); @@ -270,6 +277,7 @@ public class HorizontalLayoutTests extends AbstractLayoutTests { button1.addListener(new Button.ClickListener() { private static final long serialVersionUID = 7716267156088629379L; + @Override public void buttonClick(ClickEvent event) { vlo.setHeight("350px"); button1.setEnabled(false); @@ -279,6 +287,7 @@ public class HorizontalLayoutTests extends AbstractLayoutTests { button2.addListener(new Button.ClickListener() { private static final long serialVersionUID = 7716267156088629379L; + @Override public void buttonClick(ClickEvent event) { vlo.setSizeUndefined(); vlo.addComponent(new Label("--- NEW LABEL ---")); @@ -289,6 +298,7 @@ public class HorizontalLayoutTests extends AbstractLayoutTests { button3.addListener(new Button.ClickListener() { private static final long serialVersionUID = 7716267156088629379L; + @Override public void buttonClick(ClickEvent event) { vlo.setWidth("75%"); vlo.setHeight("75%"); @@ -299,6 +309,7 @@ public class HorizontalLayoutTests extends AbstractLayoutTests { button4.addListener(new Button.ClickListener() { private static final long serialVersionUID = 7716267156088629379L; + @Override public void buttonClick(ClickEvent event) { vlo.setSizeFull(); button4.setEnabled(false); @@ -335,6 +346,7 @@ public class HorizontalLayoutTests extends AbstractLayoutTests { button1.addListener(new Button.ClickListener() { private static final long serialVersionUID = 7716267156088629379L; + @Override public void buttonClick(ClickEvent event) { vlo.setExpandRatio(c1, 1.0f); button1.setEnabled(false); @@ -344,6 +356,7 @@ public class HorizontalLayoutTests extends AbstractLayoutTests { button2.addListener(new Button.ClickListener() { private static final long serialVersionUID = 7716267156088629379L; + @Override public void buttonClick(ClickEvent event) { vlo.setExpandRatio(c1, 0.5f); vlo.setExpandRatio(c2, 0.5f); @@ -354,6 +367,7 @@ public class HorizontalLayoutTests extends AbstractLayoutTests { button3.addListener(new Button.ClickListener() { private static final long serialVersionUID = 7716267156088629379L; + @Override public void buttonClick(ClickEvent event) { vlo.setExpandRatio(c1, 0.75f); vlo.setExpandRatio(c2, 0.25f); @@ -442,6 +456,7 @@ public class HorizontalLayoutTests extends AbstractLayoutTests { button1.addListener(new Button.ClickListener() { private static final long serialVersionUID = 7716267156088629379L; + @Override public void buttonClick(ClickEvent event) { vlo.setMargin(true); button1.setEnabled(false); @@ -451,6 +466,7 @@ public class HorizontalLayoutTests extends AbstractLayoutTests { button2.addListener(new Button.ClickListener() { private static final long serialVersionUID = 7716267156088629379L; + @Override public void buttonClick(ClickEvent event) { vlo.setSpacing(true); button2.setEnabled(false); @@ -460,6 +476,7 @@ public class HorizontalLayoutTests extends AbstractLayoutTests { button3.addListener(new Button.ClickListener() { private static final long serialVersionUID = 7716267156088629379L; + @Override public void buttonClick(ClickEvent event) { vlo.setMargin(false); button3.setEnabled(false); @@ -469,6 +486,7 @@ public class HorizontalLayoutTests extends AbstractLayoutTests { button4.addListener(new Button.ClickListener() { private static final long serialVersionUID = 7716267156088629379L; + @Override public void buttonClick(ClickEvent event) { vlo.setSpacing(false); button4.setEnabled(false); diff --git a/tests/testbench/com/vaadin/tests/layouts/layouttester/LayoutTesterApplication.java b/tests/testbench/com/vaadin/tests/layouts/layouttester/LayoutTesterApplication.java index 6a524cd024..90193be7cc 100644 --- a/tests/testbench/com/vaadin/tests/layouts/layouttester/LayoutTesterApplication.java +++ b/tests/testbench/com/vaadin/tests/layouts/layouttester/LayoutTesterApplication.java @@ -35,6 +35,7 @@ public class LayoutTesterApplication extends AbstractTestCase { nextButton.addListener(new Button.ClickListener() { private static final long serialVersionUID = -1577298910202253538L; + @Override public void buttonClick(ClickEvent event) { nextLaytout(); } @@ -106,6 +107,7 @@ public class LayoutTesterApplication extends AbstractTestCase { layoutSelector.addListener(new Property.ValueChangeListener() { private static final long serialVersionUID = -605319614765838359L; + @Override public void valueChange(ValueChangeEvent event) { layoutIndex = -1; nextLaytout(); diff --git a/tests/testbench/com/vaadin/tests/layouts/layouttester/VerticalLayoutTests.java b/tests/testbench/com/vaadin/tests/layouts/layouttester/VerticalLayoutTests.java index 2861acabdd..be32ca513b 100644 --- a/tests/testbench/com/vaadin/tests/layouts/layouttester/VerticalLayoutTests.java +++ b/tests/testbench/com/vaadin/tests/layouts/layouttester/VerticalLayoutTests.java @@ -1,11 +1,11 @@ package com.vaadin.tests.layouts.layouttester; import com.vaadin.Application; +import com.vaadin.shared.ui.label.ContentMode; import com.vaadin.terminal.Resource; import com.vaadin.terminal.SystemError; import com.vaadin.terminal.ThemeResource; import com.vaadin.terminal.UserError; -import com.vaadin.terminal.gwt.client.ui.label.ContentMode; import com.vaadin.ui.AbstractComponent; import com.vaadin.ui.AbstractField; import com.vaadin.ui.Alignment; @@ -133,6 +133,7 @@ public class VerticalLayoutTests extends AbstractLayoutTests { addButton.addListener(new Button.ClickListener() { private static final long serialVersionUID = 7716267156088629379L; + @Override public void buttonClick(ClickEvent event) { vlo2.addComponent(new TextField()); addButton.setEnabled(false); @@ -142,6 +143,7 @@ public class VerticalLayoutTests extends AbstractLayoutTests { replaceButton.addListener(new Button.ClickListener() { private static final long serialVersionUID = 7716267156088629379L; + @Override public void buttonClick(ClickEvent event) { vlo2.replaceComponent(c1, c3); replaceButton.setEnabled(false); @@ -151,6 +153,7 @@ public class VerticalLayoutTests extends AbstractLayoutTests { moveButton.addListener(new Button.ClickListener() { private static final long serialVersionUID = 7716267156088629379L; + @Override public void buttonClick(ClickEvent event) { vlo2.moveComponentsFrom(source); moveButton.setEnabled(false); @@ -160,6 +163,7 @@ public class VerticalLayoutTests extends AbstractLayoutTests { removeButton.addListener(new Button.ClickListener() { private static final long serialVersionUID = 7716267156088629379L; + @Override public void buttonClick(ClickEvent event) { vlo2.removeComponent(c1); vlo2.removeComponent(c2); @@ -206,6 +210,7 @@ public class VerticalLayoutTests extends AbstractLayoutTests { biggerButton.addListener(new Button.ClickListener() { private static final long serialVersionUID = 7716267156088629379L; + @Override public void buttonClick(ClickEvent event) { c.setSizeFull(); biggerButton.setEnabled(false); @@ -215,6 +220,7 @@ public class VerticalLayoutTests extends AbstractLayoutTests { smallerButton.addListener(new Button.ClickListener() { private static final long serialVersionUID = 7716267156088629379L; + @Override public void buttonClick(ClickEvent event) { c.setWidth("200px"); smallerButton.setEnabled(false); @@ -224,6 +230,7 @@ public class VerticalLayoutTests extends AbstractLayoutTests { originalButton.addListener(new Button.ClickListener() { private static final long serialVersionUID = 7716267156088629379L; + @Override public void buttonClick(ClickEvent event) { originalButton.setEnabled(false); c.setSizeUndefined(); @@ -280,6 +287,7 @@ public class VerticalLayoutTests extends AbstractLayoutTests { button1.addListener(new Button.ClickListener() { private static final long serialVersionUID = 7716267156088629379L; + @Override public void buttonClick(ClickEvent event) { vlo2.setHeight("350px"); button1.setEnabled(false); @@ -289,6 +297,7 @@ public class VerticalLayoutTests extends AbstractLayoutTests { button2.addListener(new Button.ClickListener() { private static final long serialVersionUID = 7716267156088629379L; + @Override public void buttonClick(ClickEvent event) { vlo2.setSizeUndefined(); Label newLabel = new Label("--- NEW LABEL ---"); @@ -301,6 +310,7 @@ public class VerticalLayoutTests extends AbstractLayoutTests { button3.addListener(new Button.ClickListener() { private static final long serialVersionUID = 7716267156088629379L; + @Override public void buttonClick(ClickEvent event) { vlo2.setWidth("75%"); vlo2.setHeight("75%"); @@ -311,6 +321,7 @@ public class VerticalLayoutTests extends AbstractLayoutTests { button4.addListener(new Button.ClickListener() { private static final long serialVersionUID = 7716267156088629379L; + @Override public void buttonClick(ClickEvent event) { vlo2.setSizeFull(); button4.setEnabled(false); @@ -351,6 +362,7 @@ public class VerticalLayoutTests extends AbstractLayoutTests { button1.addListener(new Button.ClickListener() { private static final long serialVersionUID = 7716267156088629379L; + @Override public void buttonClick(ClickEvent event) { vlo2.setExpandRatio(c1, 1.0f); button1.setEnabled(false); @@ -360,6 +372,7 @@ public class VerticalLayoutTests extends AbstractLayoutTests { button2.addListener(new Button.ClickListener() { private static final long serialVersionUID = 7716267156088629379L; + @Override public void buttonClick(ClickEvent event) { vlo2.setExpandRatio(c1, 0.5f); vlo2.setExpandRatio(c2, 0.5f); @@ -370,6 +383,7 @@ public class VerticalLayoutTests extends AbstractLayoutTests { button3.addListener(new Button.ClickListener() { private static final long serialVersionUID = 7716267156088629379L; + @Override public void buttonClick(ClickEvent event) { vlo2.setExpandRatio(c1, 0.75f); vlo2.setExpandRatio(c2, 0.25f); @@ -470,6 +484,7 @@ public class VerticalLayoutTests extends AbstractLayoutTests { button1.addListener(new Button.ClickListener() { private static final long serialVersionUID = 7716267156088629379L; + @Override public void buttonClick(ClickEvent event) { vlo2.setMargin(true); button1.setEnabled(false); @@ -479,6 +494,7 @@ public class VerticalLayoutTests extends AbstractLayoutTests { button2.addListener(new Button.ClickListener() { private static final long serialVersionUID = 7716267156088629379L; + @Override public void buttonClick(ClickEvent event) { vlo2.setSpacing(true); button2.setEnabled(false); @@ -488,6 +504,7 @@ public class VerticalLayoutTests extends AbstractLayoutTests { button3.addListener(new Button.ClickListener() { private static final long serialVersionUID = 7716267156088629379L; + @Override public void buttonClick(ClickEvent event) { vlo2.setMargin(false); button3.setEnabled(false); @@ -497,6 +514,7 @@ public class VerticalLayoutTests extends AbstractLayoutTests { button4.addListener(new Button.ClickListener() { private static final long serialVersionUID = 7716267156088629379L; + @Override public void buttonClick(ClickEvent event) { vlo2.setSpacing(false); button4.setEnabled(false); diff --git a/tests/testbench/com/vaadin/tests/minitutorials/v7a1/DynamicImageRoot.java b/tests/testbench/com/vaadin/tests/minitutorials/v7a1/DynamicImageRoot.java index 9ed2bd2c75..81f225bc63 100644 --- a/tests/testbench/com/vaadin/tests/minitutorials/v7a1/DynamicImageRoot.java +++ b/tests/testbench/com/vaadin/tests/minitutorials/v7a1/DynamicImageRoot.java @@ -55,6 +55,7 @@ class DynamicImageRequestHandler implements RequestHandler { public static final String IMAGE_URL = "myimage.png"; + @Override public boolean handleRequest(Application application, WrappedRequest request, WrappedResponse response) throws IOException { diff --git a/tests/testbench/com/vaadin/tests/minitutorials/v7a1/FindCurrentRootAndApplication.java b/tests/testbench/com/vaadin/tests/minitutorials/v7a1/FindCurrentRootAndApplication.java index b237666caa..ed0a5ba955 100644 --- a/tests/testbench/com/vaadin/tests/minitutorials/v7a1/FindCurrentRootAndApplication.java +++ b/tests/testbench/com/vaadin/tests/minitutorials/v7a1/FindCurrentRootAndApplication.java @@ -27,17 +27,23 @@ public class FindCurrentRootAndApplication extends Root { protected void init(WrappedRequest request) { Button helloButton = new Button("Say Hello"); helloButton.addListener(new ClickListener() { + @Override public void buttonClick(ClickEvent event) { String msg = "Running in "; msg += Application.getCurrent().isProductionMode() ? "production" : "debug"; - msg += " mode in a Root with the caption " - + Root.getCurrent().getCaption(); - Notification.show(msg); } }); + helloButton.addListener(new ClickListener() { + @Override + public void buttonClick(ClickEvent event) { + Notification.show("This Root is " + + Root.getCurrent().getClass().getSimpleName()); + } + }); + addComponent(helloButton); } diff --git a/tests/testbench/com/vaadin/tests/minitutorials/v7a1/IntegerTextFieldDataSource.java b/tests/testbench/com/vaadin/tests/minitutorials/v7a1/IntegerTextFieldDataSource.java index dd32242062..af60b0e9e3 100644 --- a/tests/testbench/com/vaadin/tests/minitutorials/v7a1/IntegerTextFieldDataSource.java +++ b/tests/testbench/com/vaadin/tests/minitutorials/v7a1/IntegerTextFieldDataSource.java @@ -35,14 +35,15 @@ public class IntegerTextFieldDataSource extends AbstractTestRoot { final TextField textField = new TextField("Text field", integerProperty); Button submitButton = new Button("Submit value", new ClickListener() { + @Override public void buttonClick(ClickEvent event) { String uiValue = textField.getValue(); Integer propertyValue = integerProperty.getValue(); int dataModelValue = myBean.getValue(); Notification.show("UI value (String): " + uiValue - + "<br />Property value (Integer): " + propertyValue - + "<br />Data model value (int): " + dataModelValue); + + "\nProperty value (Integer): " + propertyValue + + "\nData model value (int): " + dataModelValue); } }); diff --git a/tests/testbench/com/vaadin/tests/minitutorials/v7a1/IntegerTextFieldStandalone.java b/tests/testbench/com/vaadin/tests/minitutorials/v7a1/IntegerTextFieldStandalone.java index 9c720e45a5..f733b5df40 100644 --- a/tests/testbench/com/vaadin/tests/minitutorials/v7a1/IntegerTextFieldStandalone.java +++ b/tests/testbench/com/vaadin/tests/minitutorials/v7a1/IntegerTextFieldStandalone.java @@ -19,6 +19,7 @@ public class IntegerTextFieldStandalone extends AbstractTestRoot { textField.setConverter(new StringToIntegerConverter()); Button submitButton = new Button("Submit value", new ClickListener() { + @Override public void buttonClick(ClickEvent event) { String uiValue = textField.getValue(); try { diff --git a/tests/testbench/com/vaadin/tests/minitutorials/v7a1/StringMyTypeConverter.java b/tests/testbench/com/vaadin/tests/minitutorials/v7a1/StringMyTypeConverter.java index 4ccd73b2b3..c2393300f2 100644 --- a/tests/testbench/com/vaadin/tests/minitutorials/v7a1/StringMyTypeConverter.java +++ b/tests/testbench/com/vaadin/tests/minitutorials/v7a1/StringMyTypeConverter.java @@ -24,6 +24,7 @@ public class StringMyTypeConverter extends AbstractTestRoot { addComponent(textField); addComponent(new Button("Submit value", new ClickListener() { + @Override public void buttonClick(ClickEvent event) { try { Name name = (Name) textField.getConvertedValue(); @@ -50,6 +51,7 @@ public class StringMyTypeConverter extends AbstractTestRoot { } class StringToNameConverter implements Converter<String, Name> { + @Override public Name convertToModel(String text, Locale locale) throws ConversionException { if (text == null) { @@ -63,6 +65,7 @@ class StringToNameConverter implements Converter<String, Name> { return new Name(parts[0], parts[1]); } + @Override public String convertToPresentation(Name name, Locale locale) throws ConversionException { if (name == null) { @@ -72,10 +75,12 @@ class StringToNameConverter implements Converter<String, Name> { } } + @Override public Class<Name> getModelType() { return Name.class; } + @Override public Class<String> getPresentationType() { return String.class; } diff --git a/tests/testbench/com/vaadin/tests/minitutorials/v7a1/UsingUriFragments.java b/tests/testbench/com/vaadin/tests/minitutorials/v7a1/UsingUriFragments.java index e98b698c07..bf497a7b86 100644 --- a/tests/testbench/com/vaadin/tests/minitutorials/v7a1/UsingUriFragments.java +++ b/tests/testbench/com/vaadin/tests/minitutorials/v7a1/UsingUriFragments.java @@ -30,6 +30,7 @@ public class UsingUriFragments extends Root { // React to fragment changes getPage().addListener(new FragmentChangedListener() { + @Override public void fragmentChanged(FragmentChangedEvent source) { handleFragment(source.getFragment()); } @@ -40,6 +41,7 @@ public class UsingUriFragments extends Root { addComponent(new Button("Show and set fragment", new Button.ClickListener() { + @Override public void buttonClick(ClickEvent event) { handleFragment(getPage().getFragment()); getPage().setFragment("customFragment"); diff --git a/tests/testbench/com/vaadin/tests/minitutorials/v7a2/MyComponent.java b/tests/testbench/com/vaadin/tests/minitutorials/v7a2/MyComponent.java index 5c4fa9d10b..b4dab09807 100644 --- a/tests/testbench/com/vaadin/tests/minitutorials/v7a2/MyComponent.java +++ b/tests/testbench/com/vaadin/tests/minitutorials/v7a2/MyComponent.java @@ -4,7 +4,7 @@ package com.vaadin.tests.minitutorials.v7a2; -import com.vaadin.terminal.gwt.client.MouseEventDetails; +import com.vaadin.shared.MouseEventDetails; import com.vaadin.tests.widgetset.client.minitutorials.v7a2.MyComponentClientRpc; import com.vaadin.tests.widgetset.client.minitutorials.v7a2.MyComponentServerRpc; import com.vaadin.tests.widgetset.client.minitutorials.v7a2.MyComponentState; @@ -14,6 +14,7 @@ public class MyComponent extends AbstractComponent { private int clickCount = 0; private MyComponentServerRpc rpc = new MyComponentServerRpc() { + @Override public void clicked(MouseEventDetails mouseDetails) { clickCount++; diff --git a/tests/testbench/com/vaadin/tests/minitutorials/v7a2/MyPickerConnector.java b/tests/testbench/com/vaadin/tests/minitutorials/v7a2/MyPickerConnector.java index ea278da218..98ff0386b3 100644 --- a/tests/testbench/com/vaadin/tests/minitutorials/v7a2/MyPickerConnector.java +++ b/tests/testbench/com/vaadin/tests/minitutorials/v7a2/MyPickerConnector.java @@ -29,6 +29,7 @@ public class MyPickerConnector extends AbstractComponentConnector implements } private final ElementResizeListener listener = new ElementResizeListener() { + @Override public void onElementResize(ElementResizeEvent e) { int buttonWidth = getLayoutManager().getOuterWidth(e.getElement()); buttonWidth -= getLayoutManager().getMarginRight(e.getElement()); @@ -52,6 +53,7 @@ public class MyPickerConnector extends AbstractComponentConnector implements getLayoutManager().unregisterDependency(this, button); } + @Override public void layout() { Element button = getWidget().getWidget(1).getElement(); int buttonWidth = getLayoutManager().getOuterWidth(button); diff --git a/tests/testbench/com/vaadin/tests/minitutorials/v7a2/MyPickerWidget.java b/tests/testbench/com/vaadin/tests/minitutorials/v7a2/MyPickerWidget.java index 213a1b9e6b..7818ac4f99 100644 --- a/tests/testbench/com/vaadin/tests/minitutorials/v7a2/MyPickerWidget.java +++ b/tests/testbench/com/vaadin/tests/minitutorials/v7a2/MyPickerWidget.java @@ -27,6 +27,7 @@ public class MyPickerWidget extends ComplexPanel { add(button, getElement()); button.addClickHandler(new ClickHandler() { + @Override public void onClick(ClickEvent event) { Window.alert("Calendar picker not yet supported!"); } diff --git a/tests/testbench/com/vaadin/tests/minitutorials/v7a2/ResourceInStateComponent.java b/tests/testbench/com/vaadin/tests/minitutorials/v7a2/ResourceInStateComponent.java index f9d4cb38e6..b47f555640 100644 --- a/tests/testbench/com/vaadin/tests/minitutorials/v7a2/ResourceInStateComponent.java +++ b/tests/testbench/com/vaadin/tests/minitutorials/v7a2/ResourceInStateComponent.java @@ -20,11 +20,6 @@ public class ResourceInStateComponent extends AbstractComponent { } public Resource getMyIcon() { - ResourceReference ref = ((ResourceReference) getState().getMyIcon()); - if (ref != null) { - return ref.getResource(); - } else { - return null; - } + return ResourceReference.getResource(getState().getMyIcon()); } } diff --git a/tests/testbench/com/vaadin/tests/minitutorials/v7a2/WidgetContainer.java b/tests/testbench/com/vaadin/tests/minitutorials/v7a2/WidgetContainer.java index 3c2f9a68b4..40bb7b68b8 100644 --- a/tests/testbench/com/vaadin/tests/minitutorials/v7a2/WidgetContainer.java +++ b/tests/testbench/com/vaadin/tests/minitutorials/v7a2/WidgetContainer.java @@ -25,6 +25,7 @@ public class WidgetContainer extends AbstractComponentContainer { requestRepaint(); } + @Override public void replaceComponent(Component oldComponent, Component newComponent) { int index = children.indexOf(oldComponent); if (index != -1) { @@ -36,10 +37,12 @@ public class WidgetContainer extends AbstractComponentContainer { } } + @Override public int getComponentCount() { return children.size(); } + @Override public Iterator<Component> getComponentIterator() { return children.iterator(); } diff --git a/tests/testbench/com/vaadin/tests/minitutorials/v7a2/WidgetcontainerRoot.java b/tests/testbench/com/vaadin/tests/minitutorials/v7a2/WidgetcontainerRoot.java index 3b24ec400e..fae4265750 100644 --- a/tests/testbench/com/vaadin/tests/minitutorials/v7a2/WidgetcontainerRoot.java +++ b/tests/testbench/com/vaadin/tests/minitutorials/v7a2/WidgetcontainerRoot.java @@ -24,6 +24,7 @@ public class WidgetcontainerRoot extends Root { "Click the button to add components to the WidgetContainer.")); Button button = new Button("Add more components", new ClickListener() { + @Override public void buttonClick(ClickEvent event) { Random randomGenerator = new Random(); int random = randomGenerator.nextInt(3); diff --git a/tests/testbench/com/vaadin/tests/minitutorials/v7a3/Analytics.java b/tests/testbench/com/vaadin/tests/minitutorials/v7a3/Analytics.java new file mode 100644 index 0000000000..bd4cfd5839 --- /dev/null +++ b/tests/testbench/com/vaadin/tests/minitutorials/v7a3/Analytics.java @@ -0,0 +1,37 @@ +/* +@VaadinApache2LicenseForJavaFiles@ + */ + +package com.vaadin.tests.minitutorials.v7a3; + +import com.vaadin.annotations.JavaScript; +import com.vaadin.terminal.AbstractJavaScriptExtension; +import com.vaadin.terminal.gwt.server.ClientConnector; +import com.vaadin.ui.Root; + +@JavaScript("analytics_connector.js") +public class Analytics extends AbstractJavaScriptExtension { + + public Analytics(String account) { + pushCommand("_setAccount", account); + } + + public void trackPageview(String name) { + pushCommand("_trackPageview", name); + } + + private void pushCommand(Object... commandAndArguments) { + // Cast to Object to use Object[] commandAndArguments as the first + // varargs argument instead of as the full varargs argument array. + invokeCallback("pushCommand", (Object) commandAndArguments); + } + + protected void extend(Root root) { + super.extend(root); + } + + @Override + protected Class<? extends ClientConnector> getSupportedParentType() { + return Root.class; + } +} diff --git a/tests/testbench/com/vaadin/tests/minitutorials/v7a3/AnalyticsRoot.java b/tests/testbench/com/vaadin/tests/minitutorials/v7a3/AnalyticsRoot.java new file mode 100644 index 0000000000..6f59aa765e --- /dev/null +++ b/tests/testbench/com/vaadin/tests/minitutorials/v7a3/AnalyticsRoot.java @@ -0,0 +1,27 @@ +/* +@VaadinApache2LicenseForJavaFiles@ + */ + +package com.vaadin.tests.minitutorials.v7a3; + +import com.vaadin.terminal.WrappedRequest; +import com.vaadin.ui.Button; +import com.vaadin.ui.Button.ClickEvent; +import com.vaadin.ui.Root; + +public class AnalyticsRoot extends Root { + + @Override + protected void init(WrappedRequest request) { + final Analytics analytics = new Analytics("UA-33036133-12"); + analytics.extend(this); + + addComponent(new Button("Track pageview", new Button.ClickListener() { + @Override + public void buttonClick(ClickEvent event) { + analytics.trackPageview("/fake/url"); + } + })); + } + +} diff --git a/tests/testbench/com/vaadin/tests/minitutorials/v7a3/ComplexTypesBean.java b/tests/testbench/com/vaadin/tests/minitutorials/v7a3/ComplexTypesBean.java new file mode 100644 index 0000000000..2dc6dea432 --- /dev/null +++ b/tests/testbench/com/vaadin/tests/minitutorials/v7a3/ComplexTypesBean.java @@ -0,0 +1,27 @@ +/* +@VaadinApache2LicenseForJavaFiles@ + */ + +package com.vaadin.tests.minitutorials.v7a3; + +public class ComplexTypesBean { + private int integer; + private ComplexTypesBean bean; + + public int getInteger() { + return integer; + } + + public void setInteger(int integer) { + this.integer = integer; + } + + public ComplexTypesBean getBean() { + return bean; + } + + public void setBean(ComplexTypesBean bean) { + this.bean = bean; + } + +} diff --git a/tests/testbench/com/vaadin/tests/minitutorials/v7a3/ComplexTypesComponent.java b/tests/testbench/com/vaadin/tests/minitutorials/v7a3/ComplexTypesComponent.java new file mode 100644 index 0000000000..9f452c61b0 --- /dev/null +++ b/tests/testbench/com/vaadin/tests/minitutorials/v7a3/ComplexTypesComponent.java @@ -0,0 +1,53 @@ +/* +@VaadinApache2LicenseForJavaFiles@ + */ + +package com.vaadin.tests.minitutorials.v7a3; + +import java.util.ArrayList; +import java.util.Arrays; +import java.util.HashMap; +import java.util.List; +import java.util.Map; + +import com.vaadin.annotations.JavaScript; +import com.vaadin.shared.Connector; +import com.vaadin.ui.AbstractJavaScriptComponent; +import com.vaadin.ui.Root; + +@JavaScript("complex_types_connector.js") +public class ComplexTypesComponent extends AbstractJavaScriptComponent { + public void sendComplexTypes() { + List<String> list = new ArrayList<String>(); + list.add("First string"); + list.add(null); + list.add("Another string"); + + Map<String, Integer> stringMap = new HashMap<String, Integer>(); + stringMap.put("one", 1); + stringMap.put("two", 2); + + Map<Integer, String> otherMap = new HashMap<Integer, String>(); + otherMap.put(3, "3"); + otherMap.put(4, "4"); + + Map<Connector, String> connectorMap = new HashMap<Connector, String>(); + connectorMap.put(this, "this"); + connectorMap.put(Root.getCurrent(), "root"); + + boolean[] bits = { true, true, false, true }; + + List<List<Double>> matrix = Arrays.asList(Arrays.asList(1d, 2d), + Arrays.asList(3d, 4d)); + + ComplexTypesBean innerBean = new ComplexTypesBean(); + innerBean.setInteger(-42); + + ComplexTypesBean bean = new ComplexTypesBean(); + bean.setInteger(42); + bean.setBean(innerBean); + + getRpcProxy(ComplexTypesRpc.class).sendComplexTypes(list, stringMap, + otherMap, connectorMap, bits, matrix, bean); + } +} diff --git a/tests/testbench/com/vaadin/tests/minitutorials/v7a3/ComplexTypesRoot.java b/tests/testbench/com/vaadin/tests/minitutorials/v7a3/ComplexTypesRoot.java new file mode 100644 index 0000000000..dc46fe0c29 --- /dev/null +++ b/tests/testbench/com/vaadin/tests/minitutorials/v7a3/ComplexTypesRoot.java @@ -0,0 +1,19 @@ +/* +@VaadinApache2LicenseForJavaFiles@ + */ + +package com.vaadin.tests.minitutorials.v7a3; + +import com.vaadin.terminal.WrappedRequest; +import com.vaadin.ui.Root; + +public class ComplexTypesRoot extends Root { + + @Override + protected void init(WrappedRequest request) { + ComplexTypesComponent complexTypesComponent = new ComplexTypesComponent(); + complexTypesComponent.sendComplexTypes(); + addComponent(complexTypesComponent); + } + +} diff --git a/tests/testbench/com/vaadin/tests/minitutorials/v7a3/ComplexTypesRpc.java b/tests/testbench/com/vaadin/tests/minitutorials/v7a3/ComplexTypesRpc.java new file mode 100644 index 0000000000..f763f51118 --- /dev/null +++ b/tests/testbench/com/vaadin/tests/minitutorials/v7a3/ComplexTypesRpc.java @@ -0,0 +1,18 @@ +/* +@VaadinApache2LicenseForJavaFiles@ + */ + +package com.vaadin.tests.minitutorials.v7a3; + +import java.util.List; +import java.util.Map; + +import com.vaadin.shared.Connector; +import com.vaadin.shared.communication.ClientRpc; + +public interface ComplexTypesRpc extends ClientRpc { + public void sendComplexTypes(List<String> list, + Map<String, Integer> stringMap, Map<Integer, String> otherMap, + Map<Connector, String> connectorMap, boolean[] bits, + List<List<Double>> matrix, ComplexTypesBean bean); +} diff --git a/tests/testbench/com/vaadin/tests/minitutorials/v7a3/Flot.java b/tests/testbench/com/vaadin/tests/minitutorials/v7a3/Flot.java new file mode 100644 index 0000000000..946a67d7fd --- /dev/null +++ b/tests/testbench/com/vaadin/tests/minitutorials/v7a3/Flot.java @@ -0,0 +1,62 @@ +/* +@VaadinApache2LicenseForJavaFiles@ + */ + +package com.vaadin.tests.minitutorials.v7a3; + +import java.util.ArrayList; +import java.util.Arrays; +import java.util.List; + +import com.vaadin.annotations.JavaScript; +import com.vaadin.external.json.JSONArray; +import com.vaadin.external.json.JSONException; +import com.vaadin.ui.AbstractJavaScriptComponent; +import com.vaadin.ui.JavaScriptCallback; +import com.vaadin.ui.Notification; + +@JavaScript({ + "https://ajax.googleapis.com/ajax/libs/jquery/1.7.2/jquery.min.js", + "jquery.flot.js", "flot_connector.js" }) +public class Flot extends AbstractJavaScriptComponent { + public Flot() { + registerRpc(new FlotClickRpc() { + @Override + public void onPlotClick(int seriesIndex, int dataIndex) { + Notification.show("Clicked on [" + seriesIndex + ", " + + dataIndex + "]"); + } + }); + registerCallback("onPlotClick", new JavaScriptCallback() { + @Override + public void call(JSONArray arguments) throws JSONException { + int seriesIndex = arguments.getInt(0); + int dataIndex = arguments.getInt(1); + Notification.show("Clicked on [" + seriesIndex + ", " + + dataIndex + "]"); + } + }); + } + + public void addSeries(double... points) { + List<List<Double>> pointList = new ArrayList<List<Double>>(); + for (int i = 0; i < points.length; i++) { + pointList.add(Arrays.asList(Double.valueOf(i), + Double.valueOf(points[i]))); + } + + getState().getSeries().add(pointList); + + requestRepaint(); + } + + public void highlight(int seriesIndex, int dataIndex) { + getRpcProxy(FlotHighlightRpc.class).highlight(seriesIndex, dataIndex); + invokeCallback("highlight", seriesIndex, dataIndex); + } + + @Override + public FlotState getState() { + return (FlotState) super.getState(); + } +} diff --git a/tests/testbench/com/vaadin/tests/minitutorials/v7a3/FlotClickRpc.java b/tests/testbench/com/vaadin/tests/minitutorials/v7a3/FlotClickRpc.java new file mode 100644 index 0000000000..3802fe6e3f --- /dev/null +++ b/tests/testbench/com/vaadin/tests/minitutorials/v7a3/FlotClickRpc.java @@ -0,0 +1,7 @@ +package com.vaadin.tests.minitutorials.v7a3; + +import com.vaadin.shared.communication.ServerRpc; + +public interface FlotClickRpc extends ServerRpc { + public void onPlotClick(int seriesIndex, int dataIndex); +} diff --git a/tests/testbench/com/vaadin/tests/minitutorials/v7a3/FlotHighlightRpc.java b/tests/testbench/com/vaadin/tests/minitutorials/v7a3/FlotHighlightRpc.java new file mode 100644 index 0000000000..93730a8640 --- /dev/null +++ b/tests/testbench/com/vaadin/tests/minitutorials/v7a3/FlotHighlightRpc.java @@ -0,0 +1,11 @@ +/* +@VaadinApache2LicenseForJavaFiles@ + */ + +package com.vaadin.tests.minitutorials.v7a3; + +import com.vaadin.shared.communication.ClientRpc; + +public interface FlotHighlightRpc extends ClientRpc { + public void highlight(int seriesIndex, int dataIndex); +} diff --git a/tests/testbench/com/vaadin/tests/minitutorials/v7a3/FlotJavaScriptRoot.java b/tests/testbench/com/vaadin/tests/minitutorials/v7a3/FlotJavaScriptRoot.java new file mode 100644 index 0000000000..2b5e7337c8 --- /dev/null +++ b/tests/testbench/com/vaadin/tests/minitutorials/v7a3/FlotJavaScriptRoot.java @@ -0,0 +1,31 @@ +/* +@VaadinApache2LicenseForJavaFiles@ + */ + +package com.vaadin.tests.minitutorials.v7a3; + +import com.vaadin.terminal.WrappedRequest; +import com.vaadin.ui.Button; +import com.vaadin.ui.Button.ClickEvent; +import com.vaadin.ui.Root; + +public class FlotJavaScriptRoot extends Root { + + @Override + protected void init(WrappedRequest request) { + final Flot flot = new Flot(); + flot.setHeight("300px"); + flot.setWidth("400px"); + + flot.addSeries(1, 2, 4, 8, 16); + addComponent(flot); + + addComponent(new Button("Highlight point", new Button.ClickListener() { + @Override + public void buttonClick(ClickEvent event) { + flot.highlight(0, 3); + } + })); + } + +} diff --git a/tests/testbench/com/vaadin/tests/minitutorials/v7a3/FlotState.java b/tests/testbench/com/vaadin/tests/minitutorials/v7a3/FlotState.java new file mode 100644 index 0000000000..eb9e2f64ce --- /dev/null +++ b/tests/testbench/com/vaadin/tests/minitutorials/v7a3/FlotState.java @@ -0,0 +1,18 @@ +package com.vaadin.tests.minitutorials.v7a3; + +import java.util.ArrayList; +import java.util.List; + +import com.vaadin.shared.ui.JavaScriptComponentState; + +public class FlotState extends JavaScriptComponentState { + public List<List<List<Double>>> series = new ArrayList<List<List<Double>>>(); + + public List<List<List<Double>>> getSeries() { + return series; + } + + public void setSeries(List<List<List<Double>>> series) { + this.series = series; + } +}
\ No newline at end of file diff --git a/tests/testbench/com/vaadin/tests/minitutorials/v7a3/RedButton.java b/tests/testbench/com/vaadin/tests/minitutorials/v7a3/RedButton.java new file mode 100644 index 0000000000..003eab7e9c --- /dev/null +++ b/tests/testbench/com/vaadin/tests/minitutorials/v7a3/RedButton.java @@ -0,0 +1,16 @@ +/* +@VaadinApache2LicenseForJavaFiles@ + */ + +package com.vaadin.tests.minitutorials.v7a3; + +import com.vaadin.annotations.StyleSheet; +import com.vaadin.ui.NativeButton; + +@StyleSheet("redbutton.css") +public class RedButton extends NativeButton { + public RedButton(String caption) { + super(caption); + addStyleName("redButton"); + } +} diff --git a/tests/testbench/com/vaadin/tests/minitutorials/v7a3/RedButtonRoot.java b/tests/testbench/com/vaadin/tests/minitutorials/v7a3/RedButtonRoot.java new file mode 100644 index 0000000000..9cffdc9e63 --- /dev/null +++ b/tests/testbench/com/vaadin/tests/minitutorials/v7a3/RedButtonRoot.java @@ -0,0 +1,15 @@ +/* +@VaadinApache2LicenseForJavaFiles@ + */ + +package com.vaadin.tests.minitutorials.v7a3; + +import com.vaadin.terminal.WrappedRequest; +import com.vaadin.ui.Root; + +public class RedButtonRoot extends Root { + @Override + protected void init(WrappedRequest request) { + addComponent(new RedButton("My red button")); + } +}
\ No newline at end of file diff --git a/tests/testbench/com/vaadin/tests/minitutorials/v7a3/analytics_connector.js b/tests/testbench/com/vaadin/tests/minitutorials/v7a3/analytics_connector.js new file mode 100644 index 0000000000..4eadff5803 --- /dev/null +++ b/tests/testbench/com/vaadin/tests/minitutorials/v7a3/analytics_connector.js @@ -0,0 +1,13 @@ +window._gaq = window._gaq || []; + +(function() { + var ga = document.createElement('script'); ga.type = 'text/javascript'; ga.async = true; + ga.src = ('https:' == document.location.protocol ? 'https://ssl' : 'http://www') + '.google-analytics.com/ga.js'; + var s = document.getElementsByTagName('script')[0]; s.parentNode.insertBefore(ga, s); +})(); + +window.com_vaadin_tests_minitutorials_v7a3_Analytics = function() { + this.pushCommand = function(command) { + _gaq.push(command); + } +}
\ No newline at end of file diff --git a/tests/testbench/com/vaadin/tests/minitutorials/v7a3/complex_types_connector.js b/tests/testbench/com/vaadin/tests/minitutorials/v7a3/complex_types_connector.js new file mode 100644 index 0000000000..85dfb1369b --- /dev/null +++ b/tests/testbench/com/vaadin/tests/minitutorials/v7a3/complex_types_connector.js @@ -0,0 +1,17 @@ +window.com_vaadin_tests_minitutorials_v7a3_ComplexTypesComponent = function() { + this.registerRpc({ + sendComplexTypes: function(list, stringMap, otherMap, connectorMap, bits, matrix, bean) { + var connectorId = this.getConnectorId(); + + var message = 'list[2] = "' + list[2] + '"<br />'; + message += 'stringMap.two = ' + stringMap.two + '<br />'; + message += 'otherMap[1][1] = "' + otherMap[1][1] + '"<br />'; + message += 'connectorMap[connectorId] = "' + connectorMap[connectorId] +'"<br />'; + message += 'bits[3] = ' + bits[3] + '<br />'; + message += 'matrix[0][1] = ' + matrix[0][1] + '<br />'; + message += 'bean.bean.integer = ' + bean.bean.integer + '<br />'; + + this.getElement().innerHTML = message; + } + }); +}
\ No newline at end of file diff --git a/tests/testbench/com/vaadin/tests/minitutorials/v7a3/flot_connector.js b/tests/testbench/com/vaadin/tests/minitutorials/v7a3/flot_connector.js new file mode 100644 index 0000000000..5e572a4c72 --- /dev/null +++ b/tests/testbench/com/vaadin/tests/minitutorials/v7a3/flot_connector.js @@ -0,0 +1,31 @@ +window.com_vaadin_tests_minitutorials_v7a3_Flot = function() { + var element = $(this.getElement()); + var rpcProxy = this.getRpcProxy(); + var self = this; + var flot; + + this.onStateChange = function() { + flot = $.plot(element, this.getState().series, {grid: {clickable: true}}); + } + + element.bind('plotclick', function(event, point, item) { + if (item) { + rpcProxy.onPlotClick(item.seriesIndex, item.dataIndex); + self.onPlotClick(item.seriesIndex, item.dataIndex); + } + }); + + this.registerRpc({ + highlight: function(seriesIndex, dataIndex) { + if (flot) { + flot.highlight(seriesIndex, dataIndex); + } + } + }); + + this.highlight = function(seriesIndex, dataIndex) { + if (flot) { + flot.highlight(seriesIndex, dataIndex); + } + }; +}
\ No newline at end of file diff --git a/tests/testbench/com/vaadin/tests/minitutorials/v7a3/jquery.flot.js b/tests/testbench/com/vaadin/tests/minitutorials/v7a3/jquery.flot.js new file mode 100644 index 0000000000..f38561ba10 --- /dev/null +++ b/tests/testbench/com/vaadin/tests/minitutorials/v7a3/jquery.flot.js @@ -0,0 +1,2599 @@ +/*! Javascript plotting library for jQuery, v. 0.7. + * + * Released under the MIT license by IOLA, December 2007. + * + */ + +// first an inline dependency, jquery.colorhelpers.js, we inline it here +// for convenience + +/* Plugin for jQuery for working with colors. + * + * Version 1.1. + * + * Inspiration from jQuery color animation plugin by John Resig. + * + * Released under the MIT license by Ole Laursen, October 2009. + * + * Examples: + * + * $.color.parse("#fff").scale('rgb', 0.25).add('a', -0.5).toString() + * var c = $.color.extract($("#mydiv"), 'background-color'); + * console.log(c.r, c.g, c.b, c.a); + * $.color.make(100, 50, 25, 0.4).toString() // returns "rgba(100,50,25,0.4)" + * + * Note that .scale() and .add() return the same modified object + * instead of making a new one. + * + * V. 1.1: Fix error handling so e.g. parsing an empty string does + * produce a color rather than just crashing. + */ +(function(B){B.color={};B.color.make=function(F,E,C,D){var G={};G.r=F||0;G.g=E||0;G.b=C||0;G.a=D!=null?D:1;G.add=function(J,I){for(var H=0;H<J.length;++H){G[J.charAt(H)]+=I}return G.normalize()};G.scale=function(J,I){for(var H=0;H<J.length;++H){G[J.charAt(H)]*=I}return G.normalize()};G.toString=function(){if(G.a>=1){return"rgb("+[G.r,G.g,G.b].join(",")+")"}else{return"rgba("+[G.r,G.g,G.b,G.a].join(",")+")"}};G.normalize=function(){function H(J,K,I){return K<J?J:(K>I?I:K)}G.r=H(0,parseInt(G.r),255);G.g=H(0,parseInt(G.g),255);G.b=H(0,parseInt(G.b),255);G.a=H(0,G.a,1);return G};G.clone=function(){return B.color.make(G.r,G.b,G.g,G.a)};return G.normalize()};B.color.extract=function(D,C){var E;do{E=D.css(C).toLowerCase();if(E!=""&&E!="transparent"){break}D=D.parent()}while(!B.nodeName(D.get(0),"body"));if(E=="rgba(0, 0, 0, 0)"){E="transparent"}return B.color.parse(E)};B.color.parse=function(F){var E,C=B.color.make;if(E=/rgb\(\s*([0-9]{1,3})\s*,\s*([0-9]{1,3})\s*,\s*([0-9]{1,3})\s*\)/.exec(F)){return C(parseInt(E[1],10),parseInt(E[2],10),parseInt(E[3],10))}if(E=/rgba\(\s*([0-9]{1,3})\s*,\s*([0-9]{1,3})\s*,\s*([0-9]{1,3})\s*,\s*([0-9]+(?:\.[0-9]+)?)\s*\)/.exec(F)){return C(parseInt(E[1],10),parseInt(E[2],10),parseInt(E[3],10),parseFloat(E[4]))}if(E=/rgb\(\s*([0-9]+(?:\.[0-9]+)?)\%\s*,\s*([0-9]+(?:\.[0-9]+)?)\%\s*,\s*([0-9]+(?:\.[0-9]+)?)\%\s*\)/.exec(F)){return C(parseFloat(E[1])*2.55,parseFloat(E[2])*2.55,parseFloat(E[3])*2.55)}if(E=/rgba\(\s*([0-9]+(?:\.[0-9]+)?)\%\s*,\s*([0-9]+(?:\.[0-9]+)?)\%\s*,\s*([0-9]+(?:\.[0-9]+)?)\%\s*,\s*([0-9]+(?:\.[0-9]+)?)\s*\)/.exec(F)){return C(parseFloat(E[1])*2.55,parseFloat(E[2])*2.55,parseFloat(E[3])*2.55,parseFloat(E[4]))}if(E=/#([a-fA-F0-9]{2})([a-fA-F0-9]{2})([a-fA-F0-9]{2})/.exec(F)){return C(parseInt(E[1],16),parseInt(E[2],16),parseInt(E[3],16))}if(E=/#([a-fA-F0-9])([a-fA-F0-9])([a-fA-F0-9])/.exec(F)){return C(parseInt(E[1]+E[1],16),parseInt(E[2]+E[2],16),parseInt(E[3]+E[3],16))}var D=B.trim(F).toLowerCase();if(D=="transparent"){return C(255,255,255,0)}else{E=A[D]||[0,0,0];return C(E[0],E[1],E[2])}};var A={aqua:[0,255,255],azure:[240,255,255],beige:[245,245,220],black:[0,0,0],blue:[0,0,255],brown:[165,42,42],cyan:[0,255,255],darkblue:[0,0,139],darkcyan:[0,139,139],darkgrey:[169,169,169],darkgreen:[0,100,0],darkkhaki:[189,183,107],darkmagenta:[139,0,139],darkolivegreen:[85,107,47],darkorange:[255,140,0],darkorchid:[153,50,204],darkred:[139,0,0],darksalmon:[233,150,122],darkviolet:[148,0,211],fuchsia:[255,0,255],gold:[255,215,0],green:[0,128,0],indigo:[75,0,130],khaki:[240,230,140],lightblue:[173,216,230],lightcyan:[224,255,255],lightgreen:[144,238,144],lightgrey:[211,211,211],lightpink:[255,182,193],lightyellow:[255,255,224],lime:[0,255,0],magenta:[255,0,255],maroon:[128,0,0],navy:[0,0,128],olive:[128,128,0],orange:[255,165,0],pink:[255,192,203],purple:[128,0,128],violet:[128,0,128],red:[255,0,0],silver:[192,192,192],white:[255,255,255],yellow:[255,255,0]}})(jQuery); + +// the actual Flot code +(function($) { + function Plot(placeholder, data_, options_, plugins) { + // data is on the form: + // [ series1, series2 ... ] + // where series is either just the data as [ [x1, y1], [x2, y2], ... ] + // or { data: [ [x1, y1], [x2, y2], ... ], label: "some label", ... } + + var series = [], + options = { + // the color theme used for graphs + colors: ["#edc240", "#afd8f8", "#cb4b4b", "#4da74d", "#9440ed"], + legend: { + show: true, + noColumns: 1, // number of colums in legend table + labelFormatter: null, // fn: string -> string + labelBoxBorderColor: "#ccc", // border color for the little label boxes + container: null, // container (as jQuery object) to put legend in, null means default on top of graph + position: "ne", // position of default legend container within plot + margin: 5, // distance from grid edge to default legend container within plot + backgroundColor: null, // null means auto-detect + backgroundOpacity: 0.85 // set to 0 to avoid background + }, + xaxis: { + show: null, // null = auto-detect, true = always, false = never + position: "bottom", // or "top" + mode: null, // null or "time" + color: null, // base color, labels, ticks + tickColor: null, // possibly different color of ticks, e.g. "rgba(0,0,0,0.15)" + transform: null, // null or f: number -> number to transform axis + inverseTransform: null, // if transform is set, this should be the inverse function + min: null, // min. value to show, null means set automatically + max: null, // max. value to show, null means set automatically + autoscaleMargin: null, // margin in % to add if auto-setting min/max + ticks: null, // either [1, 3] or [[1, "a"], 3] or (fn: axis info -> ticks) or app. number of ticks for auto-ticks + tickFormatter: null, // fn: number -> string + labelWidth: null, // size of tick labels in pixels + labelHeight: null, + reserveSpace: null, // whether to reserve space even if axis isn't shown + tickLength: null, // size in pixels of ticks, or "full" for whole line + alignTicksWithAxis: null, // axis number or null for no sync + + // mode specific options + tickDecimals: null, // no. of decimals, null means auto + tickSize: null, // number or [number, "unit"] + minTickSize: null, // number or [number, "unit"] + monthNames: null, // list of names of months + timeformat: null, // format string to use + twelveHourClock: false // 12 or 24 time in time mode + }, + yaxis: { + autoscaleMargin: 0.02, + position: "left" // or "right" + }, + xaxes: [], + yaxes: [], + series: { + points: { + show: false, + radius: 3, + lineWidth: 2, // in pixels + fill: true, + fillColor: "#ffffff", + symbol: "circle" // or callback + }, + lines: { + // we don't put in show: false so we can see + // whether lines were actively disabled + lineWidth: 2, // in pixels + fill: false, + fillColor: null, + steps: false + }, + bars: { + show: false, + lineWidth: 2, // in pixels + barWidth: 1, // in units of the x axis + fill: true, + fillColor: null, + align: "left", // or "center" + horizontal: false + }, + shadowSize: 3 + }, + grid: { + show: true, + aboveData: false, + color: "#545454", // primary color used for outline and labels + backgroundColor: null, // null for transparent, else color + borderColor: null, // set if different from the grid color + tickColor: null, // color for the ticks, e.g. "rgba(0,0,0,0.15)" + labelMargin: 5, // in pixels + axisMargin: 8, // in pixels + borderWidth: 2, // in pixels + minBorderMargin: null, // in pixels, null means taken from points radius + markings: null, // array of ranges or fn: axes -> array of ranges + markingsColor: "#f4f4f4", + markingsLineWidth: 2, + // interactive stuff + clickable: false, + hoverable: false, + autoHighlight: true, // highlight in case mouse is near + mouseActiveRadius: 10 // how far the mouse can be away to activate an item + }, + hooks: {} + }, + canvas = null, // the canvas for the plot itself + overlay = null, // canvas for interactive stuff on top of plot + eventHolder = null, // jQuery object that events should be bound to + ctx = null, octx = null, + xaxes = [], yaxes = [], + plotOffset = { left: 0, right: 0, top: 0, bottom: 0}, + canvasWidth = 0, canvasHeight = 0, + plotWidth = 0, plotHeight = 0, + hooks = { + processOptions: [], + processRawData: [], + processDatapoints: [], + drawSeries: [], + draw: [], + bindEvents: [], + drawOverlay: [], + shutdown: [] + }, + plot = this; + + // public functions + plot.setData = setData; + plot.setupGrid = setupGrid; + plot.draw = draw; + plot.getPlaceholder = function() { return placeholder; }; + plot.getCanvas = function() { return canvas; }; + plot.getPlotOffset = function() { return plotOffset; }; + plot.width = function () { return plotWidth; }; + plot.height = function () { return plotHeight; }; + plot.offset = function () { + var o = eventHolder.offset(); + o.left += plotOffset.left; + o.top += plotOffset.top; + return o; + }; + plot.getData = function () { return series; }; + plot.getAxes = function () { + var res = {}, i; + $.each(xaxes.concat(yaxes), function (_, axis) { + if (axis) + res[axis.direction + (axis.n != 1 ? axis.n : "") + "axis"] = axis; + }); + return res; + }; + plot.getXAxes = function () { return xaxes; }; + plot.getYAxes = function () { return yaxes; }; + plot.c2p = canvasToAxisCoords; + plot.p2c = axisToCanvasCoords; + plot.getOptions = function () { return options; }; + plot.highlight = highlight; + plot.unhighlight = unhighlight; + plot.triggerRedrawOverlay = triggerRedrawOverlay; + plot.pointOffset = function(point) { + return { + left: parseInt(xaxes[axisNumber(point, "x") - 1].p2c(+point.x) + plotOffset.left), + top: parseInt(yaxes[axisNumber(point, "y") - 1].p2c(+point.y) + plotOffset.top) + }; + }; + plot.shutdown = shutdown; + plot.resize = function () { + getCanvasDimensions(); + resizeCanvas(canvas); + resizeCanvas(overlay); + }; + + // public attributes + plot.hooks = hooks; + + // initialize + initPlugins(plot); + parseOptions(options_); + setupCanvases(); + setData(data_); + setupGrid(); + draw(); + bindEvents(); + + + function executeHooks(hook, args) { + args = [plot].concat(args); + for (var i = 0; i < hook.length; ++i) + hook[i].apply(this, args); + } + + function initPlugins() { + for (var i = 0; i < plugins.length; ++i) { + var p = plugins[i]; + p.init(plot); + if (p.options) + $.extend(true, options, p.options); + } + } + + function parseOptions(opts) { + var i; + + $.extend(true, options, opts); + + if (options.xaxis.color == null) + options.xaxis.color = options.grid.color; + if (options.yaxis.color == null) + options.yaxis.color = options.grid.color; + + if (options.xaxis.tickColor == null) // backwards-compatibility + options.xaxis.tickColor = options.grid.tickColor; + if (options.yaxis.tickColor == null) // backwards-compatibility + options.yaxis.tickColor = options.grid.tickColor; + + if (options.grid.borderColor == null) + options.grid.borderColor = options.grid.color; + if (options.grid.tickColor == null) + options.grid.tickColor = $.color.parse(options.grid.color).scale('a', 0.22).toString(); + + // fill in defaults in axes, copy at least always the + // first as the rest of the code assumes it'll be there + for (i = 0; i < Math.max(1, options.xaxes.length); ++i) + options.xaxes[i] = $.extend(true, {}, options.xaxis, options.xaxes[i]); + for (i = 0; i < Math.max(1, options.yaxes.length); ++i) + options.yaxes[i] = $.extend(true, {}, options.yaxis, options.yaxes[i]); + + // backwards compatibility, to be removed in future + if (options.xaxis.noTicks && options.xaxis.ticks == null) + options.xaxis.ticks = options.xaxis.noTicks; + if (options.yaxis.noTicks && options.yaxis.ticks == null) + options.yaxis.ticks = options.yaxis.noTicks; + if (options.x2axis) { + options.xaxes[1] = $.extend(true, {}, options.xaxis, options.x2axis); + options.xaxes[1].position = "top"; + } + if (options.y2axis) { + options.yaxes[1] = $.extend(true, {}, options.yaxis, options.y2axis); + options.yaxes[1].position = "right"; + } + if (options.grid.coloredAreas) + options.grid.markings = options.grid.coloredAreas; + if (options.grid.coloredAreasColor) + options.grid.markingsColor = options.grid.coloredAreasColor; + if (options.lines) + $.extend(true, options.series.lines, options.lines); + if (options.points) + $.extend(true, options.series.points, options.points); + if (options.bars) + $.extend(true, options.series.bars, options.bars); + if (options.shadowSize != null) + options.series.shadowSize = options.shadowSize; + + // save options on axes for future reference + for (i = 0; i < options.xaxes.length; ++i) + getOrCreateAxis(xaxes, i + 1).options = options.xaxes[i]; + for (i = 0; i < options.yaxes.length; ++i) + getOrCreateAxis(yaxes, i + 1).options = options.yaxes[i]; + + // add hooks from options + for (var n in hooks) + if (options.hooks[n] && options.hooks[n].length) + hooks[n] = hooks[n].concat(options.hooks[n]); + + executeHooks(hooks.processOptions, [options]); + } + + function setData(d) { + series = parseData(d); + fillInSeriesOptions(); + processData(); + } + + function parseData(d) { + var res = []; + for (var i = 0; i < d.length; ++i) { + var s = $.extend(true, {}, options.series); + + if (d[i].data != null) { + s.data = d[i].data; // move the data instead of deep-copy + delete d[i].data; + + $.extend(true, s, d[i]); + + d[i].data = s.data; + } + else + s.data = d[i]; + res.push(s); + } + + return res; + } + + function axisNumber(obj, coord) { + var a = obj[coord + "axis"]; + if (typeof a == "object") // if we got a real axis, extract number + a = a.n; + if (typeof a != "number") + a = 1; // default to first axis + return a; + } + + function allAxes() { + // return flat array without annoying null entries + return $.grep(xaxes.concat(yaxes), function (a) { return a; }); + } + + function canvasToAxisCoords(pos) { + // return an object with x/y corresponding to all used axes + var res = {}, i, axis; + for (i = 0; i < xaxes.length; ++i) { + axis = xaxes[i]; + if (axis && axis.used) + res["x" + axis.n] = axis.c2p(pos.left); + } + + for (i = 0; i < yaxes.length; ++i) { + axis = yaxes[i]; + if (axis && axis.used) + res["y" + axis.n] = axis.c2p(pos.top); + } + + if (res.x1 !== undefined) + res.x = res.x1; + if (res.y1 !== undefined) + res.y = res.y1; + + return res; + } + + function axisToCanvasCoords(pos) { + // get canvas coords from the first pair of x/y found in pos + var res = {}, i, axis, key; + + for (i = 0; i < xaxes.length; ++i) { + axis = xaxes[i]; + if (axis && axis.used) { + key = "x" + axis.n; + if (pos[key] == null && axis.n == 1) + key = "x"; + + if (pos[key] != null) { + res.left = axis.p2c(pos[key]); + break; + } + } + } + + for (i = 0; i < yaxes.length; ++i) { + axis = yaxes[i]; + if (axis && axis.used) { + key = "y" + axis.n; + if (pos[key] == null && axis.n == 1) + key = "y"; + + if (pos[key] != null) { + res.top = axis.p2c(pos[key]); + break; + } + } + } + + return res; + } + + function getOrCreateAxis(axes, number) { + if (!axes[number - 1]) + axes[number - 1] = { + n: number, // save the number for future reference + direction: axes == xaxes ? "x" : "y", + options: $.extend(true, {}, axes == xaxes ? options.xaxis : options.yaxis) + }; + + return axes[number - 1]; + } + + function fillInSeriesOptions() { + var i; + + // collect what we already got of colors + var neededColors = series.length, + usedColors = [], + assignedColors = []; + for (i = 0; i < series.length; ++i) { + var sc = series[i].color; + if (sc != null) { + --neededColors; + if (typeof sc == "number") + assignedColors.push(sc); + else + usedColors.push($.color.parse(series[i].color)); + } + } + + // we might need to generate more colors if higher indices + // are assigned + for (i = 0; i < assignedColors.length; ++i) { + neededColors = Math.max(neededColors, assignedColors[i] + 1); + } + + // produce colors as needed + var colors = [], variation = 0; + i = 0; + while (colors.length < neededColors) { + var c; + if (options.colors.length == i) // check degenerate case + c = $.color.make(100, 100, 100); + else + c = $.color.parse(options.colors[i]); + + // vary color if needed + var sign = variation % 2 == 1 ? -1 : 1; + c.scale('rgb', 1 + sign * Math.ceil(variation / 2) * 0.2) + + // FIXME: if we're getting to close to something else, + // we should probably skip this one + colors.push(c); + + ++i; + if (i >= options.colors.length) { + i = 0; + ++variation; + } + } + + // fill in the options + var colori = 0, s; + for (i = 0; i < series.length; ++i) { + s = series[i]; + + // assign colors + if (s.color == null) { + s.color = colors[colori].toString(); + ++colori; + } + else if (typeof s.color == "number") + s.color = colors[s.color].toString(); + + // turn on lines automatically in case nothing is set + if (s.lines.show == null) { + var v, show = true; + for (v in s) + if (s[v] && s[v].show) { + show = false; + break; + } + if (show) + s.lines.show = true; + } + + // setup axes + s.xaxis = getOrCreateAxis(xaxes, axisNumber(s, "x")); + s.yaxis = getOrCreateAxis(yaxes, axisNumber(s, "y")); + } + } + + function processData() { + var topSentry = Number.POSITIVE_INFINITY, + bottomSentry = Number.NEGATIVE_INFINITY, + fakeInfinity = Number.MAX_VALUE, + i, j, k, m, length, + s, points, ps, x, y, axis, val, f, p; + + function updateAxis(axis, min, max) { + if (min < axis.datamin && min != -fakeInfinity) + axis.datamin = min; + if (max > axis.datamax && max != fakeInfinity) + axis.datamax = max; + } + + $.each(allAxes(), function (_, axis) { + // init axis + axis.datamin = topSentry; + axis.datamax = bottomSentry; + axis.used = false; + }); + + for (i = 0; i < series.length; ++i) { + s = series[i]; + s.datapoints = { points: [] }; + + executeHooks(hooks.processRawData, [ s, s.data, s.datapoints ]); + } + + // first pass: clean and copy data + for (i = 0; i < series.length; ++i) { + s = series[i]; + + var data = s.data, format = s.datapoints.format; + + if (!format) { + format = []; + // find out how to copy + format.push({ x: true, number: true, required: true }); + format.push({ y: true, number: true, required: true }); + + if (s.bars.show || (s.lines.show && s.lines.fill)) { + format.push({ y: true, number: true, required: false, defaultValue: 0 }); + if (s.bars.horizontal) { + delete format[format.length - 1].y; + format[format.length - 1].x = true; + } + } + + s.datapoints.format = format; + } + + if (s.datapoints.pointsize != null) + continue; // already filled in + + s.datapoints.pointsize = format.length; + + ps = s.datapoints.pointsize; + points = s.datapoints.points; + + insertSteps = s.lines.show && s.lines.steps; + s.xaxis.used = s.yaxis.used = true; + + for (j = k = 0; j < data.length; ++j, k += ps) { + p = data[j]; + + var nullify = p == null; + if (!nullify) { + for (m = 0; m < ps; ++m) { + val = p[m]; + f = format[m]; + + if (f) { + if (f.number && val != null) { + val = +val; // convert to number + if (isNaN(val)) + val = null; + else if (val == Infinity) + val = fakeInfinity; + else if (val == -Infinity) + val = -fakeInfinity; + } + + if (val == null) { + if (f.required) + nullify = true; + + if (f.defaultValue != null) + val = f.defaultValue; + } + } + + points[k + m] = val; + } + } + + if (nullify) { + for (m = 0; m < ps; ++m) { + val = points[k + m]; + if (val != null) { + f = format[m]; + // extract min/max info + if (f.x) + updateAxis(s.xaxis, val, val); + if (f.y) + updateAxis(s.yaxis, val, val); + } + points[k + m] = null; + } + } + else { + // a little bit of line specific stuff that + // perhaps shouldn't be here, but lacking + // better means... + if (insertSteps && k > 0 + && points[k - ps] != null + && points[k - ps] != points[k] + && points[k - ps + 1] != points[k + 1]) { + // copy the point to make room for a middle point + for (m = 0; m < ps; ++m) + points[k + ps + m] = points[k + m]; + + // middle point has same y + points[k + 1] = points[k - ps + 1]; + + // we've added a point, better reflect that + k += ps; + } + } + } + } + + // give the hooks a chance to run + for (i = 0; i < series.length; ++i) { + s = series[i]; + + executeHooks(hooks.processDatapoints, [ s, s.datapoints]); + } + + // second pass: find datamax/datamin for auto-scaling + for (i = 0; i < series.length; ++i) { + s = series[i]; + points = s.datapoints.points, + ps = s.datapoints.pointsize; + + var xmin = topSentry, ymin = topSentry, + xmax = bottomSentry, ymax = bottomSentry; + + for (j = 0; j < points.length; j += ps) { + if (points[j] == null) + continue; + + for (m = 0; m < ps; ++m) { + val = points[j + m]; + f = format[m]; + if (!f || val == fakeInfinity || val == -fakeInfinity) + continue; + + if (f.x) { + if (val < xmin) + xmin = val; + if (val > xmax) + xmax = val; + } + if (f.y) { + if (val < ymin) + ymin = val; + if (val > ymax) + ymax = val; + } + } + } + + if (s.bars.show) { + // make sure we got room for the bar on the dancing floor + var delta = s.bars.align == "left" ? 0 : -s.bars.barWidth/2; + if (s.bars.horizontal) { + ymin += delta; + ymax += delta + s.bars.barWidth; + } + else { + xmin += delta; + xmax += delta + s.bars.barWidth; + } + } + + updateAxis(s.xaxis, xmin, xmax); + updateAxis(s.yaxis, ymin, ymax); + } + + $.each(allAxes(), function (_, axis) { + if (axis.datamin == topSentry) + axis.datamin = null; + if (axis.datamax == bottomSentry) + axis.datamax = null; + }); + } + + function makeCanvas(skipPositioning, cls) { + var c = document.createElement('canvas'); + c.className = cls; + c.width = canvasWidth; + c.height = canvasHeight; + + if (!skipPositioning) + $(c).css({ position: 'absolute', left: 0, top: 0 }); + + $(c).appendTo(placeholder); + + if (!c.getContext) // excanvas hack + c = window.G_vmlCanvasManager.initElement(c); + + // used for resetting in case we get replotted + c.getContext("2d").save(); + + return c; + } + + function getCanvasDimensions() { + canvasWidth = placeholder.width(); + canvasHeight = placeholder.height(); + + if (canvasWidth <= 0 || canvasHeight <= 0) + throw "Invalid dimensions for plot, width = " + canvasWidth + ", height = " + canvasHeight; + } + + function resizeCanvas(c) { + // resizing should reset the state (excanvas seems to be + // buggy though) + if (c.width != canvasWidth) + c.width = canvasWidth; + + if (c.height != canvasHeight) + c.height = canvasHeight; + + // so try to get back to the initial state (even if it's + // gone now, this should be safe according to the spec) + var cctx = c.getContext("2d"); + cctx.restore(); + + // and save again + cctx.save(); + } + + function setupCanvases() { + var reused, + existingCanvas = placeholder.children("canvas.base"), + existingOverlay = placeholder.children("canvas.overlay"); + + if (existingCanvas.length == 0 || existingOverlay == 0) { + // init everything + + placeholder.html(""); // make sure placeholder is clear + + placeholder.css({ padding: 0 }); // padding messes up the positioning + + if (placeholder.css("position") == 'static') + placeholder.css("position", "relative"); // for positioning labels and overlay + + getCanvasDimensions(); + + canvas = makeCanvas(true, "base"); + overlay = makeCanvas(false, "overlay"); // overlay canvas for interactive features + + reused = false; + } + else { + // reuse existing elements + + canvas = existingCanvas.get(0); + overlay = existingOverlay.get(0); + + reused = true; + } + + ctx = canvas.getContext("2d"); + octx = overlay.getContext("2d"); + + // we include the canvas in the event holder too, because IE 7 + // sometimes has trouble with the stacking order + eventHolder = $([overlay, canvas]); + + if (reused) { + // run shutdown in the old plot object + placeholder.data("plot").shutdown(); + + // reset reused canvases + plot.resize(); + + // make sure overlay pixels are cleared (canvas is cleared when we redraw) + octx.clearRect(0, 0, canvasWidth, canvasHeight); + + // then whack any remaining obvious garbage left + eventHolder.unbind(); + placeholder.children().not([canvas, overlay]).remove(); + } + + // save in case we get replotted + placeholder.data("plot", plot); + } + + function bindEvents() { + // bind events + if (options.grid.hoverable) { + eventHolder.mousemove(onMouseMove); + eventHolder.mouseleave(onMouseLeave); + } + + if (options.grid.clickable) + eventHolder.click(onClick); + + executeHooks(hooks.bindEvents, [eventHolder]); + } + + function shutdown() { + if (redrawTimeout) + clearTimeout(redrawTimeout); + + eventHolder.unbind("mousemove", onMouseMove); + eventHolder.unbind("mouseleave", onMouseLeave); + eventHolder.unbind("click", onClick); + + executeHooks(hooks.shutdown, [eventHolder]); + } + + function setTransformationHelpers(axis) { + // set helper functions on the axis, assumes plot area + // has been computed already + + function identity(x) { return x; } + + var s, m, t = axis.options.transform || identity, + it = axis.options.inverseTransform; + + // precompute how much the axis is scaling a point + // in canvas space + if (axis.direction == "x") { + s = axis.scale = plotWidth / Math.abs(t(axis.max) - t(axis.min)); + m = Math.min(t(axis.max), t(axis.min)); + } + else { + s = axis.scale = plotHeight / Math.abs(t(axis.max) - t(axis.min)); + s = -s; + m = Math.max(t(axis.max), t(axis.min)); + } + + // data point to canvas coordinate + if (t == identity) // slight optimization + axis.p2c = function (p) { return (p - m) * s; }; + else + axis.p2c = function (p) { return (t(p) - m) * s; }; + // canvas coordinate to data point + if (!it) + axis.c2p = function (c) { return m + c / s; }; + else + axis.c2p = function (c) { return it(m + c / s); }; + } + + function measureTickLabels(axis) { + var opts = axis.options, i, ticks = axis.ticks || [], labels = [], + l, w = opts.labelWidth, h = opts.labelHeight, dummyDiv; + + function makeDummyDiv(labels, width) { + return $('<div style="position:absolute;top:-10000px;' + width + 'font-size:smaller">' + + '<div class="' + axis.direction + 'Axis ' + axis.direction + axis.n + 'Axis">' + + labels.join("") + '</div></div>') + .appendTo(placeholder); + } + + if (axis.direction == "x") { + // to avoid measuring the widths of the labels (it's slow), we + // construct fixed-size boxes and put the labels inside + // them, we don't need the exact figures and the + // fixed-size box content is easy to center + if (w == null) + w = Math.floor(canvasWidth / (ticks.length > 0 ? ticks.length : 1)); + + // measure x label heights + if (h == null) { + labels = []; + for (i = 0; i < ticks.length; ++i) { + l = ticks[i].label; + if (l) + labels.push('<div class="tickLabel" style="float:left;width:' + w + 'px">' + l + '</div>'); + } + + if (labels.length > 0) { + // stick them all in the same div and measure + // collective height + labels.push('<div style="clear:left"></div>'); + dummyDiv = makeDummyDiv(labels, "width:10000px;"); + h = dummyDiv.height(); + dummyDiv.remove(); + } + } + } + else if (w == null || h == null) { + // calculate y label dimensions + for (i = 0; i < ticks.length; ++i) { + l = ticks[i].label; + if (l) + labels.push('<div class="tickLabel">' + l + '</div>'); + } + + if (labels.length > 0) { + dummyDiv = makeDummyDiv(labels, ""); + if (w == null) + w = dummyDiv.children().width(); + if (h == null) + h = dummyDiv.find("div.tickLabel").height(); + dummyDiv.remove(); + } + } + + if (w == null) + w = 0; + if (h == null) + h = 0; + + axis.labelWidth = w; + axis.labelHeight = h; + } + + function allocateAxisBoxFirstPhase(axis) { + // find the bounding box of the axis by looking at label + // widths/heights and ticks, make room by diminishing the + // plotOffset + + var lw = axis.labelWidth, + lh = axis.labelHeight, + pos = axis.options.position, + tickLength = axis.options.tickLength, + axismargin = options.grid.axisMargin, + padding = options.grid.labelMargin, + all = axis.direction == "x" ? xaxes : yaxes, + index; + + // determine axis margin + var samePosition = $.grep(all, function (a) { + return a && a.options.position == pos && a.reserveSpace; + }); + if ($.inArray(axis, samePosition) == samePosition.length - 1) + axismargin = 0; // outermost + + // determine tick length - if we're innermost, we can use "full" + if (tickLength == null) + tickLength = "full"; + + var sameDirection = $.grep(all, function (a) { + return a && a.reserveSpace; + }); + + var innermost = $.inArray(axis, sameDirection) == 0; + if (!innermost && tickLength == "full") + tickLength = 5; + + if (!isNaN(+tickLength)) + padding += +tickLength; + + // compute box + if (axis.direction == "x") { + lh += padding; + + if (pos == "bottom") { + plotOffset.bottom += lh + axismargin; + axis.box = { top: canvasHeight - plotOffset.bottom, height: lh }; + } + else { + axis.box = { top: plotOffset.top + axismargin, height: lh }; + plotOffset.top += lh + axismargin; + } + } + else { + lw += padding; + + if (pos == "left") { + axis.box = { left: plotOffset.left + axismargin, width: lw }; + plotOffset.left += lw + axismargin; + } + else { + plotOffset.right += lw + axismargin; + axis.box = { left: canvasWidth - plotOffset.right, width: lw }; + } + } + + // save for future reference + axis.position = pos; + axis.tickLength = tickLength; + axis.box.padding = padding; + axis.innermost = innermost; + } + + function allocateAxisBoxSecondPhase(axis) { + // set remaining bounding box coordinates + if (axis.direction == "x") { + axis.box.left = plotOffset.left; + axis.box.width = plotWidth; + } + else { + axis.box.top = plotOffset.top; + axis.box.height = plotHeight; + } + } + + function setupGrid() { + var i, axes = allAxes(); + + // first calculate the plot and axis box dimensions + + $.each(axes, function (_, axis) { + axis.show = axis.options.show; + if (axis.show == null) + axis.show = axis.used; // by default an axis is visible if it's got data + + axis.reserveSpace = axis.show || axis.options.reserveSpace; + + setRange(axis); + }); + + allocatedAxes = $.grep(axes, function (axis) { return axis.reserveSpace; }); + + plotOffset.left = plotOffset.right = plotOffset.top = plotOffset.bottom = 0; + if (options.grid.show) { + $.each(allocatedAxes, function (_, axis) { + // make the ticks + setupTickGeneration(axis); + setTicks(axis); + snapRangeToTicks(axis, axis.ticks); + + // find labelWidth/Height for axis + measureTickLabels(axis); + }); + + // with all dimensions in house, we can compute the + // axis boxes, start from the outside (reverse order) + for (i = allocatedAxes.length - 1; i >= 0; --i) + allocateAxisBoxFirstPhase(allocatedAxes[i]); + + // make sure we've got enough space for things that + // might stick out + var minMargin = options.grid.minBorderMargin; + if (minMargin == null) { + minMargin = 0; + for (i = 0; i < series.length; ++i) + minMargin = Math.max(minMargin, series[i].points.radius + series[i].points.lineWidth/2); + } + + for (var a in plotOffset) { + plotOffset[a] += options.grid.borderWidth; + plotOffset[a] = Math.max(minMargin, plotOffset[a]); + } + } + + plotWidth = canvasWidth - plotOffset.left - plotOffset.right; + plotHeight = canvasHeight - plotOffset.bottom - plotOffset.top; + + // now we got the proper plotWidth/Height, we can compute the scaling + $.each(axes, function (_, axis) { + setTransformationHelpers(axis); + }); + + if (options.grid.show) { + $.each(allocatedAxes, function (_, axis) { + allocateAxisBoxSecondPhase(axis); + }); + + insertAxisLabels(); + } + + insertLegend(); + } + + function setRange(axis) { + var opts = axis.options, + min = +(opts.min != null ? opts.min : axis.datamin), + max = +(opts.max != null ? opts.max : axis.datamax), + delta = max - min; + + if (delta == 0.0) { + // degenerate case + var widen = max == 0 ? 1 : 0.01; + + if (opts.min == null) + min -= widen; + // always widen max if we couldn't widen min to ensure we + // don't fall into min == max which doesn't work + if (opts.max == null || opts.min != null) + max += widen; + } + else { + // consider autoscaling + var margin = opts.autoscaleMargin; + if (margin != null) { + if (opts.min == null) { + min -= delta * margin; + // make sure we don't go below zero if all values + // are positive + if (min < 0 && axis.datamin != null && axis.datamin >= 0) + min = 0; + } + if (opts.max == null) { + max += delta * margin; + if (max > 0 && axis.datamax != null && axis.datamax <= 0) + max = 0; + } + } + } + axis.min = min; + axis.max = max; + } + + function setupTickGeneration(axis) { + var opts = axis.options; + + // estimate number of ticks + var noTicks; + if (typeof opts.ticks == "number" && opts.ticks > 0) + noTicks = opts.ticks; + else + // heuristic based on the model a*sqrt(x) fitted to + // some data points that seemed reasonable + noTicks = 0.3 * Math.sqrt(axis.direction == "x" ? canvasWidth : canvasHeight); + + var delta = (axis.max - axis.min) / noTicks, + size, generator, unit, formatter, i, magn, norm; + + if (opts.mode == "time") { + // pretty handling of time + + // map of app. size of time units in milliseconds + var timeUnitSize = { + "second": 1000, + "minute": 60 * 1000, + "hour": 60 * 60 * 1000, + "day": 24 * 60 * 60 * 1000, + "month": 30 * 24 * 60 * 60 * 1000, + "year": 365.2425 * 24 * 60 * 60 * 1000 + }; + + + // the allowed tick sizes, after 1 year we use + // an integer algorithm + var spec = [ + [1, "second"], [2, "second"], [5, "second"], [10, "second"], + [30, "second"], + [1, "minute"], [2, "minute"], [5, "minute"], [10, "minute"], + [30, "minute"], + [1, "hour"], [2, "hour"], [4, "hour"], + [8, "hour"], [12, "hour"], + [1, "day"], [2, "day"], [3, "day"], + [0.25, "month"], [0.5, "month"], [1, "month"], + [2, "month"], [3, "month"], [6, "month"], + [1, "year"] + ]; + + var minSize = 0; + if (opts.minTickSize != null) { + if (typeof opts.tickSize == "number") + minSize = opts.tickSize; + else + minSize = opts.minTickSize[0] * timeUnitSize[opts.minTickSize[1]]; + } + + for (var i = 0; i < spec.length - 1; ++i) + if (delta < (spec[i][0] * timeUnitSize[spec[i][1]] + + spec[i + 1][0] * timeUnitSize[spec[i + 1][1]]) / 2 + && spec[i][0] * timeUnitSize[spec[i][1]] >= minSize) + break; + size = spec[i][0]; + unit = spec[i][1]; + + // special-case the possibility of several years + if (unit == "year") { + magn = Math.pow(10, Math.floor(Math.log(delta / timeUnitSize.year) / Math.LN10)); + norm = (delta / timeUnitSize.year) / magn; + if (norm < 1.5) + size = 1; + else if (norm < 3) + size = 2; + else if (norm < 7.5) + size = 5; + else + size = 10; + + size *= magn; + } + + axis.tickSize = opts.tickSize || [size, unit]; + + generator = function(axis) { + var ticks = [], + tickSize = axis.tickSize[0], unit = axis.tickSize[1], + d = new Date(axis.min); + + var step = tickSize * timeUnitSize[unit]; + + if (unit == "second") + d.setUTCSeconds(floorInBase(d.getUTCSeconds(), tickSize)); + if (unit == "minute") + d.setUTCMinutes(floorInBase(d.getUTCMinutes(), tickSize)); + if (unit == "hour") + d.setUTCHours(floorInBase(d.getUTCHours(), tickSize)); + if (unit == "month") + d.setUTCMonth(floorInBase(d.getUTCMonth(), tickSize)); + if (unit == "year") + d.setUTCFullYear(floorInBase(d.getUTCFullYear(), tickSize)); + + // reset smaller components + d.setUTCMilliseconds(0); + if (step >= timeUnitSize.minute) + d.setUTCSeconds(0); + if (step >= timeUnitSize.hour) + d.setUTCMinutes(0); + if (step >= timeUnitSize.day) + d.setUTCHours(0); + if (step >= timeUnitSize.day * 4) + d.setUTCDate(1); + if (step >= timeUnitSize.year) + d.setUTCMonth(0); + + + var carry = 0, v = Number.NaN, prev; + do { + prev = v; + v = d.getTime(); + ticks.push(v); + if (unit == "month") { + if (tickSize < 1) { + // a bit complicated - we'll divide the month + // up but we need to take care of fractions + // so we don't end up in the middle of a day + d.setUTCDate(1); + var start = d.getTime(); + d.setUTCMonth(d.getUTCMonth() + 1); + var end = d.getTime(); + d.setTime(v + carry * timeUnitSize.hour + (end - start) * tickSize); + carry = d.getUTCHours(); + d.setUTCHours(0); + } + else + d.setUTCMonth(d.getUTCMonth() + tickSize); + } + else if (unit == "year") { + d.setUTCFullYear(d.getUTCFullYear() + tickSize); + } + else + d.setTime(v + step); + } while (v < axis.max && v != prev); + + return ticks; + }; + + formatter = function (v, axis) { + var d = new Date(v); + + // first check global format + if (opts.timeformat != null) + return $.plot.formatDate(d, opts.timeformat, opts.monthNames); + + var t = axis.tickSize[0] * timeUnitSize[axis.tickSize[1]]; + var span = axis.max - axis.min; + var suffix = (opts.twelveHourClock) ? " %p" : ""; + + if (t < timeUnitSize.minute) + fmt = "%h:%M:%S" + suffix; + else if (t < timeUnitSize.day) { + if (span < 2 * timeUnitSize.day) + fmt = "%h:%M" + suffix; + else + fmt = "%b %d %h:%M" + suffix; + } + else if (t < timeUnitSize.month) + fmt = "%b %d"; + else if (t < timeUnitSize.year) { + if (span < timeUnitSize.year) + fmt = "%b"; + else + fmt = "%b %y"; + } + else + fmt = "%y"; + + return $.plot.formatDate(d, fmt, opts.monthNames); + }; + } + else { + // pretty rounding of base-10 numbers + var maxDec = opts.tickDecimals; + var dec = -Math.floor(Math.log(delta) / Math.LN10); + if (maxDec != null && dec > maxDec) + dec = maxDec; + + magn = Math.pow(10, -dec); + norm = delta / magn; // norm is between 1.0 and 10.0 + + if (norm < 1.5) + size = 1; + else if (norm < 3) { + size = 2; + // special case for 2.5, requires an extra decimal + if (norm > 2.25 && (maxDec == null || dec + 1 <= maxDec)) { + size = 2.5; + ++dec; + } + } + else if (norm < 7.5) + size = 5; + else + size = 10; + + size *= magn; + + if (opts.minTickSize != null && size < opts.minTickSize) + size = opts.minTickSize; + + axis.tickDecimals = Math.max(0, maxDec != null ? maxDec : dec); + axis.tickSize = opts.tickSize || size; + + generator = function (axis) { + var ticks = []; + + // spew out all possible ticks + var start = floorInBase(axis.min, axis.tickSize), + i = 0, v = Number.NaN, prev; + do { + prev = v; + v = start + i * axis.tickSize; + ticks.push(v); + ++i; + } while (v < axis.max && v != prev); + return ticks; + }; + + formatter = function (v, axis) { + return v.toFixed(axis.tickDecimals); + }; + } + + if (opts.alignTicksWithAxis != null) { + var otherAxis = (axis.direction == "x" ? xaxes : yaxes)[opts.alignTicksWithAxis - 1]; + if (otherAxis && otherAxis.used && otherAxis != axis) { + // consider snapping min/max to outermost nice ticks + var niceTicks = generator(axis); + if (niceTicks.length > 0) { + if (opts.min == null) + axis.min = Math.min(axis.min, niceTicks[0]); + if (opts.max == null && niceTicks.length > 1) + axis.max = Math.max(axis.max, niceTicks[niceTicks.length - 1]); + } + + generator = function (axis) { + // copy ticks, scaled to this axis + var ticks = [], v, i; + for (i = 0; i < otherAxis.ticks.length; ++i) { + v = (otherAxis.ticks[i].v - otherAxis.min) / (otherAxis.max - otherAxis.min); + v = axis.min + v * (axis.max - axis.min); + ticks.push(v); + } + return ticks; + }; + + // we might need an extra decimal since forced + // ticks don't necessarily fit naturally + if (axis.mode != "time" && opts.tickDecimals == null) { + var extraDec = Math.max(0, -Math.floor(Math.log(delta) / Math.LN10) + 1), + ts = generator(axis); + + // only proceed if the tick interval rounded + // with an extra decimal doesn't give us a + // zero at end + if (!(ts.length > 1 && /\..*0$/.test((ts[1] - ts[0]).toFixed(extraDec)))) + axis.tickDecimals = extraDec; + } + } + } + + axis.tickGenerator = generator; + if ($.isFunction(opts.tickFormatter)) + axis.tickFormatter = function (v, axis) { return "" + opts.tickFormatter(v, axis); }; + else + axis.tickFormatter = formatter; + } + + function setTicks(axis) { + var oticks = axis.options.ticks, ticks = []; + if (oticks == null || (typeof oticks == "number" && oticks > 0)) + ticks = axis.tickGenerator(axis); + else if (oticks) { + if ($.isFunction(oticks)) + // generate the ticks + ticks = oticks({ min: axis.min, max: axis.max }); + else + ticks = oticks; + } + + // clean up/labelify the supplied ticks, copy them over + var i, v; + axis.ticks = []; + for (i = 0; i < ticks.length; ++i) { + var label = null; + var t = ticks[i]; + if (typeof t == "object") { + v = +t[0]; + if (t.length > 1) + label = t[1]; + } + else + v = +t; + if (label == null) + label = axis.tickFormatter(v, axis); + if (!isNaN(v)) + axis.ticks.push({ v: v, label: label }); + } + } + + function snapRangeToTicks(axis, ticks) { + if (axis.options.autoscaleMargin && ticks.length > 0) { + // snap to ticks + if (axis.options.min == null) + axis.min = Math.min(axis.min, ticks[0].v); + if (axis.options.max == null && ticks.length > 1) + axis.max = Math.max(axis.max, ticks[ticks.length - 1].v); + } + } + + function draw() { + ctx.clearRect(0, 0, canvasWidth, canvasHeight); + + var grid = options.grid; + + // draw background, if any + if (grid.show && grid.backgroundColor) + drawBackground(); + + if (grid.show && !grid.aboveData) + drawGrid(); + + for (var i = 0; i < series.length; ++i) { + executeHooks(hooks.drawSeries, [ctx, series[i]]); + drawSeries(series[i]); + } + + executeHooks(hooks.draw, [ctx]); + + if (grid.show && grid.aboveData) + drawGrid(); + } + + function extractRange(ranges, coord) { + var axis, from, to, key, axes = allAxes(); + + for (i = 0; i < axes.length; ++i) { + axis = axes[i]; + if (axis.direction == coord) { + key = coord + axis.n + "axis"; + if (!ranges[key] && axis.n == 1) + key = coord + "axis"; // support x1axis as xaxis + if (ranges[key]) { + from = ranges[key].from; + to = ranges[key].to; + break; + } + } + } + + // backwards-compat stuff - to be removed in future + if (!ranges[key]) { + axis = coord == "x" ? xaxes[0] : yaxes[0]; + from = ranges[coord + "1"]; + to = ranges[coord + "2"]; + } + + // auto-reverse as an added bonus + if (from != null && to != null && from > to) { + var tmp = from; + from = to; + to = tmp; + } + + return { from: from, to: to, axis: axis }; + } + + function drawBackground() { + ctx.save(); + ctx.translate(plotOffset.left, plotOffset.top); + + ctx.fillStyle = getColorOrGradient(options.grid.backgroundColor, plotHeight, 0, "rgba(255, 255, 255, 0)"); + ctx.fillRect(0, 0, plotWidth, plotHeight); + ctx.restore(); + } + + function drawGrid() { + var i; + + ctx.save(); + ctx.translate(plotOffset.left, plotOffset.top); + + // draw markings + var markings = options.grid.markings; + if (markings) { + if ($.isFunction(markings)) { + var axes = plot.getAxes(); + // xmin etc. is backwards compatibility, to be + // removed in the future + axes.xmin = axes.xaxis.min; + axes.xmax = axes.xaxis.max; + axes.ymin = axes.yaxis.min; + axes.ymax = axes.yaxis.max; + + markings = markings(axes); + } + + for (i = 0; i < markings.length; ++i) { + var m = markings[i], + xrange = extractRange(m, "x"), + yrange = extractRange(m, "y"); + + // fill in missing + if (xrange.from == null) + xrange.from = xrange.axis.min; + if (xrange.to == null) + xrange.to = xrange.axis.max; + if (yrange.from == null) + yrange.from = yrange.axis.min; + if (yrange.to == null) + yrange.to = yrange.axis.max; + + // clip + if (xrange.to < xrange.axis.min || xrange.from > xrange.axis.max || + yrange.to < yrange.axis.min || yrange.from > yrange.axis.max) + continue; + + xrange.from = Math.max(xrange.from, xrange.axis.min); + xrange.to = Math.min(xrange.to, xrange.axis.max); + yrange.from = Math.max(yrange.from, yrange.axis.min); + yrange.to = Math.min(yrange.to, yrange.axis.max); + + if (xrange.from == xrange.to && yrange.from == yrange.to) + continue; + + // then draw + xrange.from = xrange.axis.p2c(xrange.from); + xrange.to = xrange.axis.p2c(xrange.to); + yrange.from = yrange.axis.p2c(yrange.from); + yrange.to = yrange.axis.p2c(yrange.to); + + if (xrange.from == xrange.to || yrange.from == yrange.to) { + // draw line + ctx.beginPath(); + ctx.strokeStyle = m.color || options.grid.markingsColor; + ctx.lineWidth = m.lineWidth || options.grid.markingsLineWidth; + ctx.moveTo(xrange.from, yrange.from); + ctx.lineTo(xrange.to, yrange.to); + ctx.stroke(); + } + else { + // fill area + ctx.fillStyle = m.color || options.grid.markingsColor; + ctx.fillRect(xrange.from, yrange.to, + xrange.to - xrange.from, + yrange.from - yrange.to); + } + } + } + + // draw the ticks + var axes = allAxes(), bw = options.grid.borderWidth; + + for (var j = 0; j < axes.length; ++j) { + var axis = axes[j], box = axis.box, + t = axis.tickLength, x, y, xoff, yoff; + if (!axis.show || axis.ticks.length == 0) + continue; + + ctx.strokeStyle = axis.options.tickColor || $.color.parse(axis.options.color).scale('a', 0.22).toString(); + ctx.lineWidth = 1; + + // find the edges + if (axis.direction == "x") { + x = 0; + if (t == "full") + y = (axis.position == "top" ? 0 : plotHeight); + else + y = box.top - plotOffset.top + (axis.position == "top" ? box.height : 0); + } + else { + y = 0; + if (t == "full") + x = (axis.position == "left" ? 0 : plotWidth); + else + x = box.left - plotOffset.left + (axis.position == "left" ? box.width : 0); + } + + // draw tick bar + if (!axis.innermost) { + ctx.beginPath(); + xoff = yoff = 0; + if (axis.direction == "x") + xoff = plotWidth; + else + yoff = plotHeight; + + if (ctx.lineWidth == 1) { + x = Math.floor(x) + 0.5; + y = Math.floor(y) + 0.5; + } + + ctx.moveTo(x, y); + ctx.lineTo(x + xoff, y + yoff); + ctx.stroke(); + } + + // draw ticks + ctx.beginPath(); + for (i = 0; i < axis.ticks.length; ++i) { + var v = axis.ticks[i].v; + + xoff = yoff = 0; + + if (v < axis.min || v > axis.max + // skip those lying on the axes if we got a border + || (t == "full" && bw > 0 + && (v == axis.min || v == axis.max))) + continue; + + if (axis.direction == "x") { + x = axis.p2c(v); + yoff = t == "full" ? -plotHeight : t; + + if (axis.position == "top") + yoff = -yoff; + } + else { + y = axis.p2c(v); + xoff = t == "full" ? -plotWidth : t; + + if (axis.position == "left") + xoff = -xoff; + } + + if (ctx.lineWidth == 1) { + if (axis.direction == "x") + x = Math.floor(x) + 0.5; + else + y = Math.floor(y) + 0.5; + } + + ctx.moveTo(x, y); + ctx.lineTo(x + xoff, y + yoff); + } + + ctx.stroke(); + } + + + // draw border + if (bw) { + ctx.lineWidth = bw; + ctx.strokeStyle = options.grid.borderColor; + ctx.strokeRect(-bw/2, -bw/2, plotWidth + bw, plotHeight + bw); + } + + ctx.restore(); + } + + function insertAxisLabels() { + placeholder.find(".tickLabels").remove(); + + var html = ['<div class="tickLabels" style="font-size:smaller">']; + + var axes = allAxes(); + for (var j = 0; j < axes.length; ++j) { + var axis = axes[j], box = axis.box; + if (!axis.show) + continue; + //debug: html.push('<div style="position:absolute;opacity:0.10;background-color:red;left:' + box.left + 'px;top:' + box.top + 'px;width:' + box.width + 'px;height:' + box.height + 'px"></div>') + html.push('<div class="' + axis.direction + 'Axis ' + axis.direction + axis.n + 'Axis" style="color:' + axis.options.color + '">'); + for (var i = 0; i < axis.ticks.length; ++i) { + var tick = axis.ticks[i]; + if (!tick.label || tick.v < axis.min || tick.v > axis.max) + continue; + + var pos = {}, align; + + if (axis.direction == "x") { + align = "center"; + pos.left = Math.round(plotOffset.left + axis.p2c(tick.v) - axis.labelWidth/2); + if (axis.position == "bottom") + pos.top = box.top + box.padding; + else + pos.bottom = canvasHeight - (box.top + box.height - box.padding); + } + else { + pos.top = Math.round(plotOffset.top + axis.p2c(tick.v) - axis.labelHeight/2); + if (axis.position == "left") { + pos.right = canvasWidth - (box.left + box.width - box.padding) + align = "right"; + } + else { + pos.left = box.left + box.padding; + align = "left"; + } + } + + pos.width = axis.labelWidth; + + var style = ["position:absolute", "text-align:" + align ]; + for (var a in pos) + style.push(a + ":" + pos[a] + "px") + + html.push('<div class="tickLabel" style="' + style.join(';') + '">' + tick.label + '</div>'); + } + html.push('</div>'); + } + + html.push('</div>'); + + placeholder.append(html.join("")); + } + + function drawSeries(series) { + if (series.lines.show) + drawSeriesLines(series); + if (series.bars.show) + drawSeriesBars(series); + if (series.points.show) + drawSeriesPoints(series); + } + + function drawSeriesLines(series) { + function plotLine(datapoints, xoffset, yoffset, axisx, axisy) { + var points = datapoints.points, + ps = datapoints.pointsize, + prevx = null, prevy = null; + + ctx.beginPath(); + for (var i = ps; i < points.length; i += ps) { + var x1 = points[i - ps], y1 = points[i - ps + 1], + x2 = points[i], y2 = points[i + 1]; + + if (x1 == null || x2 == null) + continue; + + // clip with ymin + if (y1 <= y2 && y1 < axisy.min) { + if (y2 < axisy.min) + continue; // line segment is outside + // compute new intersection point + x1 = (axisy.min - y1) / (y2 - y1) * (x2 - x1) + x1; + y1 = axisy.min; + } + else if (y2 <= y1 && y2 < axisy.min) { + if (y1 < axisy.min) + continue; + x2 = (axisy.min - y1) / (y2 - y1) * (x2 - x1) + x1; + y2 = axisy.min; + } + + // clip with ymax + if (y1 >= y2 && y1 > axisy.max) { + if (y2 > axisy.max) + continue; + x1 = (axisy.max - y1) / (y2 - y1) * (x2 - x1) + x1; + y1 = axisy.max; + } + else if (y2 >= y1 && y2 > axisy.max) { + if (y1 > axisy.max) + continue; + x2 = (axisy.max - y1) / (y2 - y1) * (x2 - x1) + x1; + y2 = axisy.max; + } + + // clip with xmin + if (x1 <= x2 && x1 < axisx.min) { + if (x2 < axisx.min) + continue; + y1 = (axisx.min - x1) / (x2 - x1) * (y2 - y1) + y1; + x1 = axisx.min; + } + else if (x2 <= x1 && x2 < axisx.min) { + if (x1 < axisx.min) + continue; + y2 = (axisx.min - x1) / (x2 - x1) * (y2 - y1) + y1; + x2 = axisx.min; + } + + // clip with xmax + if (x1 >= x2 && x1 > axisx.max) { + if (x2 > axisx.max) + continue; + y1 = (axisx.max - x1) / (x2 - x1) * (y2 - y1) + y1; + x1 = axisx.max; + } + else if (x2 >= x1 && x2 > axisx.max) { + if (x1 > axisx.max) + continue; + y2 = (axisx.max - x1) / (x2 - x1) * (y2 - y1) + y1; + x2 = axisx.max; + } + + if (x1 != prevx || y1 != prevy) + ctx.moveTo(axisx.p2c(x1) + xoffset, axisy.p2c(y1) + yoffset); + + prevx = x2; + prevy = y2; + ctx.lineTo(axisx.p2c(x2) + xoffset, axisy.p2c(y2) + yoffset); + } + ctx.stroke(); + } + + function plotLineArea(datapoints, axisx, axisy) { + var points = datapoints.points, + ps = datapoints.pointsize, + bottom = Math.min(Math.max(0, axisy.min), axisy.max), + i = 0, top, areaOpen = false, + ypos = 1, segmentStart = 0, segmentEnd = 0; + + // we process each segment in two turns, first forward + // direction to sketch out top, then once we hit the + // end we go backwards to sketch the bottom + while (true) { + if (ps > 0 && i > points.length + ps) + break; + + i += ps; // ps is negative if going backwards + + var x1 = points[i - ps], + y1 = points[i - ps + ypos], + x2 = points[i], y2 = points[i + ypos]; + + if (areaOpen) { + if (ps > 0 && x1 != null && x2 == null) { + // at turning point + segmentEnd = i; + ps = -ps; + ypos = 2; + continue; + } + + if (ps < 0 && i == segmentStart + ps) { + // done with the reverse sweep + ctx.fill(); + areaOpen = false; + ps = -ps; + ypos = 1; + i = segmentStart = segmentEnd + ps; + continue; + } + } + + if (x1 == null || x2 == null) + continue; + + // clip x values + + // clip with xmin + if (x1 <= x2 && x1 < axisx.min) { + if (x2 < axisx.min) + continue; + y1 = (axisx.min - x1) / (x2 - x1) * (y2 - y1) + y1; + x1 = axisx.min; + } + else if (x2 <= x1 && x2 < axisx.min) { + if (x1 < axisx.min) + continue; + y2 = (axisx.min - x1) / (x2 - x1) * (y2 - y1) + y1; + x2 = axisx.min; + } + + // clip with xmax + if (x1 >= x2 && x1 > axisx.max) { + if (x2 > axisx.max) + continue; + y1 = (axisx.max - x1) / (x2 - x1) * (y2 - y1) + y1; + x1 = axisx.max; + } + else if (x2 >= x1 && x2 > axisx.max) { + if (x1 > axisx.max) + continue; + y2 = (axisx.max - x1) / (x2 - x1) * (y2 - y1) + y1; + x2 = axisx.max; + } + + if (!areaOpen) { + // open area + ctx.beginPath(); + ctx.moveTo(axisx.p2c(x1), axisy.p2c(bottom)); + areaOpen = true; + } + + // now first check the case where both is outside + if (y1 >= axisy.max && y2 >= axisy.max) { + ctx.lineTo(axisx.p2c(x1), axisy.p2c(axisy.max)); + ctx.lineTo(axisx.p2c(x2), axisy.p2c(axisy.max)); + continue; + } + else if (y1 <= axisy.min && y2 <= axisy.min) { + ctx.lineTo(axisx.p2c(x1), axisy.p2c(axisy.min)); + ctx.lineTo(axisx.p2c(x2), axisy.p2c(axisy.min)); + continue; + } + + // else it's a bit more complicated, there might + // be a flat maxed out rectangle first, then a + // triangular cutout or reverse; to find these + // keep track of the current x values + var x1old = x1, x2old = x2; + + // clip the y values, without shortcutting, we + // go through all cases in turn + + // clip with ymin + if (y1 <= y2 && y1 < axisy.min && y2 >= axisy.min) { + x1 = (axisy.min - y1) / (y2 - y1) * (x2 - x1) + x1; + y1 = axisy.min; + } + else if (y2 <= y1 && y2 < axisy.min && y1 >= axisy.min) { + x2 = (axisy.min - y1) / (y2 - y1) * (x2 - x1) + x1; + y2 = axisy.min; + } + + // clip with ymax + if (y1 >= y2 && y1 > axisy.max && y2 <= axisy.max) { + x1 = (axisy.max - y1) / (y2 - y1) * (x2 - x1) + x1; + y1 = axisy.max; + } + else if (y2 >= y1 && y2 > axisy.max && y1 <= axisy.max) { + x2 = (axisy.max - y1) / (y2 - y1) * (x2 - x1) + x1; + y2 = axisy.max; + } + + // if the x value was changed we got a rectangle + // to fill + if (x1 != x1old) { + ctx.lineTo(axisx.p2c(x1old), axisy.p2c(y1)); + // it goes to (x1, y1), but we fill that below + } + + // fill triangular section, this sometimes result + // in redundant points if (x1, y1) hasn't changed + // from previous line to, but we just ignore that + ctx.lineTo(axisx.p2c(x1), axisy.p2c(y1)); + ctx.lineTo(axisx.p2c(x2), axisy.p2c(y2)); + + // fill the other rectangle if it's there + if (x2 != x2old) { + ctx.lineTo(axisx.p2c(x2), axisy.p2c(y2)); + ctx.lineTo(axisx.p2c(x2old), axisy.p2c(y2)); + } + } + } + + ctx.save(); + ctx.translate(plotOffset.left, plotOffset.top); + ctx.lineJoin = "round"; + + var lw = series.lines.lineWidth, + sw = series.shadowSize; + // FIXME: consider another form of shadow when filling is turned on + if (lw > 0 && sw > 0) { + // draw shadow as a thick and thin line with transparency + ctx.lineWidth = sw; + ctx.strokeStyle = "rgba(0,0,0,0.1)"; + // position shadow at angle from the mid of line + var angle = Math.PI/18; + plotLine(series.datapoints, Math.sin(angle) * (lw/2 + sw/2), Math.cos(angle) * (lw/2 + sw/2), series.xaxis, series.yaxis); + ctx.lineWidth = sw/2; + plotLine(series.datapoints, Math.sin(angle) * (lw/2 + sw/4), Math.cos(angle) * (lw/2 + sw/4), series.xaxis, series.yaxis); + } + + ctx.lineWidth = lw; + ctx.strokeStyle = series.color; + var fillStyle = getFillStyle(series.lines, series.color, 0, plotHeight); + if (fillStyle) { + ctx.fillStyle = fillStyle; + plotLineArea(series.datapoints, series.xaxis, series.yaxis); + } + + if (lw > 0) + plotLine(series.datapoints, 0, 0, series.xaxis, series.yaxis); + ctx.restore(); + } + + function drawSeriesPoints(series) { + function plotPoints(datapoints, radius, fillStyle, offset, shadow, axisx, axisy, symbol) { + var points = datapoints.points, ps = datapoints.pointsize; + + for (var i = 0; i < points.length; i += ps) { + var x = points[i], y = points[i + 1]; + if (x == null || x < axisx.min || x > axisx.max || y < axisy.min || y > axisy.max) + continue; + + ctx.beginPath(); + x = axisx.p2c(x); + y = axisy.p2c(y) + offset; + if (symbol == "circle") + ctx.arc(x, y, radius, 0, shadow ? Math.PI : Math.PI * 2, false); + else + symbol(ctx, x, y, radius, shadow); + ctx.closePath(); + + if (fillStyle) { + ctx.fillStyle = fillStyle; + ctx.fill(); + } + ctx.stroke(); + } + } + + ctx.save(); + ctx.translate(plotOffset.left, plotOffset.top); + + var lw = series.points.lineWidth, + sw = series.shadowSize, + radius = series.points.radius, + symbol = series.points.symbol; + if (lw > 0 && sw > 0) { + // draw shadow in two steps + var w = sw / 2; + ctx.lineWidth = w; + ctx.strokeStyle = "rgba(0,0,0,0.1)"; + plotPoints(series.datapoints, radius, null, w + w/2, true, + series.xaxis, series.yaxis, symbol); + + ctx.strokeStyle = "rgba(0,0,0,0.2)"; + plotPoints(series.datapoints, radius, null, w/2, true, + series.xaxis, series.yaxis, symbol); + } + + ctx.lineWidth = lw; + ctx.strokeStyle = series.color; + plotPoints(series.datapoints, radius, + getFillStyle(series.points, series.color), 0, false, + series.xaxis, series.yaxis, symbol); + ctx.restore(); + } + + function drawBar(x, y, b, barLeft, barRight, offset, fillStyleCallback, axisx, axisy, c, horizontal, lineWidth) { + var left, right, bottom, top, + drawLeft, drawRight, drawTop, drawBottom, + tmp; + + // in horizontal mode, we start the bar from the left + // instead of from the bottom so it appears to be + // horizontal rather than vertical + if (horizontal) { + drawBottom = drawRight = drawTop = true; + drawLeft = false; + left = b; + right = x; + top = y + barLeft; + bottom = y + barRight; + + // account for negative bars + if (right < left) { + tmp = right; + right = left; + left = tmp; + drawLeft = true; + drawRight = false; + } + } + else { + drawLeft = drawRight = drawTop = true; + drawBottom = false; + left = x + barLeft; + right = x + barRight; + bottom = b; + top = y; + + // account for negative bars + if (top < bottom) { + tmp = top; + top = bottom; + bottom = tmp; + drawBottom = true; + drawTop = false; + } + } + + // clip + if (right < axisx.min || left > axisx.max || + top < axisy.min || bottom > axisy.max) + return; + + if (left < axisx.min) { + left = axisx.min; + drawLeft = false; + } + + if (right > axisx.max) { + right = axisx.max; + drawRight = false; + } + + if (bottom < axisy.min) { + bottom = axisy.min; + drawBottom = false; + } + + if (top > axisy.max) { + top = axisy.max; + drawTop = false; + } + + left = axisx.p2c(left); + bottom = axisy.p2c(bottom); + right = axisx.p2c(right); + top = axisy.p2c(top); + + // fill the bar + if (fillStyleCallback) { + c.beginPath(); + c.moveTo(left, bottom); + c.lineTo(left, top); + c.lineTo(right, top); + c.lineTo(right, bottom); + c.fillStyle = fillStyleCallback(bottom, top); + c.fill(); + } + + // draw outline + if (lineWidth > 0 && (drawLeft || drawRight || drawTop || drawBottom)) { + c.beginPath(); + + // FIXME: inline moveTo is buggy with excanvas + c.moveTo(left, bottom + offset); + if (drawLeft) + c.lineTo(left, top + offset); + else + c.moveTo(left, top + offset); + if (drawTop) + c.lineTo(right, top + offset); + else + c.moveTo(right, top + offset); + if (drawRight) + c.lineTo(right, bottom + offset); + else + c.moveTo(right, bottom + offset); + if (drawBottom) + c.lineTo(left, bottom + offset); + else + c.moveTo(left, bottom + offset); + c.stroke(); + } + } + + function drawSeriesBars(series) { + function plotBars(datapoints, barLeft, barRight, offset, fillStyleCallback, axisx, axisy) { + var points = datapoints.points, ps = datapoints.pointsize; + + for (var i = 0; i < points.length; i += ps) { + if (points[i] == null) + continue; + drawBar(points[i], points[i + 1], points[i + 2], barLeft, barRight, offset, fillStyleCallback, axisx, axisy, ctx, series.bars.horizontal, series.bars.lineWidth); + } + } + + ctx.save(); + ctx.translate(plotOffset.left, plotOffset.top); + + // FIXME: figure out a way to add shadows (for instance along the right edge) + ctx.lineWidth = series.bars.lineWidth; + ctx.strokeStyle = series.color; + var barLeft = series.bars.align == "left" ? 0 : -series.bars.barWidth/2; + var fillStyleCallback = series.bars.fill ? function (bottom, top) { return getFillStyle(series.bars, series.color, bottom, top); } : null; + plotBars(series.datapoints, barLeft, barLeft + series.bars.barWidth, 0, fillStyleCallback, series.xaxis, series.yaxis); + ctx.restore(); + } + + function getFillStyle(filloptions, seriesColor, bottom, top) { + var fill = filloptions.fill; + if (!fill) + return null; + + if (filloptions.fillColor) + return getColorOrGradient(filloptions.fillColor, bottom, top, seriesColor); + + var c = $.color.parse(seriesColor); + c.a = typeof fill == "number" ? fill : 0.4; + c.normalize(); + return c.toString(); + } + + function insertLegend() { + placeholder.find(".legend").remove(); + + if (!options.legend.show) + return; + + var fragments = [], rowStarted = false, + lf = options.legend.labelFormatter, s, label; + for (var i = 0; i < series.length; ++i) { + s = series[i]; + label = s.label; + if (!label) + continue; + + if (i % options.legend.noColumns == 0) { + if (rowStarted) + fragments.push('</tr>'); + fragments.push('<tr>'); + rowStarted = true; + } + + if (lf) + label = lf(label, s); + + fragments.push( + '<td class="legendColorBox"><div style="border:1px solid ' + options.legend.labelBoxBorderColor + ';padding:1px"><div style="width:4px;height:0;border:5px solid ' + s.color + ';overflow:hidden"></div></div></td>' + + '<td class="legendLabel">' + label + '</td>'); + } + if (rowStarted) + fragments.push('</tr>'); + + if (fragments.length == 0) + return; + + var table = '<table style="font-size:smaller;color:' + options.grid.color + '">' + fragments.join("") + '</table>'; + if (options.legend.container != null) + $(options.legend.container).html(table); + else { + var pos = "", + p = options.legend.position, + m = options.legend.margin; + if (m[0] == null) + m = [m, m]; + if (p.charAt(0) == "n") + pos += 'top:' + (m[1] + plotOffset.top) + 'px;'; + else if (p.charAt(0) == "s") + pos += 'bottom:' + (m[1] + plotOffset.bottom) + 'px;'; + if (p.charAt(1) == "e") + pos += 'right:' + (m[0] + plotOffset.right) + 'px;'; + else if (p.charAt(1) == "w") + pos += 'left:' + (m[0] + plotOffset.left) + 'px;'; + var legend = $('<div class="legend">' + table.replace('style="', 'style="position:absolute;' + pos +';') + '</div>').appendTo(placeholder); + if (options.legend.backgroundOpacity != 0.0) { + // put in the transparent background + // separately to avoid blended labels and + // label boxes + var c = options.legend.backgroundColor; + if (c == null) { + c = options.grid.backgroundColor; + if (c && typeof c == "string") + c = $.color.parse(c); + else + c = $.color.extract(legend, 'background-color'); + c.a = 1; + c = c.toString(); + } + var div = legend.children(); + $('<div style="position:absolute;width:' + div.width() + 'px;height:' + div.height() + 'px;' + pos +'background-color:' + c + ';"> </div>').prependTo(legend).css('opacity', options.legend.backgroundOpacity); + } + } + } + + + // interactive features + + var highlights = [], + redrawTimeout = null; + + // returns the data item the mouse is over, or null if none is found + function findNearbyItem(mouseX, mouseY, seriesFilter) { + var maxDistance = options.grid.mouseActiveRadius, + smallestDistance = maxDistance * maxDistance + 1, + item = null, foundPoint = false, i, j; + + for (i = series.length - 1; i >= 0; --i) { + if (!seriesFilter(series[i])) + continue; + + var s = series[i], + axisx = s.xaxis, + axisy = s.yaxis, + points = s.datapoints.points, + ps = s.datapoints.pointsize, + mx = axisx.c2p(mouseX), // precompute some stuff to make the loop faster + my = axisy.c2p(mouseY), + maxx = maxDistance / axisx.scale, + maxy = maxDistance / axisy.scale; + + // with inverse transforms, we can't use the maxx/maxy + // optimization, sadly + if (axisx.options.inverseTransform) + maxx = Number.MAX_VALUE; + if (axisy.options.inverseTransform) + maxy = Number.MAX_VALUE; + + if (s.lines.show || s.points.show) { + for (j = 0; j < points.length; j += ps) { + var x = points[j], y = points[j + 1]; + if (x == null) + continue; + + // For points and lines, the cursor must be within a + // certain distance to the data point + if (x - mx > maxx || x - mx < -maxx || + y - my > maxy || y - my < -maxy) + continue; + + // We have to calculate distances in pixels, not in + // data units, because the scales of the axes may be different + var dx = Math.abs(axisx.p2c(x) - mouseX), + dy = Math.abs(axisy.p2c(y) - mouseY), + dist = dx * dx + dy * dy; // we save the sqrt + + // use <= to ensure last point takes precedence + // (last generally means on top of) + if (dist < smallestDistance) { + smallestDistance = dist; + item = [i, j / ps]; + } + } + } + + if (s.bars.show && !item) { // no other point can be nearby + var barLeft = s.bars.align == "left" ? 0 : -s.bars.barWidth/2, + barRight = barLeft + s.bars.barWidth; + + for (j = 0; j < points.length; j += ps) { + var x = points[j], y = points[j + 1], b = points[j + 2]; + if (x == null) + continue; + + // for a bar graph, the cursor must be inside the bar + if (series[i].bars.horizontal ? + (mx <= Math.max(b, x) && mx >= Math.min(b, x) && + my >= y + barLeft && my <= y + barRight) : + (mx >= x + barLeft && mx <= x + barRight && + my >= Math.min(b, y) && my <= Math.max(b, y))) + item = [i, j / ps]; + } + } + } + + if (item) { + i = item[0]; + j = item[1]; + ps = series[i].datapoints.pointsize; + + return { datapoint: series[i].datapoints.points.slice(j * ps, (j + 1) * ps), + dataIndex: j, + series: series[i], + seriesIndex: i }; + } + + return null; + } + + function onMouseMove(e) { + if (options.grid.hoverable) + triggerClickHoverEvent("plothover", e, + function (s) { return s["hoverable"] != false; }); + } + + function onMouseLeave(e) { + if (options.grid.hoverable) + triggerClickHoverEvent("plothover", e, + function (s) { return false; }); + } + + function onClick(e) { + triggerClickHoverEvent("plotclick", e, + function (s) { return s["clickable"] != false; }); + } + + // trigger click or hover event (they send the same parameters + // so we share their code) + function triggerClickHoverEvent(eventname, event, seriesFilter) { + var offset = eventHolder.offset(), + canvasX = event.pageX - offset.left - plotOffset.left, + canvasY = event.pageY - offset.top - plotOffset.top, + pos = canvasToAxisCoords({ left: canvasX, top: canvasY }); + + pos.pageX = event.pageX; + pos.pageY = event.pageY; + + var item = findNearbyItem(canvasX, canvasY, seriesFilter); + + if (item) { + // fill in mouse pos for any listeners out there + item.pageX = parseInt(item.series.xaxis.p2c(item.datapoint[0]) + offset.left + plotOffset.left); + item.pageY = parseInt(item.series.yaxis.p2c(item.datapoint[1]) + offset.top + plotOffset.top); + } + + if (options.grid.autoHighlight) { + // clear auto-highlights + for (var i = 0; i < highlights.length; ++i) { + var h = highlights[i]; + if (h.auto == eventname && + !(item && h.series == item.series && + h.point[0] == item.datapoint[0] && + h.point[1] == item.datapoint[1])) + unhighlight(h.series, h.point); + } + + if (item) + highlight(item.series, item.datapoint, eventname); + } + + placeholder.trigger(eventname, [ pos, item ]); + } + + function triggerRedrawOverlay() { + if (!redrawTimeout) + redrawTimeout = setTimeout(drawOverlay, 30); + } + + function drawOverlay() { + redrawTimeout = null; + + // draw highlights + octx.save(); + octx.clearRect(0, 0, canvasWidth, canvasHeight); + octx.translate(plotOffset.left, plotOffset.top); + + var i, hi; + for (i = 0; i < highlights.length; ++i) { + hi = highlights[i]; + + if (hi.series.bars.show) + drawBarHighlight(hi.series, hi.point); + else + drawPointHighlight(hi.series, hi.point); + } + octx.restore(); + + executeHooks(hooks.drawOverlay, [octx]); + } + + function highlight(s, point, auto) { + if (typeof s == "number") + s = series[s]; + + if (typeof point == "number") { + var ps = s.datapoints.pointsize; + point = s.datapoints.points.slice(ps * point, ps * (point + 1)); + } + + var i = indexOfHighlight(s, point); + if (i == -1) { + highlights.push({ series: s, point: point, auto: auto }); + + triggerRedrawOverlay(); + } + else if (!auto) + highlights[i].auto = false; + } + + function unhighlight(s, point) { + if (s == null && point == null) { + highlights = []; + triggerRedrawOverlay(); + } + + if (typeof s == "number") + s = series[s]; + + if (typeof point == "number") + point = s.data[point]; + + var i = indexOfHighlight(s, point); + if (i != -1) { + highlights.splice(i, 1); + + triggerRedrawOverlay(); + } + } + + function indexOfHighlight(s, p) { + for (var i = 0; i < highlights.length; ++i) { + var h = highlights[i]; + if (h.series == s && h.point[0] == p[0] + && h.point[1] == p[1]) + return i; + } + return -1; + } + + function drawPointHighlight(series, point) { + var x = point[0], y = point[1], + axisx = series.xaxis, axisy = series.yaxis; + + if (x < axisx.min || x > axisx.max || y < axisy.min || y > axisy.max) + return; + + var pointRadius = series.points.radius + series.points.lineWidth / 2; + octx.lineWidth = pointRadius; + octx.strokeStyle = $.color.parse(series.color).scale('a', 0.5).toString(); + var radius = 1.5 * pointRadius, + x = axisx.p2c(x), + y = axisy.p2c(y); + + octx.beginPath(); + if (series.points.symbol == "circle") + octx.arc(x, y, radius, 0, 2 * Math.PI, false); + else + series.points.symbol(octx, x, y, radius, false); + octx.closePath(); + octx.stroke(); + } + + function drawBarHighlight(series, point) { + octx.lineWidth = series.bars.lineWidth; + octx.strokeStyle = $.color.parse(series.color).scale('a', 0.5).toString(); + var fillStyle = $.color.parse(series.color).scale('a', 0.5).toString(); + var barLeft = series.bars.align == "left" ? 0 : -series.bars.barWidth/2; + drawBar(point[0], point[1], point[2] || 0, barLeft, barLeft + series.bars.barWidth, + 0, function () { return fillStyle; }, series.xaxis, series.yaxis, octx, series.bars.horizontal, series.bars.lineWidth); + } + + function getColorOrGradient(spec, bottom, top, defaultColor) { + if (typeof spec == "string") + return spec; + else { + // assume this is a gradient spec; IE currently only + // supports a simple vertical gradient properly, so that's + // what we support too + var gradient = ctx.createLinearGradient(0, top, 0, bottom); + + for (var i = 0, l = spec.colors.length; i < l; ++i) { + var c = spec.colors[i]; + if (typeof c != "string") { + var co = $.color.parse(defaultColor); + if (c.brightness != null) + co = co.scale('rgb', c.brightness) + if (c.opacity != null) + co.a *= c.opacity; + c = co.toString(); + } + gradient.addColorStop(i / (l - 1), c); + } + + return gradient; + } + } + } + + $.plot = function(placeholder, data, options) { + //var t0 = new Date(); + var plot = new Plot($(placeholder), data, options, $.plot.plugins); + //(window.console ? console.log : alert)("time used (msecs): " + ((new Date()).getTime() - t0.getTime())); + return plot; + }; + + $.plot.version = "0.7"; + + $.plot.plugins = []; + + // returns a string with the date d formatted according to fmt + $.plot.formatDate = function(d, fmt, monthNames) { + var leftPad = function(n) { + n = "" + n; + return n.length == 1 ? "0" + n : n; + }; + + var r = []; + var escape = false, padNext = false; + var hours = d.getUTCHours(); + var isAM = hours < 12; + if (monthNames == null) + monthNames = ["Jan", "Feb", "Mar", "Apr", "May", "Jun", "Jul", "Aug", "Sep", "Oct", "Nov", "Dec"]; + + if (fmt.search(/%p|%P/) != -1) { + if (hours > 12) { + hours = hours - 12; + } else if (hours == 0) { + hours = 12; + } + } + for (var i = 0; i < fmt.length; ++i) { + var c = fmt.charAt(i); + + if (escape) { + switch (c) { + case 'h': c = "" + hours; break; + case 'H': c = leftPad(hours); break; + case 'M': c = leftPad(d.getUTCMinutes()); break; + case 'S': c = leftPad(d.getUTCSeconds()); break; + case 'd': c = "" + d.getUTCDate(); break; + case 'm': c = "" + (d.getUTCMonth() + 1); break; + case 'y': c = "" + d.getUTCFullYear(); break; + case 'b': c = "" + monthNames[d.getUTCMonth()]; break; + case 'p': c = (isAM) ? ("" + "am") : ("" + "pm"); break; + case 'P': c = (isAM) ? ("" + "AM") : ("" + "PM"); break; + case '0': c = ""; padNext = true; break; + } + if (c && padNext) { + c = leftPad(c); + padNext = false; + } + r.push(c); + if (!padNext) + escape = false; + } + else { + if (c == "%") + escape = true; + else + r.push(c); + } + } + return r.join(""); + }; + + // round to nearby lower multiple of base + function floorInBase(n, base) { + return base * Math.floor(n / base); + } + +})(jQuery); diff --git a/tests/testbench/com/vaadin/tests/minitutorials/v7a3/redbutton.css b/tests/testbench/com/vaadin/tests/minitutorials/v7a3/redbutton.css new file mode 100644 index 0000000000..a70cf5e575 --- /dev/null +++ b/tests/testbench/com/vaadin/tests/minitutorials/v7a3/redbutton.css @@ -0,0 +1,3 @@ +.redButton { + background-color: red; +}
\ No newline at end of file diff --git a/tests/testbench/com/vaadin/tests/requesthandlers/AppResource404.java b/tests/testbench/com/vaadin/tests/requesthandlers/AppResource404.java index 1d98e35dd5..2f5c1177fa 100644 --- a/tests/testbench/com/vaadin/tests/requesthandlers/AppResource404.java +++ b/tests/testbench/com/vaadin/tests/requesthandlers/AppResource404.java @@ -22,6 +22,7 @@ public class AppResource404 extends TestBase { addComponent(new Button("Remove existing resrouce", new Button.ClickListener() { + @Override public void buttonClick(ClickEvent event) { removeResource(resource); } diff --git a/tests/testbench/com/vaadin/tests/resources/DownloadLargeFileResource.java b/tests/testbench/com/vaadin/tests/resources/DownloadLargeFileResource.java index 3d7379aafe..cb8963c3d4 100644 --- a/tests/testbench/com/vaadin/tests/resources/DownloadLargeFileResource.java +++ b/tests/testbench/com/vaadin/tests/resources/DownloadLargeFileResource.java @@ -22,6 +22,7 @@ public class DownloadLargeFileResource extends TestBase { + String.format("%.1f", fileSize / 1024.0 / 1024.0) + "MB file", new Button.ClickListener() { + @Override public void buttonClick(ClickEvent event) { download(); } diff --git a/tests/testbench/com/vaadin/tests/resources/NonExistingFileResource.java b/tests/testbench/com/vaadin/tests/resources/NonExistingFileResource.java index d3bbeef99a..b6dbcfca97 100644 --- a/tests/testbench/com/vaadin/tests/resources/NonExistingFileResource.java +++ b/tests/testbench/com/vaadin/tests/resources/NonExistingFileResource.java @@ -22,6 +22,7 @@ public class NonExistingFileResource extends TestBase { Button b = new Button("Download " + filename); b.addListener(new Button.ClickListener() { + @Override public void buttonClick(ClickEvent event) { FileResource res = new FileResource(new File(getContext() .getBaseDirectory() + "/" + filename), diff --git a/tests/testbench/com/vaadin/tests/resources/ResourceDownload.java b/tests/testbench/com/vaadin/tests/resources/ResourceDownload.java index 69fd0b2b81..8ab6ce153d 100644 --- a/tests/testbench/com/vaadin/tests/resources/ResourceDownload.java +++ b/tests/testbench/com/vaadin/tests/resources/ResourceDownload.java @@ -17,6 +17,7 @@ public class ResourceDownload extends TestBase { public void setup() { Button b = new Button("Download (_new)", new ClickListener() { + @Override public void buttonClick(ClickEvent event) { download("_new"); } @@ -24,6 +25,7 @@ public class ResourceDownload extends TestBase { addComponent(b); b = new Button("Download (_blank)", new ClickListener() { + @Override public void buttonClick(ClickEvent event) { download("_blank"); } @@ -31,6 +33,7 @@ public class ResourceDownload extends TestBase { addComponent(b); b = new Button("Download ()", new ClickListener() { + @Override public void buttonClick(ClickEvent event) { download(""); } @@ -38,6 +41,7 @@ public class ResourceDownload extends TestBase { addComponent(b); b = new Button("Download (_top)", new ClickListener() { + @Override public void buttonClick(ClickEvent event) { download("_top"); } @@ -45,6 +49,7 @@ public class ResourceDownload extends TestBase { addComponent(b); b = new Button("Test", new Button.ClickListener() { + @Override public void buttonClick(ClickEvent event) { ResourceDownload.this.getMainWindow().showNotification( "Still working"); @@ -59,6 +64,7 @@ public class ResourceDownload extends TestBase { String filename = "filename"; StreamResource streamResource = new StreamResource(new StreamSource() { + @Override public InputStream getStream() { try { return new FileInputStream("FIXME C:/temp/file.xls"); diff --git a/tests/testbench/com/vaadin/tests/serialization/SerializerTest.html b/tests/testbench/com/vaadin/tests/serialization/SerializerTest.html new file mode 100644 index 0000000000..3d52356cab --- /dev/null +++ b/tests/testbench/com/vaadin/tests/serialization/SerializerTest.html @@ -0,0 +1,107 @@ +<?xml version="1.0" encoding="UTF-8"?> +<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd"> +<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en" lang="en"> +<head profile="http://selenium-ide.openqa.org/profiles/test-case"> +<meta http-equiv="Content-Type" content="text/html; charset=UTF-8" /> +<link rel="selenium.base" href="http://localhost:8888/" /> +<title>New Test</title> +</head> +<body> +<table cellpadding="1" cellspacing="1" border="1"> +<thead> +<tr><td rowspan="1" colspan="3">New Test</td></tr> +</thead><tbody> +<tr> + <td>open</td> + <td>/run/com.vaadin.tests.serialization.SerializerTest?restartApplication</td> + <td></td> +</tr> +<tr> + <td>assertText</td> + <td>vaadin=runcomvaadintestsserializationSerializerTest::/VVerticalLayout[0]/VVerticalLayout[0]/VVerticalLayout[0]/VLabel[16]</td> + <td>1. sendBoolean: false, false, [false, false, true, false, true, true]</td> +</tr> +<tr> + <td>assertText</td> + <td>vaadin=runcomvaadintestsserializationSerializerTest::/VVerticalLayout[0]/VVerticalLayout[0]/VVerticalLayout[0]/VLabel[15]</td> + <td>2. sendByte: 5, -12, [3, 1, 2]</td> +</tr> +<tr> + <td>assertText</td> + <td>vaadin=runcomvaadintestsserializationSerializerTest::/VVerticalLayout[0]/VVerticalLayout[0]/VVerticalLayout[0]/VLabel[14]</td> + <td>3. sendChar: Å, ∫, [a, b, c, d]</td> +</tr> +<tr> + <td>assertText</td> + <td>vaadin=runcomvaadintestsserializationSerializerTest::/VVerticalLayout[0]/VVerticalLayout[0]/VVerticalLayout[0]/VLabel[13]</td> + <td>4. sendInt: 2, 5, [2147483647, 0]</td> +</tr> +<tr> + <td>assertText</td> + <td>vaadin=runcomvaadintestsserializationSerializerTest::/VVerticalLayout[0]/VVerticalLayout[0]/VVerticalLayout[0]/VLabel[12]</td> + <td>5. sendLong: -57841235865, 577431841358, [57, 0]</td> +</tr> +<tr> + <td>assertText</td> + <td>vaadin=runcomvaadintestsserializationSerializerTest::/VVerticalLayout[0]/VVerticalLayout[0]/VVerticalLayout[0]/VLabel[11]</td> + <td>6. sendFloat: 1.0000001, 3.14159, [-12.0, 0.0, 57.0]</td> +</tr> +<tr> + <td>assertText</td> + <td>vaadin=runcomvaadintestsserializationSerializerTest::/VVerticalLayout[0]/VVerticalLayout[0]/VVerticalLayout[0]/VLabel[10]</td> + <td>7. sendDouble: 0.423310825130748, 5.859874482048838, [2.0, 1.7976931348623157E308, 4.9E-324]</td> +</tr> +<tr> + <td>assertText</td> + <td>vaadin=runcomvaadintestsserializationSerializerTest::/VVerticalLayout[0]/VVerticalLayout[0]/VVerticalLayout[0]/VLabel[9]</td> + <td>8. sendString: Taegghiiiinnrsssstt‡</td> +</tr> +<tr> + <td>assertText</td> + <td>vaadin=runcomvaadintestsserializationSerializerTest::/VVerticalLayout[0]/VVerticalLayout[0]/VVerticalLayout[0]/VLabel[8]</td> + <td>9. sendConnector: com.vaadin.tests.widgetset.server.SerializerTestExtension</td> +</tr> +<tr> + <td>assertText</td> + <td>vaadin=runcomvaadintestsserializationSerializerTest::/VVerticalLayout[0]/VVerticalLayout[0]/VVerticalLayout[0]/VLabel[7]</td> + <td>10. sendBean: ComplexTestBean [innerBean1=SimpleTestBean(1), innerBean2=SimpleTestBean(3), innerBeanCollection=[SimpleTestBean(6), SimpleTestBean(0)], privimite=6], SimpleTestBean(0), [SimpleTestBean(7)]</td> +</tr> +<tr> + <td>assertText</td> + <td>vaadin=runcomvaadintestsserializationSerializerTest::/VVerticalLayout[0]/VVerticalLayout[0]/VVerticalLayout[0]/VLabel[6]</td> + <td>11. sendNull: null, Not null</td> +</tr> +<tr> + <td>assertText</td> + <td>vaadin=runcomvaadintestsserializationSerializerTest::/VVerticalLayout[0]/VVerticalLayout[0]/VVerticalLayout[0]/VLabel[5]</td> + <td>12. sendNestedArray: [[7, 5]], [[SimpleTestBean(2)], [SimpleTestBean(4)]]</td> +</tr> +<tr> + <td>assertText</td> + <td>vaadin=runcomvaadintestsserializationSerializerTest::/VVerticalLayout[0]/VVerticalLayout[0]/VVerticalLayout[0]/VLabel[4]</td> + <td>13. sendList: [-234, 5, 8], class com.vaadin.tests.widgetset.server.SerializerTestExtension, class com.vaadin.tests.serialization.SerializerTest, [SimpleTestBean(-568), SimpleTestBean(234)]</td> +</tr> +<tr> + <td>assertText</td> + <td>vaadin=runcomvaadintestsserializationSerializerTest::/VVerticalLayout[0]/VVerticalLayout[0]/VVerticalLayout[0]/VLabel[3]</td> + <td>14. sendArrayList: [[2], [2]], [[2, 1], [2, 3]], [[SimpleTestBean(7)]]</td> +</tr> +<tr> + <td>assertText</td> + <td>vaadin=runcomvaadintestsserializationSerializerTest::/VVerticalLayout[0]/VVerticalLayout[0]/VVerticalLayout[0]/VLabel[2]</td> + <td>15. sendSet: [-12, -7, -4], class com.vaadin.tests.serialization.SerializerTest, [SimpleTestBean(2), SimpleTestBean(3)]</td> +</tr> +<tr> + <td>assertText</td> + <td>vaadin=runcomvaadintestsserializationSerializerTest::/VVerticalLayout[0]/VVerticalLayout[0]/VVerticalLayout[0]/VLabel[1]</td> + <td>16. sendMap: {a=null}, [com.vaadin.tests.widgetset.server.SerializerTestExtension=false], [2=com.vaadin.tests.widgetset.server.SerializerTestExtension], {SimpleTestBean(4)=SimpleTestBean(-4), SimpleTestBean(-5)=SimpleTestBean(5)}</td> +</tr> +<tr> + <td>assertText</td> + <td>vaadin=runcomvaadintestsserializationSerializerTest::/VVerticalLayout[0]/VVerticalLayout[0]/VVerticalLayout[0]/VLabel[0]</td> + <td>17. sendWrappedGenerics: {[SimpleTestBean(1)]={1=[SimpleTestBean(42)]}}</td> +</tr> + +</tbody></table> +</body> +</html> diff --git a/tests/testbench/com/vaadin/tests/serialization/SerializerTest.java b/tests/testbench/com/vaadin/tests/serialization/SerializerTest.java index d0b672fbf9..7c8aed1992 100644 --- a/tests/testbench/com/vaadin/tests/serialization/SerializerTest.java +++ b/tests/testbench/com/vaadin/tests/serialization/SerializerTest.java @@ -15,8 +15,8 @@ import java.util.Map.Entry; import java.util.Set; import com.vaadin.annotations.Widgetset; +import com.vaadin.shared.Connector; import com.vaadin.terminal.WrappedRequest; -import com.vaadin.terminal.gwt.client.Connector; import com.vaadin.tests.components.AbstractTestRoot; import com.vaadin.tests.util.Log; import com.vaadin.tests.widgetset.client.ComplexTestBean; @@ -63,13 +63,12 @@ public class SerializerTest extends AbstractTestRoot { rpc.sendList(Arrays.asList(5, 8, -234), Arrays.<Connector> asList(this, testExtension), Arrays.asList(new SimpleTestBean(234), new SimpleTestBean(-568))); - // Disabled because of #8861 - // rpc.sendArrayList( - // Arrays.asList(new int[] { 1, 2 }, new int[] { 3, 4 }), - // Arrays.asList(new Integer[] { 5, 6 }, new Integer[] { 7, 8 }), - // Collections - // .singletonList(new SimpleTestBean[] { new SimpleTestBean( - // 7) })); + rpc.sendArrayList( + Arrays.asList(new int[] { 1, 2 }, new int[] { 3, 4 }), + Arrays.asList(new Integer[] { 5, 6 }, new Integer[] { 7, 8 }), + Collections + .singletonList(new SimpleTestBean[] { new SimpleTestBean( + 7) })); // Disabled because of #8861 // rpc.sendListArray( // new List[] { Arrays.asList(1, 2), Arrays.asList(3, 4) }, @@ -112,61 +111,73 @@ public class SerializerTest extends AbstractTestRoot { }); testExtension.registerRpc(new SerializerTestRpc() { + @Override public void sendBoolean(boolean value, Boolean boxedValue, boolean[] array) { log.log("sendBoolean: " + value + ", " + boxedValue + ", " + Arrays.toString(array)); } + @Override public void sendByte(byte value, Byte boxedValue, byte[] array) { log.log("sendByte: " + value + ", " + boxedValue + ", " + Arrays.toString(array)); } + @Override public void sendChar(char value, Character boxedValue, char[] array) { log.log("sendChar: " + value + ", " + boxedValue + ", " + Arrays.toString(array)); } + @Override public void sendInt(int value, Integer boxedValue, int[] array) { log.log("sendInt: " + value + ", " + boxedValue + ", " + Arrays.toString(array)); } + @Override public void sendLong(long value, Long boxedValue, long[] array) { log.log("sendLong: " + value + ", " + boxedValue + ", " + Arrays.toString(array)); } + @Override public void sendFloat(float value, Float boxedValue, float[] array) { log.log("sendFloat: " + value + ", " + boxedValue + ", " + Arrays.toString(array)); } + @Override public void sendDouble(double value, Double boxedValue, double[] array) { log.log("sendDouble: " + value + ", " + boxedValue + ", " + Arrays.toString(array)); } + @Override public void sendString(String value) { log.log("sendString: " + value); } + @Override public void sendConnector(Connector connector) { log.log("sendConnector: " + connector.getClass().getName()); } + @Override public void sendBean(ComplexTestBean complexBean, SimpleTestBean simpleBean, SimpleTestBean[] array) { log.log("sendBean: " + complexBean + ", " + simpleBean + ", " + Arrays.toString(array)); } + @Override public void sendNull(String value1, String value2) { log.log("sendNull: " + value1 + ", " + value2); } + @Override public void sendNestedArray(int[][] nestedIntArray, SimpleTestBean[][] nestedBeanArray) { log.log("sendNestedArray: " @@ -174,6 +185,7 @@ public class SerializerTest extends AbstractTestRoot { + Arrays.deepToString(nestedBeanArray)); } + @Override public void sendList(List<Integer> intList, List<Connector> connectorList, List<SimpleTestBean> beanList) { log.log("sendList: " + intList + ", " @@ -196,19 +208,24 @@ public class SerializerTest extends AbstractTestRoot { return string; } + @Override public void sendArrayList(List<int[]> primitiveArrayList, List<Integer[]> objectArrayList, List<SimpleTestBean[]> beanArrayList) { - log.log("sendArrayList: " + primitiveArrayList + ", " - + objectArrayList + ", " + beanArrayList); + log.log("sendArrayList: " + + Arrays.deepToString(primitiveArrayList.toArray()) + + ", " + Arrays.deepToString(objectArrayList.toArray()) + + ", " + Arrays.deepToString(beanArrayList.toArray())); } + @Override public void sendListArray(List<Integer>[] objectListArray, List<SimpleTestBean>[] beanListArray) { log.log("sendArrayList: " + Arrays.toString(objectListArray) + ", " + Arrays.toString(beanListArray)); } + @Override public void sendSet(Set<Integer> intSet, Set<Connector> connectorSet, Set<SimpleTestBean> beanSet) { log.log("sendSet: " + intSet + ", " @@ -216,6 +233,7 @@ public class SerializerTest extends AbstractTestRoot { + beanSet); } + @Override public void sendMap(Map<String, SimpleTestBean> stringMap, Map<Connector, Boolean> connectorMap, Map<Integer, Connector> intMap, @@ -252,6 +270,7 @@ public class SerializerTest extends AbstractTestRoot { + ", " + intMapString + ", " + beanMap); } + @Override public void sendWrappedGenerics( Map<Set<SimpleTestBean>, Map<Integer, List<SimpleTestBean>>> generics) { log.log("sendWrappedGenerics: " + generics.toString()); diff --git a/tests/testbench/com/vaadin/tests/themes/ButtonsTest.java b/tests/testbench/com/vaadin/tests/themes/ButtonsTest.java index cc275c18f4..a2d482dfbf 100644 --- a/tests/testbench/com/vaadin/tests/themes/ButtonsTest.java +++ b/tests/testbench/com/vaadin/tests/themes/ButtonsTest.java @@ -35,6 +35,7 @@ public class ButtonsTest extends com.vaadin.Application.LegacyApplication { themeToggle = new CheckBox("Runo theme"); themeToggle.addListener(new ValueChangeListener() { + @Override public void valueChange(ValueChangeEvent event) { if (getTheme() == "reindeer") { setTheme("runo"); @@ -49,6 +50,7 @@ public class ButtonsTest extends com.vaadin.Application.LegacyApplication { styleToggle = new CheckBox("Black style"); styleToggle.addListener(new ValueChangeListener() { + @Override public void valueChange(ValueChangeEvent event) { if (!main.getContent().getStyleName().contains("black")) { main.getContent().setStyleName("black"); @@ -63,6 +65,7 @@ public class ButtonsTest extends com.vaadin.Application.LegacyApplication { iconToggle = new CheckBox("64x icons"); iconToggle.addListener(new ValueChangeListener() { + @Override public void valueChange(ValueChangeEvent event) { largeIcons = !largeIcons; recreateAll(); @@ -74,6 +77,7 @@ public class ButtonsTest extends com.vaadin.Application.LegacyApplication { nativeToggle = new CheckBox("Native buttons"); nativeToggle.addListener(new ValueChangeListener() { + @Override public void valueChange(ValueChangeEvent event) { nativeButtons = !nativeButtons; recreateAll(); @@ -120,6 +124,7 @@ public class ButtonsTest extends com.vaadin.Application.LegacyApplication { main.addComponent(b); Button c = new Button("toggle enabled", new Button.ClickListener() { + @Override public void buttonClick(ClickEvent event) { b.setEnabled(!b.isEnabled()); } diff --git a/tests/testbench/com/vaadin/tests/tickets/Ticket1225.java b/tests/testbench/com/vaadin/tests/tickets/Ticket1225.java index fe9cb6e415..299c939043 100644 --- a/tests/testbench/com/vaadin/tests/tickets/Ticket1225.java +++ b/tests/testbench/com/vaadin/tests/tickets/Ticket1225.java @@ -1,7 +1,7 @@ package com.vaadin.tests.tickets; import com.vaadin.Application; -import com.vaadin.terminal.gwt.client.ui.label.ContentMode; +import com.vaadin.shared.ui.label.ContentMode; import com.vaadin.tests.TestForTablesInitialColumnWidthLogicRendering; import com.vaadin.ui.Alignment; import com.vaadin.ui.Label; diff --git a/tests/testbench/com/vaadin/tests/tickets/Ticket1230.java b/tests/testbench/com/vaadin/tests/tickets/Ticket1230.java index 872084d436..b1841b69ba 100644 --- a/tests/testbench/com/vaadin/tests/tickets/Ticket1230.java +++ b/tests/testbench/com/vaadin/tests/tickets/Ticket1230.java @@ -32,6 +32,7 @@ public class Ticket1230 extends Application.LegacyApplication { layout.addComponent(selectWithoutNullItem); Button b = new Button("Select NULL_PROPERTY", new ClickListener() { + @Override public void buttonClick(ClickEvent event) { selectWithoutNullItem.select(NULL_ITEM_ID); printState(); @@ -41,6 +42,7 @@ public class Ticket1230 extends Application.LegacyApplication { layout.addComponent(b); b = new Button("Select 1", new ClickListener() { + @Override public void buttonClick(ClickEvent event) { selectWithoutNullItem.select("1"); printState(); @@ -50,6 +52,7 @@ public class Ticket1230 extends Application.LegacyApplication { layout.addComponent(b); b = new Button("Select 2", new ClickListener() { + @Override public void buttonClick(ClickEvent event) { selectWithoutNullItem.select("2"); printState(); @@ -60,6 +63,7 @@ public class Ticket1230 extends Application.LegacyApplication { b = new Button("Select null", new ClickListener() { + @Override public void buttonClick(ClickEvent event) { selectWithoutNullItem.select(null); printState(); @@ -79,6 +83,7 @@ public class Ticket1230 extends Application.LegacyApplication { selectWithNullItem.setCaption("Select with null item id"); Button b = new Button("Select NULL_PROPERTY", new ClickListener() { + @Override public void buttonClick(ClickEvent event) { selectWithNullItem.select(NULL_ITEM_ID); printState(); @@ -89,6 +94,7 @@ public class Ticket1230 extends Application.LegacyApplication { b = new Button("Select 1", new ClickListener() { + @Override public void buttonClick(ClickEvent event) { selectWithNullItem.select("1"); printState(); @@ -98,6 +104,7 @@ public class Ticket1230 extends Application.LegacyApplication { layout.addComponent(b); b = new Button("Select 2", new ClickListener() { + @Override public void buttonClick(ClickEvent event) { selectWithNullItem.select("2"); printState(); @@ -107,6 +114,7 @@ public class Ticket1230 extends Application.LegacyApplication { b = new Button("Select null", new ClickListener() { + @Override public void buttonClick(ClickEvent event) { selectWithNullItem.select(null); printState(); @@ -118,6 +126,7 @@ public class Ticket1230 extends Application.LegacyApplication { w.addComponent(new Button("print select values", new Button.ClickListener() { + @Override public void buttonClick(ClickEvent event) { printState(); } diff --git a/tests/testbench/com/vaadin/tests/tickets/Ticket124.java b/tests/testbench/com/vaadin/tests/tickets/Ticket124.java index 81a164d22e..8761db1cc3 100644 --- a/tests/testbench/com/vaadin/tests/tickets/Ticket124.java +++ b/tests/testbench/com/vaadin/tests/tickets/Ticket124.java @@ -1,7 +1,7 @@ package com.vaadin.tests.tickets; import com.vaadin.Application; -import com.vaadin.terminal.gwt.client.ui.label.ContentMode; +import com.vaadin.shared.ui.label.ContentMode; import com.vaadin.ui.Button; import com.vaadin.ui.Button.ClickEvent; import com.vaadin.ui.Button.ClickListener; @@ -27,6 +27,7 @@ public class Ticket124 extends Application.LegacyApplication { tf = new TextField("Row nr"); Button insert = new Button("Insert row", new ClickListener() { + @Override public void buttonClick(ClickEvent event) { insertRow(); @@ -34,6 +35,7 @@ public class Ticket124 extends Application.LegacyApplication { }); Button delete = new Button("Delete row", new ClickListener() { + @Override public void buttonClick(ClickEvent event) { deleteRow(); diff --git a/tests/testbench/com/vaadin/tests/tickets/Ticket1365.java b/tests/testbench/com/vaadin/tests/tickets/Ticket1365.java index b35d185811..7e9f5dab2c 100644 --- a/tests/testbench/com/vaadin/tests/tickets/Ticket1365.java +++ b/tests/testbench/com/vaadin/tests/tickets/Ticket1365.java @@ -33,10 +33,12 @@ public class Ticket1365 extends com.vaadin.Application.LegacyApplication new ShortcutAction("CTRL-S", ShortcutAction.KeyCode.S, new int[] { ShortcutAction.ModifierKey.CTRL }), }; + @Override public Action[] getActions(Object target, Object sender) { return actions; } + @Override public void handleAction(Action action, Object sender, Object target) { status.setValue("Pressed " + action.getCaption() + " to fire shortcut. Texfield value: " + f.getValue()); diff --git a/tests/testbench/com/vaadin/tests/tickets/Ticket1368.java b/tests/testbench/com/vaadin/tests/tickets/Ticket1368.java index a1a5b449d1..92d3598382 100644 --- a/tests/testbench/com/vaadin/tests/tickets/Ticket1368.java +++ b/tests/testbench/com/vaadin/tests/tickets/Ticket1368.java @@ -26,6 +26,7 @@ public class Ticket1368 extends Application.LegacyApplication { addColumn.setImmediate(true); addColumn.setNewItemsAllowed(true); addColumn.setNewItemHandler(new ComboBox.NewItemHandler() { + @Override public void addNewItem(String newItemCaption) { t.addContainerProperty(newItemCaption, String.class, "-"); } diff --git a/tests/testbench/com/vaadin/tests/tickets/Ticket1397.java b/tests/testbench/com/vaadin/tests/tickets/Ticket1397.java index dfccf31956..3ba7ae2bfa 100644 --- a/tests/testbench/com/vaadin/tests/tickets/Ticket1397.java +++ b/tests/testbench/com/vaadin/tests/tickets/Ticket1397.java @@ -30,10 +30,12 @@ public class Ticket1397 extends Application.LegacyApplication { "fooTextField"); PopupView.Content content = new PopupView.Content() { + @Override public String getMinimizedValueAsHTML() { return String.valueOf(prop.getValue()); } + @Override public Component getPopupComponent() { return new TextField("Edit foo", prop); } @@ -56,6 +58,7 @@ public class Ticket1397 extends Application.LegacyApplication { public myButton() { super("Reverse the property"); this.addListener(new Button.ClickListener() { + @Override public void buttonClick(Button.ClickEvent event) { StringBuffer getContents = prop2.getValue(); getContents.reverse(); @@ -68,10 +71,12 @@ public class Ticket1397 extends Application.LegacyApplication { final Panel panel2 = new Panel("Editor with a button"); panel2.addComponent(new myButton()); PopupView.Content content2 = new PopupView.Content() { + @Override public String getMinimizedValueAsHTML() { return String.valueOf(prop2.getValue()); } + @Override public Component getPopupComponent() { return panel2; } @@ -89,10 +94,12 @@ public class Ticket1397 extends Application.LegacyApplication { panel3.addComponent(tf2); PopupView.Content content3 = new PopupView.Content() { + @Override public String getMinimizedValueAsHTML() { return String.valueOf(op.getValue()); } + @Override public Component getPopupComponent() { return panel3; } @@ -113,10 +120,12 @@ public class Ticket1397 extends Application.LegacyApplication { final InlineDateField df = new InlineDateField("", new Date()); PopupView pp = new PopupView(new PopupView.Content() { + @Override public String getMinimizedValueAsHTML() { return String.valueOf(df.getValue()); } + @Override public Component getPopupComponent() { return df; } @@ -130,11 +139,13 @@ public class Ticket1397 extends Application.LegacyApplication { + lineNum + " and see how the overview-version changes."); + @Override public String getMinimizedValueAsHTML() { return "" + String.valueOf(tf.getValue()).length() + " characters of info"; } + @Override public Component getPopupComponent() { return tf; } diff --git a/tests/testbench/com/vaadin/tests/tickets/Ticket1435.java b/tests/testbench/com/vaadin/tests/tickets/Ticket1435.java index c280be4e4a..438f7e2d5f 100644 --- a/tests/testbench/com/vaadin/tests/tickets/Ticket1435.java +++ b/tests/testbench/com/vaadin/tests/tickets/Ticket1435.java @@ -118,6 +118,7 @@ public class Ticket1435 extends Application.LegacyApplication { collapse.setStyleName("collapse"); collapse.addListener(new Button.ClickListener() { + @Override public void buttonClick(Button.ClickEvent event) { if (useWorkaround) { container.setVisible(false); @@ -144,6 +145,7 @@ public class Ticket1435 extends Application.LegacyApplication { if (useWorkaround) { expand.addListener(new Button.ClickListener() { + @Override public void buttonClick(ClickEvent event) { container.setVisible(true); root.setHeight(lastHeight, lastHeightUnit); diff --git a/tests/testbench/com/vaadin/tests/tickets/Ticket1444.java b/tests/testbench/com/vaadin/tests/tickets/Ticket1444.java index 1af3b405e2..a597a5b242 100644 --- a/tests/testbench/com/vaadin/tests/tickets/Ticket1444.java +++ b/tests/testbench/com/vaadin/tests/tickets/Ticket1444.java @@ -1,7 +1,7 @@ package com.vaadin.tests.tickets; import com.vaadin.Application; -import com.vaadin.terminal.gwt.client.ui.label.ContentMode; +import com.vaadin.shared.ui.label.ContentMode; import com.vaadin.ui.Label; import com.vaadin.ui.Root.LegacyWindow; import com.vaadin.ui.VerticalLayout; diff --git a/tests/testbench/com/vaadin/tests/tickets/Ticket1465ModalNotification.java b/tests/testbench/com/vaadin/tests/tickets/Ticket1465ModalNotification.java index 9a777d655c..4b7d4201e0 100644 --- a/tests/testbench/com/vaadin/tests/tickets/Ticket1465ModalNotification.java +++ b/tests/testbench/com/vaadin/tests/tickets/Ticket1465ModalNotification.java @@ -23,6 +23,7 @@ public class Ticket1465ModalNotification extends Application.LegacyApplication { Button b = new Button("click to show notification", new Button.ClickListener() { + @Override public void buttonClick(ClickEvent event) { Notification.show( "Try clicking the button in main window!", @@ -35,6 +36,7 @@ public class Ticket1465ModalNotification extends Application.LegacyApplication { b = new Button("click to warning notification", new Button.ClickListener() { + @Override public void buttonClick(ClickEvent event) { Notification.show( "Try clicking the button in main window!", @@ -46,6 +48,7 @@ public class Ticket1465ModalNotification extends Application.LegacyApplication { b = new Button("click to Humanized notification", new Button.ClickListener() { + @Override public void buttonClick(ClickEvent event) { Notification.show( "Try clicking the button in main window!", @@ -56,6 +59,7 @@ public class Ticket1465ModalNotification extends Application.LegacyApplication { b = new Button("click to test modality!", new Button.ClickListener() { + @Override public void buttonClick(ClickEvent event) { mainWin.addComponent(new Label("clicked")); @@ -68,6 +72,7 @@ public class Ticket1465ModalNotification extends Application.LegacyApplication { b = new Button("click to test modality!", new Button.ClickListener() { + @Override public void buttonClick(ClickEvent event) { mainWin.addComponent(new Label("clicked")); diff --git a/tests/testbench/com/vaadin/tests/tickets/Ticket1506_Panel.java b/tests/testbench/com/vaadin/tests/tickets/Ticket1506_Panel.java index 0c06a24df5..9835e046dc 100644 --- a/tests/testbench/com/vaadin/tests/tickets/Ticket1506_Panel.java +++ b/tests/testbench/com/vaadin/tests/tickets/Ticket1506_Panel.java @@ -26,6 +26,7 @@ public class Ticket1506_Panel extends Panel { private Component initButton(final ObjectProperty<?> property) { Button button = new Button("Clear select"); button.addListener(new Button.ClickListener() { + @Override public void buttonClick(Button.ClickEvent event) { property.setValue(null); } diff --git a/tests/testbench/com/vaadin/tests/tickets/Ticket1506_TestContainer.java b/tests/testbench/com/vaadin/tests/tickets/Ticket1506_TestContainer.java index 616e40d917..d6b53db7c7 100644 --- a/tests/testbench/com/vaadin/tests/tickets/Ticket1506_TestContainer.java +++ b/tests/testbench/com/vaadin/tests/tickets/Ticket1506_TestContainer.java @@ -38,6 +38,7 @@ public class Ticket1506_TestContainer implements Container { items.put(ITEM_2_ID, item2); } + @Override public Item getItem(Object itemId) { if (items.isEmpty()) { loadItems(); @@ -45,6 +46,7 @@ public class Ticket1506_TestContainer implements Container { return items.get(itemId); } + @Override public Collection<String> getContainerPropertyIds() { if (items.isEmpty()) { loadItems(); @@ -55,6 +57,7 @@ public class Ticket1506_TestContainer implements Container { return a; } + @Override public Collection<String> getItemIds() { if (items.isEmpty()) { loadItems(); @@ -65,6 +68,7 @@ public class Ticket1506_TestContainer implements Container { return a; } + @Override public Property<?> getContainerProperty(Object itemId, Object propertyId) { if (items.isEmpty()) { loadItems(); @@ -76,6 +80,7 @@ public class Ticket1506_TestContainer implements Container { return null; } + @Override public Class<String> getType(Object propertyId) { if (items.isEmpty()) { loadItems(); @@ -83,6 +88,7 @@ public class Ticket1506_TestContainer implements Container { return String.class; } + @Override public int size() { if (items.isEmpty()) { loadItems(); @@ -90,6 +96,7 @@ public class Ticket1506_TestContainer implements Container { return items.size(); } + @Override public boolean containsId(Object itemId) { if (items.isEmpty()) { loadItems(); @@ -97,29 +104,35 @@ public class Ticket1506_TestContainer implements Container { return items.containsKey(itemId); } + @Override public Item addItem(Object itemId) throws UnsupportedOperationException { throw new UnsupportedOperationException("Not implemented"); } + @Override public Object addItem() throws UnsupportedOperationException { throw new UnsupportedOperationException("Not implemented"); } + @Override public boolean removeItem(Object itemId) throws UnsupportedOperationException { throw new UnsupportedOperationException("Not implemented"); } + @Override public boolean addContainerProperty(Object propertyId, Class<?> type, Object defaultValue) throws UnsupportedOperationException { throw new UnsupportedOperationException("Not implemented"); } + @Override public boolean removeContainerProperty(Object propertyId) throws UnsupportedOperationException { throw new UnsupportedOperationException("Not implemented"); } + @Override public boolean removeAllItems() throws UnsupportedOperationException { throw new UnsupportedOperationException("Not implemented"); } diff --git a/tests/testbench/com/vaadin/tests/tickets/Ticket1506_TestContainer2.java b/tests/testbench/com/vaadin/tests/tickets/Ticket1506_TestContainer2.java index 863ce907da..7ac34dcd2e 100644 --- a/tests/testbench/com/vaadin/tests/tickets/Ticket1506_TestContainer2.java +++ b/tests/testbench/com/vaadin/tests/tickets/Ticket1506_TestContainer2.java @@ -33,6 +33,7 @@ public class Ticket1506_TestContainer2 implements Container { } } + @Override public Item getItem(Object itemId) { if (items.isEmpty()) { loadItems(); @@ -40,6 +41,7 @@ public class Ticket1506_TestContainer2 implements Container { return items.get(itemId); } + @Override public Collection<String> getContainerPropertyIds() { if (items.isEmpty()) { loadItems(); @@ -50,6 +52,7 @@ public class Ticket1506_TestContainer2 implements Container { return a; } + @Override public Collection<String> getItemIds() { if (items.isEmpty()) { loadItems(); @@ -57,6 +60,7 @@ public class Ticket1506_TestContainer2 implements Container { return items.keySet(); } + @Override public Property<?> getContainerProperty(Object itemId, Object propertyId) { if (items.isEmpty()) { loadItems(); @@ -68,6 +72,7 @@ public class Ticket1506_TestContainer2 implements Container { return null; } + @Override public Class<String> getType(Object propertyId) { if (items.isEmpty()) { loadItems(); @@ -75,6 +80,7 @@ public class Ticket1506_TestContainer2 implements Container { return String.class; } + @Override public int size() { if (items.isEmpty()) { loadItems(); @@ -82,6 +88,7 @@ public class Ticket1506_TestContainer2 implements Container { return items.size(); } + @Override public boolean containsId(Object itemId) { if (items.isEmpty()) { loadItems(); @@ -89,29 +96,35 @@ public class Ticket1506_TestContainer2 implements Container { return items.containsKey(itemId); } + @Override public Item addItem(Object itemId) throws UnsupportedOperationException { throw new UnsupportedOperationException("Not implemented"); } + @Override public Object addItem() throws UnsupportedOperationException { throw new UnsupportedOperationException("Not implemented"); } + @Override public boolean removeItem(Object itemId) throws UnsupportedOperationException { throw new UnsupportedOperationException("Not implemented"); } + @Override public boolean addContainerProperty(Object propertyId, Class<?> type, Object defaultValue) throws UnsupportedOperationException { throw new UnsupportedOperationException("Not implemented"); } + @Override public boolean removeContainerProperty(Object propertyId) throws UnsupportedOperationException { throw new UnsupportedOperationException("Not implemented"); } + @Override public boolean removeAllItems() throws UnsupportedOperationException { throw new UnsupportedOperationException("Not implemented"); } diff --git a/tests/testbench/com/vaadin/tests/tickets/Ticket1572.java b/tests/testbench/com/vaadin/tests/tickets/Ticket1572.java index 614c471d3e..b9fd2debd5 100644 --- a/tests/testbench/com/vaadin/tests/tickets/Ticket1572.java +++ b/tests/testbench/com/vaadin/tests/tickets/Ticket1572.java @@ -35,6 +35,7 @@ public class Ticket1572 extends com.vaadin.Application.LegacyApplication { Button b = new Button("next margin state"); b.addListener(new Button.ClickListener() { + @Override public void buttonClick(ClickEvent event) { nextMarginState(); } @@ -48,6 +49,7 @@ public class Ticket1572 extends com.vaadin.Application.LegacyApplication { Button b2 = new Button("next spacing state"); b2.addListener(new Button.ClickListener() { + @Override public void buttonClick(ClickEvent event) { nextSpacingState(); } diff --git a/tests/testbench/com/vaadin/tests/tickets/Ticket1581.java b/tests/testbench/com/vaadin/tests/tickets/Ticket1581.java index 1efea99a0e..6831d4c52d 100644 --- a/tests/testbench/com/vaadin/tests/tickets/Ticket1581.java +++ b/tests/testbench/com/vaadin/tests/tickets/Ticket1581.java @@ -52,6 +52,7 @@ public class Ticket1581 extends com.vaadin.Application.LegacyApplication { final Button stop = new Button("Stop updating", new ClickListener() { boolean active = true; + @Override public void buttonClick(ClickEvent event) { if (active) { diff --git a/tests/testbench/com/vaadin/tests/tickets/Ticket1589.java b/tests/testbench/com/vaadin/tests/tickets/Ticket1589.java index 7aba886133..95cc918b6e 100644 --- a/tests/testbench/com/vaadin/tests/tickets/Ticket1589.java +++ b/tests/testbench/com/vaadin/tests/tickets/Ticket1589.java @@ -50,6 +50,7 @@ class MyDynamicResource implements RequestHandler { * Returns null if the URI does not match. Otherwise returns a download * stream that contains the response from the server. */ + @Override public boolean handleRequest(Application application, WrappedRequest request, WrappedResponse response) throws IOException { diff --git a/tests/testbench/com/vaadin/tests/tickets/Ticket1598.java b/tests/testbench/com/vaadin/tests/tickets/Ticket1598.java index 0faf9b8afb..5cb03e77af 100644 --- a/tests/testbench/com/vaadin/tests/tickets/Ticket1598.java +++ b/tests/testbench/com/vaadin/tests/tickets/Ticket1598.java @@ -32,6 +32,7 @@ public class Ticket1598 extends Application.LegacyApplication { for (int i = 0; i < 5; i++) { first.addItem(new String("Submenu item" + i), null, new Command() { + @Override public void menuSelected(MenuItem selected) { main.showNotification("Action " + selected.getText()); } @@ -44,6 +45,7 @@ public class Ticket1598 extends Application.LegacyApplication { firstSubItem1.addItem(new String("Subsubmenu item" + i), null, new Command() { + @Override public void menuSelected(MenuItem selected) { main.showNotification("Action " + selected.getText()); @@ -56,6 +58,7 @@ public class Ticket1598 extends Application.LegacyApplication { firstSubItem2.addItem(new String("Subsubmenu item" + i), null, new Command() { + @Override public void menuSelected(MenuItem selected) { main.showNotification("Action " + selected.getText()); @@ -69,6 +72,7 @@ public class Ticket1598 extends Application.LegacyApplication { second.addItem(new String("Second submenu item" + i), null, new Command() { + @Override public void menuSelected(MenuItem selected) { main.showNotification("Action " + selected.getText()); @@ -82,6 +86,7 @@ public class Ticket1598 extends Application.LegacyApplication { for (int i = 2; i <= 3; i++) { (menuBar.getItems().get(i)).setCommand(new Command() { + @Override public void menuSelected(MenuItem selectedItem) { main.showNotification("Action " + selectedItem.getText()); } @@ -92,6 +97,7 @@ public class Ticket1598 extends Application.LegacyApplication { fourth.setText("Add new item"); fourth.setCommand(new Command() { + @Override public void menuSelected(MenuItem selected) { menuBar.addItem("Newborn", null, null); } @@ -108,6 +114,7 @@ public class Ticket1598 extends Application.LegacyApplication { // A command for removing the selected menuitem Command removeCommand = new Command() { + @Override public void menuSelected(MenuItem selected) { MenuItem parent = selected.getParent(); if (parent != null) { diff --git a/tests/testbench/com/vaadin/tests/tickets/Ticket161.java b/tests/testbench/com/vaadin/tests/tickets/Ticket161.java index 1819076b32..b8bf8deb20 100644 --- a/tests/testbench/com/vaadin/tests/tickets/Ticket161.java +++ b/tests/testbench/com/vaadin/tests/tickets/Ticket161.java @@ -27,6 +27,7 @@ public class Ticket161 extends Application.LegacyApplication { Button b = new Button("Truncate to 20 rows"); b.addListener(new Button.ClickListener() { + @Override public void buttonClick(ClickEvent event) { Container containerDataSource = t.getContainerDataSource(); diff --git a/tests/testbench/com/vaadin/tests/tickets/Ticket1632.java b/tests/testbench/com/vaadin/tests/tickets/Ticket1632.java index 1774000355..43feab5ab7 100644 --- a/tests/testbench/com/vaadin/tests/tickets/Ticket1632.java +++ b/tests/testbench/com/vaadin/tests/tickets/Ticket1632.java @@ -45,6 +45,7 @@ public class Ticket1632 extends Application.LegacyApplication { b.addListener(new Button.ClickListener() { boolean visible = false; + @Override public void buttonClick(ClickEvent event) { visible = !visible; if (visible) { diff --git a/tests/testbench/com/vaadin/tests/tickets/Ticket1659.java b/tests/testbench/com/vaadin/tests/tickets/Ticket1659.java index d78a1d78af..3c64a49316 100644 --- a/tests/testbench/com/vaadin/tests/tickets/Ticket1659.java +++ b/tests/testbench/com/vaadin/tests/tickets/Ticket1659.java @@ -16,6 +16,7 @@ public class Ticket1659 extends Application.LegacyApplication { "Change URI using Application.getURL()", new Button.ClickListener() { + @Override public void buttonClick(ClickEvent event) { mainWin.open(new ExternalResource(getURL() + "#" + System.currentTimeMillis())); @@ -24,6 +25,7 @@ public class Ticket1659 extends Application.LegacyApplication { mainWin.addComponent(new Button("Change URI uring Window.getURL()", new Button.ClickListener() { + @Override public void buttonClick(ClickEvent event) { mainWin.open(new ExternalResource(mainWin.getURL() + "#" + System.currentTimeMillis())); diff --git a/tests/testbench/com/vaadin/tests/tickets/Ticket1673.java b/tests/testbench/com/vaadin/tests/tickets/Ticket1673.java index 891cdf9f21..277096598e 100644 --- a/tests/testbench/com/vaadin/tests/tickets/Ticket1673.java +++ b/tests/testbench/com/vaadin/tests/tickets/Ticket1673.java @@ -14,6 +14,7 @@ public class Ticket1673 extends com.vaadin.Application.LegacyApplication { setMainWindow(main); main.addComponent(new Button("close", new Button.ClickListener() { + @Override public void buttonClick(ClickEvent event) { close(); } diff --git a/tests/testbench/com/vaadin/tests/tickets/Ticket1710.java b/tests/testbench/com/vaadin/tests/tickets/Ticket1710.java index 827879d3c6..01792aeb89 100644 --- a/tests/testbench/com/vaadin/tests/tickets/Ticket1710.java +++ b/tests/testbench/com/vaadin/tests/tickets/Ticket1710.java @@ -279,6 +279,7 @@ public class Ticket1710 extends com.vaadin.Application.LegacyApplication { } Property.ValueChangeListener marginSpacingListener = new Property.ValueChangeListener() { + @Override public void valueChange(ValueChangeEvent event) { updateMarginsAndSpacing(); } @@ -343,6 +344,7 @@ public class Ticket1710 extends com.vaadin.Application.LegacyApplication { Layout.AlignmentHandler.ALIGNMENT_RIGHT), "right"); Property.ValueChangeListener alignmentChangeListener = new Property.ValueChangeListener() { + @Override public void valueChange(ValueChangeEvent event) { updateAlignments(((Integer) hAlign.getValue()).intValue(), ((Integer) vAlign.getValue()).intValue()); @@ -372,6 +374,7 @@ public class Ticket1710 extends com.vaadin.Application.LegacyApplication { Layout.AlignmentHandler.ALIGNMENT_RIGHT), "right"); lAlign.addListener(new Property.ValueChangeListener() { + @Override public void valueChange(ValueChangeEvent event) { testPanelLayout.setComponentAlignment(testedLayout, ((Integer) lAlign.getValue()).intValue(), diff --git a/tests/testbench/com/vaadin/tests/tickets/Ticket1772.java b/tests/testbench/com/vaadin/tests/tickets/Ticket1772.java index 7ca90904f8..2cbb648227 100644 --- a/tests/testbench/com/vaadin/tests/tickets/Ticket1772.java +++ b/tests/testbench/com/vaadin/tests/tickets/Ticket1772.java @@ -24,6 +24,7 @@ public class Ticket1772 extends com.vaadin.Application.LegacyApplication { b.addListener(new Button.ClickListener() { int counter = 0; + @Override public void buttonClick(ClickEvent event) { gridLayout diff --git a/tests/testbench/com/vaadin/tests/tickets/Ticket1775.java b/tests/testbench/com/vaadin/tests/tickets/Ticket1775.java index aed69056aa..63af96b1a2 100644 --- a/tests/testbench/com/vaadin/tests/tickets/Ticket1775.java +++ b/tests/testbench/com/vaadin/tests/tickets/Ticket1775.java @@ -27,6 +27,7 @@ public class Ticket1775 extends com.vaadin.Application.LegacyApplication { button2.addListener(new Button.ClickListener() { + @Override public void buttonClick(ClickEvent event) { Label mainComponent = new Label("Main"); Label header = new Label("Header"); @@ -34,6 +35,7 @@ public class Ticket1775 extends com.vaadin.Application.LegacyApplication { layout.addComponent(mainComponent, "body"); layout.addComponent(header, "loginUser"); button.addListener(new Button.ClickListener() { + @Override public void buttonClick(Button.ClickEvent event) { layout.addComponent(anotherComponent, "body"); layout.removeComponent("loginUser"); diff --git a/tests/testbench/com/vaadin/tests/tickets/Ticket1804.java b/tests/testbench/com/vaadin/tests/tickets/Ticket1804.java index d627d11e18..0a89675fc0 100644 --- a/tests/testbench/com/vaadin/tests/tickets/Ticket1804.java +++ b/tests/testbench/com/vaadin/tests/tickets/Ticket1804.java @@ -5,8 +5,8 @@ import java.util.LinkedList; import com.vaadin.data.Validator; import com.vaadin.data.util.MethodProperty; +import com.vaadin.shared.ui.label.ContentMode; import com.vaadin.terminal.SystemError; -import com.vaadin.terminal.gwt.client.ui.label.ContentMode; import com.vaadin.ui.AbstractField; import com.vaadin.ui.Button; import com.vaadin.ui.Button.ClickEvent; @@ -91,6 +91,7 @@ public class Ticket1804 extends com.vaadin.Application.LegacyApplication { main.addComponent(checkValidity); checkValidity.addListener(new Button.ClickListener() { + @Override public void buttonClick(ClickEvent event) { StringBuffer msg = new StringBuffer(); for (Iterator<Select> i = listOfAllFields.iterator(); i @@ -136,6 +137,7 @@ public class Ticket1804 extends com.vaadin.Application.LegacyApplication { this.msg = msg; } + @Override public void validate(Object value) throws InvalidValueException { if (value == null || value.toString().length() == 0) { throw new InvalidValueException(msg); diff --git a/tests/testbench/com/vaadin/tests/tickets/Ticket1805.java b/tests/testbench/com/vaadin/tests/tickets/Ticket1805.java index d7eac667f0..a40f5b25b9 100644 --- a/tests/testbench/com/vaadin/tests/tickets/Ticket1805.java +++ b/tests/testbench/com/vaadin/tests/tickets/Ticket1805.java @@ -30,6 +30,7 @@ public class Ticket1805 extends com.vaadin.Application.LegacyApplication { final TextField size = new TextField("Grid width in css unit"); size.addListener(new ValueChangeListener() { + @Override public void valueChange(ValueChangeEvent event) { String width = size.getValue().toString(); if (width == null || width.equals("")) { diff --git a/tests/testbench/com/vaadin/tests/tickets/Ticket1806.java b/tests/testbench/com/vaadin/tests/tickets/Ticket1806.java index c47ea49697..2c979f4600 100644 --- a/tests/testbench/com/vaadin/tests/tickets/Ticket1806.java +++ b/tests/testbench/com/vaadin/tests/tickets/Ticket1806.java @@ -25,18 +25,21 @@ public class Ticket1806 extends com.vaadin.Application.LegacyApplication { "This button does nothing (but flushes queued variable changes)")); main.addComponent(new Button("Commit the field to property", new Button.ClickListener() { + @Override public void buttonClick(ClickEvent event) { tf1.commit(); } })); main.addComponent(new Button("Show property value", new Button.ClickListener() { + @Override public void buttonClick(ClickEvent event) { main.showNotification("'" + prop.getValue() + "'"); } })); main.addComponent(new Button("Show field value", new Button.ClickListener() { + @Override public void buttonClick(ClickEvent event) { main.showNotification("'" + tf1.getValue() + "'"); } diff --git a/tests/testbench/com/vaadin/tests/tickets/Ticket1811.java b/tests/testbench/com/vaadin/tests/tickets/Ticket1811.java index d530c949e8..695be19300 100644 --- a/tests/testbench/com/vaadin/tests/tickets/Ticket1811.java +++ b/tests/testbench/com/vaadin/tests/tickets/Ticket1811.java @@ -5,7 +5,7 @@ import java.util.LinkedList; import com.vaadin.data.Validator; import com.vaadin.data.validator.StringLengthValidator; -import com.vaadin.terminal.gwt.client.ui.label.ContentMode; +import com.vaadin.shared.ui.label.ContentMode; import com.vaadin.ui.Button; import com.vaadin.ui.Button.ClickEvent; import com.vaadin.ui.Label; @@ -56,6 +56,7 @@ public class Ticket1811 extends com.vaadin.Application.LegacyApplication { main.addComponent(checkValidity); checkValidity.addListener(new Button.ClickListener() { + @Override public void buttonClick(ClickEvent event) { StringBuffer msg = new StringBuffer(); for (Iterator<TextField> i = listOfAllFields.iterator(); i diff --git a/tests/testbench/com/vaadin/tests/tickets/Ticket1819.java b/tests/testbench/com/vaadin/tests/tickets/Ticket1819.java index 8e5f107b17..42474d748d 100644 --- a/tests/testbench/com/vaadin/tests/tickets/Ticket1819.java +++ b/tests/testbench/com/vaadin/tests/tickets/Ticket1819.java @@ -3,7 +3,7 @@ package com.vaadin.tests.tickets; import java.util.Iterator; import java.util.LinkedList; -import com.vaadin.terminal.gwt.client.ui.label.ContentMode; +import com.vaadin.shared.ui.label.ContentMode; import com.vaadin.ui.AbstractField; import com.vaadin.ui.Button; import com.vaadin.ui.Button.ClickEvent; @@ -47,6 +47,7 @@ public class Ticket1819 extends com.vaadin.Application.LegacyApplication { main.addComponent(checkValidity); checkValidity.addListener(new Button.ClickListener() { + @Override public void buttonClick(ClickEvent event) { StringBuffer msg = new StringBuffer(); for (Iterator<Select> i = listOfAllFields.iterator(); i diff --git a/tests/testbench/com/vaadin/tests/tickets/Ticket1834PanelScrolling.java b/tests/testbench/com/vaadin/tests/tickets/Ticket1834PanelScrolling.java index 912f5ba02d..de91b04c1c 100644 --- a/tests/testbench/com/vaadin/tests/tickets/Ticket1834PanelScrolling.java +++ b/tests/testbench/com/vaadin/tests/tickets/Ticket1834PanelScrolling.java @@ -29,6 +29,7 @@ public class Ticket1834PanelScrolling extends Button b = new Button("update"); currentState.addComponent(b); b.addListener(new ClickListener() { + @Override public void buttonClick(ClickEvent event) { state.setValue("ScrollTop: " + p.getScrollTop() + " ScrollLeft: " + p.getScrollLeft()); @@ -38,6 +39,7 @@ public class Ticket1834PanelScrolling extends b = new Button("ScrollBy 50px"); b.addListener(new ClickListener() { + @Override public void buttonClick(ClickEvent event) { p.setScrollLeft(p.getScrollLeft() + 50); p.setScrollTop(p.getScrollTop() + 50); @@ -52,6 +54,7 @@ public class Ticket1834PanelScrolling extends b.addListener(new ClickListener() { int i = 0; + @Override public void buttonClick(ClickEvent event) { p.addComponent(new Label("new Row" + ++i)); } @@ -61,6 +64,7 @@ public class Ticket1834PanelScrolling extends b = new Button("Repaint Panel"); b.addListener(new ClickListener() { + @Override public void buttonClick(ClickEvent event) { p.requestRepaint(); } diff --git a/tests/testbench/com/vaadin/tests/tickets/Ticket1857.java b/tests/testbench/com/vaadin/tests/tickets/Ticket1857.java index 2af5bf9c85..4b546de0f6 100644 --- a/tests/testbench/com/vaadin/tests/tickets/Ticket1857.java +++ b/tests/testbench/com/vaadin/tests/tickets/Ticket1857.java @@ -41,6 +41,7 @@ public class Ticket1857 extends Application.LegacyApplication implements footer.addComponent(actionHandlerEnabler); actionHandlerEnabler.setImmediate(true); actionHandlerEnabler.addListener(new Property.ValueChangeListener() { + @Override public void valueChange(ValueChangeEvent event) { if (actionHandlerEnabler.getValue().booleanValue()) { t.addActionHandler(Ticket1857.this); @@ -54,9 +55,11 @@ public class Ticket1857 extends Application.LegacyApplication implements footer.addComponent(cellStylesEnabler); cellStylesEnabler.setImmediate(true); cellStylesEnabler.addListener(new Property.ValueChangeListener() { + @Override public void valueChange(ValueChangeEvent event) { if (cellStylesEnabler.getValue().booleanValue()) { t.setCellStyleGenerator(new Table.CellStyleGenerator() { + @Override public String getStyle(Object itemId, Object propertyId) { Object cell = t.getContainerProperty(itemId, propertyId).getValue(); @@ -99,10 +102,12 @@ public class Ticket1857 extends Application.LegacyApplication implements private final Action removeAction = new Action("Remove"); + @Override public Action[] getActions(Object target, Object sender) { return new Action[] { removeAction }; } + @Override public void handleAction(Action action, Object sender, Object target) { getMainWindow().showNotification("Removing row number:" + target); ((Table) sender).removeItem(target); diff --git a/tests/testbench/com/vaadin/tests/tickets/Ticket1878.java b/tests/testbench/com/vaadin/tests/tickets/Ticket1878.java index 6072782dc3..0a8992c17f 100644 --- a/tests/testbench/com/vaadin/tests/tickets/Ticket1878.java +++ b/tests/testbench/com/vaadin/tests/tickets/Ticket1878.java @@ -52,6 +52,7 @@ public class Ticket1878 extends Application.LegacyApplication { switchToGridButton = new Button("Switch to GridLayout", new ClickListener() { + @Override public void buttonClick(ClickEvent event) { changeLayout(switchToGridButton, gridLayout); } @@ -60,6 +61,7 @@ public class Ticket1878 extends Application.LegacyApplication { switchToOrderedButton = new Button("Switch to OrderedLayout", new ClickListener() { + @Override public void buttonClick(ClickEvent event) { changeLayout(switchToOrderedButton, orderedLayout); } @@ -69,6 +71,7 @@ public class Ticket1878 extends Application.LegacyApplication { switchToFormsButton = new Button("Switch to Form", new ClickListener() { + @Override public void buttonClick(ClickEvent event) { changeLayout(switchToFormsButton, formLayout); } diff --git a/tests/testbench/com/vaadin/tests/tickets/Ticket1900.java b/tests/testbench/com/vaadin/tests/tickets/Ticket1900.java index fdbecf8eae..9fe8ccd801 100644 --- a/tests/testbench/com/vaadin/tests/tickets/Ticket1900.java +++ b/tests/testbench/com/vaadin/tests/tickets/Ticket1900.java @@ -24,6 +24,7 @@ public class Ticket1900 extends Application.LegacyApplication { f[i].setRequired(true); main.addComponent(f[i]); f[i].addListener(new Property.ValueChangeListener() { + @Override public void valueChange(ValueChangeEvent event) { main.showNotification("Validity test", "Testcase " + j + " is " + (f[j].isValid() ? "valid" : "invalid")); @@ -60,6 +61,7 @@ public class Ticket1900 extends Application.LegacyApplication { this.c = c; } + @Override public void validate(Object value) throws InvalidValueException { if (value == null || !value.toString().contains(c)) { throw new InvalidValueException("Value does not contain " + c); diff --git a/tests/testbench/com/vaadin/tests/tickets/Ticket1919.java b/tests/testbench/com/vaadin/tests/tickets/Ticket1919.java index 68a2eaa2bc..75a2aafb96 100644 --- a/tests/testbench/com/vaadin/tests/tickets/Ticket1919.java +++ b/tests/testbench/com/vaadin/tests/tickets/Ticket1919.java @@ -48,6 +48,7 @@ public class Ticket1919 extends com.vaadin.Application.LegacyApplication { p.setSizeFull(); Button b = new Button("toggle Values", new Button.ClickListener() { + @Override public void buttonClick(ClickEvent event) { toggleStyleName(); } diff --git a/tests/testbench/com/vaadin/tests/tickets/Ticket1921.java b/tests/testbench/com/vaadin/tests/tickets/Ticket1921.java index c0a1c7d2c9..416bb80875 100644 --- a/tests/testbench/com/vaadin/tests/tickets/Ticket1921.java +++ b/tests/testbench/com/vaadin/tests/tickets/Ticket1921.java @@ -30,6 +30,7 @@ public class Ticket1921 extends Application.LegacyApplication implements inner = new VerticalLayout(); outer.addComponent(inner); button = new Button("foo", new Button.ClickListener() { + @Override public void buttonClick(ClickEvent event) { newState(); } @@ -92,6 +93,7 @@ public class Ticket1921 extends Application.LegacyApplication implements } } + @Override public boolean handleRequest(Application application, WrappedRequest request, WrappedResponse response) throws IOException { diff --git a/tests/testbench/com/vaadin/tests/tickets/Ticket1939.java b/tests/testbench/com/vaadin/tests/tickets/Ticket1939.java index d24cace2c9..48d8ff458c 100644 --- a/tests/testbench/com/vaadin/tests/tickets/Ticket1939.java +++ b/tests/testbench/com/vaadin/tests/tickets/Ticket1939.java @@ -26,6 +26,7 @@ public class Ticket1939 extends Application.LegacyApplication { w.addComponent(new Button("show me the bug", new Button.ClickListener() { + @Override public void buttonClick(ClickEvent event) { l.setWidth(null); } diff --git a/tests/testbench/com/vaadin/tests/tickets/Ticket1969.java b/tests/testbench/com/vaadin/tests/tickets/Ticket1969.java index aed322ca4d..2a29113829 100644 --- a/tests/testbench/com/vaadin/tests/tickets/Ticket1969.java +++ b/tests/testbench/com/vaadin/tests/tickets/Ticket1969.java @@ -46,6 +46,7 @@ public class Ticket1969 extends com.vaadin.Application.LegacyApplication { b = new Button( "change introduction caption (should add * to tab name)", new Button.ClickListener() { + @Override public void buttonClick(ClickEvent event) { testContent.setCaption(testContent.getCaption() + "*"); } @@ -54,6 +55,7 @@ public class Ticket1969 extends com.vaadin.Application.LegacyApplication { b = new Button("change tab caption (should add * to tab name)", new Button.ClickListener() { + @Override public void buttonClick(ClickEvent event) { actions.setCaption(actions.getCaption() + "*"); } @@ -64,6 +66,7 @@ public class Ticket1969 extends com.vaadin.Application.LegacyApplication { final UserError e = new UserError("Test error"); b = new Button("Toggle error", new Button.ClickListener() { + @Override public void buttonClick(ClickEvent event) { if (testContent.getComponentError() == null) { testContent.setComponentError(e); @@ -75,6 +78,7 @@ public class Ticket1969 extends com.vaadin.Application.LegacyApplication { actions.addComponent(b); b = new Button("Change table caption", new Button.ClickListener() { + @Override public void buttonClick(ClickEvent event) { t.setCaption(t.getCaption() + "*"); } @@ -82,6 +86,7 @@ public class Ticket1969 extends com.vaadin.Application.LegacyApplication { actions.addComponent(b); b = new Button("Toggle Table error", new Button.ClickListener() { + @Override public void buttonClick(ClickEvent event) { if (t.getComponentError() == null) { t.setComponentError(e); diff --git a/tests/testbench/com/vaadin/tests/tickets/Ticket1970.java b/tests/testbench/com/vaadin/tests/tickets/Ticket1970.java index 3c5822fbda..f9f098a05a 100644 --- a/tests/testbench/com/vaadin/tests/tickets/Ticket1970.java +++ b/tests/testbench/com/vaadin/tests/tickets/Ticket1970.java @@ -3,7 +3,7 @@ package com.vaadin.tests.tickets; import java.util.Iterator; import com.vaadin.Application; -import com.vaadin.terminal.gwt.client.ui.label.ContentMode; +import com.vaadin.shared.ui.label.ContentMode; import com.vaadin.ui.Button; import com.vaadin.ui.Button.ClickEvent; import com.vaadin.ui.Label; @@ -38,6 +38,7 @@ public class Ticket1970 extends Application.LegacyApplication { w.addComponent(new Button("Show open windows", new Button.ClickListener() { + @Override public void buttonClick(ClickEvent event) { String openWindows = ""; for (Iterator<LegacyWindow> i = getWindows().iterator(); i @@ -57,6 +58,7 @@ public class Ticket1970 extends Application.LegacyApplication { final LegacyWindow w = new LegacyWindow(); w.addComponent(new Button("Show the name of the application", new Button.ClickListener() { + @Override public void buttonClick(ClickEvent event) { w.showNotification("Name of this window = " + w.getName()); diff --git a/tests/testbench/com/vaadin/tests/tickets/Ticket1973.java b/tests/testbench/com/vaadin/tests/tickets/Ticket1973.java index d4b1345eb1..24d11e6569 100644 --- a/tests/testbench/com/vaadin/tests/tickets/Ticket1973.java +++ b/tests/testbench/com/vaadin/tests/tickets/Ticket1973.java @@ -30,6 +30,7 @@ public class Ticket1973 extends com.vaadin.Application.LegacyApplication { Button refreshTable = new Button("Change table container"); refreshTable.addListener(new Button.ClickListener() { + @Override public void buttonClick(Button.ClickEvent e) { table.setContainerDataSource(container2); table.setContainerDataSource(container1); diff --git a/tests/testbench/com/vaadin/tests/tickets/Ticket1973_2.java b/tests/testbench/com/vaadin/tests/tickets/Ticket1973_2.java index d43aac9da0..68307f7f99 100644 --- a/tests/testbench/com/vaadin/tests/tickets/Ticket1973_2.java +++ b/tests/testbench/com/vaadin/tests/tickets/Ticket1973_2.java @@ -31,6 +31,7 @@ public class Ticket1973_2 extends Application.LegacyApplication { Button refreshTable = new Button("Change table container"); refreshTable.addListener(new Button.ClickListener() { + @Override public void buttonClick(Button.ClickEvent e) { table.setContainerDataSource(container2); table.setContainerDataSource(container1); diff --git a/tests/testbench/com/vaadin/tests/tickets/Ticket1975.java b/tests/testbench/com/vaadin/tests/tickets/Ticket1975.java index d908cc567c..e959098765 100644 --- a/tests/testbench/com/vaadin/tests/tickets/Ticket1975.java +++ b/tests/testbench/com/vaadin/tests/tickets/Ticket1975.java @@ -38,6 +38,7 @@ public class Ticket1975 extends Application.LegacyApplication { layout.addComponent(new Button("Disable/Enable", new ClickListener() { + @Override public void buttonClick(ClickEvent event) { boolean e = cl1.isEnabled(); diff --git a/tests/testbench/com/vaadin/tests/tickets/Ticket1982.java b/tests/testbench/com/vaadin/tests/tickets/Ticket1982.java index 431c3a6b99..fe0b636c56 100644 --- a/tests/testbench/com/vaadin/tests/tickets/Ticket1982.java +++ b/tests/testbench/com/vaadin/tests/tickets/Ticket1982.java @@ -62,6 +62,7 @@ public class Ticket1982 extends Application.LegacyApplication { min.setVisible(false); max.addListener(new ClickListener() { + @Override public void buttonClick(ClickEvent event) { min.setVisible(true); max.setVisible(false); @@ -71,6 +72,7 @@ public class Ticket1982 extends Application.LegacyApplication { } }); min.addListener(new ClickListener() { + @Override public void buttonClick(ClickEvent event) { min.setVisible(false); max.setVisible(true); diff --git a/tests/testbench/com/vaadin/tests/tickets/Ticket1983.java b/tests/testbench/com/vaadin/tests/tickets/Ticket1983.java index 5bd0cd2ae6..4deb5020ab 100644 --- a/tests/testbench/com/vaadin/tests/tickets/Ticket1983.java +++ b/tests/testbench/com/vaadin/tests/tickets/Ticket1983.java @@ -83,6 +83,7 @@ public class Ticket1983 extends Application.LegacyApplication { Button button = new Button("Change col value to short"); button.addListener(new Button.ClickListener() { + @Override public void buttonClick(Button.ClickEvent event) { // Change the column value to a short one --> Should remove // the scrollbar @@ -117,6 +118,7 @@ public class Ticket1983 extends Application.LegacyApplication { CheckBox checkBox = new CheckBox("Two col"); checkBox.addListener(new ValueChangeListener() { + @Override public void valueChange(ValueChangeEvent event) { if ((Boolean) event.getProperty().getValue()) { table.setVisibleColumns(new Object[] { propId, propId2 }); diff --git a/tests/testbench/com/vaadin/tests/tickets/Ticket1995.java b/tests/testbench/com/vaadin/tests/tickets/Ticket1995.java index 23f377e89e..2aaacef448 100644 --- a/tests/testbench/com/vaadin/tests/tickets/Ticket1995.java +++ b/tests/testbench/com/vaadin/tests/tickets/Ticket1995.java @@ -40,6 +40,7 @@ public class Ticket1995 extends Application.LegacyApplication { mainWin.addComponent(new Button("Add item", new com.vaadin.ui.Button.ClickListener() { + @Override public void buttonClick(ClickEvent event) { addItem(); } diff --git a/tests/testbench/com/vaadin/tests/tickets/Ticket20.java b/tests/testbench/com/vaadin/tests/tickets/Ticket20.java index 5c4779e69e..061fc0cf16 100644 --- a/tests/testbench/com/vaadin/tests/tickets/Ticket20.java +++ b/tests/testbench/com/vaadin/tests/tickets/Ticket20.java @@ -38,6 +38,7 @@ public class Ticket20 extends Application.LegacyApplication { } } + @Override public void validate(Object value) throws InvalidValueException { if (!isValid(value)) { throw new InvalidValueException(value @@ -49,6 +50,7 @@ public class Ticket20 extends Application.LegacyApplication { v2.addValidator(v); v2.addValidator(new Validator() { + @Override public void validate(Object value) throws InvalidValueException { if (!"".equals("" + value)) { throw new InvalidValueException("Value is not empty string"); @@ -69,6 +71,7 @@ public class Ticket20 extends Application.LegacyApplication { mainWin.addComponent(new Button("Validate integer", new Button.ClickListener() { + @Override public void buttonClick( com.vaadin.ui.Button.ClickEvent event) { mainWin.showNotification("The field is " diff --git a/tests/testbench/com/vaadin/tests/tickets/Ticket2001.java b/tests/testbench/com/vaadin/tests/tickets/Ticket2001.java index a14c881b85..8c7a7ba659 100644 --- a/tests/testbench/com/vaadin/tests/tickets/Ticket2001.java +++ b/tests/testbench/com/vaadin/tests/tickets/Ticket2001.java @@ -22,6 +22,7 @@ public class Ticket2001 extends Application.LegacyApplication { final CheckBox b = new CheckBox("fixed width: 30px", false); b.addListener(new Property.ValueChangeListener() { + @Override public void valueChange(ValueChangeEvent event) { if ((Boolean) b.getValue()) { l.setWidth("30px"); diff --git a/tests/testbench/com/vaadin/tests/tickets/Ticket2007.java b/tests/testbench/com/vaadin/tests/tickets/Ticket2007.java index 6700267a25..e0b8635f32 100644 --- a/tests/testbench/com/vaadin/tests/tickets/Ticket2007.java +++ b/tests/testbench/com/vaadin/tests/tickets/Ticket2007.java @@ -17,6 +17,7 @@ public class Ticket2007 extends Application.LegacyApplication { setMainWindow(main); main.addComponent(new Button("Open another (non-main) window", new Button.ClickListener() { + @Override public void buttonClick(ClickEvent event) { LegacyWindow c = new LegacyWindow( "Non-main browser window " + (++childs)); diff --git a/tests/testbench/com/vaadin/tests/tickets/Ticket2009.java b/tests/testbench/com/vaadin/tests/tickets/Ticket2009.java index 7667d6190b..68cf5ef6d4 100644 --- a/tests/testbench/com/vaadin/tests/tickets/Ticket2009.java +++ b/tests/testbench/com/vaadin/tests/tickets/Ticket2009.java @@ -40,6 +40,7 @@ public class Ticket2009 extends com.vaadin.Application.LegacyApplication { final VerticalLayout events = new VerticalLayout(); t.addListener(new ItemClickEvent.ItemClickListener() { + @Override public void itemClick(ItemClickEvent event) { events.addComponent(new Label(new Label("Click:" + (event.isDoubleClick() ? "double" : "single") @@ -62,6 +63,7 @@ public class Ticket2009 extends com.vaadin.Application.LegacyApplication { .getTestTable(5, 100); table.setRowHeaderMode(Table.ROW_HEADER_MODE_ID); table.addListener(new ItemClickEvent.ItemClickListener() { + @Override public void itemClick(ItemClickEvent event) { events2.addComponent(new Label("Click:" + (event.isDoubleClick() ? "double" : "single") @@ -115,6 +117,7 @@ public class Ticket2009 extends com.vaadin.Application.LegacyApplication { getMainWindow().addWindow(this); done.addListener(new Button.ClickListener() { + @Override public void buttonClick(ClickEvent event) { getMainWindow().removeWindow(PropertyEditor.this); } diff --git a/tests/testbench/com/vaadin/tests/tickets/Ticket2014.java b/tests/testbench/com/vaadin/tests/tickets/Ticket2014.java index 538ebc4ccd..8d9a5e67d4 100644 --- a/tests/testbench/com/vaadin/tests/tickets/Ticket2014.java +++ b/tests/testbench/com/vaadin/tests/tickets/Ticket2014.java @@ -33,6 +33,7 @@ public class Ticket2014 extends Application.LegacyApplication { layout.addComponent(new Button("Change class name", new ClickListener() { + @Override public void buttonClick(ClickEvent event) { b1.setStyleName(UUID.randomUUID().toString()); } @@ -51,6 +52,7 @@ public class Ticket2014 extends Application.LegacyApplication { b1 = new Button("Button inside orderedLayout", new ClickListener() { + @Override public void buttonClick(ClickEvent event) { System.out.println("Clicked " + event.getButton().getCaption()); } diff --git a/tests/testbench/com/vaadin/tests/tickets/Ticket2021.java b/tests/testbench/com/vaadin/tests/tickets/Ticket2021.java index cab8fc261c..c36bb5c25e 100644 --- a/tests/testbench/com/vaadin/tests/tickets/Ticket2021.java +++ b/tests/testbench/com/vaadin/tests/tickets/Ticket2021.java @@ -111,6 +111,7 @@ public class Ticket2021 extends Application.LegacyApplication { Button b = new Button("Enable/disable caption and watch button move", new ClickListener() { + @Override public void buttonClick(ClickEvent event) { System.out.println("Enable/disable caption"); for (AbstractComponent l : new AbstractComponent[] { diff --git a/tests/testbench/com/vaadin/tests/tickets/Ticket2023.java b/tests/testbench/com/vaadin/tests/tickets/Ticket2023.java index 238561ef47..427a55391b 100644 --- a/tests/testbench/com/vaadin/tests/tickets/Ticket2023.java +++ b/tests/testbench/com/vaadin/tests/tickets/Ticket2023.java @@ -31,6 +31,7 @@ public class Ticket2023 extends com.vaadin.Application.LegacyApplication gl.addComponent(new Button("null", new Button.ClickListener() { + @Override public void buttonClick(ClickEvent event) { c.setWidth(null); c.setHeight(null); @@ -43,6 +44,7 @@ public class Ticket2023 extends com.vaadin.Application.LegacyApplication } + @Override public void buttonClick(ClickEvent event) { c.setWidth(event.getButton().getCaption()); c.setHeight(event.getButton().getCaption()); diff --git a/tests/testbench/com/vaadin/tests/tickets/Ticket2029.java b/tests/testbench/com/vaadin/tests/tickets/Ticket2029.java index 1eadd3d7bd..8acf4f1d16 100644 --- a/tests/testbench/com/vaadin/tests/tickets/Ticket2029.java +++ b/tests/testbench/com/vaadin/tests/tickets/Ticket2029.java @@ -81,6 +81,7 @@ public class Ticket2029 extends Application.LegacyApplication { tf.setImmediate(true); tf.addListener(new ValueChangeListener() { + @Override public void valueChange(ValueChangeEvent event) { Component c = ((Component) event.getProperty()); c.setCaption("askfdj"); diff --git a/tests/testbench/com/vaadin/tests/tickets/Ticket2037.java b/tests/testbench/com/vaadin/tests/tickets/Ticket2037.java index 86d9cf6d40..c979898299 100644 --- a/tests/testbench/com/vaadin/tests/tickets/Ticket2037.java +++ b/tests/testbench/com/vaadin/tests/tickets/Ticket2037.java @@ -25,6 +25,7 @@ public class Ticket2037 extends com.vaadin.Application.LegacyApplication { main.addComponent(lo); b.addListener(new Button.ClickListener() { + @Override public void buttonClick(ClickEvent event) { repopupate(lo); diff --git a/tests/testbench/com/vaadin/tests/tickets/Ticket2038.java b/tests/testbench/com/vaadin/tests/tickets/Ticket2038.java index a5c102b988..fa4cd76f47 100644 --- a/tests/testbench/com/vaadin/tests/tickets/Ticket2038.java +++ b/tests/testbench/com/vaadin/tests/tickets/Ticket2038.java @@ -21,6 +21,7 @@ public class Ticket2038 extends Application.LegacyApplication { tf.setImmediate(true); tf.addListener(new Property.ValueChangeListener() { + @Override public void valueChange(ValueChangeEvent event) { w.showNotification("TextField is " + (tf.isValid() ? "" : "in") + "valid, with error: " + tf.getErrorMessage(), @@ -35,6 +36,7 @@ public class Ticket2038 extends Application.LegacyApplication { w.addComponent(b); b.setImmediate(true); b.addListener(new Property.ValueChangeListener() { + @Override public void valueChange(ValueChangeEvent event) { tf.setRequiredError((Boolean) b.getValue() ? "Field must not be empty" : null); diff --git a/tests/testbench/com/vaadin/tests/tickets/Ticket2042.java b/tests/testbench/com/vaadin/tests/tickets/Ticket2042.java index c4eded63d7..d79f4a1bd6 100644 --- a/tests/testbench/com/vaadin/tests/tickets/Ticket2042.java +++ b/tests/testbench/com/vaadin/tests/tickets/Ticket2042.java @@ -26,6 +26,7 @@ public class Ticket2042 extends Application.LegacyApplication { layout.addComponent(new Label("abc")); layout.addComponent(new Button("B", new ClickListener() { + @Override public void buttonClick(ClickEvent event) { Notification n = new Notification("Test"); getMainWindow().showNotification(n); diff --git a/tests/testbench/com/vaadin/tests/tickets/Ticket2048.java b/tests/testbench/com/vaadin/tests/tickets/Ticket2048.java index 84978a42e1..0b5a537b4d 100644 --- a/tests/testbench/com/vaadin/tests/tickets/Ticket2048.java +++ b/tests/testbench/com/vaadin/tests/tickets/Ticket2048.java @@ -71,6 +71,7 @@ public class Ticket2048 extends Application.LegacyApplication { "Replace image with new embedded component (flashes)", new ClickListener() { + @Override public void buttonClick(ClickEvent event) { Embedded newEmbedded = new Embedded(null, new ThemeResource("icons/64/folder-add.png")); @@ -85,6 +86,7 @@ public class Ticket2048 extends Application.LegacyApplication { b = new Button("Change image source (is fine)", new ClickListener() { + @Override public void buttonClick(ClickEvent event) { String img = "folder-add"; if (((ThemeResource) embedded.getSource()).getResourceId() diff --git a/tests/testbench/com/vaadin/tests/tickets/Ticket2053.java b/tests/testbench/com/vaadin/tests/tickets/Ticket2053.java index 751dbbae01..fd64d6e35a 100644 --- a/tests/testbench/com/vaadin/tests/tickets/Ticket2053.java +++ b/tests/testbench/com/vaadin/tests/tickets/Ticket2053.java @@ -25,6 +25,7 @@ public class Ticket2053 extends Application.LegacyApplication { + "draw changes not originating from this window. Such changes include changes " + "made by other browser-windows."); Button add = new Button("Add a window", new Button.ClickListener() { + @Override public void buttonClick(ClickEvent event) { final String name = "Child " + (++childs); LegacyWindow c = new LegacyWindow(name); @@ -35,6 +36,7 @@ public class Ticket2053 extends Application.LegacyApplication { final TextField tf = new TextField("Non immediate textfield"); c.addComponent(tf); tf.addListener(new Property.ValueChangeListener() { + @Override public void valueChange(ValueChangeEvent event) { main.addComponent(new Label(name + " send text:" + tf.getValue())); @@ -44,6 +46,7 @@ public class Ticket2053 extends Application.LegacyApplication { final String caption = "Slow button " + i; c.addComponent(new Button(caption, new Button.ClickListener() { + @Override public synchronized void buttonClick( ClickEvent event) { try { diff --git a/tests/testbench/com/vaadin/tests/tickets/Ticket2060.java b/tests/testbench/com/vaadin/tests/tickets/Ticket2060.java index b47fbc8818..1d7d8bb006 100644 --- a/tests/testbench/com/vaadin/tests/tickets/Ticket2060.java +++ b/tests/testbench/com/vaadin/tests/tickets/Ticket2060.java @@ -31,6 +31,7 @@ public class Ticket2060 extends Application.LegacyApplication { button2 = new Button("Button without width"); button3 = new Button("Click to repaint buttons", new ClickListener() { + @Override public void buttonClick(ClickEvent event) { button1.requestRepaint(); button2.requestRepaint(); diff --git a/tests/testbench/com/vaadin/tests/tickets/Ticket2061.java b/tests/testbench/com/vaadin/tests/tickets/Ticket2061.java index 0881d141cb..1f633d7337 100644 --- a/tests/testbench/com/vaadin/tests/tickets/Ticket2061.java +++ b/tests/testbench/com/vaadin/tests/tickets/Ticket2061.java @@ -95,6 +95,7 @@ public class Ticket2061 extends Application.LegacyApplication { return columns; } + @Override public void valueChange(ValueChangeEvent event) { } diff --git a/tests/testbench/com/vaadin/tests/tickets/Ticket2061b.java b/tests/testbench/com/vaadin/tests/tickets/Ticket2061b.java index 98badf36e8..e3cd09926e 100644 --- a/tests/testbench/com/vaadin/tests/tickets/Ticket2061b.java +++ b/tests/testbench/com/vaadin/tests/tickets/Ticket2061b.java @@ -148,6 +148,7 @@ public class Ticket2061b extends Application.LegacyApplication implements return columns; } + @Override public void valueChange(ValueChangeEvent event) { } @@ -192,6 +193,7 @@ public class Ticket2061b extends Application.LegacyApplication implements } } + @Override public void selectedTabChange(SelectedTabChangeEvent event) { p.setScrollTop(10); diff --git a/tests/testbench/com/vaadin/tests/tickets/Ticket2061c.java b/tests/testbench/com/vaadin/tests/tickets/Ticket2061c.java index a8188a4913..082b956fe0 100644 --- a/tests/testbench/com/vaadin/tests/tickets/Ticket2061c.java +++ b/tests/testbench/com/vaadin/tests/tickets/Ticket2061c.java @@ -111,6 +111,7 @@ public class Ticket2061c extends Application.LegacyApplication implements return columns; } + @Override public void valueChange(ValueChangeEvent event) { } @@ -140,6 +141,7 @@ public class Ticket2061c extends Application.LegacyApplication implements } } + @Override public void selectedTabChange(SelectedTabChangeEvent event) { p.setScrollTop(10); diff --git a/tests/testbench/com/vaadin/tests/tickets/Ticket2090.java b/tests/testbench/com/vaadin/tests/tickets/Ticket2090.java index b4171b9bac..2042cf7cad 100644 --- a/tests/testbench/com/vaadin/tests/tickets/Ticket2090.java +++ b/tests/testbench/com/vaadin/tests/tickets/Ticket2090.java @@ -27,6 +27,7 @@ public class Ticket2090 extends Application.LegacyApplication { w.addComponent(label); w.addComponent(target); height.addListener(new Property.ValueChangeListener() { + @Override public void valueChange(ValueChangeEvent event) { try { target.setHeight(height.getValue()); @@ -38,6 +39,7 @@ public class Ticket2090 extends Application.LegacyApplication { } }); width.addListener(new Property.ValueChangeListener() { + @Override public void valueChange(ValueChangeEvent event) { try { target.setWidth(width.getValue()); diff --git a/tests/testbench/com/vaadin/tests/tickets/Ticket2099.java b/tests/testbench/com/vaadin/tests/tickets/Ticket2099.java index 6278f7d4df..0f0c00b05c 100644 --- a/tests/testbench/com/vaadin/tests/tickets/Ticket2099.java +++ b/tests/testbench/com/vaadin/tests/tickets/Ticket2099.java @@ -30,6 +30,7 @@ public class Ticket2099 extends Application.LegacyApplication { private void createUI(GridLayout layout) { Button b = new Button("Show popup", new ClickListener() { + @Override public void buttonClick(ClickEvent event) { getMainWindow().addWindow(popup); // popup.setVisible(true); @@ -42,6 +43,7 @@ public class Ticket2099 extends Application.LegacyApplication { layout.addComponent(b); layout.addComponent(new Button("Hide label '222'", new ClickListener() { + @Override public void buttonClick(ClickEvent event) { l2.setVisible(!l2.isVisible()); } diff --git a/tests/testbench/com/vaadin/tests/tickets/Ticket2104.java b/tests/testbench/com/vaadin/tests/tickets/Ticket2104.java index b40035a189..b8a6724a41 100644 --- a/tests/testbench/com/vaadin/tests/tickets/Ticket2104.java +++ b/tests/testbench/com/vaadin/tests/tickets/Ticket2104.java @@ -6,8 +6,8 @@ import com.vaadin.data.Property.ValueChangeListener; import com.vaadin.data.util.MethodProperty; import com.vaadin.event.ItemClickEvent; import com.vaadin.event.ItemClickEvent.ItemClickListener; +import com.vaadin.shared.ui.label.ContentMode; import com.vaadin.terminal.ExternalResource; -import com.vaadin.terminal.gwt.client.ui.label.ContentMode; import com.vaadin.ui.CheckBox; import com.vaadin.ui.HorizontalLayout; import com.vaadin.ui.Label; @@ -52,6 +52,7 @@ public class Ticket2104 extends Application.LegacyApplication { cb = new CheckBox("icon"); cb.addListener(new ValueChangeListener() { + @Override public void valueChange(ValueChangeEvent event) { if (tree.getItemIconPropertyId() == null) { tree.setItemIconPropertyId("icon"); @@ -82,6 +83,7 @@ public class Ticket2104 extends Application.LegacyApplication { "http://www.itmill.com/res/images/itmill_logo.gif")); tree.addListener(new ItemClickListener() { + @Override public void itemClick(ItemClickEvent event) { getMainWindow().addComponent( new Label(event.toString() + " // " + event.getItemId() @@ -117,6 +119,7 @@ public class Ticket2104 extends Application.LegacyApplication { table.addItem("Item " + i); } table.addListener(new ItemClickListener() { + @Override public void itemClick(ItemClickEvent event) { getMainWindow().addComponent( new Label(event.toString() + " // " + event.getItemId() diff --git a/tests/testbench/com/vaadin/tests/tickets/Ticket2106.java b/tests/testbench/com/vaadin/tests/tickets/Ticket2106.java index 0776f6c4a6..6edc625b39 100644 --- a/tests/testbench/com/vaadin/tests/tickets/Ticket2106.java +++ b/tests/testbench/com/vaadin/tests/tickets/Ticket2106.java @@ -27,6 +27,7 @@ public class Ticket2106 extends Application.LegacyApplication { setMainWindow(new LegacyWindow("#2106")); getMainWindow().addComponent( new Button("Do nothing", new Button.ClickListener() { + @Override public void buttonClick(ClickEvent event) { getMainWindow().addComponent( new Label("Last time did nothing: " diff --git a/tests/testbench/com/vaadin/tests/tickets/Ticket2107.java b/tests/testbench/com/vaadin/tests/tickets/Ticket2107.java index 57926143eb..09ba9fac0b 100644 --- a/tests/testbench/com/vaadin/tests/tickets/Ticket2107.java +++ b/tests/testbench/com/vaadin/tests/tickets/Ticket2107.java @@ -23,6 +23,7 @@ public class Ticket2107 extends Application.LegacyApplication { tf.setImmediate(true); tf.addListener(new Property.ValueChangeListener() { + @Override public void valueChange(ValueChangeEvent event) { w.showNotification("TextField is " + (tf.isValid() ? "" : "in") + "valid, with error: " + tf.getErrorMessage(), @@ -31,6 +32,7 @@ public class Ticket2107 extends Application.LegacyApplication { }); tf.addValidator(new Validator() { + @Override public void validate(Object value) throws InvalidValueException { if (value == null || value.toString().length() <= 3) { throw new InvalidValueException( @@ -46,6 +48,7 @@ public class Ticket2107 extends Application.LegacyApplication { w.addComponent(b); b.setImmediate(true); b.addListener(new Property.ValueChangeListener() { + @Override public void valueChange(ValueChangeEvent event) { tf.setRequiredError(b.getValue() ? "Field must not be empty" : null); diff --git a/tests/testbench/com/vaadin/tests/tickets/Ticket2117.java b/tests/testbench/com/vaadin/tests/tickets/Ticket2117.java index 933494f78a..8bbfe0cd07 100644 --- a/tests/testbench/com/vaadin/tests/tickets/Ticket2117.java +++ b/tests/testbench/com/vaadin/tests/tickets/Ticket2117.java @@ -1,8 +1,8 @@ package com.vaadin.tests.tickets; import com.vaadin.Application; +import com.vaadin.shared.ui.label.ContentMode; import com.vaadin.terminal.ExternalResource; -import com.vaadin.terminal.gwt.client.ui.label.ContentMode; import com.vaadin.ui.Button; import com.vaadin.ui.Button.ClickEvent; import com.vaadin.ui.Button.ClickListener; @@ -39,6 +39,7 @@ public class Ticket2117 extends Application.LegacyApplication { w.addComponent(new Label("It has also been redirected to " + w.getURL() + " to support reloading")); w.addComponent(new Button("button", new ClickListener() { + @Override public void buttonClick(ClickEvent event) { w.showNotification("Button clicked"); w.addComponent(new Label("clicked")); diff --git a/tests/testbench/com/vaadin/tests/tickets/Ticket2119.java b/tests/testbench/com/vaadin/tests/tickets/Ticket2119.java index 34054e09d1..b563ec90ef 100644 --- a/tests/testbench/com/vaadin/tests/tickets/Ticket2119.java +++ b/tests/testbench/com/vaadin/tests/tickets/Ticket2119.java @@ -3,8 +3,8 @@ package com.vaadin.tests.tickets; import com.vaadin.Application; import com.vaadin.data.Property; import com.vaadin.data.util.ObjectProperty; +import com.vaadin.shared.ui.label.ContentMode; import com.vaadin.terminal.ExternalResource; -import com.vaadin.terminal.gwt.client.ui.label.ContentMode; import com.vaadin.ui.Button; import com.vaadin.ui.Label; import com.vaadin.ui.Layout; @@ -74,6 +74,7 @@ public class Ticket2119 extends Application.LegacyApplication { layout.addComponent(select); globalValue.addListener(new Property.ValueChangeListener() { + @Override public void valueChange(Property.ValueChangeEvent event) { Object value = event.getProperty().getValue(); valueProperty.setValue((null != value) ? value.toString() @@ -83,6 +84,7 @@ public class Ticket2119 extends Application.LegacyApplication { final Button changeValueButton = new Button("Change Value to 2"); changeValueButton.addListener(new Button.ClickListener() { + @Override public void buttonClick(Button.ClickEvent event) { globalValue.setValue("2"); } diff --git a/tests/testbench/com/vaadin/tests/tickets/Ticket2125.java b/tests/testbench/com/vaadin/tests/tickets/Ticket2125.java index cc81c787b2..b12a865e80 100644 --- a/tests/testbench/com/vaadin/tests/tickets/Ticket2125.java +++ b/tests/testbench/com/vaadin/tests/tickets/Ticket2125.java @@ -34,12 +34,14 @@ public class Ticket2125 extends Application.LegacyApplication { table.addContainerProperty("String", String.class, "a string"); table.addContainerProperty("Boolean", Boolean.class, Boolean.TRUE); table.addGeneratedColumn("Generated", new ColumnGenerator() { + @Override public Component generateCell(Table source, Object itemId, Object columnId) { return new Label("Item " + itemId); } }); table.setCellStyleGenerator(new CellStyleGenerator() { + @Override public String getStyle(Object itemId, Object propertyId) { if (new Integer(4).equals(itemId)) { if (propertyId == null) { diff --git a/tests/testbench/com/vaadin/tests/tickets/Ticket2126.java b/tests/testbench/com/vaadin/tests/tickets/Ticket2126.java index abcca6d59c..c9e070bef4 100644 --- a/tests/testbench/com/vaadin/tests/tickets/Ticket2126.java +++ b/tests/testbench/com/vaadin/tests/tickets/Ticket2126.java @@ -46,6 +46,7 @@ public class Ticket2126 extends com.vaadin.Application.LegacyApplication { refreshTable.addListener(new Button.ClickListener() { boolean full = true; + @Override public void buttonClick(Button.ClickEvent e) { if (full) { table.setContainerDataSource(container2); diff --git a/tests/testbench/com/vaadin/tests/tickets/Ticket2179.java b/tests/testbench/com/vaadin/tests/tickets/Ticket2179.java index ba4dd2ee46..31e1a9a0d6 100644 --- a/tests/testbench/com/vaadin/tests/tickets/Ticket2179.java +++ b/tests/testbench/com/vaadin/tests/tickets/Ticket2179.java @@ -25,6 +25,7 @@ public class Ticket2179 extends Application.LegacyApplication { f.addListener(new Property.ValueChangeListener() { + @Override public void valueChange(ValueChangeEvent event) { main.showNotification("Test field is " + (f.isValid() ? "valid" : "invalid")); @@ -40,6 +41,7 @@ public class Ticket2179 extends Application.LegacyApplication { this.c = c; } + @Override public void validate(Object value) throws InvalidValueException { if (value == null || !value.toString().contains(c)) { throw new InvalidValueException("Value does not contain " + c); diff --git a/tests/testbench/com/vaadin/tests/tickets/Ticket2181.java b/tests/testbench/com/vaadin/tests/tickets/Ticket2181.java index c3219102f6..44893eb531 100644 --- a/tests/testbench/com/vaadin/tests/tickets/Ticket2181.java +++ b/tests/testbench/com/vaadin/tests/tickets/Ticket2181.java @@ -70,6 +70,7 @@ public class Ticket2181 extends Application.LegacyApplication implements return options; } + @Override public void buttonClick(ClickEvent event) { if (event.getButton() == setButton) { set(); diff --git a/tests/testbench/com/vaadin/tests/tickets/Ticket2204.java b/tests/testbench/com/vaadin/tests/tickets/Ticket2204.java index eef13ca06c..4caba62df2 100644 --- a/tests/testbench/com/vaadin/tests/tickets/Ticket2204.java +++ b/tests/testbench/com/vaadin/tests/tickets/Ticket2204.java @@ -71,6 +71,7 @@ public class Ticket2204 extends Application.LegacyApplication { Button b = new Button("Show area", new ClickListener() { + @Override public void buttonClick(ClickEvent event) { showHide(); } @@ -80,6 +81,7 @@ public class Ticket2204 extends Application.LegacyApplication { b = new Button("Show tab", new ClickListener() { + @Override public void buttonClick(ClickEvent event) { showTab(); } @@ -128,6 +130,7 @@ public class Ticket2204 extends Application.LegacyApplication { Form f = (Form) cc; f.setFormFieldFactory(new FormFieldFactory() { + @Override public Field<?> createField(Item item, Object propertyId, Component uiContext) { formTextArea = new RichTextArea(); diff --git a/tests/testbench/com/vaadin/tests/tickets/Ticket2208.java b/tests/testbench/com/vaadin/tests/tickets/Ticket2208.java index ada9471f18..3f0f35bb84 100644 --- a/tests/testbench/com/vaadin/tests/tickets/Ticket2208.java +++ b/tests/testbench/com/vaadin/tests/tickets/Ticket2208.java @@ -25,6 +25,7 @@ public class Ticket2208 extends Application.LegacyApplication { t.setHeight("150px"); t.addGeneratedColumn("col 3 (green)", new ColumnGenerator() { + @Override public Component generateCell(Table source, Object itemId, Object columnId) { Item item = source.getItem(itemId); @@ -38,6 +39,7 @@ public class Ticket2208 extends Application.LegacyApplication { t.addContainerProperty("col 4", String.class, ""); t.setCellStyleGenerator(new CellStyleGenerator() { + @Override public String getStyle(Object itemId, Object propertyId) { if ("col 1 (red)".equals(propertyId)) { return "red"; diff --git a/tests/testbench/com/vaadin/tests/tickets/Ticket2209.java b/tests/testbench/com/vaadin/tests/tickets/Ticket2209.java index 5ba69895b6..a387781ae3 100644 --- a/tests/testbench/com/vaadin/tests/tickets/Ticket2209.java +++ b/tests/testbench/com/vaadin/tests/tickets/Ticket2209.java @@ -31,6 +31,7 @@ public class Ticket2209 extends Application.LegacyApplication { Button b = new Button("Add label text", new ClickListener() { + @Override public void buttonClick(ClickEvent event) { labelLong.setValue(labelLong.getValue() + "-12345"); } diff --git a/tests/testbench/com/vaadin/tests/tickets/Ticket2209OL.java b/tests/testbench/com/vaadin/tests/tickets/Ticket2209OL.java index 4a45709ef6..226df8b5e7 100644 --- a/tests/testbench/com/vaadin/tests/tickets/Ticket2209OL.java +++ b/tests/testbench/com/vaadin/tests/tickets/Ticket2209OL.java @@ -38,6 +38,7 @@ public class Ticket2209OL extends Application.LegacyApplication { Button b = new Button("Add label text", new ClickListener() { + @Override public void buttonClick(ClickEvent event) { labelLong.setValue(labelLong.getValue() + "-12345"); } diff --git a/tests/testbench/com/vaadin/tests/tickets/Ticket2209OL2.java b/tests/testbench/com/vaadin/tests/tickets/Ticket2209OL2.java index e2e51d8101..921f3b190b 100644 --- a/tests/testbench/com/vaadin/tests/tickets/Ticket2209OL2.java +++ b/tests/testbench/com/vaadin/tests/tickets/Ticket2209OL2.java @@ -44,6 +44,7 @@ public class Ticket2209OL2 extends Application.LegacyApplication { Button b = new Button("Add label text", new ClickListener() { + @Override public void buttonClick(ClickEvent event) { labelLong.setValue(labelLong.getValue() + "-12345"); } diff --git a/tests/testbench/com/vaadin/tests/tickets/Ticket2221.java b/tests/testbench/com/vaadin/tests/tickets/Ticket2221.java index 2b7d5ef6d1..886aa376c3 100644 --- a/tests/testbench/com/vaadin/tests/tickets/Ticket2221.java +++ b/tests/testbench/com/vaadin/tests/tickets/Ticket2221.java @@ -46,6 +46,7 @@ public class Ticket2221 extends Application.LegacyApplication { Button b = new Button("Switch textfield/panel", new ClickListener() { + @Override public void buttonClick(ClickEvent event) { Component visible = tf; diff --git a/tests/testbench/com/vaadin/tests/tickets/Ticket2240.java b/tests/testbench/com/vaadin/tests/tickets/Ticket2240.java index f33d2f7ea8..c777d0772f 100644 --- a/tests/testbench/com/vaadin/tests/tickets/Ticket2240.java +++ b/tests/testbench/com/vaadin/tests/tickets/Ticket2240.java @@ -1,7 +1,7 @@ package com.vaadin.tests.tickets; import com.vaadin.Application; -import com.vaadin.terminal.gwt.client.ui.label.ContentMode; +import com.vaadin.shared.ui.label.ContentMode; import com.vaadin.ui.AbstractOrderedLayout; import com.vaadin.ui.Label; import com.vaadin.ui.Root.LegacyWindow; diff --git a/tests/testbench/com/vaadin/tests/tickets/Ticket2242.java b/tests/testbench/com/vaadin/tests/tickets/Ticket2242.java index 15b2b630a5..4b44ed1a87 100644 --- a/tests/testbench/com/vaadin/tests/tickets/Ticket2242.java +++ b/tests/testbench/com/vaadin/tests/tickets/Ticket2242.java @@ -33,6 +33,7 @@ public class Ticket2242 extends Application.LegacyApplication implements Button b = new Button("Change container datasource", new ClickListener() { + @Override public void buttonClick(ClickEvent event) { for (int i = 0; i < 5; i++) { t.setContainerDataSource(createContainer()); @@ -71,6 +72,7 @@ public class Ticket2242 extends Application.LegacyApplication implements return ic; } + @Override public void valueChange(ValueChangeEvent event) { System.out.println("Value change from " + tableValue + " to " + t.getValue()); diff --git a/tests/testbench/com/vaadin/tests/tickets/Ticket2244.java b/tests/testbench/com/vaadin/tests/tickets/Ticket2244.java index 8540960b30..a360760039 100644 --- a/tests/testbench/com/vaadin/tests/tickets/Ticket2244.java +++ b/tests/testbench/com/vaadin/tests/tickets/Ticket2244.java @@ -33,6 +33,7 @@ public class Ticket2244 extends Application.LegacyApplication { w.addComponent(new Button("new item", new Button.ClickListener() { + @Override public void buttonClick(ClickEvent event) { form.setItemDataSource(new BeanItem<MyBean>(new MyBean())); @@ -42,6 +43,7 @@ public class Ticket2244 extends Application.LegacyApplication { w.addComponent(new Button("new bigger item", new Button.ClickListener() { + @Override public void buttonClick(ClickEvent event) { form.setItemDataSource(new BeanItem<MyBean>( new MyBiggerBean())); @@ -52,6 +54,7 @@ public class Ticket2244 extends Application.LegacyApplication { w.addComponent(new Button("new grid layout", new Button.ClickListener() { + @Override public void buttonClick(ClickEvent event) { form.setLayout(new GridLayout()); @@ -61,6 +64,7 @@ public class Ticket2244 extends Application.LegacyApplication { w.addComponent(new Button("new form layout", new Button.ClickListener() { + @Override public void buttonClick(ClickEvent event) { form.setLayout(new FormLayout()); diff --git a/tests/testbench/com/vaadin/tests/tickets/Ticket2267.java b/tests/testbench/com/vaadin/tests/tickets/Ticket2267.java index cf1d2f64d2..b5d6772e7f 100644 --- a/tests/testbench/com/vaadin/tests/tickets/Ticket2267.java +++ b/tests/testbench/com/vaadin/tests/tickets/Ticket2267.java @@ -21,6 +21,7 @@ public class Ticket2267 extends Application.LegacyApplication { Button button = new Button("1", new ClickListener() { + @Override public void buttonClick(ClickEvent event) { Button b = event.getButton(); l.setValue(l.getValue() + b.getCaption()); diff --git a/tests/testbench/com/vaadin/tests/tickets/Ticket2282.java b/tests/testbench/com/vaadin/tests/tickets/Ticket2282.java index 67fe3f9846..c72b4e15ff 100644 --- a/tests/testbench/com/vaadin/tests/tickets/Ticket2282.java +++ b/tests/testbench/com/vaadin/tests/tickets/Ticket2282.java @@ -38,6 +38,7 @@ public class Ticket2282 extends Application.LegacyApplication { Button b = new Button("Swap", new Button.ClickListener() { + @Override public void buttonClick(ClickEvent event) { if (layout1.getWidth() < 0.0) { layout1.setWidth("500px"); diff --git a/tests/testbench/com/vaadin/tests/tickets/Ticket2287.java b/tests/testbench/com/vaadin/tests/tickets/Ticket2287.java index a4664989ec..716c8af0db 100644 --- a/tests/testbench/com/vaadin/tests/tickets/Ticket2287.java +++ b/tests/testbench/com/vaadin/tests/tickets/Ticket2287.java @@ -2,7 +2,7 @@ package com.vaadin.tests.tickets; import java.net.URL; -import com.vaadin.terminal.gwt.client.ui.label.ContentMode; +import com.vaadin.shared.ui.label.ContentMode; import com.vaadin.ui.Label; import com.vaadin.ui.Root.LegacyWindow; diff --git a/tests/testbench/com/vaadin/tests/tickets/Ticket2289.java b/tests/testbench/com/vaadin/tests/tickets/Ticket2289.java index 4cd421e30d..0ad023450c 100644 --- a/tests/testbench/com/vaadin/tests/tickets/Ticket2289.java +++ b/tests/testbench/com/vaadin/tests/tickets/Ticket2289.java @@ -25,6 +25,7 @@ public class Ticket2289 extends Application.LegacyApplication { w.setContent(ol); Button b = new Button("close current tab"); b.addListener(new Button.ClickListener() { + @Override public void buttonClick(ClickEvent event) { closeCurrentTab(); @@ -34,6 +35,7 @@ public class Ticket2289 extends Application.LegacyApplication { b = new Button("close first tab"); b.addListener(new Button.ClickListener() { + @Override public void buttonClick(ClickEvent event) { closeFirstTab(); diff --git a/tests/testbench/com/vaadin/tests/tickets/Ticket2292.java b/tests/testbench/com/vaadin/tests/tickets/Ticket2292.java index a413e87110..35e9b8f2c5 100644 --- a/tests/testbench/com/vaadin/tests/tickets/Ticket2292.java +++ b/tests/testbench/com/vaadin/tests/tickets/Ticket2292.java @@ -47,6 +47,7 @@ public class Ticket2292 extends com.vaadin.Application.LegacyApplication addRequestHandler(this); } + @Override public boolean handleRequest(Application application, WrappedRequest request, WrappedResponse response) throws IOException { diff --git a/tests/testbench/com/vaadin/tests/tickets/Ticket2304.java b/tests/testbench/com/vaadin/tests/tickets/Ticket2304.java index 264ce9b5fc..b767b3661f 100644 --- a/tests/testbench/com/vaadin/tests/tickets/Ticket2304.java +++ b/tests/testbench/com/vaadin/tests/tickets/Ticket2304.java @@ -1,7 +1,7 @@ package com.vaadin.tests.tickets; import com.vaadin.Application; -import com.vaadin.terminal.gwt.client.ui.label.ContentMode; +import com.vaadin.shared.ui.label.ContentMode; import com.vaadin.ui.Label; import com.vaadin.ui.Panel; import com.vaadin.ui.Root.LegacyWindow; diff --git a/tests/testbench/com/vaadin/tests/tickets/Ticket2310.java b/tests/testbench/com/vaadin/tests/tickets/Ticket2310.java index 36bda7095c..1cad5bde4f 100644 --- a/tests/testbench/com/vaadin/tests/tickets/Ticket2310.java +++ b/tests/testbench/com/vaadin/tests/tickets/Ticket2310.java @@ -34,6 +34,7 @@ public class Ticket2310 extends Application.LegacyApplication { b.addListener(new Button.ClickListener() { int i = 0; + @Override public void buttonClick(ClickEvent event) { l.setValue("foobar " + i++); @@ -43,6 +44,7 @@ public class Ticket2310 extends Application.LegacyApplication { Button b2 = new Button("toggle panel visibility"); b2.addListener(new Button.ClickListener() { + @Override public void buttonClick(ClickEvent event) { p.setVisible(!p.isVisible()); } diff --git a/tests/testbench/com/vaadin/tests/tickets/Ticket2329.java b/tests/testbench/com/vaadin/tests/tickets/Ticket2329.java index f1906d1492..f583a4af4b 100644 --- a/tests/testbench/com/vaadin/tests/tickets/Ticket2329.java +++ b/tests/testbench/com/vaadin/tests/tickets/Ticket2329.java @@ -34,6 +34,7 @@ public class Ticket2329 extends Application.LegacyApplication { } class TestColumnGenerator implements ColumnGenerator { + @Override public Component generateCell(Table source, Object rowId, Object columnId) { return new Button("1"); diff --git a/tests/testbench/com/vaadin/tests/tickets/Ticket2337.java b/tests/testbench/com/vaadin/tests/tickets/Ticket2337.java index f71492a96b..f0cae1a59f 100644 --- a/tests/testbench/com/vaadin/tests/tickets/Ticket2337.java +++ b/tests/testbench/com/vaadin/tests/tickets/Ticket2337.java @@ -17,6 +17,7 @@ public class Ticket2337 extends Application.LegacyApplication { setMainWindow(w); Button b = new Button("add", new Button.ClickListener() { + @Override public void buttonClick(ClickEvent event) { gl.addComponent(new Label("asd"), 0, gl.getCursorY(), 2, gl.getCursorY()); @@ -28,6 +29,7 @@ public class Ticket2337 extends Application.LegacyApplication { b = new Button("empty", new Button.ClickListener() { + @Override public void buttonClick(ClickEvent event) { gl.removeAllComponents(); ; diff --git a/tests/testbench/com/vaadin/tests/tickets/Ticket2347.java b/tests/testbench/com/vaadin/tests/tickets/Ticket2347.java index 207d6ee413..5528dfebd6 100644 --- a/tests/testbench/com/vaadin/tests/tickets/Ticket2347.java +++ b/tests/testbench/com/vaadin/tests/tickets/Ticket2347.java @@ -25,6 +25,7 @@ public class Ticket2347 extends Application.LegacyApplication { b1 = new Button("200px button"); b1.addListener(new ClickListener() { + @Override public void buttonClick(ClickEvent event) { if (b1.getWidth() == 200.0) { b1.setWidth("300px"); diff --git a/tests/testbench/com/vaadin/tests/tickets/Ticket2365.java b/tests/testbench/com/vaadin/tests/tickets/Ticket2365.java index 19d473f970..252406cc2d 100644 --- a/tests/testbench/com/vaadin/tests/tickets/Ticket2365.java +++ b/tests/testbench/com/vaadin/tests/tickets/Ticket2365.java @@ -25,6 +25,7 @@ public class Ticket2365 extends Application.LegacyApplication { Button b = new Button("Toggle parent level size"); lo.addComponent(b); b.addListener(new Button.ClickListener() { + @Override public void buttonClick(ClickEvent event) { if (p.getWidth() > 0) { p.setSizeUndefined(); diff --git a/tests/testbench/com/vaadin/tests/tickets/Ticket2406.java b/tests/testbench/com/vaadin/tests/tickets/Ticket2406.java index a121d93099..0036bdc7b2 100644 --- a/tests/testbench/com/vaadin/tests/tickets/Ticket2406.java +++ b/tests/testbench/com/vaadin/tests/tickets/Ticket2406.java @@ -33,6 +33,7 @@ public class Ticket2406 extends Application.LegacyApplication { b.setSizeFull(); b.addListener(new ClickListener() { + @Override public void buttonClick(ClickEvent event) { w.setHeight("200px"); } diff --git a/tests/testbench/com/vaadin/tests/tickets/Ticket2415.java b/tests/testbench/com/vaadin/tests/tickets/Ticket2415.java index 0514e9bb39..509f4cf437 100644 --- a/tests/testbench/com/vaadin/tests/tickets/Ticket2415.java +++ b/tests/testbench/com/vaadin/tests/tickets/Ticket2415.java @@ -19,6 +19,7 @@ public class Ticket2415 extends Application.LegacyApplication { tf.setImmediate(true); tf.addListener(new Property.ValueChangeListener() { + @Override public void valueChange(ValueChangeEvent event) { main.showNotification("New value = " + tf); } @@ -30,6 +31,7 @@ public class Ticket2415 extends Application.LegacyApplication { tf2.setImmediate(true); tf2.addListener(new Property.ValueChangeListener() { + @Override public void valueChange(ValueChangeEvent event) { main.showNotification("New value = " + tf2); } diff --git a/tests/testbench/com/vaadin/tests/tickets/Ticket2426.java b/tests/testbench/com/vaadin/tests/tickets/Ticket2426.java index 7866d031ed..40862e3ccd 100644 --- a/tests/testbench/com/vaadin/tests/tickets/Ticket2426.java +++ b/tests/testbench/com/vaadin/tests/tickets/Ticket2426.java @@ -1,7 +1,7 @@ package com.vaadin.tests.tickets; import com.vaadin.Application; -import com.vaadin.terminal.gwt.client.ui.label.ContentMode; +import com.vaadin.shared.ui.label.ContentMode; import com.vaadin.ui.Label; import com.vaadin.ui.Root.LegacyWindow; diff --git a/tests/testbench/com/vaadin/tests/tickets/Ticket2431.java b/tests/testbench/com/vaadin/tests/tickets/Ticket2431.java index b751488bae..f6e6c1e7b5 100644 --- a/tests/testbench/com/vaadin/tests/tickets/Ticket2431.java +++ b/tests/testbench/com/vaadin/tests/tickets/Ticket2431.java @@ -30,10 +30,12 @@ public class Ticket2431 extends Application.LegacyApplication { Action[] actions = new Action[] { a1, a2 }; + @Override public Action[] getActions(Object target, Object sender) { return actions; } + @Override public void handleAction(Action action, Object sender, Object target) { if (action == a1) { getMainWindow().addComponent(new Label("CTRL X hit")); diff --git a/tests/testbench/com/vaadin/tests/tickets/Ticket2436.java b/tests/testbench/com/vaadin/tests/tickets/Ticket2436.java index fc6445d62f..f48cf7a79a 100644 --- a/tests/testbench/com/vaadin/tests/tickets/Ticket2436.java +++ b/tests/testbench/com/vaadin/tests/tickets/Ticket2436.java @@ -15,16 +15,19 @@ public class Ticket2436 extends Application.LegacyApplication { final Button remover = new Button("Remove PopupView"); final PopupView pv = new PopupView(new PopupView.Content() { + @Override public String getMinimizedValueAsHTML() { return "PopupView"; } + @Override public Component getPopupComponent() { return remover; } }); remover.addListener(new Button.ClickListener() { + @Override public void buttonClick(Button.ClickEvent event) { main.removeComponent(pv); } diff --git a/tests/testbench/com/vaadin/tests/tickets/Ticket2526.java b/tests/testbench/com/vaadin/tests/tickets/Ticket2526.java index 8123fe1182..97d096405e 100644 --- a/tests/testbench/com/vaadin/tests/tickets/Ticket2526.java +++ b/tests/testbench/com/vaadin/tests/tickets/Ticket2526.java @@ -14,6 +14,7 @@ public class Ticket2526 extends Application.LegacyApplication { setMainWindow(main); Button b = new Button("Add windows"); b.addListener(new Button.ClickListener() { + @Override public void buttonClick(ClickEvent event) { main.addWindow(new Window()); } diff --git a/tests/testbench/com/vaadin/tests/tickets/Ticket2998.java b/tests/testbench/com/vaadin/tests/tickets/Ticket2998.java index a3ff6808dc..ee60c0ce7e 100644 --- a/tests/testbench/com/vaadin/tests/tickets/Ticket2998.java +++ b/tests/testbench/com/vaadin/tests/tickets/Ticket2998.java @@ -174,6 +174,7 @@ public class Ticket2998 extends Application.LegacyApplication { if (propertyId.equals("kilometers")) { f.setWidth("4em"); f.addValidator(new Validator() { + @Override public void validate(Object value) throws InvalidValueException { // FIXME this does not follow the standard pattern diff --git a/tests/testbench/com/vaadin/tests/tickets/Ticket3146.java b/tests/testbench/com/vaadin/tests/tickets/Ticket3146.java index 924b1318ab..b6e01d912f 100644 --- a/tests/testbench/com/vaadin/tests/tickets/Ticket3146.java +++ b/tests/testbench/com/vaadin/tests/tickets/Ticket3146.java @@ -36,6 +36,7 @@ public class Ticket3146 extends Application.LegacyApplication { Button clearButton = new Button("Clear selection", new Button.ClickListener() { + @Override public void buttonClick(ClickEvent event) { clearSelection(); } @@ -43,6 +44,7 @@ public class Ticket3146 extends Application.LegacyApplication { mainWindow.addComponent(clearButton); Button clearButton2 = new Button("Clear selection 2", new Button.ClickListener() { + @Override public void buttonClick(ClickEvent event) { clearSelection2(); } @@ -50,6 +52,7 @@ public class Ticket3146 extends Application.LegacyApplication { mainWindow.addComponent(clearButton2); Button clearButton3 = new Button("Clear selection 3", new Button.ClickListener() { + @Override public void buttonClick(ClickEvent event) { clearSelection3(); } @@ -57,6 +60,7 @@ public class Ticket3146 extends Application.LegacyApplication { mainWindow.addComponent(clearButton3); Button printButton = new Button("Print selection", new Button.ClickListener() { + @Override public void buttonClick(ClickEvent event) { printSelection(); } diff --git a/tests/testbench/com/vaadin/tests/tickets/Ticket34.java b/tests/testbench/com/vaadin/tests/tickets/Ticket34.java index f6fbe05e38..e3b90c94b0 100644 --- a/tests/testbench/com/vaadin/tests/tickets/Ticket34.java +++ b/tests/testbench/com/vaadin/tests/tickets/Ticket34.java @@ -34,6 +34,7 @@ public class Ticket34 extends Application.LegacyApplication { mainWin.getPage().addListener(new Page.FragmentChangedListener() { + @Override public void fragmentChanged(FragmentChangedEvent event) { getMainWindow().showNotification( "Fragment now: " + event.getFragment()); @@ -90,6 +91,7 @@ public class Ticket34 extends Application.LegacyApplication { p.addComponent(b); b.addListener(new Button.ClickListener() { + @Override public void buttonClick(ClickEvent event) { String viewName = tf.getValue().toString(); // fragmentChangedListener will change the view if possible diff --git a/tests/testbench/com/vaadin/tests/tickets/Ticket5952.java b/tests/testbench/com/vaadin/tests/tickets/Ticket5952.java index a608f736ca..b7caa08b82 100644 --- a/tests/testbench/com/vaadin/tests/tickets/Ticket5952.java +++ b/tests/testbench/com/vaadin/tests/tickets/Ticket5952.java @@ -1,7 +1,7 @@ package com.vaadin.tests.tickets; import com.vaadin.Application; -import com.vaadin.terminal.gwt.client.ui.label.ContentMode; +import com.vaadin.shared.ui.label.ContentMode; import com.vaadin.ui.Label; import com.vaadin.ui.Root.LegacyWindow; diff --git a/tests/testbench/com/vaadin/tests/tickets/Ticket6002.java b/tests/testbench/com/vaadin/tests/tickets/Ticket6002.java index c68dc9d534..fef7061516 100644 --- a/tests/testbench/com/vaadin/tests/tickets/Ticket6002.java +++ b/tests/testbench/com/vaadin/tests/tickets/Ticket6002.java @@ -32,6 +32,7 @@ public class Ticket6002 extends TestBase { "Changing this field modifies only the textfield", property1); tf1.addListener(new Property.ValueChangeListener() { + @Override public void valueChange(ValueChangeEvent event) { // This value change event is called twice if the new // input value is an integer. The second time is during @@ -57,6 +58,7 @@ public class Ticket6002 extends TestBase { property2); tf2.addListener(new Property.ValueChangeListener() { + @Override public void valueChange(ValueChangeEvent event) { // This value change event is called twice if the new // input value is an integer. The second time is during diff --git a/tests/testbench/com/vaadin/tests/tickets/Ticket677.java b/tests/testbench/com/vaadin/tests/tickets/Ticket677.java index 473ec79342..ca55b8648c 100644 --- a/tests/testbench/com/vaadin/tests/tickets/Ticket677.java +++ b/tests/testbench/com/vaadin/tests/tickets/Ticket677.java @@ -5,7 +5,7 @@ import com.vaadin.data.Container; import com.vaadin.data.Item; import com.vaadin.data.Property; import com.vaadin.data.util.BeanItem; -import com.vaadin.terminal.gwt.client.ui.label.ContentMode; +import com.vaadin.shared.ui.label.ContentMode; import com.vaadin.ui.Button; import com.vaadin.ui.Button.ClickEvent; import com.vaadin.ui.Component; @@ -51,28 +51,33 @@ public class Ticket677 extends Application.LegacyApplication { l.addComponent(new Button("Toggle root panel", new Button.ClickListener() { + @Override public void buttonClick(ClickEvent event) { toggle(root); } })); l.addComponent(new Button("Toggle panel one", new Button.ClickListener() { + @Override public void buttonClick(ClickEvent event) { toggle(one); } })); l.addComponent(new Button("Toggle panel two", new Button.ClickListener() { + @Override public void buttonClick(ClickEvent event) { toggle(two); } })); l.addComponent(new Button("Toggle form", new Button.ClickListener() { + @Override public void buttonClick(ClickEvent event) { toggle(form); } })); l.addComponent(new Button("Toggle table", new Button.ClickListener() { + @Override public void buttonClick(ClickEvent event) { toggle(table); } diff --git a/tests/testbench/com/vaadin/tests/tickets/Ticket695.java b/tests/testbench/com/vaadin/tests/tickets/Ticket695.java index 11d643cd52..c62cee038c 100644 --- a/tests/testbench/com/vaadin/tests/tickets/Ticket695.java +++ b/tests/testbench/com/vaadin/tests/tickets/Ticket695.java @@ -20,6 +20,7 @@ public class Ticket695 extends Application.LegacyApplication { w.addComponent(b); b.addListener(new Button.ClickListener() { + @Override public void buttonClick(ClickEvent event) { ByteArrayOutputStream buffer = new ByteArrayOutputStream(); try { diff --git a/tests/testbench/com/vaadin/tests/tickets/Ticket736.java b/tests/testbench/com/vaadin/tests/tickets/Ticket736.java index 091e0c97af..d871c8adc4 100644 --- a/tests/testbench/com/vaadin/tests/tickets/Ticket736.java +++ b/tests/testbench/com/vaadin/tests/tickets/Ticket736.java @@ -42,12 +42,14 @@ public class Ticket736 extends Application.LegacyApplication { f.setBuffered(true); Button commit = new Button("Commit", new ClickListener() { + @Override public void buttonClick(ClickEvent event) { f.commit(); } }); Button discard = new Button("Discard", new ClickListener() { + @Override public void buttonClick(ClickEvent event) { f.discard(); } @@ -90,6 +92,7 @@ public class Ticket736 extends Application.LegacyApplication { mainWin.addComponent(new Button("Show state of the address object", new Button.ClickListener() { + @Override public void buttonClick(ClickEvent event) { mainWin.showNotification(address.toString()); } @@ -164,6 +167,7 @@ public class Ticket736 extends Application.LegacyApplication { /** Simple state validator */ static class IsValidState implements Validator { + @Override public void validate(Object value) throws InvalidValueException { // Empty and null are accepted values if (value == null || "".equals("" + value)) { diff --git a/tests/testbench/com/vaadin/tests/tickets/Ticket8291.java b/tests/testbench/com/vaadin/tests/tickets/Ticket8291.java new file mode 100644 index 0000000000..2f094f0bf8 --- /dev/null +++ b/tests/testbench/com/vaadin/tests/tickets/Ticket8291.java @@ -0,0 +1,125 @@ +package com.vaadin.tests.tickets; + +import java.util.ArrayList; +import java.util.Date; +import java.util.List; + +import com.vaadin.data.Container.Filter; +import com.vaadin.data.Item; +import com.vaadin.data.util.BeanItemContainer; +import com.vaadin.terminal.WrappedRequest; +import com.vaadin.ui.Button; +import com.vaadin.ui.Button.ClickEvent; +import com.vaadin.ui.HorizontalLayout; +import com.vaadin.ui.Root; +import com.vaadin.ui.Table; + +/** + * Test for #8291 and #7666: NegativeArraySizeException when Table scrolled to + * the end and its size reduced. + */ +public class Ticket8291 extends Root { + + @Override + public void init(WrappedRequest request) { + setContent(new TestView()); + } + + private static class DecimateFilter implements Filter { + @Override + public boolean passesFilter(Object itemId, Item item) + throws UnsupportedOperationException { + return ((((TestObject) itemId).property3 % 10) == 0); + } + + @Override + public boolean appliesToProperty(Object propertyId) { + return true; + } + } + + private static class TestView extends HorizontalLayout { + + private Filter filter = null; + + private boolean reduceData; + + private TestView() { + final Table table = new Table(); + List<TestObject> data = createData(1000); + final BeanItemContainer<TestObject> container = new BeanItemContainer<TestObject>( + TestObject.class, data) { + + @Override + public int size() { + if (reduceData) { + return 100; + } else { + return super.size(); + } + } + }; + table.setContainerDataSource(container); + addComponent(table); + Button button = new Button("Click"); + button.addListener(new Button.ClickListener() { + @Override + public void buttonClick(ClickEvent event) { + reduceData = !reduceData; + table.refreshRowCache(); + } + }); + addComponent(button); + Button button2 = new Button("Filter"); + button2.addListener(new Button.ClickListener() { + @Override + public void buttonClick(ClickEvent event) { + if (filter != null) { + container.removeAllContainerFilters(); + filter = null; + } else { + filter = new DecimateFilter(); + container.addContainerFilter(filter); + } + table.refreshRowCache(); + } + }); + addComponent(button2); + } + } + + private static List<TestObject> createData(int count) { + ArrayList<TestObject> data = new ArrayList<TestObject>(count); + for (int i = 0; i < count; i++) { + data.add(new TestObject("string-" + i, new Date(), i)); + } + return data; + } + + public static class TestObject { + + private String property1; + private Date property2; + private Integer property3; + + public TestObject(String property1, Date property2, Integer property3) { + this.property1 = property1; + this.property2 = property2; + this.property3 = property3; + } + + public String getProperty1() { + return property1; + } + + public Date getProperty2() { + return property2; + } + + public Integer getProperty3() { + return property3; + } + + } + +} diff --git a/tests/testbench/com/vaadin/tests/tickets/Ticket846.java b/tests/testbench/com/vaadin/tests/tickets/Ticket846.java index 714b3c21ca..413d823d2d 100644 --- a/tests/testbench/com/vaadin/tests/tickets/Ticket846.java +++ b/tests/testbench/com/vaadin/tests/tickets/Ticket846.java @@ -35,6 +35,7 @@ public class Ticket846 extends Application.LegacyApplication { mainWin.addComponent(new Button("Validate integer", new Button.ClickListener() { + @Override public void buttonClick( com.vaadin.ui.Button.ClickEvent event) { mainWin.showNotification("The field is " diff --git a/tests/testbench/com/vaadin/tests/tickets/Ticket932.java b/tests/testbench/com/vaadin/tests/tickets/Ticket932.java index bf6f6d1879..f72ff8beec 100644 --- a/tests/testbench/com/vaadin/tests/tickets/Ticket932.java +++ b/tests/testbench/com/vaadin/tests/tickets/Ticket932.java @@ -27,6 +27,7 @@ public class Ticket932 extends Application.LegacyApplication { Button b = new Button("Check value"); b.addListener(new Button.ClickListener() { + @Override public void buttonClick(ClickEvent event) { l.setValue("Length: " + tx.getValue().toString().length() + " Content: " + tx.getValue()); @@ -46,6 +47,7 @@ public class Ticket932 extends Application.LegacyApplication { Button b2 = new Button("Check value"); b2.addListener(new Button.ClickListener() { + @Override public void buttonClick(ClickEvent event) { l.setValue("Length: " + tx2.getValue().toString().length() + " Content: " + tx2.getValue()); diff --git a/tests/testbench/com/vaadin/tests/util/Log.java b/tests/testbench/com/vaadin/tests/util/Log.java index 1404db0dee..9111ff3968 100644 --- a/tests/testbench/com/vaadin/tests/util/Log.java +++ b/tests/testbench/com/vaadin/tests/util/Log.java @@ -3,7 +3,7 @@ package com.vaadin.tests.util; import java.util.ArrayList; import java.util.List; -import com.vaadin.terminal.gwt.client.ui.label.ContentMode; +import com.vaadin.shared.ui.label.ContentMode; import com.vaadin.ui.Label; import com.vaadin.ui.VerticalLayout; diff --git a/tests/testbench/com/vaadin/tests/util/SampleDirectory.java b/tests/testbench/com/vaadin/tests/util/SampleDirectory.java index 2c8ac675f8..c22eac9a6e 100644 --- a/tests/testbench/com/vaadin/tests/util/SampleDirectory.java +++ b/tests/testbench/com/vaadin/tests/util/SampleDirectory.java @@ -7,8 +7,8 @@ package com.vaadin.tests.util; import java.io.File; import com.vaadin.Application; +import com.vaadin.shared.ui.label.ContentMode; import com.vaadin.terminal.SystemError; -import com.vaadin.terminal.gwt.client.ui.label.ContentMode; import com.vaadin.ui.Label; import com.vaadin.ui.Panel; import com.vaadin.ui.Root; diff --git a/tests/testbench/com/vaadin/tests/util/TestClickListener.java b/tests/testbench/com/vaadin/tests/util/TestClickListener.java index 95b9cf2d40..b9f6d66b3e 100644 --- a/tests/testbench/com/vaadin/tests/util/TestClickListener.java +++ b/tests/testbench/com/vaadin/tests/util/TestClickListener.java @@ -29,6 +29,7 @@ public class TestClickListener implements Button.ClickListener { System.out.println("Created listener " + name + ", id=" + count); } + @Override public void buttonClick(ClickEvent event) { System.out .println("ClickEvent from listener " + name + ", id=" + count); diff --git a/tests/testbench/com/vaadin/tests/validation/EmptyFieldErrorIndicators.java b/tests/testbench/com/vaadin/tests/validation/EmptyFieldErrorIndicators.java index 8fb0c3585d..d6627a7d94 100644 --- a/tests/testbench/com/vaadin/tests/validation/EmptyFieldErrorIndicators.java +++ b/tests/testbench/com/vaadin/tests/validation/EmptyFieldErrorIndicators.java @@ -58,6 +58,7 @@ public class EmptyFieldErrorIndicators extends TestBase { Button validate = new Button("Validate fields"); validate.addListener(new ClickListener() { + @Override public void buttonClick(ClickEvent event) { try { form.validate(); @@ -96,6 +97,7 @@ public class EmptyFieldErrorIndicators extends TestBase { form.getLayout().addComponent(setDateButton); // form.addField("Set Date", setDateButton); setDateButton.addListener(new ClickListener() { + @Override public void buttonClick(ClickEvent event) { form.getField("Date").setValue(new Date(0)); } diff --git a/tests/testbench/com/vaadin/tests/validation/TestValidators.java b/tests/testbench/com/vaadin/tests/validation/TestValidators.java index a530dee852..746a460da8 100644 --- a/tests/testbench/com/vaadin/tests/validation/TestValidators.java +++ b/tests/testbench/com/vaadin/tests/validation/TestValidators.java @@ -137,6 +137,7 @@ public class TestValidators extends TestBase { Button b = new Button("Commit", new ClickListener() { + @Override public void buttonClick(ClickEvent event) { try { form.commit(); diff --git a/tests/testbench/com/vaadin/tests/validation/ValidationOfRequiredEmptyFields.html b/tests/testbench/com/vaadin/tests/validation/ValidationOfRequiredEmptyFields.html index cc594882dd..62d972e89f 100644 --- a/tests/testbench/com/vaadin/tests/validation/ValidationOfRequiredEmptyFields.html +++ b/tests/testbench/com/vaadin/tests/validation/ValidationOfRequiredEmptyFields.html @@ -88,11 +88,21 @@ <td>0,0</td> </tr> <tr> + <td>waitForVisible</td> + <td>vaadin=runcomvaadintestsvalidationValidationOfRequiredEmptyFields::Root/VTooltip[0]/FlowPanel[0]/VErrorMessage[0]/HTML[0]/domChild[0]/domChild[1]</td> + <td></td> +</tr> +<tr> <td>screenCapture</td> <td></td> <td>error-must-be-int-and-5-to-10-chars</td> </tr> <tr> + <td>showTooltip</td> + <td>vaadin=runcomvaadintestsvalidationValidationOfRequiredEmptyFields::/VVerticalLayout[0]</td> + <td>0,0</td> +</tr> +<tr> <td>mouseClick</td> <td>vaadin=runcomvaadintestsvalidationValidationOfRequiredEmptyFields::/VVerticalLayout[0]/ChildComponentContainer[1]/VVerticalLayout[0]/ChildComponentContainer[3]/VCheckBox[0]/domChild[0]</td> <td>12,7</td> @@ -123,11 +133,15 @@ <td>0,0</td> </tr> <tr> + <td>waitForVisible</td> + <td>vaadin=runcomvaadintestsvalidationValidationOfRequiredEmptyFields::Root/VTooltip[0]/FlowPanel[0]/VErrorMessage[0]/HTML[0]/domChild[0]/domChild[1]</td> + <td></td> +</tr> +<tr> <td>screenCapture</td> <td></td> <td>empty-invalid-not-required</td> </tr> - </tbody></table> </body> </html> diff --git a/tests/testbench/com/vaadin/tests/validation/ValidationOfRequiredEmptyFields.java b/tests/testbench/com/vaadin/tests/validation/ValidationOfRequiredEmptyFields.java index 51c4f5ecc8..dd1732023b 100644 --- a/tests/testbench/com/vaadin/tests/validation/ValidationOfRequiredEmptyFields.java +++ b/tests/testbench/com/vaadin/tests/validation/ValidationOfRequiredEmptyFields.java @@ -27,6 +27,7 @@ public class ValidationOfRequiredEmptyFields extends TestBase { requiredInput = new CheckBox("Field required"); requiredInput.setImmediate(true); requiredInput.addListener(new ValueChangeListener() { + @Override public void valueChange(ValueChangeEvent event) { tf.setRequired((Boolean) requiredInput.getValue()); } @@ -35,6 +36,7 @@ public class ValidationOfRequiredEmptyFields extends TestBase { requiredErrorInput = new TextField("Required error message"); requiredErrorInput.setImmediate(true); requiredErrorInput.addListener(new ValueChangeListener() { + @Override public void valueChange(ValueChangeEvent event) { tf.setRequiredError((String) requiredErrorInput.getValue()); } @@ -44,6 +46,7 @@ public class ValidationOfRequiredEmptyFields extends TestBase { integerValidatorInput.setImmediate(true); integerValidatorInput.addListener(new ValueChangeListener() { + @Override public void valueChange(ValueChangeEvent event) { if ((Boolean) integerValidatorInput.getValue()) { tf.addValidator(integerValidator); @@ -57,6 +60,7 @@ public class ValidationOfRequiredEmptyFields extends TestBase { stringLengthValidatorInput.setImmediate(true); stringLengthValidatorInput.addListener(new ValueChangeListener() { + @Override public void valueChange(ValueChangeEvent event) { if ((Boolean) stringLengthValidatorInput.getValue()) { tf.addValidator(stringLengthValidator); diff --git a/tests/testbench/com/vaadin/tests/widgetset/client/BasicExtensionTestConnector.java b/tests/testbench/com/vaadin/tests/widgetset/client/BasicExtensionTestConnector.java new file mode 100644 index 0000000000..db3e097a6e --- /dev/null +++ b/tests/testbench/com/vaadin/tests/widgetset/client/BasicExtensionTestConnector.java @@ -0,0 +1,27 @@ +/* +@VaadinApache2LicenseForJavaFiles@ + */ + +package com.vaadin.tests.widgetset.client; + +import com.google.gwt.dom.client.DivElement; +import com.google.gwt.dom.client.Document; +import com.vaadin.shared.ui.Connect; +import com.vaadin.terminal.gwt.client.ServerConnector; +import com.vaadin.terminal.gwt.client.Util; +import com.vaadin.terminal.gwt.client.extensions.AbstractExtensionConnector; +import com.vaadin.tests.extensions.BasicExtension; + +@Connect(BasicExtension.class) +public class BasicExtensionTestConnector extends AbstractExtensionConnector { + @Override + protected void extend(ServerConnector target) { + String message = Util.getSimpleName(this) + " extending " + + Util.getSimpleName(target); + + DivElement element = Document.get().createDivElement(); + element.setInnerText(message); + + Document.get().getBody().insertFirst(element); + } +} diff --git a/tests/testbench/com/vaadin/tests/widgetset/client/ComplexTestBean.java b/tests/testbench/com/vaadin/tests/widgetset/client/ComplexTestBean.java index e465ee2624..47f8bedab1 100644 --- a/tests/testbench/com/vaadin/tests/widgetset/client/ComplexTestBean.java +++ b/tests/testbench/com/vaadin/tests/widgetset/client/ComplexTestBean.java @@ -6,7 +6,7 @@ package com.vaadin.tests.widgetset.client; import java.util.List; -import com.vaadin.terminal.gwt.client.communication.SharedState; +import com.vaadin.shared.communication.SharedState; @SuppressWarnings("javadoc") public class ComplexTestBean extends SharedState { diff --git a/tests/testbench/com/vaadin/tests/widgetset/client/MissingFromDefaultWidgetsetConnector.java b/tests/testbench/com/vaadin/tests/widgetset/client/MissingFromDefaultWidgetsetConnector.java index 5b7c6d8712..11d01c552e 100644 --- a/tests/testbench/com/vaadin/tests/widgetset/client/MissingFromDefaultWidgetsetConnector.java +++ b/tests/testbench/com/vaadin/tests/widgetset/client/MissingFromDefaultWidgetsetConnector.java @@ -3,8 +3,8 @@ */ package com.vaadin.tests.widgetset.client; +import com.vaadin.shared.ui.Connect; import com.vaadin.terminal.gwt.client.ui.AbstractComponentConnector; -import com.vaadin.terminal.gwt.client.ui.Connect; import com.vaadin.terminal.gwt.client.ui.label.VLabel; import com.vaadin.tests.widgetset.server.MissingFromDefaultWidgetsetComponent; diff --git a/tests/testbench/com/vaadin/tests/widgetset/client/SerializerTestConnector.java b/tests/testbench/com/vaadin/tests/widgetset/client/SerializerTestConnector.java index 72bfbe285a..32e87ce6a4 100644 --- a/tests/testbench/com/vaadin/tests/widgetset/client/SerializerTestConnector.java +++ b/tests/testbench/com/vaadin/tests/widgetset/client/SerializerTestConnector.java @@ -14,11 +14,11 @@ import java.util.Map; import java.util.Map.Entry; import java.util.Set; -import com.vaadin.terminal.gwt.client.Connector; +import com.vaadin.shared.Connector; +import com.vaadin.shared.ui.Connect; import com.vaadin.terminal.gwt.client.communication.RpcProxy; import com.vaadin.terminal.gwt.client.communication.StateChangeEvent; import com.vaadin.terminal.gwt.client.extensions.AbstractExtensionConnector; -import com.vaadin.terminal.gwt.client.ui.Connect; import com.vaadin.tests.widgetset.server.SerializerTestExtension; @Connect(SerializerTestExtension.class) @@ -29,6 +29,7 @@ public class SerializerTestConnector extends AbstractExtensionConnector { public SerializerTestConnector() { registerRpc(SerializerTestRpc.class, new SerializerTestRpc() { + @Override public void sendWrappedGenerics( Map<Set<SimpleTestBean>, Map<Integer, List<SimpleTestBean>>> generics) { Map<Set<SimpleTestBean>, Map<Integer, List<SimpleTestBean>>> updated = new HashMap<Set<SimpleTestBean>, Map<Integer, List<SimpleTestBean>>>(); @@ -49,12 +50,14 @@ public class SerializerTestConnector extends AbstractExtensionConnector { rpc.sendWrappedGenerics(updated); } + @Override public void sendString(String value) { char[] chars = value.toCharArray(); Arrays.sort(chars); rpc.sendString(new String(chars)); } + @Override public void sendSet(Set<Integer> intSet, Set<Connector> connectorSet, Set<SimpleTestBean> beanSet) { @@ -68,6 +71,7 @@ public class SerializerTestConnector extends AbstractExtensionConnector { Collections.singleton(getRootConnector()), beanSet); } + @Override public void sendNestedArray(int[][] nestedIntArray, SimpleTestBean[][] nestedBeanArray) { rpc.sendNestedArray(new int[][] { { nestedIntArray[1][0], @@ -75,6 +79,7 @@ public class SerializerTestConnector extends AbstractExtensionConnector { { nestedBeanArray[0][1] }, { nestedBeanArray[0][0] } }); } + @Override public void sendMap(Map<String, SimpleTestBean> stringMap, Map<Connector, Boolean> connectorMap, Map<Integer, Connector> intMap, @@ -93,11 +98,13 @@ public class SerializerTestConnector extends AbstractExtensionConnector { getThisConnector()), updatedBeanMap); } + @Override public void sendLong(long value, Long boxedValue, long[] array) { rpc.sendLong(array[0], Long.valueOf(value), new long[] { array[1], boxedValue.longValue() }); } + @Override public void sendList(List<Integer> intList, List<Connector> connectorList, List<SimpleTestBean> beanList) { Collections.sort(intList); @@ -107,17 +114,20 @@ public class SerializerTestConnector extends AbstractExtensionConnector { beanList); } + @Override public void sendInt(int value, Integer boxedValue, int[] array) { rpc.sendInt(array.length, Integer.valueOf(array[0]), new int[] { value, boxedValue.intValue() }); } + @Override public void sendFloat(float value, Float boxedValue, float[] array) { Arrays.sort(array); rpc.sendFloat(boxedValue.floatValue(), Float.valueOf(value), array); } + @Override public void sendDouble(double value, Double boxedValue, double[] array) { rpc.sendDouble(value + boxedValue.doubleValue(), @@ -125,16 +135,19 @@ public class SerializerTestConnector extends AbstractExtensionConnector { new double[] { array.length, array[0], array[1] }); } + @Override public void sendConnector(Connector connector) { rpc.sendConnector(getThisConnector()); } + @Override public void sendChar(char value, Character boxedValue, char[] array) { rpc.sendChar(Character.toUpperCase(boxedValue.charValue()), Character.valueOf(value), new String(array) .toLowerCase().toCharArray()); } + @Override public void sendByte(byte value, Byte boxedValue, byte[] array) { // There will most certainly be a bug that is not discovered // because this particular method doesn't do anything with it's @@ -142,6 +155,7 @@ public class SerializerTestConnector extends AbstractExtensionConnector { rpc.sendByte(value, boxedValue, array); } + @Override public void sendBoolean(boolean value, Boolean boxedValue, boolean[] array) { boolean[] inverseArray = new boolean[array.length]; @@ -152,6 +166,7 @@ public class SerializerTestConnector extends AbstractExtensionConnector { Boolean.valueOf(!value), inverseArray); } + @Override public void sendBean(ComplexTestBean complexBean, SimpleTestBean simpleBean, SimpleTestBean[] array) { SimpleTestBean updatedSimpleBean = new SimpleTestBean(); @@ -174,6 +189,7 @@ public class SerializerTestConnector extends AbstractExtensionConnector { arrayList.toArray(new SimpleTestBean[array.length])); } + @Override public void sendArrayList(List<int[]> primitiveArrayList, List<Integer[]> objectArrayList, List<SimpleTestBean[]> beanArrayList) { @@ -191,10 +207,12 @@ public class SerializerTestConnector extends AbstractExtensionConnector { updatedObjectArrayList, beanArrayList); } + @Override public void sendNull(String value1, String value2) { rpc.sendNull(value2, value1); } + @Override public void sendListArray(List<Integer>[] objectListArray, List<SimpleTestBean>[] beanListArray) { rpc.sendListArray(new List[] { objectListArray[1], diff --git a/tests/testbench/com/vaadin/tests/widgetset/client/SerializerTestRpc.java b/tests/testbench/com/vaadin/tests/widgetset/client/SerializerTestRpc.java index 5b73e1d34d..eedbda0fb8 100644 --- a/tests/testbench/com/vaadin/tests/widgetset/client/SerializerTestRpc.java +++ b/tests/testbench/com/vaadin/tests/widgetset/client/SerializerTestRpc.java @@ -8,9 +8,9 @@ import java.util.List; import java.util.Map; import java.util.Set; -import com.vaadin.terminal.gwt.client.Connector; -import com.vaadin.terminal.gwt.client.communication.ClientRpc; -import com.vaadin.terminal.gwt.client.communication.ServerRpc; +import com.vaadin.shared.Connector; +import com.vaadin.shared.communication.ClientRpc; +import com.vaadin.shared.communication.ServerRpc; @SuppressWarnings("javadoc") public interface SerializerTestRpc extends ServerRpc, ClientRpc { diff --git a/src/com/vaadin/terminal/gwt/client/ui/helloworldfeature/GreetAgainRpc.java b/tests/testbench/com/vaadin/tests/widgetset/client/helloworldfeature/GreetAgainRpc.java index 0bfb8f3c32..a5b89e9c1e 100644 --- a/src/com/vaadin/terminal/gwt/client/ui/helloworldfeature/GreetAgainRpc.java +++ b/tests/testbench/com/vaadin/tests/widgetset/client/helloworldfeature/GreetAgainRpc.java @@ -1,9 +1,9 @@ /* @VaadinApache2LicenseForJavaFiles@ */ -package com.vaadin.terminal.gwt.client.ui.helloworldfeature; +package com.vaadin.tests.widgetset.client.helloworldfeature; -import com.vaadin.terminal.gwt.client.communication.ClientRpc; +import com.vaadin.shared.communication.ClientRpc; public interface GreetAgainRpc extends ClientRpc { diff --git a/src/com/vaadin/terminal/gwt/client/ui/helloworldfeature/HelloWorldExtensionConnector.java b/tests/testbench/com/vaadin/tests/widgetset/client/helloworldfeature/HelloWorldExtensionConnector.java index ff444fece5..3848ad169a 100644 --- a/src/com/vaadin/terminal/gwt/client/ui/helloworldfeature/HelloWorldExtensionConnector.java +++ b/tests/testbench/com/vaadin/tests/widgetset/client/helloworldfeature/HelloWorldExtensionConnector.java @@ -1,19 +1,19 @@ /* @VaadinApache2LicenseForJavaFiles@ */ -package com.vaadin.terminal.gwt.client.ui.helloworldfeature; +package com.vaadin.tests.widgetset.client.helloworldfeature; import com.google.gwt.user.client.Window; +import com.vaadin.shared.ui.Connect; import com.vaadin.terminal.gwt.client.ServerConnector; import com.vaadin.terminal.gwt.client.Util; import com.vaadin.terminal.gwt.client.VConsole; import com.vaadin.terminal.gwt.client.communication.RpcProxy; -import com.vaadin.terminal.gwt.client.ui.AbstractConnector; -import com.vaadin.terminal.gwt.client.ui.Connect; -import com.vaadin.ui.HelloWorldExtension; +import com.vaadin.terminal.gwt.client.extensions.AbstractExtensionConnector; +import com.vaadin.tests.extensions.HelloWorldExtension; @Connect(HelloWorldExtension.class) -public class HelloWorldExtensionConnector extends AbstractConnector { +public class HelloWorldExtensionConnector extends AbstractExtensionConnector { HelloWorldRpc rpc = RpcProxy.create(HelloWorldRpc.class, this); @Override @@ -24,6 +24,7 @@ public class HelloWorldExtensionConnector extends AbstractConnector { @Override protected void init() { registerRpc(GreetAgainRpc.class, new GreetAgainRpc() { + @Override public void greetAgain() { greet(); } diff --git a/src/com/vaadin/terminal/gwt/client/ui/helloworldfeature/HelloWorldRpc.java b/tests/testbench/com/vaadin/tests/widgetset/client/helloworldfeature/HelloWorldRpc.java index 0289713390..980d76043a 100644 --- a/src/com/vaadin/terminal/gwt/client/ui/helloworldfeature/HelloWorldRpc.java +++ b/tests/testbench/com/vaadin/tests/widgetset/client/helloworldfeature/HelloWorldRpc.java @@ -1,9 +1,9 @@ /* @VaadinApache2LicenseForJavaFiles@ */ -package com.vaadin.terminal.gwt.client.ui.helloworldfeature; +package com.vaadin.tests.widgetset.client.helloworldfeature; -import com.vaadin.terminal.gwt.client.communication.ServerRpc; +import com.vaadin.shared.communication.ServerRpc; public interface HelloWorldRpc extends ServerRpc { public void onMessageSent(String message); diff --git a/src/com/vaadin/terminal/gwt/client/ui/helloworldfeature/HelloWorldState.java b/tests/testbench/com/vaadin/tests/widgetset/client/helloworldfeature/HelloWorldState.java index 9524a5e9aa..913c8bdd1c 100644 --- a/src/com/vaadin/terminal/gwt/client/ui/helloworldfeature/HelloWorldState.java +++ b/tests/testbench/com/vaadin/tests/widgetset/client/helloworldfeature/HelloWorldState.java @@ -1,9 +1,9 @@ /* @VaadinApache2LicenseForJavaFiles@ */ -package com.vaadin.terminal.gwt.client.ui.helloworldfeature; +package com.vaadin.tests.widgetset.client.helloworldfeature; -import com.vaadin.terminal.gwt.client.communication.SharedState; +import com.vaadin.shared.communication.SharedState; public class HelloWorldState extends SharedState { private String greeting = "Hello world"; diff --git a/tests/testbench/com/vaadin/tests/widgetset/client/minitutorials/v7a2/ComponentInStateState.java b/tests/testbench/com/vaadin/tests/widgetset/client/minitutorials/v7a2/ComponentInStateState.java index a5a5f504ab..838eff1e5c 100644 --- a/tests/testbench/com/vaadin/tests/widgetset/client/minitutorials/v7a2/ComponentInStateState.java +++ b/tests/testbench/com/vaadin/tests/widgetset/client/minitutorials/v7a2/ComponentInStateState.java @@ -4,8 +4,8 @@ package com.vaadin.tests.widgetset.client.minitutorials.v7a2; -import com.vaadin.terminal.gwt.client.ComponentState; -import com.vaadin.terminal.gwt.client.Connector; +import com.vaadin.shared.ComponentState; +import com.vaadin.shared.Connector; public class ComponentInStateState extends ComponentState { private Connector otherComponent; diff --git a/tests/testbench/com/vaadin/tests/widgetset/client/minitutorials/v7a2/ComponentInStateStateConnector.java b/tests/testbench/com/vaadin/tests/widgetset/client/minitutorials/v7a2/ComponentInStateStateConnector.java index 6e855f7c04..952e4b83c5 100644 --- a/tests/testbench/com/vaadin/tests/widgetset/client/minitutorials/v7a2/ComponentInStateStateConnector.java +++ b/tests/testbench/com/vaadin/tests/widgetset/client/minitutorials/v7a2/ComponentInStateStateConnector.java @@ -5,10 +5,10 @@ package com.vaadin.tests.widgetset.client.minitutorials.v7a2; import com.google.gwt.user.client.ui.Label; +import com.vaadin.shared.ui.Connect; import com.vaadin.terminal.gwt.client.ComponentConnector; import com.vaadin.terminal.gwt.client.communication.StateChangeEvent; import com.vaadin.terminal.gwt.client.ui.AbstractComponentConnector; -import com.vaadin.terminal.gwt.client.ui.Connect; import com.vaadin.tests.minitutorials.v7a2.ComponentInStateComponent; @Connect(ComponentInStateComponent.class) diff --git a/tests/testbench/com/vaadin/tests/widgetset/client/minitutorials/v7a2/MyComponentClientRpc.java b/tests/testbench/com/vaadin/tests/widgetset/client/minitutorials/v7a2/MyComponentClientRpc.java index 68e2df533c..f85d67da4b 100644 --- a/tests/testbench/com/vaadin/tests/widgetset/client/minitutorials/v7a2/MyComponentClientRpc.java +++ b/tests/testbench/com/vaadin/tests/widgetset/client/minitutorials/v7a2/MyComponentClientRpc.java @@ -1,6 +1,6 @@ package com.vaadin.tests.widgetset.client.minitutorials.v7a2; -import com.vaadin.terminal.gwt.client.communication.ClientRpc; +import com.vaadin.shared.communication.ClientRpc; public interface MyComponentClientRpc extends ClientRpc { diff --git a/tests/testbench/com/vaadin/tests/widgetset/client/minitutorials/v7a2/MyComponentConnector.java b/tests/testbench/com/vaadin/tests/widgetset/client/minitutorials/v7a2/MyComponentConnector.java index 2a131c07c8..3a6aab617a 100644 --- a/tests/testbench/com/vaadin/tests/widgetset/client/minitutorials/v7a2/MyComponentConnector.java +++ b/tests/testbench/com/vaadin/tests/widgetset/client/minitutorials/v7a2/MyComponentConnector.java @@ -3,12 +3,12 @@ package com.vaadin.tests.widgetset.client.minitutorials.v7a2; import com.google.gwt.event.dom.client.ClickEvent; import com.google.gwt.event.dom.client.ClickHandler; import com.google.gwt.user.client.Window; -import com.vaadin.terminal.gwt.client.MouseEventDetails; +import com.vaadin.shared.MouseEventDetails; +import com.vaadin.shared.ui.Connect; import com.vaadin.terminal.gwt.client.MouseEventDetailsBuilder; import com.vaadin.terminal.gwt.client.communication.RpcProxy; import com.vaadin.terminal.gwt.client.communication.StateChangeEvent; import com.vaadin.terminal.gwt.client.ui.AbstractComponentConnector; -import com.vaadin.terminal.gwt.client.ui.Connect; import com.vaadin.tests.minitutorials.v7a2.MyComponent; @Connect(MyComponent.class) @@ -19,6 +19,7 @@ public class MyComponentConnector extends AbstractComponentConnector { public MyComponentConnector() { getWidget().addClickHandler(new ClickHandler() { + @Override public void onClick(ClickEvent event) { final MouseEventDetails mouseDetails = MouseEventDetailsBuilder @@ -29,6 +30,7 @@ public class MyComponentConnector extends AbstractComponentConnector { } }); registerRpc(MyComponentClientRpc.class, new MyComponentClientRpc() { + @Override public void alert(String message) { Window.alert(message); } diff --git a/tests/testbench/com/vaadin/tests/widgetset/client/minitutorials/v7a2/MyComponentServerRpc.java b/tests/testbench/com/vaadin/tests/widgetset/client/minitutorials/v7a2/MyComponentServerRpc.java index 7f273c28d2..5571ffb701 100644 --- a/tests/testbench/com/vaadin/tests/widgetset/client/minitutorials/v7a2/MyComponentServerRpc.java +++ b/tests/testbench/com/vaadin/tests/widgetset/client/minitutorials/v7a2/MyComponentServerRpc.java @@ -1,7 +1,7 @@ package com.vaadin.tests.widgetset.client.minitutorials.v7a2; -import com.vaadin.terminal.gwt.client.MouseEventDetails; -import com.vaadin.terminal.gwt.client.communication.ServerRpc; +import com.vaadin.shared.MouseEventDetails; +import com.vaadin.shared.communication.ServerRpc; public interface MyComponentServerRpc extends ServerRpc { diff --git a/tests/testbench/com/vaadin/tests/widgetset/client/minitutorials/v7a2/MyComponentState.java b/tests/testbench/com/vaadin/tests/widgetset/client/minitutorials/v7a2/MyComponentState.java index a80aa7bca8..8b68331f30 100644 --- a/tests/testbench/com/vaadin/tests/widgetset/client/minitutorials/v7a2/MyComponentState.java +++ b/tests/testbench/com/vaadin/tests/widgetset/client/minitutorials/v7a2/MyComponentState.java @@ -1,6 +1,6 @@ package com.vaadin.tests.widgetset.client.minitutorials.v7a2; -import com.vaadin.terminal.gwt.client.ComponentState; +import com.vaadin.shared.ComponentState; public class MyComponentState extends ComponentState { diff --git a/tests/testbench/com/vaadin/tests/widgetset/client/minitutorials/v7a2/ResourceInStateConnector.java b/tests/testbench/com/vaadin/tests/widgetset/client/minitutorials/v7a2/ResourceInStateConnector.java index f05d4a0eb9..bad782e462 100644 --- a/tests/testbench/com/vaadin/tests/widgetset/client/minitutorials/v7a2/ResourceInStateConnector.java +++ b/tests/testbench/com/vaadin/tests/widgetset/client/minitutorials/v7a2/ResourceInStateConnector.java @@ -5,10 +5,10 @@ package com.vaadin.tests.widgetset.client.minitutorials.v7a2; import com.google.gwt.user.client.ui.Image; +import com.vaadin.shared.communication.URLReference; +import com.vaadin.shared.ui.Connect; import com.vaadin.terminal.gwt.client.communication.StateChangeEvent; -import com.vaadin.terminal.gwt.client.communication.URLReference; import com.vaadin.terminal.gwt.client.ui.AbstractComponentConnector; -import com.vaadin.terminal.gwt.client.ui.Connect; import com.vaadin.tests.minitutorials.v7a2.ResourceInStateComponent; @Connect(ResourceInStateComponent.class) diff --git a/tests/testbench/com/vaadin/tests/widgetset/client/minitutorials/v7a2/ResourceInStateState.java b/tests/testbench/com/vaadin/tests/widgetset/client/minitutorials/v7a2/ResourceInStateState.java index 7c124e7bf8..69b415625c 100644 --- a/tests/testbench/com/vaadin/tests/widgetset/client/minitutorials/v7a2/ResourceInStateState.java +++ b/tests/testbench/com/vaadin/tests/widgetset/client/minitutorials/v7a2/ResourceInStateState.java @@ -1,7 +1,7 @@ package com.vaadin.tests.widgetset.client.minitutorials.v7a2; -import com.vaadin.terminal.gwt.client.ComponentState; -import com.vaadin.terminal.gwt.client.communication.URLReference; +import com.vaadin.shared.ComponentState; +import com.vaadin.shared.communication.URLReference; public class ResourceInStateState extends ComponentState { diff --git a/tests/testbench/com/vaadin/tests/widgetset/client/minitutorials/v7a2/WidgetContainerConnector.java b/tests/testbench/com/vaadin/tests/widgetset/client/minitutorials/v7a2/WidgetContainerConnector.java index 012060f437..7905de89f2 100644 --- a/tests/testbench/com/vaadin/tests/widgetset/client/minitutorials/v7a2/WidgetContainerConnector.java +++ b/tests/testbench/com/vaadin/tests/widgetset/client/minitutorials/v7a2/WidgetContainerConnector.java @@ -4,10 +4,10 @@ import java.util.List; import com.google.gwt.core.client.GWT; import com.google.gwt.user.client.ui.Widget; +import com.vaadin.shared.ui.Connect; import com.vaadin.terminal.gwt.client.ComponentConnector; import com.vaadin.terminal.gwt.client.ConnectorHierarchyChangeEvent; import com.vaadin.terminal.gwt.client.ui.AbstractComponentContainerConnector; -import com.vaadin.terminal.gwt.client.ui.Connect; import com.vaadin.tests.minitutorials.v7a2.WidgetContainer; @Connect(WidgetContainer.class) @@ -30,6 +30,7 @@ public class WidgetContainerConnector extends return GWT.create(VWidgetContainer.class); } + @Override public void updateCaption(ComponentConnector connector) { } }
\ No newline at end of file |