Merging releases/1.5@2941:2990 trunk.

svn merge -r2941:2990 https://google-web-toolkit.googlecode.com/svn/releases/1.5 .

Review by: spoon (desk)


git-svn-id: https://google-web-toolkit.googlecode.com/svn/trunk@2992 8db76d5a-ed1c-0410-87a9-c151d255dfc7
diff --git a/dev/core/src/com/google/gwt/core/ext/linker/impl/HostedModeTemplate.js b/dev/core/src/com/google/gwt/core/ext/linker/impl/HostedModeTemplate.js
index a0d8600..456e5da 100644
--- a/dev/core/src/com/google/gwt/core/ext/linker/impl/HostedModeTemplate.js
+++ b/dev/core/src/com/google/gwt/core/ext/linker/impl/HostedModeTemplate.js
@@ -449,6 +449,9 @@
       unload();
     } finally {
       oldOnUnload && oldOnUnload(evt);
+      $wnd.onresize = null;
+      $wnd.onbeforeunload = null;
+      $wnd.onunload = null;
     }
   };
 };
diff --git a/dev/core/src/com/google/gwt/core/linker/IFrameTemplate.js b/dev/core/src/com/google/gwt/core/linker/IFrameTemplate.js
index 3e99a45..64bba8f 100644
--- a/dev/core/src/com/google/gwt/core/linker/IFrameTemplate.js
+++ b/dev/core/src/com/google/gwt/core/linker/IFrameTemplate.js
@@ -417,6 +417,9 @@
       unload();
     } finally {
       oldOnUnload && oldOnUnload(evt);
+      $wnd.onresize = null;
+      $wnd.onbeforeunload = null;
+      $wnd.onunload = null;
     }
   };
 };
diff --git a/dev/core/src/com/google/gwt/core/linker/SingleScriptTemplate.js b/dev/core/src/com/google/gwt/core/linker/SingleScriptTemplate.js
index 179d0ba..d4b02f5 100644
--- a/dev/core/src/com/google/gwt/core/linker/SingleScriptTemplate.js
+++ b/dev/core/src/com/google/gwt/core/linker/SingleScriptTemplate.js
@@ -301,6 +301,9 @@
       unload();
     } finally {
       oldOnUnload && oldOnUnload(evt);
+      $wnd.onresize = null;
+      $wnd.onbeforeunload = null;
+      $wnd.onunload = null;
     }
   };
 };
diff --git a/dev/core/src/com/google/gwt/core/linker/XSTemplate.js b/dev/core/src/com/google/gwt/core/linker/XSTemplate.js
index 24bcb8a..cdc993c 100644
--- a/dev/core/src/com/google/gwt/core/linker/XSTemplate.js
+++ b/dev/core/src/com/google/gwt/core/linker/XSTemplate.js
@@ -375,6 +375,9 @@
       unload();
     } finally {
       oldOnUnload && oldOnUnload(evt);
+      $wnd.onresize = null;
+      $wnd.onbeforeunload = null;
+      $wnd.onunload = null;
     }
   };
 };
diff --git a/distro-source/core/src/gwt-module.dtd b/distro-source/core/src/gwt-module.dtd
index 4a6c21c..1baa502 100644
--- a/distro-source/core/src/gwt-module.dtd
+++ b/distro-source/core/src/gwt-module.dtd
@@ -32,7 +32,7 @@
 	path CDATA #REQUIRED
 		includes CDATA #IMPLIED
 		excludes CDATA #IMPLIED
-		defaultexclude (yes | no) "yes"
+		defaultexcludes (yes | no) "yes"
 		casesensitive (true | false) "true"
 >
 <!-- Specify the public resource path, relative to the classpath location of the module descriptor -->
@@ -41,7 +41,7 @@
 	path CDATA #REQUIRED
 		includes CDATA #IMPLIED
 		excludes CDATA #IMPLIED
-		defaultexclude (yes | no) "yes"
+		defaultexcludes (yes | no) "yes"
 		casesensitive (true | false) "true"
 >
 <!-- Specify a source path that rebases subpackages into the root namespace -->
@@ -50,7 +50,7 @@
 	path CDATA #REQUIRED
 		includes CDATA #IMPLIED
 		excludes CDATA #IMPLIED
-		defaultexclude (yes | no) "yes"
+		defaultexcludes (yes | no) "yes"
 		casesensitive (true | false) "true"
 >
 <!ELEMENT include EMPTY>
diff --git a/samples/mail/src/com/google/gwt/sample/mail/client/Mailboxes.java b/samples/mail/src/com/google/gwt/sample/mail/client/Mailboxes.java
index 4235285..f0e852d 100644
--- a/samples/mail/src/com/google/gwt/sample/mail/client/Mailboxes.java
+++ b/samples/mail/src/com/google/gwt/sample/mail/client/Mailboxes.java
@@ -93,6 +93,6 @@
    * @return the resultant HTML
    */
   private String imageItemHTML(AbstractImagePrototype imageProto, String title) {
-    return "<span>" + imageProto.getHTML() + title + "</span>";
+    return imageProto.getHTML() + " " + title;
   }
 }
diff --git a/samples/mail/src/com/google/gwt/sample/mail/public/Mail.css b/samples/mail/src/com/google/gwt/sample/mail/public/Mail.css
index 78f93ea..2d045a4 100644
--- a/samples/mail/src/com/google/gwt/sample/mail/public/Mail.css
+++ b/samples/mail/src/com/google/gwt/sample/mail/public/Mail.css
@@ -62,20 +62,15 @@
 .gwt-Tree {
 }
 
-.gwt-Tree .gwt-TreeItem span * {
-  margin: 0 4px;
-}
-
 .gwt-Tree .gwt-TreeItem {
   font-size: 80%;
-  cursor: default;
+  padding: 1px 3px 0 3px;
+  cursor: hand;
+  cursor: pointer;
+  display: block !important;
 }
 
