<!--
  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.animation.Animation"/>
  <inherits name="com.google.gwt.canvas.Canvas"/>
  <inherits name="com.google.gwt.core.Core"/>
  <inherits name="com.google.gwt.debug.DebugBase"/>
  <inherits name='com.google.gwt.dom.builder.DomBuilder'/>
  <inherits name="com.google.gwt.editor.Editor" />
  <inherits name="com.google.gwt.event.Event"/>
  <inherits name="com.google.gwt.geolocation.Geolocation" />
  <inherits name="com.google.gwt.i18n.I18N"/>
  <inherits name="com.google.gwt.layout.Layout"/>
  <inherits name="com.google.gwt.media.Media"/>
  <inherits name="com.google.gwt.resources.Resources"/>
  <inherits name="com.google.gwt.safecss.SafeCss" />
  <inherits name="com.google.gwt.safehtml.SafeHtml" />
  <inherits name="com.google.gwt.storage.Storage" />
  <inherits name="com.google.gwt.text.Text"/>
  <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.CaptionPanel" />
  <inherits name="com.google.gwt.user.cellview.CellView"/>
  <inherits name="com.google.gwt.user.ClippedImage"/>
  <inherits name="com.google.gwt.user.datepicker.DatePicker"/>
  <inherits name="com.google.gwt.user.DocumentMode"/>
  <inherits name="com.google.gwt.user.DocumentRoot" />
  <inherits name="com.google.gwt.user.DOM"/>
  <inherits name="com.google.gwt.user.FileUpload"/>
  <inherits name="com.google.gwt.user.Focus"/>
  <inherits name="com.google.gwt.user.Form"/>
  <inherits name="com.google.gwt.user.History"/>
  <inherits name="com.google.gwt.user.HTMLTable"/>
  <inherits name="com.google.gwt.user.HTTPRequest"/>
  <inherits name="com.google.gwt.user.Hyperlink"/>
  <inherits name="com.google.gwt.user.ImageBundle"/>
  <inherits name="com.google.gwt.user.Popup"/>
  <inherits name="com.google.gwt.user.RemoteService"/>
  <inherits name="com.google.gwt.user.ResizeLayoutPanel"/>
  <inherits name="com.google.gwt.user.RichText"/>
  <inherits name="com.google.gwt.user.Scroll"/>
  <inherits name="com.google.gwt.user.SplitPanel"/>
  <inherits name="com.google.gwt.user.TextBox"/>
  <inherits name="com.google.gwt.user.Tree"/>
  <inherits name="com.google.gwt.user.Window" />
  <inherits name="com.google.gwt.widget.Widget"/>

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