<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">
<html xmlns="http://www.w3.org/1999/xhtml"><head>
      <meta http-equiv="content-type" content="text/html; charset=utf-8">
      <title>Google Web Toolkit @GWT_VERSION@</title>
      
      <style>
         body {
            background-color: white;
            color: black;
            font-family: Arial, sans-serif;
            font-size: small;
            margin: 20px;
         }

         li {
            margin-bottom: 0.5em;
         }

         li div {
            margin-top: 0.2em;
         }

         code {
            font-size: medium;
         }
      </style></head>

   <body>
      <h1>Google Web Toolkit @GWT_VERSION@</h1>
      Thanks for using Google Web Toolkit. 
      We hope you'll have as much fun using it as we have working on it. 
      <p>
         See you online!
      </p>
      <p>
         <i>-- The Google Web Toolkit Team</i>
      </p>

      <h2>Resources</h2>
      <p>Ajax is hard.  But you're not alone!</p>
      <ul>
         <li>
            <a href="http://code.google.com/webtoolkit/doc/1.6/ReleaseNotes_1_6.html">What's new in GWT 1.6?</a> (online)
            <div>
              <a href="release_notes.html">Point releases notes</a> are also included in the distribution.
            </div>
         </li>
         <li>
            <a href="http://code.google.com/webtoolkit/">Google Web Toolkit Home</a> (online)
            <div>
               The big picture.
            </div>
         </li>
         <li>
            <a href="http://groups.google.com/group/Google-Web-Toolkit">Developer Forum</a> (online)
            <div>
               The Developer Forum is the best place to go to discuss GWT, ask or
               answer questions, report bugs, and sync up with other developers. The
               Google Web Toolkit team and other Googlers are active participants in
               the group.
            </div>
         </li>
         <li>
            <a href="http://googlewebtoolkit.blogspot.com/">Google Web Toolkit Blog</a> (online)
            <div>
               Stay up-to-date on the latest goings on.  As new stuff is available, we'll let you know here.
            </div>
         </li>
         <li>
            <a href="http://code.google.com/webtoolkit/doc/1.6/FAQ.html">Frequently Asked Questions</a> (online)
            <div>
               Answers to the initial questions developers have about using GWT, including licensing, upgrades, and so on.
            </div>
         </li>
      </ul>
      <h2>Starting Points</h2>
      <ul>
         <li>
            <a href="http://code.google.com/webtoolkit/gettingstarted.html">Getting Started Guide</a> (online)
            <div>
               A step-by-step tutorial on creating your first app from scratch.
            </div>
         </li>
         <li>
            <a href="http://code.google.com/webtoolkit/doc/1.6/DevGuide.html">Developer Guide</a> (online)
            <div>
               The Developer Guide explains the key concepts in GWT.
            </div>
         </li>
         <li>
            <a href="http://code.google.com/webtoolkit/doc/1.6/RefWidgetGallery.html">
               Widget Gallery</a> (online)
            <div>
               Browse some of the built-in GWT widgets and panels.
            </div>
         </li>
         <li>
            <a href="http://code.google.com/webtoolkit/doc/1.6/RefCommandLineTools.html">Command-line 
               Tools</a> (online)
            <div>
               Scripts to help you get started with GWT projects.
            </div>
         </li>
         <li>
            <a href="doc/javadoc/index.html">API Reference</a>
            <div>
               The API documentation in standard Javadoc form.
            </div>
         </li>
      </ul>
      <h2>Samples</h2>
      The samples aren't really intended to wow you with mind-blowing flashiness.  
      Their purpose is to demonstrate the mechanics of different techniques you can use when building applications with GWT.
      <ul>
         <li>
            <a href="samples/Hello/war/Hello.html">Hello World</a>
            <div>
               The simplest application you can write with GWT.
            </div>
         </li>
         <li>
            <a href="samples/Showcase/war/Showcase.html">Showcase</a>
            <div>
               Complex UI illustrating Widgets in action.
            </div>
         </li>
         <li>
            <a href="samples/DynaTable/war/DynaTable.html">Dynamic Table</a>
            <div>
               How to take advantage of polymorphic RPC.
            </div>
         </li>
         <li>
            <a href="samples/Mail/war/Mail.html">Mail</a>
            <div>
               Look and feel similar to a traditional desktop application.
            </div>
         </li>
         <li>
            <a href="samples/JSON/war/JSON.html">JSON</a>
            <div>
               Interoperation with a JSON service.
            </div>
         </li>
         <li>
            <a href="samples/I18N/war/I18N.html">I18N</a>
            <div>
               A glimpse at GWT's internationalization facilities.
            </div>
         </li>
      </ul>

   </body></html>