-.gwt-Tree .gwt-TreeItem span {
-  padding: 2px 0;
-}
-
-.gwt-Tree .gwt-TreeItem-selected span {
+.gwt-Tree .gwt-TreeItem-selected {
   background: #ccc;
 }
 
diff --git a/samples/showcase/src/com/google/gwt/sample/showcase/client/ShowcaseConstants_ar.properties b/samples/showcase/src/com/google/gwt/sample/showcase/client/ShowcaseConstants_ar.properties
index 8d02ac8..d1f2a69 100644
--- a/samples/showcase/src/com/google/gwt/sample/showcase/client/ShowcaseConstants_ar.properties
+++ b/samples/showcase/src/com/google/gwt/sample/showcase/client/ShowcaseConstants_ar.properties
@@ -210,11 +210,11 @@
 cwVerticalSplitPanelDescription = اعطاء المستخدم حرية توزيع الفضاء باستخدام لوحة الانقسام
 cwVerticalSplitPanelText = هذا النص عبارة عن مثال لتوضيح انسياب النص على كل جانب من الفاصل.
 
-# TODO: machine translated
+# TODO: sort new translation below into the file
 cwAnimationName = الرسوم المتحركه
-cwAnimationDescription = تحريك طلبك في الوقت المناسب مع الآثار.
-cwAnimationStart = يبدأ
+cwAnimationDescription = تحريك التطبيق بمؤثرات  موقوتة.
+cwAnimationStart = البدء
 cwAnimationCancel = الغاء
 cwAnimationOptions = خيارات الرسوم المتحركه
-cwDecoratorPanelName = الفريق النقاش
-cwDecoratorPanelDescription = اضافة الى مقربة اركان القطعه باستخدام اي فريق النقاش.
+cwDecoratorPanelName = لوح الزخرفة
+cwDecoratorPanelDescription = اضافة زوايا مدورة لأي ودجة باستخدام لوح الزخرفة.
\ No newline at end of file
diff --git a/samples/showcase/src/com/google/gwt/sample/showcase/client/ShowcaseConstants_fr.properties b/samples/showcase/src/com/google/gwt/sample/showcase/client/ShowcaseConstants_fr.properties
index 1f170f0..a56cbc2 100644
--- a/samples/showcase/src/com/google/gwt/sample/showcase/client/ShowcaseConstants_fr.properties
+++ b/samples/showcase/src/com/google/gwt/sample/showcase/client/ShowcaseConstants_fr.properties
@@ -1,15 +1,15 @@
 mainMenuTitle = Exemples GWT
 mainSubTitle = Présentation des fonctionnalités
-mainTitle = Outils Google Web Toolkit
+mainTitle = Google Web Toolkit
 mainLinkHomepage = Page d'accueil de GWT
 mainLinkExamples = Autres exemples
 
 categoryI18N = Internationalisation
 categoryLists = Listes et menus
 categoryOther = Autres fonctions
-categoryPanels = Volets
+categoryPanels = Panneaux
 categoryPopups = Fenêtres pop-up
-categoryTables = Tableaux
+categoryTables = Tables
 categoryTextInput = Saisie de texte
 categoryWidgets = Widgets
 
@@ -17,17 +17,22 @@
 contentWidgetSource = Code source
 contentWidgetStyle = Style CSS
 
-cwAbsolutePanelName = Absolute Groupe
-cwAbsolutePanelDescription = Une absolue panneau toutes les positions de ses enfants absolument, ce qui leur permet de se chevaucher.
+cwAbsolutePanelName = Panneau Absolu
+cwAbsolutePanelDescription = Un panneau absolu positionne chacun de ces enfants en utilisant des coordonnées absolues, ce qui leurs permet de s'imbriquer.
 cwAbsolutePanelClickMe = Cliquez-moi!
 cwAbsolutePanelHelloWorld = Hello World
-cwAbsolutePanelLeft = <b>Gauche:</b>
-cwAbsolutePanelItemsToMove = <b>Points de circuler:</b>
-cwAbsolutePanelTop = <b>Haut:</b>
+cwAbsolutePanelLeft = <b>Bord gauche:</b>
+cwAbsolutePanelItemsToMove = <b>Points à circuler:</b>
+cwAbsolutePanelTop = <b>Bord du dessus:</b>
 cwAbsolutePanelWidgetNames = Bonjour le monde, Button, Grid
+cwAnimationName = Animations
+cwAnimationDescription = Animez vos applications à l'aide d'effets règlés à interval de temps fixe.
+cwAnimationStart = Commencer
+cwAnimationCancel = Annuler
+cwAnimationOptions = Options d'animation
 cwBasicButtonName = Bouton basique
 cwBasicButtonDescription = Widgets de bouton basique
-cwBasicButtonClickMessage = Arrêtez de me titiller !
+cwBasicButtonClickMessage = Arrêtez de me tapoter!
 cwBasicButtonDisabled = Bouton désactivé
 cwBasicButtonNormal = Bouton normal
 cwBasicPopupName = Fenêtre pop-up basique
@@ -36,11 +41,11 @@
 cwBasicPopupInstructions = <b>Cliquez sur une image pour l'afficher à sa taille maximale:</b>
 cwBasicPopupShowButton = Afficher la fenêtre pop-up basique
 cwBasicTextName = Texte basique
-cwBasicTextDescription = GWT inclut les widgets de saisie de texte en complément standard, chacun de ces widgets prenant en charge les événements de clavier et de sélection que vous pouvez utiliser pour contrôler la saisie de texte. En particulier, notez que la plage de sélection pour chaque widget est mise à jour chaque fois que vous appuyez sur une touche.
+cwBasicTextDescription = GWT inclut le complément standard des widgets de saisie de texte, ou chacun de ceux-ci supportent les evenements du clavier et de selectionnement que vous pouvez utliliser pour contrôler la saisie de texte. En particulier, notez que la plage de sélection pour chaque widget est mise à jour chaque fois que vous appuyez sur une touche.
 cwBasicTextAreaLabel = <b>Zone de texte:</b>
 cwBasicTextNormalLabel = <b>Zone de texte normale:</b>
-cwBasicTextPasswordLabel = <b>Zone de texte Mot de passe:</b>
-cwBasicTextReadOnly = lecture seule
+cwBasicTextPasswordLabel = <b>Zone de texte <<mot de passe>>:</b>
+cwBasicTextReadOnly = lecture seulement
 cwBasicTextSelected = Sélectionné
 cwCheckBoxName = Case à cocher
 cwCheckBoxDescription = Widgets de case à cocher basique
@@ -48,53 +53,55 @@
 cwCheckBoxFemale = F
 cwCheckBoxMale = M
 cwCheckBoxUnknown = Inconnu (désactivé)
-cwConstantsExampleDescription = Interface Constantes permet de localiser des chaînes de caractères, des numéros et des cartes sur les chaînes de chaînes. Cet exemple n'est pas très passionnant, mais il ne montre comment localiser des constantes. Les étiquettes et le choix des couleurs ci-dessous sont fournies par l'application localisée de l'échantillon d'interface ExampleConstants.
+cwConstantsExampleDescription = Les Constantes d'Interfaces permet de localiser des chaînes de caractères, des numéros et des mappes qui mappent une chaine de caractères à une autre. Cet exemple n'est pas très passionnant, mais il nous montre comment localiser des constantes. Les étiquettes et le choix des couleurs ci-dessous sont fournies par l'application localisée de l'échantillon d'interface ExampleConstants.
 cwConstantsExampleName = Constantes
-cwConstantsExampleLinkText = Cet exemple interagit avec le clip de l'interface:
-cwConstantsWithLookupExampleDescription = Interface ConstantsWithLookup permet de rechercher dynamiquement localisés valeurs méthode utilisant des noms comme chaîne clés.
-cwConstantsWithLookupExampleLinkText = Cet exemple interagit avec le clip de l'interface:
+cwConstantsExampleLinkText = Cet exemple interagit avec l'échatillon de l'interface:
+cwConstantsWithLookupExampleDescription = L'Interface ConstantsWithLookup permet de rechercher dynamiquement des valeurs localisées en utilisant des méthodes des noms comme chaîne clés.
+cwConstantsWithLookupExampleLinkText = Cet exemple interagit avec l'échantillon de l'interface:
 cwConstantsWithLookupExampleMethodName = <b>Nom de la méthode:</b>
 cwConstantsWithLookupExampleName = Constantes Avec Lookup
-cwConstantsWithLookupExampleResults = <b>Lookup résultats:</b>
+cwConstantsWithLookupExampleResults = <b>Résultats du Lookup:</b>
 cwConstantsWithLookupExampleNoInput = <entrer un nom de méthode, s’il vous plaît>
-cwConstantsWithLookupExampleNoMatches = <Ne peut pas trouver>
+cwConstantsWithLookupExampleNoMatches = <Pas de résultats trouvés>
 cwCookiesName = Cookies
-cwCookiesDescription = Track utilisateurs avec facilité et la sauvegarde des données sur le client en utilisant les cookies.
+cwCookiesDescription = Traquez vos utilisateurs facilement et sauvegardez des données sur le client en utilisant des cookies.
 cwCookiesDeleteCookie = Supprimer
-cwCookiesExistingLabel = <b>Existant Cookies:</b>
+cwCookiesExistingLabel = <b>Cookies existants:</b>
 cwCookiesInvalidCookie = Vous devez indiquer un nom de cookie
 cwCookiesNameLabel = <b>Nom:</b>
-cwCookiesSetCookie = Sauver Cookie
+cwCookiesSetCookie = Sauvegarder Cookie
 cwCookiesValueLabel = <b>Valeur:</b>
 cwCustomButtonName = Bouton personnalisé
-cwCustomButtonDescription = Les boutons de commande et les boutons bascule vous permettent de personnaliser l'apparence de vos boutons
+cwCustomButtonDescription = Les boutons de commande et les boutons à bascule vous permettent de personnaliser l'apparence de vos boutons
 cwCustomButtonPush = <b>Boutons de commande:</b>
-cwCustomButtonToggle = <b>Boutons bascule:</b>
-cwDateTimeFormatName = Date Heure Format
-cwDateTimeFormatDescription = Catégorie DateTimeFormat soutient locale-specific sensibles formatage et l'analyse des valeurs date et l'heure, à l'instar de NumberFormat, au moyen d'un modèle souple fondée sur la syntaxe. Les deux modèles standard et personnalisés schémas sont pris en charge.
-cwDateTimeFormatFailedToParseInput = Impossible d'analyser la contribution
-cwDateTimeFormatFormattedLabel = <b>formatée valeur:</b>
-cwDateTimeFormatInvalidPattern = schéma incorrect
-cwDateTimeFormatPatternLabel = <b>Pattern:</b>
-cwDateTimeFormatPatterns = Full Date / Heure, Long Date / Heure, Moyen Date / Heure, Short Date / Heure, Full Date, Longue Date, Moyen Date, date courte, Full Time, Long Time, temps moyen, temps court, Custom
+cwCustomButtonToggle = <b>Boutons à bascule:</b>
+cwDateTimeFormatName = Format Date Heure
+cwDateTimeFormatDescription = La classe DateTimeFormat supporte un formatage et analyse des valeurs date et heure qui est sensible au locale de l'usager, par exemple la classe NumberFormat, au moyen d'un modèle souple fondée sur le patron de la syntaxe. Les deux modèles standard et personnalisés schéma sont supportés.
+cwDateTimeFormatFailedToParseInput = Impossible d'analyser les données saisies.
+cwDateTimeFormatFormattedLabel = <b>Valeur formattée:</b>
+cwDateTimeFormatInvalidPattern = Patron incorrect
+cwDateTimeFormatPatternLabel = <b>Patron:</b>
+cwDateTimeFormatPatterns = Date Complète / Heure, Date Longue / Heure, Date Moyenne / Heure, Date Courte / Heure, Date Complète, Date Longue, Date Moyenne, Date Courte, Temps Complet, Temps Long, Temps Moyen, Temps Court, Personnalisé
 cwDateTimeFormatValueLabel = <b>Valeur au format:</b>
 cwDecoratorPanelFormDescription = Description:
 cwDecoratorPanelFormName = Nom:
 cwDecoratorPanelFormTitle = Saisissez des critères de recherche
+cwDecoratorPanelName = Panneau décorateur
+cwDecoratorPanelDescription = Ajouter des coins arrondis à un Widget en utilisant le panneau décorateur.
 cwDialogBoxName = Boîte de dialogue
-cwDialogBoxDescription = La boîte de dialogue que vous pouvez faire glisser et déposer est similaire à une fenêtre et inclut une barre de titre. Vous pouvez régler l'opacité pour rendre visible une partie de l'arrière-plan à travers la fenêtre pop-up.
+cwDialogBoxDescription = La boîte de dialogue que vous pouvez faire glisser et déposer, est similaire à une fenêtre et inclut une barre de titre. Vous pouvez régler l'opacité pour rendre visible une partie de l'arrière-plan à travers la fenêtre pop-up.
 cwDialogBoxMakeTransparent = Ajouter de la transparence
 cwDialogBoxCaption = Exemple de boîte de dialogue
 cwDialogBoxClose = Fermer
 cwDialogBoxDetails = Ceci est un exemple de composant de boîte de dialogue standard.
 cwDialogBoxItem = élément
-cwDialogBoxListBoxInfo = Cette zone de liste montre que vous pouvez faire glisser une fenêtre pop-up devant elle. Ce problème complexe se répète pour de nombreuses autres bibliothèques.
+cwDialogBoxListBoxInfo = Cette zone de liste montre que vous pouvez faire glisser une fenêtre pop-up devant-elle. Ce problème complexe se répète pour de nombreuses autres bibliothèques.
 cwDialogBoxShowButton = Afficher la boîte de dialogue
 cwDictionaryExampleName = Dictionnaire
-cwDictionaryExampleDescription = Utilisation de la classe Dictionary, vous pouvez valeurs dans la recherche localisée objets JavaScript définies dans la page HTML hôte plutôt que de la compilation dans votre code de GWT. Cette option est utile si vos traductions changent fréquemment, car votre serveur HTML peuvent émettre à jour des traductions dans le HTML de la page d'accueil aussi souvent que nécessaire. Il peut également un moyen utile d'intégrer un module avec GWT existantes localisées des applications Web. Notez que les valeurs d'un dictionnaire dépendait que de la HTML de la page d'accueil et ne sont pas influencées par la localisation GWT les biens d'un client. Pour cet exemple, le code JavaScript Déclaration de la variable apparaît dans le code source de cette page HTML.
-cwDictionaryExampleLinkText = <b>Cet exemple interagit avec le JavaScript variables suivantes:</b>
-cwDisclosurePanelName = Volet de présentation
-cwDisclosurePanelDescription = Un volet de présentation affiche ou masque son contenu lorsque l'utilisateur clique sur le texte de son en-tête. Son contenu peut être un simple texte ou un widget, tel qu'une image ou des options avancées dans un formulaire.
+cwDictionaryExampleDescription = En utilisant la classe Dictionary, vous pouvez recherchez les valeurs localisées qui sont définis dans des objets JavaScript dans la page HTML hôte plutôt que de les compilés dans votre code GWT. Cette option est utile si vos traductions changent fréquemment, car votre serveur HTML peut mettre à jour les traductions dans le HTML de la page d'accueil aussi souvent que nécessaire. Cette class présente également un moyen d'intégrer un module GWT avec des applications existantes qui sont localisés. Notez que les valeurs d'un dictionnaire dépendent sur le HTML de la page d'accueil et ne sont pas influencées par la propriete de locale de GWT. Pour cet exemple, la déclaration des objets JavaScript apparait dans le code source de cette page HTML.
+cwDictionaryExampleLinkText = <b>Cet exemple interagit avec le JavaScript variable suivant:</b>
+cwDisclosurePanelName = Panneau de présentation
+cwDisclosurePanelDescription = Un panneau de présentation affiche ou masque son contenu lorsque l'utilisateur clique sur le texte de son en-tête. Son contenu peut être un simple texte ou un widget, tel qu'une image ou des options avancées dans un formulaire.
 cwDisclosurePanelFormAdvancedCriteria = Critères avancés
 cwDisclosurePanelFormDescription = Description:
 cwDisclosurePanelFormGender = Sexe:
@@ -104,7 +111,7 @@
 cwDisclosurePanelFormTitle = <b>Saisissez des critères de recherche</b>
 cwDockPanelName = Panneau d'ancrage
 cwDockPanelDescription = Dans un panneau d'ancrage, le contenu est placé en fonction des points cardinaux.
-cwDockPanelCenter = Voici un <code>volet de défilement</code> situé au centre d'un <code>panneau d'ancrage</code>. Si des contenus relativement volumineux sont insérés au milieu de ce volet et si sa taille est définie, il prend la forme d'une zone dotée d'une fonction de défilement à l'intérieur de la page, sans utilisation d'un IFRAME.<br><br>Voici un texte encore plus obscur qui va surtout servir à faire défiler cet élément jusqu'en bas de sa zone visible. Sinon, il vous faudra réduire ce volet à une taille minuscule pour pouvoir afficher ces formidables barres de défilement !
+cwDockPanelCenter = Voici un <code>panneau de défilement</code> situé au centre d'un <code>panneau d'ancrage</code>. Si des contenus relativement volumineux sont insérés au milieu de ce panneau à défilement et si sa taille est définie, il prend la forme d'une zone dotée d'une fonction de défilement à l'intérieur de la page, sans l'utilisation d'un IFRAME.<br><br>Voici un texte encore plus obscur qui va surtout servir à faire défiler cet élément jusqu'en bas de sa zone visible. Sinon, il vous faudra réduire ce panneau à une taille minuscule pour pouvoir afficher ces formidables barres de défilement!
 cwDockPanelEast = Ceci est le composant est
 cwDockPanelNorth1 = Ceci est le premier composant nord
 cwDockPanelNorth2 = Ceci est le second composant nord
@@ -118,26 +125,26 @@
 cwFileUploadSuccessful = Fichier téléchargé!
 cwFileUploadButton = Envoyer un fichier
 cwFlexTableName = Tableau flexible
-cwFlexTableDescription = Le tableau flexible prend en charge des plages de lignes et des plages de colonnes, pour vous permettre de disposer les données de plusieurs façons.
+cwFlexTableDescription = Le tableau flexible prend en charge des plages de lignes et des plages de colonnes, pour vous permettre d'y disposer les données de plusieurs façons.
 cwFlexTableAddRow = Ajouter une ligne
 cwFlexTableDetails = Ceci est un tableau flexible qui prend en charge les <B>plages de colonne</B> et les <B>plages de ligne</B>. Vous pouvez l'utiliser pour mettre en forme votre page ou en tant que tableau réservé à un but précis.
 cwFlexTableRemoveRow = Supprimer une ligne
-cwFlowPanelName = Volet déroulant
-cwFlowPanelDescription = Dans un volet déroulant, le contenu défile de manière continue. Déplacez la barre de fractionnement pour voir comment le contenu est renvoyé à la ligne si nécessaire.
+cwFlowPanelName = Panneau déroulant
+cwFlowPanelDescription = Dans un panneau déroulant, le contenu défile de manière continue. Déplacez la barre de fractionnement pour voir comment le contenu est renvoyé à la ligne si nécessaire.
 cwFlowPanelItem = Élément
-cwFrameName = Frames
-cwFrameDescription = Intégrez le contenu d'autres sites dans votre page à l'aide de l'encadrement, d'une enveloppe autour d'un élément IFRAME.
-cwFrameSetLocation = emplacement défini
+cwFrameName = Cadres
+cwFrameDescription = Intégrez le contenu d'autres sites dans votre page à l'aide de l'encadrement, une enveloppe autour d'un élément IFRAME.
+cwFrameSetLocation = Fixez l'emplacement
 cwGridName = Grille
 cwGridDescription = Grille simple
-cwHorizontalPanelName = Volet horizontal
-cwHorizontalPanelDescription = Dans un volet horizontal, le contenu est aligné horizontalement sans qu'il puisse être renvoyé à la ligne. Redimensionnez la page pour voir comment le contenu conserve son alignement horizontal.
+cwHorizontalPanelName = Panneau horizontal
+cwHorizontalPanelDescription = Dans un panneau horizontal, le contenu est aligné horizontalement sans être renvoyé à la ligne. Redimensionnez la page pour voir comment le contenu conserve son alignement horizontal.
 cwHorizontalPanelButton = Bouton
-cwHorizontalSplitPanelName = Volet à fractionnement horizontal
+cwHorizontalSplitPanelName = Panneau à fractionnement horizontal
 cwHorizontalSplitPanelDescription = Donne aux utilisateurs la possibilité de décider de la manière dont l'espace doit être alloué.
-cwHorizontalSplitPanelText = Voici un texte permettant de voir comment le contenu situé de chaque côté de la barre de fractionnement défile.
+cwHorizontalSplitPanelText = Voici un texte permettant de voir comment le contenu situé de chaque côté de la barre de fractionnement se défile.
 cwHyperlinkName = Hyperlien
-cwHyperlinkDescription = Intégrer votre page avec les hyperliens pour naviguer dans les différentes sections. Créer des hyperliens histoire jetons, permettant aux utilisateurs de revenir à un état précédent en utilisant le bouton de retour du navigateur.
+cwHyperlinkDescription = Intégrer votre page avec les hyperliens pour naviguer à différentes sections. Les hyperliens créent des jetons d'histoire, permettant aux usagers de retourner à un état précédent en utilisant le bouton de retour du navigateur.
 cwHyperlinkChoose = <b>Choisir une section:</b>
 cwListBoxName = Zone de liste
 cwListBoxDescription = Zone de sélection et listes déroulantes intégrées
@@ -153,68 +160,59 @@
 cwMenuBarFileCategory = Fichier
 cwMenuBarFileOptions = Nouveau, Ouvrir, Fermer, Récent, Quitter
 cwMenuBarFileRecents = Pêcher dans le désert.txt, Comment apprivoiser un perroquet sauvage, L'élevage des émeus pour les nuls
-cwMenuBarGWTOptions = Télécharger, Exemples, Code source, GWT avec le programme
+cwMenuBarGWTOptions = Télécharger, Exemples, Code source, GWiTtez avec le programme
 cwMenuBarHelpCategory = Aide
-cwMenuBarHelpOptions = Contenu, Fortune cookie, À propos de GWT
-cwMenuBarPrompts = Merci d'avoir sélectionné une option de menu, Une sélection vraiment pertinente, N'avez-vous rien de mieux à faire que de sélectionner des options de menu ?, Essayez quelque chose d'autre, ceci n'est qu'un menu !, Un autre clic gaspillé
+cwMenuBarHelpOptions = Contenu, Biscuit de fortune, À propos de GWT
+cwMenuBarPrompts = Merci d'avoir sélectionné une option de menu, Une sélection vraiment pertinente, N'avez-vous rien de mieux à faire que de sélectionner des options de menu?, Essayez quelque chose d'autre, ceci n'est qu'un menu!, Un autre clic gaspillé
 cwMessagesExampleName = Messages
-cwMessagesExampleDescription = Interface Messages fournit un moyen de créer fortement typé paramétré messages qui sont vérifié conforme lors de la compilation.
-cwMessagesExampleArg0Label = <b>Paramètre (0):</b>
-cwMessagesExampleArg1Label = <b>Paramètre (1):</b>
-cwMessagesExampleArg2Label = <b>Paramètre (2):</b>
-cwMessagesExampleFormattedLabel = <b>formatée messages:</b>
-cwMessagesExampleLinkText = Cet exemple interagit avec le clip de l'interface:
+cwMessagesExampleDescription = Les Message d'Interfaces fournissent un moyen de créer des messages fortement-typés et paramétrés qui sont verifiés lors de la compilation pour assurés qu'ils sont corrects.
+cwMessagesExampleArg0Label = <b>Paramètre {0}:</b>
+cwMessagesExampleArg1Label = <b>Paramètre {1}:</b>
+cwMessagesExampleArg2Label = <b>Paramètre {2}:</b>
+cwMessagesExampleFormattedLabel = <b>Valeur formattée:</b>
+cwMessagesExampleLinkText = Cet exemple interagit avec l'échantillon de l'interface:
 cwMessagesExampleTemplateLabel = <b>Message modèle:</b>
-cwNumberFormatName = Nombre Format
-cwNumberFormatDescription = classe NumberFormat soutient locale-specific sensibles formatage et de l'analyse des chiffres au moyen d'un modèle souple fondée sur la syntaxe. En plus des modes de coutume, plusieurs modèles standards sont également disponibles pour la commodité.
-cwNumberFormatFailedToParseInput = Impossible d'analyser la contribution
-cwNumberFormatFormattedLabel = <b>formatée valeur:</b>
-cwNumberFormatInvalidPattern = schéma incorrect
-cwNumberFormatPatternLabel = <b>Pattern:</b>
-cwNumberFormatPatterns = décimales, la monnaie, la science, en pourcentage, Custom
+cwNumberFormatName = Format du Nombre
+cwNumberFormatDescription = La classe NumberFormat supporte un formatage et une analyse de chiffres qui sont sensibles au locale de l'usager au moyen d'un modèle souple fondée sur le patron de la syntaxe. En plus de models personalisés, plusieurs modèles standards sont également disponibles pour votre convenance.
+cwNumberFormatFailedToParseInput = Impossible d'analyser les données saisies.
+cwNumberFormatFormattedLabel = <b>Valeur formattée:</b>
+cwNumberFormatInvalidPattern = Patron incorrect
+cwNumberFormatPatternLabel = <b>Patron:</b>
+cwNumberFormatPatterns = Décimales, devise, scientifique, pourcentage, personnalisé
 cwNumberFormatValueLabel = <b>Valeur au format:</b>
-cwRadioButtonName = Case d'option
-cwRadioButtonDescription = Widget de case d'option basique
+cwRadioButtonName = Bouton radio
+cwRadioButtonDescription = Widget de bouton radio basique
 cwRadioButtonColors = bleu, rouge, jaune, vert
 cwRadioButtonSelectColor = <b>Sélectionnez votre couleur préférée:</b>
 cwRadioButtonSelectSport = <b>Sélectionnez votre sport préféré:</b>
 cwRadioButtonSports = Base-ball, Basket-ball, Football, Hockey, Soccer, Water-polo
 cwRichTextName = Texte enrichi
-cwRichTextDescription = La zone de texte enrichi est prise en charge sur tous les navigateurs les plus courants. Normalement, cette zone adopte harmonieusement le niveau de fonctionnalité pris en charge par chacun d'entre eux.
+cwRichTextDescription = La zone de texte enrichie est supportée sur tous les navigateurs les plus courants. Normalement, cette zone adopte harmonieusement le niveau de fonctionnalité offert par les navigateurs qui supportent cette zone.
 cwStackPanelName = Stack Panel
-cwStackPanelDescription = Le StackPanel piles verticalement ses enfants, affichant seulement un à la fois, avec une tête pour chaque enfant dont l'utilisateur peut cliquer pour afficher. Cette option est utile pour les systèmes de menu verticale.
+cwStackPanelDescription = Le StackPanel piles verticalement ses enfants, affichant seulement un à la fois, avec une tête pour chaque enfant dont l'utilisateur peut cliquer pour défiler le panneau correspondant à l'en-tête. Cette option est utile pour les systèmes de menu verticale.
 cwStackPanelContactsHeader = Contacts
 cwStackPanelContacts = Benoit Mandelbrot, Albert Einstein, René Descartes, Bob Saget, Ludwig von Beethoven, Richard Feynman, Alan Turing, John de von Neumann
 cwStackPanelMailHeader = Mail
-cwStackPanelMailFolders = Boîte de réception, Brouillons, Templates, Sent, Trash
+cwStackPanelMailFolders = Boîte de réception, Brouillons, Formulaires, Messages envoyés, Corbeille
 cwStackPanelFiltersHeader = Filtres
-cwStackPanelFilters = Tous, Suivi, Lire, non lu, récemment, posté par moi
+cwStackPanelFilters = Tous, Suivi, Lus, Non lus, Récemment accédés, Postés par moi
 cwSuggestBoxName = Zone de suggestion
 cwSuggestBoxDescription = Permet de générer des suggestions par l'intermédiaire d'appels de procédure distante (RPC) au serveur ou de données statiques sur la page.
 cwSuggestBoxLabel = <b>Choisir un mot:</b>
 cwSuggestBoxWords = 1337, apple, about, ant, bruce, banana, bobv, canada, coconut, compiler, donut, deferred binding, dessert topping, eclair, ecc, frog attack, floor wax, fitz, google, gosh, gwt, hollis, haskell, hammer, in the flinks, internets, ipso facto, jat, jgw, java, jens, knorton, kaitlyn, kangaroo, la grange, lars, love, morrildl, max, maddie, mloofle, mmendez, nail, narnia, null, optimizations, obfuscation, original, ping pong, polymorphic, pleather, quotidian, quality, qu'est-ce que c'est, ready state, ruby, rdayal, subversion, superclass, scottb, tobyr, the dans, ~ tilde, undefined, unit tests, under 100ms, vtbl, vidalia, vector graphics, w3c, web experience, work around, w00t!, xml, xargs, xeno, yacc, yank (the vi command), zealot, zoe, zebra
-cwTabPanelName = Volet d'onglets
+cwTabPanelName = Panneau d'onglets
 cwTabPanelDescription = Permet de répartir le contenu en plusieurs onglets.
 cwTabPanelTab0 = Cliquez sur l'un des onglets pour afficher du contenu supplémentaire.
 cwTabPanelTab2 = Grâce au langage CSS, les onglets sont presque entièrement personnalisables.
 cwTabPanelTabs = Accueil, Logo GWT, Plus d'info
 cwTreeName = Arborescence
-cwTreeDescription = Le widget d'arborescence dynamique prend en charge le téléchargement allégé ("lazy loading") des données par le biais des appels de procédure distante au serveur.
+cwTreeDescription = Le widget d'arborescence dynamique prend en charge le téléchargement allégé ("lazy loading") des données par le biais des appels de procédure distants (RPC) au serveur.
 cwTreeDynamicLabel = <b>Arborescence dynamique:</b>
 cwTreeItem = Élément
 cwTreeStaticLabel = <b>Arborescence statique:</b>
-cwVerticalPanelName = Volet vertical
-cwVerticalPanelDescription = Dans un volet vertical, le contenu est aligné verticalement sans qu'il puisse être renvoyé à la ligne. Redimensionnez la page pour voir comment le contenu conserve son alignement vertical.
+cwVerticalPanelName = Panneau vertical
+cwVerticalPanelDescription = Dans un panneau vertical, le contenu est aligné verticalement sans être renvoyé à la ligne. Redimensionnez la page pour voir comment le contenu conserve son alignement vertical.
 cwVerticalPanelButton = Bouton
-cwVerticalSplitPanelName = Volet à fractionnement vertical
+cwVerticalSplitPanelName = Panneau à fractionnement vertical
 cwVerticalSplitPanelDescription = Donne aux utilisateurs la possibilité de décider de la manière dont l'espace doit être alloué.
-cwVerticalSplitPanelText = Voici un texte permettant de voir comment le contenu situé de chaque côté de la barre de fractionnement défile.
-
-# TODO: machine translated
-cwAnimationName = Animations
-cwAnimationDescription = Animez votre demande avec le temps les effets.
-cwAnimationStart = Commencer
-cwAnimationCancel = Annuler
-cwAnimationOptions = Animation Options
-cwDecoratorPanelName = Décorateur Groupe
-cwDecoratorPanelDescription = Ajouter des angles arrondis à un widget en utilisant les Décorateur Panneau de configuration..
+cwVerticalSplitPanelText = Voici un texte permettant de voir comment le contenu situé de chaque côté de la barre de fractionnement se défile.
diff --git a/samples/showcase/src/com/google/gwt/sample/showcase/client/ShowcaseConstants_zh.properties b/samples/showcase/src/com/google/gwt/sample/showcase/client/ShowcaseConstants_zh.properties
index 7cfc585..524c626 100644
--- a/samples/showcase/src/com/google/gwt/sample/showcase/client/ShowcaseConstants_zh.properties
+++ b/samples/showcase/src/com/google/gwt/sample/showcase/client/ShowcaseConstants_zh.properties
@@ -6,95 +6,95 @@
 
 categoryI18N =国际化
 categoryLists = 列表和菜单
-categoryOther =其它特点
+categoryOther =其它功能
 categoryPanels = 面板
 categoryPopups = 弹出式窗口
 categoryTables = 表
 categoryTextInput = 文本输入
-categoryWidgets = 窗口小部件
+categoryWidgets = 部件
 
 contentWidgetExample = 示例
 contentWidgetSource = 源代码
 contentWidgetStyle = CSS 样式
 
-cwAbsolutePanelName =绝对小组
-cwAbsolutePanelDescription =绝对小组职位,其所有子女,绝对让他们重叠。
+cwAbsolutePanelName = 绝对定位面板
+cwAbsolutePanelDescription = 绝对定位面板(AbsolutePanel)使用绝对坐标定位子部件,并允许他们重叠。
 cwAbsolutePanelClickMe =点击我!
 cwAbsolutePanelHelloWorld =你好世界
 cwAbsolutePanelLeft = <b>左:</b>
-cwAbsolutePanelItemsToMove = <b>项动议:</b>
+cwAbsolutePanelItemsToMove = <b>移动项目:</b>
 cwAbsolutePanelTop = <b>顶部:</b>
-cwAbsolutePanelWidgetNames =你好世界, 按钮, 并网
-cwBasicButtonName = 基本按钮
-cwBasicButtonDescription = 基本按钮窗口小部件
+cwAbsolutePanelWidgetNames =你好世界, 按钮, 网格
+cwBasicButtonName = 简单按钮
+cwBasicButtonDescription = 简单按钮部件
 cwBasicButtonClickMessage = 不要再点了!
-cwBasicButtonDisabled = 已停用按钮
+cwBasicButtonDisabled = 禁用按钮
 cwBasicButtonNormal = 常规按钮
-cwBasicPopupName = 基本弹出式窗口
+cwBasicPopupName = 简单弹出式窗口
 cwBasicPopupDescription = GWT 提供了创建自定义弹出式窗口的架构。
 cwBasicPopupClickOutsideInstructions = 点击此弹出式窗口外的任意位置可将其隐藏。
-cwBasicPopupInstructions = <b>点击图片可查看完整尺寸:</b>
-cwBasicPopupShowButton = 显示基本弹出式窗口
-cwBasicTextName = 基本文本
-cwBasicTextDescription = GWT 包含整套标准文本输入窗口小部件,每个小部件均支持控制文本输入所需的键盘和选择事件。 有一点请注意,各个窗口小部件的选择范围会在每次按键后更新。
+cwBasicPopupInstructions = <b>点击查看原尺寸图片:</b>
+cwBasicPopupShowButton = 显示简单弹出式窗口
+cwBasicTextName = 简单文本
+cwBasicTextDescription = GWT 包含整套标准文本输入部件,每个部件均支持文本输入所需的键盘和选择事件。 特别是每个部件的选择范围都会在每次按键后更新。
 cwBasicTextAreaLabel = <b>文本区域:</b>
 cwBasicTextNormalLabel = <b>常规文本框:</b>
 cwBasicTextPasswordLabel = <b>密码文本框:</b>
 cwBasicTextReadOnly = 只读
 cwBasicTextSelected = 已选择
 cwCheckBoxName = 复选框
-cwCheckBoxDescription = 复选框窗口基本小部件
+cwCheckBoxDescription = 简单复选框部件
 cwCheckBoxCheckAll = <b>选中所有适用内容:</b>
 cwCheckBoxFemale = 女
 cwCheckBoxMale = 男
-cwCheckBoxUnknown = 未知(已停用)
-cwConstantsExampleDescription =接口常量使人们有可能本地化字符串,数字,地图上的串上串。这个例子不是特别兴奋,但它确实表现如何本地化常数。标签和颜色的选择,下面是提供的本地化实施的抽样界面exampleconstants 。
+cwCheckBoxUnknown = 未知(已禁用)
+cwConstantsExampleDescription =常量接口(Constants)可以用来本地化字串,数字,字串到字串的映射表。这个例子也许并不特别有趣,但它演示了如何本地化常量。抽象界面ExampleConstants的本地化实现提供了标签文本和颜色选择 。
 cwConstantsExampleName =常量
-cwConstantsExampleLinkText =这个例子互动样本接口:
-cwConstantsWithLookupExampleDescription =接口constantswithlookup使人们有可能动态地看局部价值观使用方法的名称作为字符串键。
-cwConstantsWithLookupExampleLinkText =这个例子互动样本接口:
-cwConstantsWithLookupExampleMethodName = <b>名称的方法: </b>
-cwConstantsWithLookupExampleName =常量与查找
+cwConstantsExampleLinkText = 这个例子使用了示例接口:
+cwConstantsWithLookupExampleDescription =接口ConstantsWithLookup提供了使用字串键作为方法名动态查找本地化变量。
+cwConstantsWithLookupExampleLinkText = 这个例子使用了示例接口:
+cwConstantsWithLookupExampleMethodName = <b>方法名: </b>
+cwConstantsWithLookupExampleName = 常量查找
 cwConstantsWithLookupExampleResults = <b>查找结果: </b>
-cwConstantsWithLookupExampleNoInput = <请输入方法名以上>
+cwConstantsWithLookupExampleNoInput = <请在上面输入方法名>
 cwConstantsWithLookupExampleNoMatches = <未找到>
-cwCookiesName =曲奇
-cwCookiesDescription =跟踪用户轻松保存数据在客户端使用的cookies 。
+cwCookiesName = Cookie
+cwCookiesDescription =跟踪用户,使用的Cookie在客户端轻松保存数据 。
 cwCookiesDeleteCookie =删除
-cwCookiesExistingLabel = <b>现有饼干:</b>
-cwCookiesInvalidCookie = 您必须指定cookie的名称
-cwCookiesNameLabel = <b>姓名:</b>
-cwCookiesSetCookie = 定曲奇
-cwCookiesValueLabel = <b>价值:</b>
+cwCookiesExistingLabel = <b>现有Cookie:</b>
+cwCookiesInvalidCookie = 您必须指定Cookie的名称
+cwCookiesNameLabel = <b>名称:</b>
+cwCookiesSetCookie = 设置Cookie
+cwCookiesValueLabel = <b>值:</b>
 cwCustomButtonName = 自定义按钮
-cwCustomButtonDescription = PushButton 和 ToggleButton 可以让您自定义按钮的外观
-cwCustomButtonPush = <b>按动按钮:</b>
-cwCustomButtonToggle = <b>切换按钮:</b>
+cwCustomButtonDescription = PushButton 和 ToggleButton 可以用来自定义按钮的外观
+cwCustomButtonPush = <b>PushButton:</b>
+cwCustomButtonToggle = <b>ToggleButton:</b>
 cwDateTimeFormatName = 日期时间格式
-cwDateTimeFormatDescription =级datetimeformat支持位置敏感的格式化和解析日期和时间值,如numberformat ,用一种灵活的基于模式的语法。既定制模式和标准模式的支持。
-cwDateTimeFormatFailedToParseInput =无法解析投入
-cwDateTimeFormatFormattedLabel = <b>格式化价值: </b>
-cwDateTimeFormatInvalidPattern =无效格局
-cwDateTimeFormatPatternLabel = <b>格局: </b>
-cwDateTimeFormatPatterns =充分日期/时间, 只要日期/时间, 中, 日期/时间, 短日期/时间, 充分日期, 长日期, 中, 日, 短日期, 全部时间很长的时间, 中, 短的时间内, 风俗
-cwDateTimeFormatValueLabel = <b>价值格式: </b>
+cwDateTimeFormatDescription = DateTimeFormat类会根据区域的不同来格式化或解析日期和时间,如同NumberFormat类一样,使用一种灵活模式语法,支持定制模式和标准模式。
+cwDateTimeFormatFailedToParseInput =无法解析输入
+cwDateTimeFormatFormattedLabel = <b>格式化的值: </b>
+cwDateTimeFormatInvalidPattern =无效模板
+cwDateTimeFormatPatternLabel = <b>模板: </b>
+cwDateTimeFormatPatterns = 完全日期时间, 长日期时间, 中日期时间, 短日期时间, 完全日期, 长日期, 中日期, 短日期, 完全时间, 长时间, 中时间, 短时间, 自定义风俗
+cwDateTimeFormatValueLabel = <b>需要格式的值: </b>
 cwDecoratorPanelFormDescription = 说明:
-cwDecoratorPanelFormName = 姓名:
+cwDecoratorPanelFormName = 名:
 cwDecoratorPanelFormTitle = 输入搜索条件
 cwDialogBoxName = 对话框
-cwDialogBoxDescription = 可拖动的 DialogBox 类似于一个窗口,其中包括一个标题栏。  您可以调整为不透明状态,让部分背景透过弹出式窗口显示。
-cwDialogBoxMakeTransparent = 使透明
-cwDialogBoxCaption = DialogBox 示例
+cwDialogBoxDescription = 可拖动的对话框(DialogBox)类似于一个有标题栏的窗口。 这种窗口还支持一种半透明模式,让部分背景透过弹出式窗口。
+cwDialogBoxMakeTransparent = 使其半透明
+cwDialogBoxCaption = 对话框示例
 cwDialogBoxClose = 关闭
 cwDialogBoxDetails = 以下是一个标准对话框组件的示例。
 cwDialogBoxItem = 项目
 cwDialogBoxListBoxInfo = 此列表框演示了将弹出式窗口拖放到上面的情况。 对于其他许多库,这一模糊的边际情形都无法正确显示。
 cwDialogBoxShowButton = 显示对话框
 cwDictionaryExampleName =字典
-cwDictionaryExampleDescription =用字典一流的,你可以查找局部价值观javascript对象界定在东道国html网页,而不是编译成你的gwt代码。这是有益的,如果你的翻译经常变更的,因为你的html服务器可以排出更新翻译成所在页的html ,因为往往按需要发放。它也可以一个有益的途径,以整合gwt模块与现有的局域网络应用程序。得悉该辞典的价值观,仅仅依靠东道国页html的,而且不会受gwt现场客户财产。对于这个例子中, javascript的变量的声明看来,在源头上为这个html网页。
-cwDictionaryExampleLinkText = <b>这个例子相互作用,可与下列javascript的变量: </b>
-cwDisclosurePanelName = 显示面板
-cwDisclosurePanelDescription = 显示面板会在用户点击标题文字时显示或隐藏其中的内容。  该内容可以是简单的文本或任意窗口小部件,如图片或表单中的高级选项。
+cwDictionaryExampleDescription = 使用字典类,你可以查找在HTML网页定义的Javascript变量值。您不需要把这些变量放入GWT代码。有不少时候这样做有好处,比如你的翻译经常变更的,而你的html服务器不时更新翻译过的HTML网页。还比如可以用它来整合GWT模块与现有的网络应用程序。值得注意的是,字典的值是完全来自于作为宿主的HTML页面,而GWT的区域设置无法对其有任何影响。在这个例子中, Javascript的变量的声明是在HTML网页。
+cwDictionaryExampleLinkText = <b>这个例子使用下列Javascript的变量: </b>
+cwDisclosurePanelName = 公布面板
+cwDisclosurePanelDescription = 公布面板(DisclosurePanel)会在用户点击标题文字时显示或隐藏其内容。 该内容可以是简单的文本或任意部件,如图片或表单的高级选项。
 cwDisclosurePanelFormAdvancedCriteria = 高级条件
 cwDisclosurePanelFormDescription = 说明:
 cwDisclosurePanelFormGender = 性别:
@@ -104,50 +104,50 @@
 cwDisclosurePanelFormTitle = <b>输入搜索条件</b>
 cwDockPanelName = 停靠面板
 cwDockPanelDescription = 停靠面板会使用罗盘方向来对齐内容。
-cwDockPanelCenter = 以下为 <code>ScrollPanel</code>(位于 <code>DockPanel</code> 的中间位置)。  通过将一些篇幅较大的内容置于中间并设置精确的尺寸,可以将这些内容变成页面内的可滚动区域,而无需使用 IFRAME。<br><br>此处使用了相当多无意义的文字,主要是为了可以滚动至可视区域的底部。  否则,您恐怕不得不把它缩到非常非常之小,才能看到那小巧的滚动条。
+cwDockPanelCenter = 这个示例中在<code>DockPanel</code> 的中间位置有一个<code>ScrollPanel</code>。如果在中间放入很多内容,它就会变成页面内的可滚动区域,无需使用IFRAME。<br><br>此处使用了相当多无意义的文字,主要是为了可以滚动至可视区域的底部。否则,您恐怕不得不把它缩到很小才能看到那小巧的滚动条。
 cwDockPanelEast = 此为东侧组件
-cwDockPanelNorth1 = 此为北侧首个组件
+cwDockPanelNorth1 = 此为北侧第一个组件
 cwDockPanelNorth2 = 此为北侧第二个组件
-cwDockPanelSouth1 = 此为南侧首个组件
+cwDockPanelSouth1 = 此为南侧第一个组件
 cwDockPanelSouth2 = 此为南侧第二个组件
 cwDockPanelWest = 此为西侧组件
 cwFileUploadName = 文件上传
-cwFileUploadDescription = 使用 AJAX 文件上传异步上传文件。
-cwFileUploadNoFileError = 你必须选择一个要上传的档案
-cwFileUploadSelectFile = <b>选择一个档案:</b>
-cwFileUploadSuccessful = 文件上传!
+cwFileUploadDescription = 使用AJAX异步上传文件。
+cwFileUploadNoFileError = 你必须选择要上传的文件
+cwFileUploadSelectFile = <b>选择一个文件:</b>
+cwFileUploadSuccessful = 文件上传完毕!
 cwFileUploadButton = 上传文件
-cwFlexTableName = 伸缩表
-cwFlexTableDescription = 伸缩表支持行跨度和列跨度,以便您用多种方式来设置数据布局。
+cwFlexTableName = 灵活表
+cwFlexTableDescription = 灵活表(FlexTable)支持跨行和跨列,这就让您可以用多种方式来布局。
 cwFlexTableAddRow = 添加行
-cwFlexTableDetails = 这是一个可支持 <B>colspans</B> 和 <B>rowspans</B> 的 FlexTable。  您可以用它来设置页面格式或作为特殊用途的表。
+cwFlexTableDetails = 这是一个可支持 <B>colspans</B> 和 <B>rowspans</B> 的 FlexTable。  您可以用它来布局页面或作为其它特殊用途的表。
 cwFlexTableRemoveRow = 删除行
-cwFlowPanelName = 流动面板
-cwFlowPanelDescription = 流动面板可让其中的内容自然流动。  移动分隔条可查看内容如何根据需要换行。
+cwFlowPanelName = 自然布局面板
+cwFlowPanelDescription = 自然布局面板(FlowPanel)可让其中的内容自然布局。移动分隔条看看内容是如何根据需要换行的。
 cwFlowPanelItem = 项目
-cwFrameName =帧
-cwFrameDescription =嵌入内容从其他网站到您的网页使用框架,即包皮周围的iframe元素。
-cwFrameSetLocation =设置地点
+cwFrameName = 框
+cwFrameDescription = 框(Frame)是对IFRAME的封装,可以用来在您的网页嵌入其他网站的内容。
+cwFrameSetLocation =设定位置
 cwGridName = 网格
-cwGridDescription = 简单网格
+cwGridDescription = 网格(Grid)
 cwHorizontalPanelName = 水平面板
-cwHorizontalPanelDescription = 水平面板可横向对齐内容,而不必进行换行。  重新调整页面大小,查看内容如何保持水平对齐。
+cwHorizontalPanelDescription = 水平面板(HorizontalPanel)不用换行而横向对齐内容。改变页面大小,看看内容如何保持水平对齐。
 cwHorizontalPanelButton = 按钮
 cwHorizontalSplitPanelName = 水平拆分面板
-cwHorizontalSplitPanelDescription = 用户可通过此拆分面板自由决定如何分配空间。
-cwHorizontalSplitPanelText = 以下文字显示了分隔条两侧的内容是如何流动的。
+cwHorizontalSplitPanelDescription = 水平拆分面板(HorizontalSplitPanel)允许用户可自由决定如何分配空间。
+cwHorizontalSplitPanelText = 以下文字显示了分隔条两侧的内容是如何布局的。
 cwHyperlinkName =超链
-cwHyperlinkDescription =嵌入你的网页超连结,以导航到不同路段。超连结,才是创造世界历史的令牌,可以让用户恢复到原来的状态使用浏览器后退按钮。
+cwHyperlinkDescription =在网页中嵌入超连结(Hyperlink),就可以链接到到网页的不同栏目。超连结会同时会自动生成历史令牌,这样用户就可以用浏览器后退按钮恢复到过去的相应状态。
 cwHyperlinkChoose = <b>选择一个栏目:</b>
 cwListBoxName = 列表框
-cwListBoxDescription = 内置的选择框和下拉列表
+cwListBoxDescription = 预制的选择框和下拉列表
 cwListBoxCategories = 汽车, 体育, 度假景点
 cwListBoxSelectAll = <b>选择所有适用内容:</b>
 cwListBoxSelectCategory = <b>选择类别:</b>
-cwListBoxSports = 棒球, 篮球, 足球, 冰球, 长柄曲棍球, 马球, 足球, 垒球, 水球
+cwListBoxSports = 棒球, 篮球, 足球, 冰球, 曲棍球, 马球, 足球, 垒球, 水球
 cwListBoxVacations = 加勒比海, 迪斯尼乐园, 大峡谷, 巴黎, 意大利
 cwMenuBarName = 菜单栏
-cwMenuBarDescription = 菜单栏可用于浏览众多选项,  还可支持嵌套子菜单。
+cwMenuBarDescription = 菜单栏可用于遍历众多选项,还可支持嵌套子菜单。
 cwMenuBarEditCategory = 编辑
 cwMenuBarEditOptions = 撤消, 重复, 剪切, 复制, 粘贴
 cwMenuBarFileCategory = 文件
@@ -155,42 +155,42 @@
 cwMenuBarFileRecents = Fishing in the desert.txt, How to tame a wild parrot, Idiots Guide to Emu Farms
 cwMenuBarGWTOptions = 下载, 示例, 源代码, GWT 高手程序
 cwMenuBarHelpCategory = 帮助
-cwMenuBarHelpOptions = 内容, 幸运饼, 关于 GWT
+cwMenuBarHelpOptions = 内容, 幸运饼, 关于GWT
 cwMenuBarPrompts = 感谢您选择菜单项, 选得很不错, 除了选择菜单项之外难道没有更好的选择?, 试试别的吧, 这不过是个菜单而已!, 又浪费了一次点击
-cwMessagesExampleName =讯息
-cwMessagesExampleDescription =界面的信息提供了一种方式,以营造强烈型参数信息,是检查的正确性,在汇编。
-cwMessagesExampleArg0Label = <b>论点( 0 ): </b>
-cwMessagesExampleArg1Label = <b>论点( 1 ): </b>
-cwMessagesExampleArg2Label = <b>论点( 2 ): </b>
+cwMessagesExampleName = 消息
+cwMessagesExampleDescription = 消息(Messages)界面提供了一种具有严格参数类型的信息生成方式,在编译阶段可以检查的参数的正确性。
+cwMessagesExampleArg0Label = <b>论点(0): </b>
+cwMessagesExampleArg1Label = <b>论点(1): </b>
+cwMessagesExampleArg2Label = <b>论点(2): </b>
 cwMessagesExampleFormattedLabel = <b>格式化信息: </b>
-cwMessagesExampleLinkText =这个例子互动样本接口:
-cwMessagesExampleTemplateLabel = <b>讯息模板:</b>
-cwNumberFormatName =多少格式
-cwNumberFormatDescription =级numberformat支持位置敏感格式化与解析的号码使用一个灵活的基于模式的语法。除了定制模式,一些标准模式,也可方便使用。
-cwNumberFormatFailedToParseInput =无法解析投入
-cwNumberFormatFormattedLabel = <b>格式化价值:</b>
-cwNumberFormatInvalidPattern =无效格局
-cwNumberFormatPatternLabel = <b>格局:</b>
-cwNumberFormatPatterns =小数点, 货币, 科学,  % , 习俗
-cwNumberFormatValueLabel = <b>价值格式:</b>
+cwMessagesExampleLinkText =这个例子使用了示例接口:
+cwMessagesExampleTemplateLabel = <b>信息模板:</b>
+cwNumberFormatName =数字格式
+cwNumberFormatDescription = NumberFormat类使用一种模式语法可以根据区域的不同来格式化或解析数字串。除了自定义模式外,还有一些方便的标准预制模式。
+cwNumberFormatFailedToParseInput =无法解析输入
+cwNumberFormatFormattedLabel = <b>格式化值:</b>
+cwNumberFormatInvalidPattern =无效模板
+cwNumberFormatPatternLabel = <b>模板:</b>
+cwNumberFormatPatterns = 小数, 货币, 科学, 百分数, 自定义
+cwNumberFormatValueLabel = <b>需要格式的值:</b>
 cwRadioButtonName = 单选按钮
-cwRadioButtonDescription = RadioButton 窗口基本小部件
+cwRadioButtonDescription = 单选按钮部件
 cwRadioButtonColors = 蓝, 红, 黄, 绿
 cwRadioButtonSelectColor = <b>选择您喜欢的颜色:</b>
 cwRadioButtonSelectSport = <b>选择您喜欢的运动:</b>
 cwRadioButtonSports = 棒球, 篮球, 足球, 冰球, 足球, 水球
-cwRichTextName = 富文本
-cwRichTextDescription = 富文本区域可在所有主要浏览器中获得支持,且可轻松降级至各浏览器所支持的功能级别。
-cwStackPanelName =栈小组
-cwStackPanelDescription = stackpanel栈其子女纵向上,表现了,只有一个一个地,同一个头,为每名子女,其中,用户可以通过点击汇演。这是有益的垂直菜单系统。
-cwStackPanelContactsHeader =接触
-cwStackPanelContacts = benoit曼德尔布洛特, 爱因斯坦, 笛卡尔, 鲍勃saget, 路德维希冯贝多芬, 理查德费曼, 阿兰图灵, 约翰冯诺依曼
+cwRichTextName = 格式文本
+cwRichTextDescription = 主流浏览器基本都支持格式文本区域,但支持的程度并不同。GWT的格式文本部件可以自动调节到浏览器所能支持的程度。
+cwStackPanelName =栈面板
+cwStackPanelDescription = 栈面板(StackPanel)会纵向排列子部件,任意时刻只显示某一部件的内容,其他子部件则只显示其标题,用户可以通过点击标题切换。这是一种十分有用的垂直菜单系统。
+cwStackPanelContactsHeader = 通讯录
+cwStackPanelContacts = 曼德尔布洛特, 爱因斯坦, 笛卡尔, 萨吉特, 贝多芬, 费曼, 阿兰图灵, 冯诺依曼
 cwStackPanelMailHeader =邮件
-cwStackPanelMailFolders = 收件箱, 草稿, 范本, 发送, 垃圾桶
+cwStackPanelMailFolders = 收件箱, 草稿箱, 范本, 发送, 垃圾箱
 cwStackPanelFiltersHeader =过滤器
-cwStackPanelFilters =所有, 主演, 读, 未读, 最近, 派出由我
+cwStackPanelFilters = 所有, 重要, 读过, 未读过, 最近, 我发出的
 cwSuggestBoxName = 建议框
-cwSuggestBoxDescription = 通过对服务器进行的 RPC 调用或页面上的静态数据来生成建议
+cwSuggestBoxDescription = 通过服务器RPC调用或页面的静态数据来生成建议
 cwSuggestBoxLabel = <b>选择字词:</b>
 cwSuggestBoxWords = 1337, apple, about, ant, bruce, banana, bobv, canada, coconut, compiler, donut, deferred binding, dessert topping, eclair, ecc, frog attack, floor wax, fitz, google, gosh, gwt, hollis, haskell, hammer, in the flinks, internets, ipso facto, jat, jgw, java, jens, knorton, kaitlyn, kangaroo, la grange, lars, love, morrildl, max, maddie, mloofle, mmendez, nail, narnia, null, optimizations, obfuscation, original, ping pong, polymorphic, pleather, quotidian, quality, qu'est-ce que c'est, ready state, ruby, rdayal, subversion, superclass, scottb, tobyr, the dans, ~ tilde, undefined, unit tests, under 100ms, vtbl, vidalia, vector graphics, w3c, web experience, work around, w00t!, xml, xargs, xeno, yacc, yank (the vi command), zealot, zoe, zebra
 cwTabPanelName = 标签面板
@@ -199,22 +199,21 @@
 cwTabPanelTab2 = 标签可通过 CSS 实现高度自定义化。
 cwTabPanelTabs = 主页, GWT 徽标, 更多信息
 cwTreeName = 树
-cwTreeDescription = 动态树窗口小部件可通过对服务器进行 RPC 调用来支持数据的延迟加载
+cwTreeDescription = 动态树部件可通过对服务器进行RPC调用来实现数据的延迟加载
 cwTreeDynamicLabel = <b>动态树:</b>
 cwTreeItem = 项目
 cwTreeStaticLabel = <b>静态树:</b>
 cwVerticalPanelName = 垂直面板
-cwVerticalPanelDescription = 垂直面板可纵向对齐相关内容,而不必进行换行。  重新调整页面大小,查看内容如何保持垂直对齐。
+cwVerticalPanelDescription = 垂直面板(VerticalPanel)可以纵向对齐相关内容。改变页面大小,看看内容如何保持垂直对齐的。
 cwVerticalPanelButton = 按钮
 cwVerticalSplitPanelName = 垂直拆分面板
-cwVerticalSplitPanelDescription = 用户可通过此拆分面板自由决定如何分配空间。
+cwVerticalSplitPanelDescription = 垂直拆分面板(VerticalSplitPanel)允许用户自由决定如何分配空间。
 cwVerticalSplitPanelText = 以下文字显示了分隔条两侧的内容是如何流动的。
 
-# TODO: machine translated
-cwAnimationName = 動畫
-cwAnimationDescription = 動畫您的應用程序與時間的效果。
-cwAnimationStart = 開始
+cwAnimationName = 动画
+cwAnimationDescription = 动画使你的程序具备时间效果。
+cwAnimationStart = 开始
 cwAnimationCancel = 取消
-cwAnimationOptions = 動畫選項
-cwDecoratorPanelName = 裝飾面板
-cwDecoratorPanelDescription = 添加圓角任何的小裝置使用裝飾面板。
+cwAnimationOptions = 动画选项
+cwDecoratorPanelName = 装饰面板
+cwDecoratorPanelDescription = 装饰面板(DecoratorPanel)可以给任何部件添加圆角。
diff --git a/samples/showcase/src/com/google/gwt/sample/showcase/client/content/i18n/ErrorMessages_zh.properties b/samples/showcase/src/com/google/gwt/sample/showcase/client/content/i18n/ErrorMessages_zh.properties
index e479b39..ff9425d 100644
--- a/samples/showcase/src/com/google/gwt/sample/showcase/client/content/i18n/ErrorMessages_zh.properties
+++ b/samples/showcase/src/com/google/gwt/sample/showcase/client/content/i18n/ErrorMessages_zh.properties
@@ -14,4 +14,4 @@
 # the License.
 #
 
-permissionDenied = 用户''{0}''已安全过关''{1}''并不能获得''{2}''
+permissionDenied = 用户''{0}''只具备''{1}''安全级别,不允许访问''{2}''
diff --git a/user/src/com/google/gwt/user/client/Window.java b/user/src/com/google/gwt/user/client/Window.java
index 5768634..160b633 100644
--- a/user/src/com/google/gwt/user/client/Window.java
+++ b/user/src/com/google/gwt/user/client/Window.java
@@ -465,9 +465,6 @@
       },
       function() {
         @com.google.gwt.user.client.Window::onClosed()();
-        $wnd.onresize = null;
-        $wnd.onbeforeclose = null;
-        $wnd.onclose = null;
       }
     );
   }-*/;
