<!--
  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.
-->

<!-- Combines all user facilities into a single module for convenience.     -->
<!-- Most new code should inherit this module.                              -->
<!--                                                                        -->
<module>
   <inherits name="com.google.gwt.core.Core"/>
   <inherits name="com.google.gwt.event.Event"/>
   <inherits name="com.google.gwt.animation.Animation"/>
   <inherits name="com.google.gwt.resources.Resources"/>
   <inherits name="com.google.gwt.layout.Layout"/>
   <inherits name="com.google.gwt.user.AsyncProxy"/>
   <inherits name="com.google.gwt.user.RemoteService"/>
   <inherits name="com.google.gwt.user.DocumentRoot" />
   <inherits name="com.google.gwt.user.DOM"/>
   <inherits name="com.google.gwt.user.Window" />
   <inherits name="com.google.gwt.user.HTTPRequest"/>
   <inherits name="com.google.gwt.user.History"/>
   <inherits name="com.google.gwt.i18n.I18N"/>
   <inherits name="com.google.gwt.user.Popup"/>
   <inherits name="com.google.gwt.user.Form"/>
   <inherits name="com.google.gwt.user.TextBox"/>
   <inherits name="com.google.gwt.user.Focus"/>
   <inherits name="com.google.gwt.user.ImageBundle"/>  
   <inherits name="com.google.gwt.user.ClippedImage"/>
   <inherits name="com.google.gwt.user.RichText"/>
   <inherits name="com.google.gwt.user.SplitPanel"/>
   <inherits name="com.google.gwt.user.CaptionPanel" />
   <inherits name="com.google.gwt.user.Window" />
   <inherits name="com.google.gwt.user.Tree"/>
   <inherits name="com.google.gwt.user.Hyperlink"/>
   <inherits name="com.google.gwt.user.FileUpload"/>
   <inherits name="com.google.gwt.user.datepicker.DatePicker"/>

   <super-source path="translatable"/>
   <source path="client"/>
</module>
