[gwt-contrib] Re: Salvage useful bits from overrides work (issue1436801)
LGTM On Mon, May 16, 2011 at 9:47 PM, sco...@google.com wrote: There's no expected net change in behavior, it's just code cleanup. http://gwt-code-reviews.appspot.com/1436801/diff/2001/dev/core/src/com/google/gwt/dev/jjs/impl/GenerateJavaScriptAST.java File dev/core/src/com/google/gwt/dev/jjs/impl/GenerateJavaScriptAST.java (right): http://gwt-code-reviews.appspot.com/1436801/diff/2001/dev/core/src/com/google/gwt/dev/jjs/impl/GenerateJavaScriptAST.java#newcode2074 dev/core/src/com/google/gwt/dev/jjs/impl/GenerateJavaScriptAST.java:2074: On 2011/05/17 01:19:18, jbrosenberg wrote: white space above? Is this still the correct positioning for this comment? Add something also about Array/Object I think the comment is set off ok, because it's meant to really refer to the entire section below. The biggest reason for all this is that we modify the JavaScript String prototype. We do not modify the JavaScript Object or Array prototypes. I could probably be more clear here. http://gwt-code-reviews.appspot.com/1436801/ -- http://groups.google.com/group/Google-Web-Toolkit-Contributors
[gwt-contrib] [google-web-toolkit] r10190 committed - Salvage useful bits from overrides work....
Revision: 10190 Author: sco...@google.com Date: Tue May 17 05:22:26 2011 Log: Salvage useful bits from overrides work. http://gwt-code-reviews.appspot.com/1436801/ Review by: jbrosenb...@google.com http://code.google.com/p/google-web-toolkit/source/detail?r=10190 Deleted: /trunk/dev/core/src/com/google/gwt/core/ext/soyc/HasOverrides.java Modified: /trunk/dev/core/src/com/google/gwt/core/ext/soyc/ClassMember.java /trunk/dev/core/src/com/google/gwt/core/ext/soyc/MethodMember.java /trunk/dev/core/src/com/google/gwt/core/ext/soyc/impl/StandardMethodMember.java /trunk/dev/core/src/com/google/gwt/dev/jjs/ast/JTypeOracle.java /trunk/dev/core/src/com/google/gwt/dev/jjs/impl/GenerateJavaScriptAST.java /trunk/dev/core/src/com/google/gwt/dev/jjs/impl/MethodCallTightener.java /trunk/dev/core/test/com/google/gwt/dev/jjs/JjsTypeTest.java === --- /trunk/dev/core/src/com/google/gwt/core/ext/soyc/HasOverrides.java Thu May 5 06:03:58 2011 +++ /dev/null @@ -1,36 +0,0 @@ -/* - * Copyright 2008 Google Inc. - * - * Licensed under the Apache License, Version 2.0 (the License); you may not - * use this file except in compliance with the License. You may obtain a copy of - * the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an AS IS BASIS, WITHOUT - * WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the - * License for the specific language governing permissions and limitations under - * the License. - */ -/** - * - */ -package com.google.gwt.core.ext.soyc; - -import java.util.SortedSet; - -/** - * A tag interface for Members to indicate that they override or extend another - * Member. - * - * @param T the type of Member that is overridden or extended - */ -public interface HasOverridesT extends Member { - /** - * Returns the complete set of overridden members. For example, if - * codeC/code extends codeB/code extends codeA/code, then - * codeC/code would return the set code[A, B]/code. - */ - SortedSetT getOverrides(); -} === --- /trunk/dev/core/src/com/google/gwt/core/ext/soyc/ClassMember.java Thu May 5 06:03:58 2011 +++ /trunk/dev/core/src/com/google/gwt/core/ext/soyc/ClassMember.java Tue May 17 05:22:26 2011 @@ -24,8 +24,8 @@ * {@link #getMethods()} may be incomplete when compared to the original Java * type. */ -public interface ClassMember extends HasDependencies, -HasOverridesClassMember, Member { +public interface ClassMember extends HasDependencies, Member { + /** * Returns the fields of the ClassMember that have been retained in the * compiled output. === --- /trunk/dev/core/src/com/google/gwt/core/ext/soyc/MethodMember.java Thu May 5 06:03:58 2011 +++ /trunk/dev/core/src/com/google/gwt/core/ext/soyc/MethodMember.java Tue May 17 05:22:26 2011 @@ -12,15 +12,11 @@ * WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the * License for the specific language governing permissions and limitations under * the License. - */ -/** - * */ package com.google.gwt.core.ext.soyc; /** * Represents compiled JS code derived from a Java method. */ -public interface MethodMember extends HasDependencies, HasEnclosing, -HasOverridesMethodMember, Member { -} +public interface MethodMember extends HasDependencies, HasEnclosing, Member { +} === --- /trunk/dev/core/src/com/google/gwt/core/ext/soyc/impl/StandardMethodMember.java Thu May 5 06:03:58 2011 +++ /trunk/dev/core/src/com/google/gwt/core/ext/soyc/impl/StandardMethodMember.java Tue May 17 05:22:26 2011 @@ -16,15 +16,10 @@ package com.google.gwt.core.ext.soyc.impl; import com.google.gwt.core.ext.soyc.ClassMember; -import com.google.gwt.core.ext.soyc.Member; import com.google.gwt.core.ext.soyc.MethodMember; import com.google.gwt.dev.jjs.ast.JMethod; import com.google.gwt.dev.jjs.ast.JType; -import java.util.Collections; -import java.util.SortedSet; -import java.util.TreeSet; - /** * An implementation of MethodMember. */ @@ -32,7 +27,6 @@ implements MethodMember { private final ClassMember enclosing; private final String sourceName; - private final SortedSetMethodMember overridesView; /** * Constructed by {@link MemberFactory#get(JMethod)}. @@ -49,22 +43,11 @@ sb.append()); sb.append(method.getOriginalReturnType().getJsniSignatureName()); this.sourceName = sb.toString(); - -SortedSetMethodMember overrides = new TreeSetMethodMember( -Member.SOURCE_NAME_COMPARATOR); -for (JMethod override : method.getOverrides()) { - overrides.add(factory.get(override)); -} -overridesView = Collections.unmodifiableSortedSet(overrides); } public ClassMember getEnclosing() { return
[gwt-contrib] [google-web-toolkit] r10191 committed - In PRETTY and DETAILED, generate symbolic type queries for readability...
Revision: 10191 Author: gwt.mirror...@gmail.com Date: Tue May 17 07:35:44 2011 Log: In PRETTY and DETAILED, generate symbolic type queries for readability. This makes the output much nicer to read, you can actually tell what type checks mean instead of looking at useless numbers. Also, this patch greatly reduces compiled output jitter when you're trying to diff slightly different versions of compiler output to track down a bug. http://gwt-code-reviews.appspot.com/1449801/ http://code.google.com/p/google-web-toolkit/source/detail?r=10191 Added: /trunk/dev/core/src/com/google/gwt/dev/jjs/ast/js/JsCastMap.java Modified: /trunk/dev/core/src/com/google/gwt/dev/jjs/ast/JProgram.java /trunk/dev/core/src/com/google/gwt/dev/jjs/ast/JVisitor.java /trunk/dev/core/src/com/google/gwt/dev/jjs/ast/js/JsonArray.java /trunk/dev/core/src/com/google/gwt/dev/jjs/impl/ArrayNormalizer.java /trunk/dev/core/src/com/google/gwt/dev/jjs/impl/CastNormalizer.java /trunk/dev/core/src/com/google/gwt/dev/jjs/impl/GenerateJavaScriptAST.java /trunk/dev/core/src/com/google/gwt/dev/jjs/impl/ToStringGenerationVisitor.java === --- /dev/null +++ /trunk/dev/core/src/com/google/gwt/dev/jjs/ast/js/JsCastMap.java Tue May 17 07:35:44 2011 @@ -0,0 +1,69 @@ +/* + * Copyright 2011 Google Inc. + * + * Licensed under the Apache License, Version 2.0 (the License); you may not + * use this file except in compliance with the License. You may obtain a copy of + * the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an AS IS BASIS, WITHOUT + * WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the + * License for the specific language governing permissions and limitations under + * the License. + */ +package com.google.gwt.dev.jjs.ast.js; + +import com.google.gwt.dev.jjs.SourceInfo; +import com.google.gwt.dev.jjs.ast.Context; +import com.google.gwt.dev.jjs.ast.JClassType; +import com.google.gwt.dev.jjs.ast.JIntLiteral; +import com.google.gwt.dev.jjs.ast.JType; +import com.google.gwt.dev.jjs.ast.JVisitor; + +import java.util.List; + +/** + * A low-level node representing a castable type map. + */ +public class JsCastMap extends JsonArray { + + /** + * A low-level node representing a query type for cast/instanceof. + */ + public static class JsQueryType extends JIntLiteral { +private final JType queryType; + +public JsQueryType(SourceInfo sourceInfo, JType queryType, int queryId) { + super(sourceInfo, queryId); + this.queryType = queryType; +} + +public int getQueryId() { + return getValue(); +} + +public JType getQueryType() { + return queryType; +} + +public void traverse(JVisitor visitor, Context ctx) { + if (visitor.visit(this, ctx)) { + } + visitor.endVisit(this, ctx); +} + } + + public JsCastMap(SourceInfo sourceInfo, ListJsQueryType queryTypes, JClassType jsoType) { +super(sourceInfo, jsoType); +getExprs().addAll(queryTypes); + } + + public void traverse(JVisitor visitor, Context ctx) { +if (visitor.visit(this, ctx)) { + visitor.accept(getExprs()); +} +visitor.endVisit(this, ctx); + } +} === --- /trunk/dev/core/src/com/google/gwt/dev/jjs/ast/JProgram.java Fri May 13 08:44:36 2011 +++ /trunk/dev/core/src/com/google/gwt/dev/jjs/ast/JProgram.java Tue May 17 07:35:44 2011 @@ -22,8 +22,8 @@ import com.google.gwt.dev.jjs.SourceInfo; import com.google.gwt.dev.jjs.SourceOrigin; import com.google.gwt.dev.jjs.ast.JField.Disposition; +import com.google.gwt.dev.jjs.ast.js.JsCastMap; import com.google.gwt.dev.jjs.ast.js.JsniMethodBody; -import com.google.gwt.dev.jjs.ast.js.JsonObject; import com.google.gwt.dev.jjs.impl.CodeSplitter; import com.google.gwt.dev.jjs.impl.ReplaceRunAsyncs.RunAsyncReplacement; import com.google.gwt.dev.util.collect.Lists; @@ -320,7 +320,7 @@ private final HashMapJType, JArrayType arrayTypes = new HashMapJType, JArrayType(); - private IdentityHashMapJReferenceType, JsonObject castableTypeMaps; + private IdentityHashMapJReferenceType, JsCastMap castMaps; /** * A factory to create correlations. @@ -335,7 +335,7 @@ private final MapJMethod, JMethod instanceToStaticMap = new IdentityHashMapJMethod, JMethod(); - private MapJReferenceType, Integer queryIds; + private MapJReferenceType, Integer queryIdsByType; /** * Filled in by ReplaceRunAsync, once the numbers are known. @@ -358,6 +358,8 @@ private final MapString, JDeclaredType typeNameMap = new HashMapString, JDeclaredType(); + private ListJReferenceType typesByQueryId; + private JClassType typeSpecialClassLiteralHolder; private JClassType typeSpecialJavaScriptObject; @@ -740,19 +742,13 @@ return allEntryMethods; } - public
[gwt-contrib] Use glass panel isntead of alert() when displaying dev mode connection failures, (issue1449802)
Reviewers: jlabanca, Description: Use glass panel isntead of alert() when displaying dev mode connection failures, because modal dialog boxes are annoying and consume unnecessary keystrokes or mouse clicks before you are able to refresh the page. Please review this at http://gwt-code-reviews.appspot.com/1449802/ Affected files: M dev/core/src/com/google/gwt/core/ext/linker/impl/hosted.html Index: dev/core/src/com/google/gwt/core/ext/linker/impl/hosted.html === --- dev/core/src/com/google/gwt/core/ext/linker/impl/hosted.html (revision 10190) +++ dev/core/src/com/google/gwt/core/ext/linker/impl/hosted.html (working copy) @@ -295,7 +295,7 @@ if (errFn) { errFn(modName); } else { -alert(Plugin failed to connect to Development Mode server at + $hosted); +__gwt_displayGlassMessage(Plugin failed to connect to Development Mode server at + $hosted); loadIframe(http://code.google.com/p/google-web-toolkit/wiki/TroubleshootingOOPHM;); } } -- http://groups.google.com/group/Google-Web-Toolkit-Contributors
[gwt-contrib] Re: Use glass panel isntead of alert() when displaying dev mode connection failures, (issue1449802)
http://gwt-code-reviews.appspot.com/1449802/ -- http://groups.google.com/group/Google-Web-Toolkit-Contributors
[gwt-contrib] GwtEvent.setSource visibility
Hi, With the bindery package change, I have a custom EventBus implementation that no longer compiles. I was calling GwtEvent.setSource (and squatting in the c.g.g.e.shared package to do so), but now setSource is defined in the bindery package and so inaccessible. I can move my EventBus to the new bindery package and squat there, but it makes it complicated supporting both pre-2.4 and post-2.4 codebases. If possible, adding a GwtEvent.setSource that restored the old visibility would be preferable. I have a simple patch to do so if that's okay. At some point it would be nice to be able to implement an EventBus without squatting in a c.g package, though I understand the appeal of keeping the not for user code methods protected. - Stephen -- http://groups.google.com/group/Google-Web-Toolkit-Contributors
Re: [gwt-contrib] GwtEvent.setSource visibility
Yes please, we shouldn't have broken existing code like that. On Tue, May 17, 2011 at 3:25 PM, Stephen Haberman stephen.haber...@gmail.com wrote: Hi, With the bindery package change, I have a custom EventBus implementation that no longer compiles. I was calling GwtEvent.setSource (and squatting in the c.g.g.e.shared package to do so), but now setSource is defined in the bindery package and so inaccessible. I can move my EventBus to the new bindery package and squat there, but it makes it complicated supporting both pre-2.4 and post-2.4 codebases. If possible, adding a GwtEvent.setSource that restored the old visibility would be preferable. I have a simple patch to do so if that's okay. At some point it would be nice to be able to implement an EventBus without squatting in a c.g package, though I understand the appeal of keeping the not for user code methods protected. - Stephen -- http://groups.google.com/group/Google-Web-Toolkit-Contributors -- http://groups.google.com/group/Google-Web-Toolkit-Contributors
Re: [gwt-contrib] Re: Use glass panel isntead of alert() when displaying dev mode connection failures, (issue1449802)
Fred, I can't tell you how obnoxious this has been for me. When this change makes it into a release, I will owe you a beer or comparable gratuity. Thank you. On Tue, May 17, 2011 at 3:09 PM, fre...@google.com wrote: http://gwt-code-reviews.appspot.com/1449802/ -- http://groups.google.com/group/Google-Web-Toolkit-Contributors -- http://groups.google.com/group/Google-Web-Toolkit-Contributors
[gwt-contrib] Re: restore GwtEvent.setSource visibility (issue1450801)
Sneaky. You asked for package protected. I don't want to *expand* the public foot print. On Tue, May 17, 2011 at 3:34 PM, stephen.haber...@gmail.com wrote: Reviewers: rjrjr, Description: Redefines Event.setSource in the GwtEvent subclass to restore c.g.g.e.shared package visibility. Please review this at http://gwt-code-reviews.appspot.com/1450801/ Affected files: user/src/com/google/gwt/event/shared/GwtEvent.java Index: user/src/com/google/gwt/event/shared/GwtEvent.java === --- user/src/com/google/gwt/event/shared/GwtEvent.java (revision 10188) +++ user/src/com/google/gwt/event/shared/GwtEvent.java (working copy) @@ -101,6 +101,10 @@ setSource(null); } + protected void setSource(Object source) { +super.setSource(source); + } + void overrideSource(Object source) { super.setSource(source); } -- http://groups.google.com/group/Google-Web-Toolkit-Contributors
[gwt-contrib] Re: restore GwtEvent.setSource visibility (issue1450801)
On 2011/05/17 19:40:11, rjrjr wrote: Sneaky. You asked for package protected. I don't want to *expand* the public foot print. Not intended. When making the patch, I just looked at Event.setSource (which is protected) and copied that. The thought crossed my mind while submitted the email/patch that I didn't actually go look at what GwtEvent.setSource's visibility used to be, although I did blithely write my email saying package private. And, yeah, it was package private. Fixing. http://gwt-code-reviews.appspot.com/1450801/ -- http://groups.google.com/group/Google-Web-Toolkit-Contributors
[gwt-contrib] restore GwtEvent.setSource visibility (issue1450801)
Reviewers: rjrjr, Description: Redefines Event.setSource in the GwtEvent subclass to restore c.g.g.e.shared package visibility. Please review this at http://gwt-code-reviews.appspot.com/1450801/ Affected files: user/src/com/google/gwt/event/shared/GwtEvent.java Index: user/src/com/google/gwt/event/shared/GwtEvent.java === --- user/src/com/google/gwt/event/shared/GwtEvent.java (revision 10188) +++ user/src/com/google/gwt/event/shared/GwtEvent.java (working copy) @@ -101,6 +101,10 @@ setSource(null); } + protected void setSource(Object source) { +super.setSource(source); + } + void overrideSource(Object source) { super.setSource(source); } -- http://groups.google.com/group/Google-Web-Toolkit-Contributors
Re: [gwt-contrib] GwtEvent.setSource visibility
+1 2011/5/17 Ray Ryan rj...@google.com Yes please, we shouldn't have broken existing code like that. On Tue, May 17, 2011 at 3:25 PM, Stephen Haberman stephen.haber...@gmail.com wrote: Hi, With the bindery package change, I have a custom EventBus implementation that no longer compiles. I was calling GwtEvent.setSource (and squatting in the c.g.g.e.shared package to do so), but now setSource is defined in the bindery package and so inaccessible. I can move my EventBus to the new bindery package and squat there, but it makes it complicated supporting both pre-2.4 and post-2.4 codebases. If possible, adding a GwtEvent.setSource that restored the old visibility would be preferable. I have a simple patch to do so if that's okay. At some point it would be nice to be able to implement an EventBus without squatting in a c.g package, though I understand the appeal of keeping the not for user code methods protected. - Stephen -- http://groups.google.com/group/Google-Web-Toolkit-Contributors -- http://groups.google.com/group/Google-Web-Toolkit-Contributors -- http://groups.google.com/group/Google-Web-Toolkit-Contributors
Re: [gwt-contrib] Re: Use glass panel isntead of alert() when displaying dev mode connection failures, (issue1449802)
No worries. Not having to click that popup will be payment enough :) To be honest, I don't understand why it took me so long to realize that this is was behavior that could in fact be changed. On Tue, May 17, 2011 at 12:39 PM, Isaac Truett itru...@gmail.com wrote: Fred, I can't tell you how obnoxious this has been for me. When this change makes it into a release, I will owe you a beer or comparable gratuity. Thank you. On Tue, May 17, 2011 at 3:09 PM, fre...@google.com wrote: http://gwt-code-reviews.appspot.com/1449802/ -- http://groups.google.com/group/Google-Web-Toolkit-Contributors -- http://groups.google.com/group/Google-Web-Toolkit-Contributors -- Fred Sauer Developer Advocate Google Inc. 1600 Amphitheatre Parkway Mountain View, CA 94043 fre...@google.com -- http://groups.google.com/group/Google-Web-Toolkit-Contributors
[gwt-contrib] Re: 1. Assert, at runtime, that GWT is running in Standards Mode (i.e. with an appropriate DOCTYPE d... (issue1422816)
http://gwt-code-reviews.appspot.com/1422816/ -- http://groups.google.com/group/Google-Web-Toolkit-Contributors
[gwt-contrib] Re: 1. Assert, at runtime, that GWT is running in Standards Mode (i.e. with an appropriate DOCTYPE d... (issue1422816)
This change now introduces only a Development Mode warning (to the GWT treelogger), which an option to suppress it (for those who know what they are doing, or to raise the severity to a runtime error, which we can do in a later release http://gwt-code-reviews.appspot.com/1422816/diff/1/user/src/com/google/gwt/user/UserAgent.gwt.xml File user/src/com/google/gwt/user/UserAgent.gwt.xml (right): http://gwt-code-reviews.appspot.com/1422816/diff/1/user/src/com/google/gwt/user/UserAgent.gwt.xml#newcode29 user/src/com/google/gwt/user/UserAgent.gwt.xml:29: On 2011/05/04 14:37:57, jlabanca wrote: extra newline Done. http://gwt-code-reviews.appspot.com/1422816/diff/1/user/src/com/google/gwt/user/UserAgent.gwt.xml#newcode56 user/src/com/google/gwt/user/UserAgent.gwt.xml:56: define-configuration-property name=document.compatMode On 2011/05/04 14:37:57, jlabanca wrote: I think we should break this out into a separate DocumentMode.gwt.xml file and inherit it in User.gwt.xml. It isn't part of the UserAgent. Done. http://gwt-code-reviews.appspot.com/1422816/diff/1/user/src/com/google/gwt/user/UserAgent.gwt.xml#newcode67 user/src/com/google/gwt/user/UserAgent.gwt.xml:67: On 2011/05/04 14:37:57, jlabanca wrote: extra newline Done. http://gwt-code-reviews.appspot.com/1422816/diff/1/user/src/com/google/gwt/user/client/DocumentModeAsserter.java File user/src/com/google/gwt/user/client/DocumentModeAsserter.java (right): http://gwt-code-reviews.appspot.com/1422816/diff/1/user/src/com/google/gwt/user/client/DocumentModeAsserter.java#newcode27 user/src/com/google/gwt/user/client/DocumentModeAsserter.java:27: * rendering mode is of of the values allowed by the On 2011/05/04 14:37:57, jlabanca wrote: /r/of of/one of Done. http://gwt-code-reviews.appspot.com/1422816/diff/1/user/src/com/google/gwt/user/rebind/DocumentModeGenerator.java File user/src/com/google/gwt/user/rebind/DocumentModeGenerator.java (right): http://gwt-code-reviews.appspot.com/1422816/diff/1/user/src/com/google/gwt/user/rebind/DocumentModeGenerator.java#newcode49 user/src/com/google/gwt/user/rebind/DocumentModeGenerator.java:49: logger.log(TreeLogger.ERROR, OOPS, e); On 2011/05/04 14:37:57, jlabanca wrote: Maybe something better than OOPS Done. http://gwt-code-reviews.appspot.com/1422816/diff/1/user/src/com/google/gwt/user/rebind/DocumentModeGenerator.java#newcode57 user/src/com/google/gwt/user/rebind/DocumentModeGenerator.java:57: JClassType remoteService = typeOracle.findType(typeName); On 2011/05/04 14:37:57, jlabanca wrote: Isn't removeService the same as userType? YES! Fixed. http://gwt-code-reviews.appspot.com/1422816/diff/1/user/src/com/google/gwt/user/rebind/DocumentModeGenerator.java#newcode76 user/src/com/google/gwt/user/rebind/DocumentModeGenerator.java:76: logger.log(TreeLogger.WARN, Unable to find value for ' On 2011/05/04 14:37:57, jlabanca wrote: If we are going to throw an exception, this should be an ERROR instead of a WARN Done. http://gwt-code-reviews.appspot.com/1422816/diff/1/user/src/com/google/gwt/user/rebind/DocumentModeGenerator.java#newcode103 user/src/com/google/gwt/user/rebind/DocumentModeGenerator.java:103: sw.println(\ + iterator.next() + \, ); On 2011/05/04 14:37:57, jlabanca wrote: This array will always end with a comma. Does Java handle that correctly? return new String[]{a,b,}; Yes http://gwt-code-reviews.appspot.com/1422816/ -- http://groups.google.com/group/Google-Web-Toolkit-Contributors
[gwt-contrib] Cell design fail
Dear GWT team, Once again I feel this unbearable need to complain about your API design choices. I have been trying to implement a custom CellTree, delving into your sources and man I am left astonished with the level of over-engineering and IMHO horrible code organization! I think you often make a mistake of trying to fight complexity by throwing more code at it. I am in no way affiliated with the Sencha guys, but I'd urge you to take a good look at their architecture and equivalent widget implementations. They are beautiful like a poem! They are economical, clear to read and understand. This is a friendly message. I just want my GWT lean 'n mean! Dimitris -- http://groups.google.com/group/Google-Web-Toolkit-Contributors