diff --git a/user/src/com/google/gwt/user/client/ui/Frame.java b/user/src/com/google/gwt/user/client/ui/Frame.java
index 9a0994a..fcfa53e 100644
--- a/user/src/com/google/gwt/user/client/ui/Frame.java
+++ b/user/src/com/google/gwt/user/client/ui/Frame.java
@@ -24,7 +24,12 @@
  * <p>Note that if you are using {@link com.google.gwt.user.client.History}, any
  * browser history items generated by the Frame will interleave with your
  * application's history.</p>
- * 
+ *
+ * <h3>CSS Style Rules</h3>
+ * <ul class='css'>
+ * <li>.gwt-Frame { }</li>
+ * </ul>
+ *
  * <p>
  * <h3>Example</h3> {@example com.google.gwt.examples.FrameExample}
  * </p>
@@ -36,6 +41,7 @@
    */
   public Frame() {
     setElement(DOM.createIFrame());
+    setStyleName("gwt-Frame");
   }
 
   /**
diff --git a/user/src/com/google/gwt/user/client/ui/PopupPanel.java b/user/src/com/google/gwt/user/client/ui/PopupPanel.java
index 30be11d..589d6a7 100644
--- a/user/src/com/google/gwt/user/client/ui/PopupPanel.java
+++ b/user/src/com/google/gwt/user/client/ui/PopupPanel.java
@@ -18,7 +18,9 @@
 import com.google.gwt.animation.client.Animation;
 import com.google.gwt.core.client.GWT;
 import com.google.gwt.i18n.client.LocaleInfo;
+import com.google.gwt.user.client.Command;
 import com.google.gwt.user.client.DOM;
+import com.google.gwt.user.client.DeferredCommand;
 import com.google.gwt.user.client.Element;
 import com.google.gwt.user.client.Event;
 import com.google.gwt.user.client.EventPreview;
@@ -49,7 +51,7 @@
 public class PopupPanel extends SimplePanel implements SourcesPopupEvents,
     EventPreview, HasAnimation {
   /**
-   * The duration of the animation. 
+   * The duration of the animation.
    */
   private static final int ANIMATION_DURATION = 200;
 
