<!--
  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.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.datepicker.DatePicker"/>
   <inherits name="com.google.gwt.user.cellview.CellView"/>
   <inherits name="com.google.gwt.safehtml.SafeHtml" />

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

