<!--
  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.canvas.Canvas"/>
   <inherits name="com.google.gwt.core.Core"/>
   <inherits name="com.google.gwt.text.Text"/>
   <inherits name="com.google.gwt.event.Event"/>
   <inherits name="com.google.gwt.animation.Animation"/>
   <inherits name="com.google.gwt.editor.Editor" />
   <inherits name="com.google.gwt.resources.Resources"/>
   <inherits name="com.google.gwt.layout.Layout"/>
   <inherits name="com.google.gwt.media.Media"/>
   <inherits name="com.google.gwt.touch.Touch"/>
   <inherits name="com.google.gwt.uibinder.UiBinder"/>
   <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.ResizeLayoutPanel"/>
   <inherits name="com.google.gwt.user.ScrollPanel"/>
   <inherits name="com.google.gwt.user.datepicker.DatePicker"/>
   <inherits name="com.google.gwt.user.cellview.CellView"/>
   <inherits name="com.google.gwt.safehtml.SafeHtml" />
   <inherits name="com.google.gwt.storage.Storage" />

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