@@ -106,7 +108,29 @@
       showing = panel.showing;
       curPanel = panel;
       if (animate) {
-        run(ANIMATION_DURATION);
+        // impl.onShow takes some time to complete, so we do it before starting
+        // the animation.  If we move this to onStart, the animation will look
+        // choppy or not run at all.
+        if (showing) {
+          // Set the position attribute, and then attach to the DOM. Otherwise,
+          // the PopupPanel will appear to 'jump' from its static/relative
+          // position to its absolute position (issue #1231).
+          DOM.setStyleAttribute(curPanel.getElement(), "position", "absolute");
+          if (curPanel.topPosition != -1) {
+            curPanel.setPopupPosition(curPanel.leftPosition,
+                curPanel.topPosition);
+          }
+          impl.setClip(curPanel.getElement(), getRectString(0, 0, 0, 0));
+          RootPanel.get().add(curPanel);
+          impl.onShow(curPanel.getElement());
+        }
+        
+        // Wait for the popup panel to be attached before running the animation
+        DeferredCommand.addCommand(new Command() {
+          public void execute() {
+            run(ANIMATION_DURATION);
+          }
+        });
       } else {
         onInstantaneousRun();
       }
@@ -125,19 +149,6 @@
 
     @Override
     protected void onStart() {
-      // Attach to the page
-      if (showing) {
-        // Set the position attribute, and then attach to the DOM. Otherwise,
-        // the PopupPanel will appear to 'jump' from its static/relative
-        // position to its absolute position (issue #1231).
-        DOM.setStyleAttribute(curPanel.getElement(), "position", "absolute");
-        if (curPanel.topPosition != -1) {
-          curPanel.setPopupPosition(curPanel.leftPosition, curPanel.topPosition);
-        }
-        impl.setClip(curPanel.getElement(), getRectString(0, 0, 0, 0));
-        RootPanel.get().add(curPanel);
-        impl.onShow(curPanel.getElement());
-      }
       offsetHeight = curPanel.getOffsetHeight();
       offsetWidth = curPanel.getOffsetWidth();
       DOM.setStyleAttribute(curPanel.getElement(), "overflow", "hidden");
diff --git a/user/src/com/google/gwt/user/client/ui/TreeItem.java b/user/src/com/google/gwt/user/client/ui/TreeItem.java
index 511a67d7..ac71ea3 100644
--- a/user/src/com/google/gwt/user/client/ui/TreeItem.java
+++ b/user/src/com/google/gwt/user/client/ui/TreeItem.java
@@ -54,6 +54,11 @@
     private boolean opening = true;
 
     /**
+     * The target height of the child items.
+     */
+    private int scrollHeight = 0;
+
+    /**
      * Open the specified {@link TreeItem}.
      * 
      * @param item the {@link TreeItem} to open
@@ -92,18 +97,31 @@
 
     @Override
     protected void onStart() {
+      scrollHeight = 0;
+      
+      // If the TreeItem is already open, we can get its scrollHeight
+      // immediately.
+      if (!opening) {
+        scrollHeight = curItem.childSpanElem.getScrollHeight();
+      }
       DOM.setStyleAttribute(curItem.childSpanElem, "overflow", "hidden");
+      
+      // If the TreeItem is already open, onStart will set its height to its
+      // natural height.  If the TreeItem is currently closed, onStart will set
+      // its height to 1px (see onUpdate below), and then we make the TreeItem
+      // visible so we can get its correct scrollHeight.
       super.onStart();
+      
+      // If the TreeItem is currently closed, we need to make it visible before
+      // we can get its height.
       if (opening) {
         UIObject.setVisible(curItem.childSpanElem, true);
+        scrollHeight = curItem.childSpanElem.getScrollHeight();
       }
     }
 
     @Override
     protected void onUpdate(double progress) {
-      int scrollHeight = DOM.getElementPropertyInt(curItem.childSpanElem,
-          "scrollHeight");
-
       int height = (int) (progress * scrollHeight);
       if (!opening) {
         height = scrollHeight - height;
diff --git a/user/src/com/google/gwt/user/rebind/rpc/SerializableTypeOracleBuilder.java b/user/src/com/google/gwt/user/rebind/rpc/SerializableTypeOracleBuilder.java
index 8d33377..b31aed9 100644
--- a/user/src/com/google/gwt/user/rebind/rpc/SerializableTypeOracleBuilder.java
+++ b/user/src/com/google/gwt/user/rebind/rpc/SerializableTypeOracleBuilder.java
@@ -956,19 +956,23 @@
       }
     }
 
-    // TODO: Figure out logLevel for canBeInstantiated
-    boolean isInstantiable = parametersOkay
+    // Check whether the type is field serializable
+    // TODO: Should we really continue if parametersOkay is false?
+    boolean isFieldSerializable = parametersOkay
         && shouldConsiderFieldsForSerialization(localLogger, baseType,
             isSpeculative)
-        && canBeInstantiated(localLogger, baseType, TreeLogger.WARN)
         && checkFields(localLogger, baseType, isSpeculative, path);
 
+    // TODO: Figure out logLevel for canBeInstantiated
+    boolean isInstantiable = isFieldSerializable
+        && canBeInstantiated(localLogger, baseType, TreeLogger.WARN);
+
     boolean anySubtypes = false;
     if (parametersOkay && baseType.getSubtypes().length > 0) {
       TreeLogger subtypesLogger = localLogger.branch(TreeLogger.DEBUG,
           "Analyzing subclasses:", null);
       anySubtypes = checkSubtypes(subtypesLogger, originalType, baseType,
-          instSubtypes, typeArgs, path, baseType, false, isInstantiable);
+          instSubtypes, typeArgs, path, baseType, false, isFieldSerializable);
     }
 
     anySubtypes |= isInstantiable;
diff --git a/user/src/com/google/gwt/user/theme/chrome/public/gwt/chrome/images/hborder.png b/user/src/com/google/gwt/user/theme/chrome/public/gwt/chrome/images/hborder.png
index 509eb1b..f11658c 100644
--- a/user/src/com/google/gwt/user/theme/chrome/public/gwt/chrome/images/hborder.png
+++ b/user/src/com/google/gwt/user/theme/chrome/public/gwt/chrome/images/hborder.png
Binary files differ
diff --git a/user/src/com/google/gwt/user/theme/chrome/public/gwt/chrome/images/vborder.png b/user/src/com/google/gwt/user/theme/chrome/public/gwt/chrome/images/vborder.png
index 36e4e85..b9f7ddc 100644
--- a/user/src/com/google/gwt/user/theme/chrome/public/gwt/chrome/images/vborder.png
+++ b/user/src/com/google/gwt/user/theme/chrome/public/gwt/chrome/images/vborder.png
Binary files differ
diff --git a/user/src/com/google/gwt/user/theme/dark/public/gwt/dark/images/hborder.png b/user/src/com/google/gwt/user/theme/dark/public/gwt/dark/images/hborder.png
index 42da1a0..ee96541 100644
--- a/user/src/com/google/gwt/user/theme/dark/public/gwt/dark/images/hborder.png
+++ b/user/src/com/google/gwt/user/theme/dark/public/gwt/dark/images/hborder.png
Binary files differ
diff --git a/user/src/com/google/gwt/user/theme/dark/public/gwt/dark/images/vborder.png b/user/src/com/google/gwt/user/theme/dark/public/gwt/dark/images/vborder.png
index 2177585..0fa3a07 100644
--- a/user/src/com/google/gwt/user/theme/dark/public/gwt/dark/images/vborder.png
+++ b/user/src/com/google/gwt/user/theme/dark/public/gwt/dark/images/vborder.png
Binary files differ
diff --git a/user/src/com/google/gwt/user/theme/standard/public/gwt/standard/images/hborder.png b/user/src/com/google/gwt/user/theme/standard/public/gwt/standard/images/hborder.png
index b4dbd96..1c8e78b 100644
--- a/user/src/com/google/gwt/user/theme/standard/public/gwt/standard/images/hborder.png
+++ b/user/src/com/google/gwt/user/theme/standard/public/gwt/standard/images/hborder.png
Binary files differ
diff --git a/user/src/com/google/gwt/user/theme/standard/public/gwt/standard/images/vborder.png b/user/src/com/google/gwt/user/theme/standard/public/gwt/standard/images/vborder.png
index 49605f1..435b816 100644
--- a/user/src/com/google/gwt/user/theme/standard/public/gwt/standard/images/vborder.png
+++ b/user/src/com/google/gwt/user/theme/standard/public/gwt/standard/images/vborder.png
Binary files differ
diff --git a/user/super/com/google/gwt/emul/java/util/Vector.java b/user/super/com/google/gwt/emul/java/util/Vector.java
index d0d58dd..a0e8748 100644
--- a/user/super/com/google/gwt/emul/java/util/Vector.java
+++ b/user/super/com/google/gwt/emul/java/util/Vector.java
@@ -1,5 +1,5 @@
 /*
- * Copyright 2007 Google Inc.
+ * 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
@@ -27,9 +27,15 @@
  */
 public class Vector<E> extends AbstractList<E> implements List<E>,
     RandomAccess, Cloneable, Serializable {
-
   private transient ArrayList<E> arrayList;
 
+  /**
+   * Ensures that RPC will consider type parameter E to be exposed. It will be
+   * pruned by dead code elimination.
+   */
+  @SuppressWarnings("unused")
+  private E exposeElement;
+
   public Vector() {
     arrayList = new ArrayList<E>();
   }
@@ -115,7 +121,7 @@
   }
 
   public void ensureCapacity(int capacity) {
-   arrayList.ensureCapacity(capacity);
+    arrayList.ensureCapacity(capacity);
   }
 
   public E firstElement() {
diff --git a/user/test/com/google/gwt/user/rebind/rpc/SerializableTypeOracleBuilderTest.java b/user/test/com/google/gwt/user/rebind/rpc/SerializableTypeOracleBuilderTest.java
index 9b6580d..8050a43 100644
--- a/user/test/com/google/gwt/user/rebind/rpc/SerializableTypeOracleBuilderTest.java
+++ b/user/test/com/google/gwt/user/rebind/rpc/SerializableTypeOracleBuilderTest.java
@@ -352,6 +352,59 @@
   }
 
   /**
+   * Tests abstract root types that are field serializable.
+   * 
+   * @throws UnableToCompleteException
+   * @throws NotFoundException
+   */
+  public void testAbstractFieldSerializableRootType()
+      throws UnableToCompleteException, NotFoundException {
+    Set<CompilationUnit> units = new HashSet<CompilationUnit>();
+    addStandardClasses(units);
+
+    {
+      StringBuilder code = new StringBuilder();
+      code.append("import java.io.Serializable;\n");
+      code.append("public abstract class A implements Serializable {\n");
+      code.append("}\n");
+      units.add(createMockCompilationUnit("A", code));
+    }
+
+    {
+      StringBuilder code = new StringBuilder();
+      code.append("import java.io.Serializable;\n");
+      code.append("public abstract class B extends A {\n");
+      code.append("}\n");
+      units.add(createMockCompilationUnit("B", code));
+    }
+
+    {
+      StringBuilder code = new StringBuilder();
+      code.append("import java.io.Serializable;\n");
+      code.append("public class C extends B {\n");
+      code.append("}\n");
+      units.add(createMockCompilationUnit("C", code));
+    }
+
+    TreeLogger logger = createLogger();
+    TypeOracle to = TypeOracleTestingUtils.buildTypeOracle(logger, units);
+
+    JClassType a = to.getType("A");
+    JClassType b = to.getType("B");
+    JClassType c = to.getType("C");
+
+    SerializableTypeOracleBuilder sob = new SerializableTypeOracleBuilder(
+        logger, to);
+    sob.addRootType(logger, b);
+    SerializableTypeOracle so = sob.build(logger);
+
+    assertInstantiable(so, c);
+    assertFieldSerializable(so, a);
+    assertFieldSerializable(so, b);
+    assertSerializableTypes(so, a, b, c);
+  }
+
+  /**
    * Tests that we do not violate java package restrictions when computing
    * serializable types.
    */