diff --git a/community.php b/community.php
new file mode 100755
index 0000000..5586d26
--- /dev/null
+++ b/community.php
@@ -0,0 +1,113 @@
+<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
+<html>
+<head>
+    <title>The SWT Community Page</title>
+    <meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1">
+    <link rel="stylesheet" href="http://dev.eclipse.org/default_style.css" type="text/css">
+    <link rel="stylesheet" href="swt.css" type="text/css">
+    <link rel="shortcut icon" href="http://www.eclipse.org/images/eclipse.ico" type="image/x-icon">
+</head>
+<body bgcolor="#ffffff" text="#000000">
+<table width="635px" style="border-bottom: 1px solid #000000;">
+<colgroup><col width="125px"><col width="510px"></colgroup>
+<tr><?php include "sidebar.php"; ?>
+<td valign="top" style="padding: 10px"><h1 style="padding: 0; margin: 0; border-bottom: 1px solid #000000;">The SWT Community Page</h1>
+
+<p>This page provides links to additional SWT ports, widgets, and applications
+maintained elsewhere in the community.  If you have a project and would like to
+see it listed here, please let us know on the
+<a href="http://dev.eclipse.org/mailman/listinfo/platform-swt-dev">SWT developer mailing list</a>.</p>
+
+<table width="100%">
+<tr><th bgcolor="#0080c0" align="left" style="padding: 2px;"><font color="#ffffff">Code and Bug Fixes</font>
+</table>
+
+<p>Many thanks to the <a href="contributors.txt">various people</a> who have
+contributed code and bug fixes to SWT.</p>
+
+<table width="100%">
+<tr><th bgcolor="#0080c0" align="left" style="padding: 2px;"><font color="#ffffff">Ports</font>
+</table>
+
+<p>Ivan Markov is working on a port of SWT to the
+<a href="http://www.fox-toolkit.org/">Fox Widget Toolkit</a>.</p>
+
+<ul>
+  <li>Homepage: <a href="http://swtfox.sf.net">http://swtfox.sf.net/</a></li>
+  <li>CVS: <a href="http://cvs.sourceforge.net/viewcvs.py/swtfox/">:pserver:anonymous@cvs.sourceforge.net:/cvsroot/swtfox</a></li>
+</ul>
+
+<p>Christopher Deckers is working on a port of SWT on top of the Swing widget
+toolkit.</p>
+
+<ul>
+  <li>Homepage: <a href="http://sourceforge.net/projects/swtswing">http://sourceforge.net/projects/swtswing/</a></li>
+  <li>CVS: <a href="http://cvs.sourceforge.net/viewcvs.py/swtswing/">:pserver:anonymous@cvs.sourceforge.net:/cvsroot/swtswing</a></li>
+</ul>
+
+<table width="100%">
+<tr><th bgcolor="#0080c0" align="left" style="padding: 2px;"><font color="#ffffff">Additional Widgets</font>
+</table>
+
+<ul>
+<li><b><a href="http://www.kupzog.de/fkmk_uk/Programming/Downloads/downloads.html">KTable Widget</a></b>
+    <i>by Friederich Kupzog</i>
+
+    <p>KTable is a custom drawn table widget for SWT that provides a flexible
+    grid of cells to display data.  It provides custom cell rendering, a variety of
+    selection modes and cell editing.</p>
+
+<li><b><a href="http://www.novocode.com/swt/">SWT Controls</a></b>
+    <i>by Novocode</i>
+
+    <p>A variety of controls such as FramedComposite, HyperLink,
+    LiveSashForm and SizeGrip developed using SWT graphics, events
+    and widgets.</p>
+
+<li><b><a href="http://sourceforge.net/projects/swt-datepicker/">SWT DatePicker widget</a></b>
+    <i>by Andrey Onistchuk and Sebastian</i>
+
+    <p>Emulated widgets that provide a date-picker panel and combo widget
+    with drop-down date-picker panel.</p>
+
+<li><b><a href="http://swtcalendar.sourceforge.net/">SWTCalendar widget</a></b>
+    <i>by Bryan Yu</i>
+
+    <p>SWTCalendar was designed to be a flexible component so a developer
+    can embed a date picker in their application or create their own
+    standalone date picker dialog.</p>
+</ul>
+
+<table width="100%">
+<tr><th bgcolor="#0080c0" align="left" style="padding: 2px;"><font color="#ffffff">Open Source SWT Applications</font>
+</table>
+
+<ul>
+<li><b><a href="http://azureus.sourceforge.net/">Azureus</a></b>
+
+    <p>Azureus is a featureful bittorrent client implementation written
+    in Java using SWT.</p>
+
+<li><b><a href="http://www.rssowl.org/">RSSOwl</a></b>
+
+    <p>RSSOwl is an RSS newsreader that lets you gather, organize, update, and
+    store information from any compliant source in a convenient, easy to use
+    interface, save selected information in various formats for offline viewing
+    and sharing, and much more.</p>
+
+<li><b><a href="http://sancho-gui.sourceforge.net/">sancho</a></b>
+
+    <p>sancho is a gui that connects to a p2p core application. Power users
+    that use p2p applications usually choose one that has core/gui separation.
+    sancho provides an easy to use, powerful, and configurable gui, currently
+    supporting the gui protocol of the popular mldonkey core.</p>
+
+<li><b><a href="http://sourceforge.net/projects/deinonychus/">Deinonychus</a></b>
+
+    <p>Deinonychus is an email client written in Java featuring a GUI built
+    with SWT. Supports MIME, IMAP, POP, and SMTP.</p>
+</ul>
+
+</table>  
+</body>
+</html>
diff --git a/docs.php b/docs.php
new file mode 100755
index 0000000..2a3d4da
--- /dev/null
+++ b/docs.php
@@ -0,0 +1,109 @@
+<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
+<html>
+<head>
+    <title>SWT Resources and Links</title>
+    <meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1">
+    <link rel="stylesheet" href="http://dev.eclipse.org/default_style.css" type="text/css">
+    <link rel="shortcut icon" href="http://www.eclipse.org/images/eclipse.ico" type="image/x-icon">
+</head>
+<body bgcolor="#ffffff" text="#000000">
+<table width="510px" style="border-bottom: 1px solid #000000;">
+<tr><td><h1 style="padding: 0; margin: 0; border-bottom: 1px solid #000000;">SWT Resources and Links</h1>
+
+<p>This page contains links and references to books, tutorials, and
+articles about SWT.</p>
+
+<table width="100%">
+<tr><th bgcolor="#0080c0" align="left" style="padding: 2px;"><font color="#ffffff">SWT in Books</font>
+</table>
+
+<p>SWT is in print in the following books.</p>
+
+<ul>
+   <li><a href="http://www.amazon.com/exec/obidos/tg/detail/-/0321256638/qid=1088631104/sr=8-3/ref=sr_8_xs_ap_i3_xgl14/104-7716812-0314361?v=glance&amp;s=books&amp;n=507846">
+       <em>"SWT: The Standard Widget Toolkit, Volume 1"</em></a> by Steve Northover and Mike Wilson</li>
+   <li><a href="http://www.amazon.com/exec/obidos/tg/detail/-/1590593251/qid=1088631104/sr=8-1/ref=pd_ka_1/104-7716812-0314361?v=glance&amp;s=books&amp;n=507846">
+       <em>"The Definitive Guide to SWT and JFace"</em></a> by Rob Warner and Robert Harris</li>
+   <li><a href="http://www.amazon.com/exec/obidos/ASIN/0321305027">
+       <em>"The Java Developer's Guide to Eclipse, Second Edition"</em></a> by Jim D'Anjou, Scott Fairbrother, Dan Kehn, John Kellerman, and Pat McCarthy (Chapter 14)</li>
+   <li><a href="http://www.amazon.com/exec/obidos/tg/detail/-/0321205758/qid=1075410339//ref=sr_8_xs_ap_i1_xgl14/002-9415319-6500833?v=glance&amp;s=books&amp;n=507846">
+       <em>"Contributing to Eclipse: Principles, Patterns, and Plugins"</em></a> by Erich Gamma and Kent Beck (Chapter 34)</li>
+   <li><a href="http://www.amazon.com/exec/obidos/tg/detail/-/1930110960/qid=1075410470//ref=sr_8_xs_ap_i1_xgl14/002-9415319-6500833?v=glance&amp;s=books&amp;n=507846">
+       <em>"Eclipse in Action: A Guide for the Java Developer"</em></a> by David Gallardo, Ed Burnette, and Robert McGovern (Appendix D)</li>
+</ul>
+
+<table width="100%">
+<tr><th bgcolor="#0080c0" align="left" style="padding: 2px;"><font color="#ffffff">SWT Documentation Inside Eclipse</font>
+</table>
+
+<p>The Eclipse Help system contains good solid documentation for SWT in
+the <em>Platform Plug-in Developer Guide</em>. To get there in Eclipse,
+select <strong>Help</strong> &gt; <strong>Help Contents</strong> &gt;
+<strong>Platform Plug-in Developer Guide</strong>.</p>
+
+<p>You can also get this document <a
+href="http://www.eclipse.org/documentation/main.html">in PDF
+format</a>.</p>
+
+<p>SWT documentation appears in the following sections of the
+<em>Platform Plug-in Developer Guide</em>:</p>
+<ul>
+  <li>Programmer's Guide: Standard Widget Toolkit</li>
+  <li>Reference: API Reference: org.eclipse.swt</li>
+  <li>Examples Guide: Standard Widget Toolkit</li>
+</ul>
+
+<table width="100%">
+<tr><th bgcolor="#0080c0" align="left" style="padding: 2px;"><font color="#ffffff">More articles about SWT</font>
+</table>
+
+<ul>
+<li>SWT articles published in JDJ:
+  <ul>
+    <li><a href="http://www.sys-con.com/story/?storyid=37463&amp;DE=1">SWT: A Native Widget Toolkit for Java, Part 1 of 2</a></li>
+    <li><a href="http://www.sys-con.com/story/?storyid=37509&amp;DE=1">SWT: A Native Widget Toolkit for Java, Part 2 of 2</a></li>
+  </ul>
+  <p></p>
+
+<li>SWT articles on IBM Developerworks Library:
+  <ul>
+    <li><a href="http://www-106.ibm.com/developerworks/opensource/library/os-ecgui1/">Using the Eclipse GUI outside the Eclipse Workbench</a></li>
+    <li><a href="http://www-106.ibm.com/developerworks/opensource/library/os-activex/">Integrate ActiveX controls into SWT applications</a></li>
+    <li><a href="http://www-106.ibm.com/developerworks/opensource/library/os-ecca/">Equipping SWT applications with content assistants</a></li>
+  </ul>
+</ul>
+
+<table width="100%">
+<tr><th bgcolor="#0080c0" align="left" style="padding: 2px;"><font color="#ffffff">SWT Online Tutorials</font>
+</table>
+
+<p>There have been a few tutorials posted about SWT which you may find useful.</p>
+
+<ul>
+  <li><a href="http://www.cs.umanitoba.ca/~eclipse/">Getting Started
+       with Eclipse and SWT</a> from the University of Manitoba.
+</ul>
+
+<table width="100%">
+<tr><th bgcolor="#0080c0" align="left" style="padding: 2px;"><font color="#ffffff">SWT Examples</font>
+</table>
+
+<p>Full-blown examples that can be downloaded from the eclipse download
+page.  The examples in package org.eclipse.swt.examples run standalone,
+and the examples in org.eclipse.swt.examples.* packages are eclipse
+plug-ins.</p>
+<ul>
+  <li>To get the examples, first go to the eclipse download page: <a href="http://download.eclipse.org/downloads/index.php">
+      http://download.eclipse.org/downloads/index.php</a></li>
+  <li>Then click on the eclipse build that you would like examples for
+      (i.e. the eclipse build that you are running; typically the latest Stable Build).</li>
+  <li>Then scroll down until you see "Example Plug-ins". Read the paragraph on installing them, and select the download for your platform.</li>
+  <li>After installing the examples, the source for them will be in a src.zip file in the
+      appropriate subdirectory of: eclipse/plugins/org.eclipse.sdk.examples.source_&lt;version&gt;/src/
+      <br>For example, the 3.1 source for the standalone examples in org.eclipse.swt.examples is in: org.eclipse.sdk.examples.source_3.1.0/src/org.eclipse.swt.examples_3.1.0/swtexamplessrc.zip.</li>
+  <li>To run the plug-in SWT examples, restart eclipse, go to <i>Window &gt; Show View... &gt; Other...</i> and expand "SWT Examples".</li>
+</ul>
+
+</table>
+</body>
+</html>
diff --git a/faq.php b/faq.php
new file mode 100755
index 0000000..1934c3c
--- /dev/null
+++ b/faq.php
@@ -0,0 +1,1030 @@
+<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
+<html>
+<head>
+    <title>The SWT FAQ</title>
+    <meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1">
+    <link rel="stylesheet" href="http://dev.eclipse.org/default_style.css" type="text/css">
+    <link rel="stylesheet" href="swt.css" type="text/css">
+    <link rel="shortcut icon" href="http://www.eclipse.org/images/eclipse.ico" type="image/x-icon">
+    <style type="text/css"> dt { padding-top: 20px; padding-bottom: 5px; } </style>
+</head>
+<body bgcolor="#ffffff" text="#000000">
+<table width="825px" style="border-bottom: 1px solid #000000;">
+<colgroup><col width="125px"><col width="700px"></colgroup>
+<tr><?php include "sidebar.php"; ?>
+<td valign="top" style="padding: 10px"><h1 style="padding: 0; margin: 0; border-bottom: 1px solid #000000;">The SWT FAQ</h1>
+
+<p>If you have questions you believe should go in here, please let us know on
+the <a href="http://dev.eclipse.org/mailman/listinfo/platform-swt-dev">SWT developer mailing list</a>.</p>
+
+<ul>
+  <li><a href="#whatpackagesinSWT">What packages make up SWT?</a></li>
+  <li><a href="#howbuildjar">How do I build an SWT jar for my platform?</a></li>
+  <li><a href="#howbuilddll">How do I build the SWT JNI libraries for my platform?</a></li>
+  <li><a href="#buildeclipseexe">How do I build the Eclipse executable for my platform?</a></li>
+  <li><a href="#guibuilder">Is there a GUI Builder for SWT?</a></li>
+  <li><a href="#missingjar">Why do I get the error "java.lang.NoClassDefFoundError: org/eclipse/swt/internal/XXX/OS."?</a></li>
+  <li><a href="#missingdll">Why do I get the error "java.lang.UnsatisfiedLinkError: no swt-win32-2034 in java.library.path."?</a></li>
+  <li><a href="#missinglibXm">Why do I get the error "java.lang.UnsatisfiedLinkError: libXm.so.2: cannot open shared object file: No such file or directory."?</a></li>
+  <li><a href="#uithread">Why do I get the error "org.eclipse.swt.SWTException: Invalid thread access"?</a></li>
+  <li><a href="#pocketpcstart">What do I need to do to run SWT on the PocketPC?</a></li>
+  <li><a href="#pocketpclibrary">Where is the SWT library for the PocketPC?</a></li>
+  <li><a href="#gtkstartup">What do I need to run SWT on Linux/GTK?</a></li>
+  <li><a href="#motiffontsandcolors">On motif, how do I change the default fonts and colors of widgets?</a></li>
+  <li><a href="#gtkfontsandcolors">On gtk, how do I change the default fonts and colors of widgets?</a></li>
+  <li><a href="#gtkselectiongone">On gtk, why does my widget's selection disappear when it loses focus?</a></li>
+  <li><a href="#carbonapp">On carbon, how do I run an SWT application from the command line?</a></li>
+  <li><a href="#xpthemes">How do I make SWT show the Windows XP skins?</a></li>
+  <li><a href="#swinginswt">Can I use Swing or AWT inside Eclipse?</a></li>
+  <li><a href="#smallprint">Why does everything I print seem so small?</a></li>
+  <li><a href="#supportJavaBeans">Does SWT support JavaBeans?</a></li>
+  <li><a href="#scrollonlinux">Why doesn't mouse scrolling work on Linux/Motif?</a></li>
+  <li><a href="#printstacktrace">Why don't SWTError and SWTException override all printStackTrace methods?</a></li>
+  <li><a href="#noprintimage">How do I print a snapshot of a widget?</a></li>
+  <li><a href="#printOnMotif">Why is the Print menu item disabled in Eclipse on Motif?</a></li>
+  <li><a href="#printOnGTK">Why is the Print menu item disabled in Eclipse on GTK?</a></li>
+  <li><a href="#printOnX">How do I print using my favorite Unix print program?</a></li>
+  <li><a href="#usingLesstif">Why do I get the warning "XmParseMappingCreate() is not implemented yet" on Linux/Motif?</a></li>
+  <li><a href="#konquerorUnzip">Why do I get an error beginning with "...SWTException: Unsupported or unrecognized format" on startup?</a></li>
+  <li><a href="#useUnzip">Why do I get the error "error while loading shared libraries: ./libXm.so.2: file too short" on startup?</a></li>
+  <li><a href="#subclassing">Why can't I subclass SWT widgets like Button and Table?</a></li>
+  <li><a href="#javawebstart">How can I package my standalone SWT app for Java Web Start?</a></li>
+  <li><a href="#whatisasnippet">What is a snippet and why do I care?</a></li>
+  <li><a href="#contributeToSWT">How can I contribute to SWT?</a></li> 
+  <li><a href="#whatisbrowser">What is the SWT Browser widget?</a></li>
+  <li><a href="#browserlinux">What do I need to run the SWT Browser inside Eclipse on Linux/GTK or Linux/Motif?</a></li>
+  <li><a href="#browserlinuxrcp">What do I need to run the SWT Browser in a standalone application on Linux/GTK or Linux/Motif?</a></li>
+  <li><a href="#browserlinuxibm">How can I get the SWT Browser to work with the IBM 1.4 VM?</a></li>
+  <li><a href="#browserplatforms">Which platforms are supported by the SWT Browser?</a></li>
+  <li><a href="#browserplugins">Why can't I run Java applets in the SWT Browser?</a></li>
+  <li><a href="#gtk64">How do I build the 64 bit version of SWT GTK?</a></li>
+  <li><a href="#autotest">How can I implement user interaction test cases?</a></li>
+  <li><a href="#noeventfire">Why are some events not fired in response to programmatic widget changes?</a></li>
+  <li><a href="launcher.html">What are the arguments for the Eclipse Launcher?</a></li>
+  <li><a href="#nographicslibrary">Why do I get "SWTException: Unable to load graphics library" using GC?</a></li>
+</ul>
+
+<p></p>
+<hr>
+<p></p>
+
+<dl>
+  <dt><strong><a name="whatpackagesinSWT"> Q: What packages make up SWT?</a></strong></dt>
+  <dd>A:  Package names in SWT begin with the prefix <strong>org.eclipse.swt</strong>.<br>
+      <p>Here is the complete list:</p>
+      <ul>
+      <li>org.eclipse.swt
+      <li>org.eclipse.swt.accessibility
+      <li>org.eclipse.swt.custom
+      <li>org.eclipse.swt.dnd
+      <li>org.eclipse.swt.events
+      <li>org.eclipse.swt.graphics
+      <li>org.eclipse.swt.internal.* (Not API, do not reference classes in these packages)
+      <li>org.eclipse.swt.layout
+      <li>org.eclipse.swt.ole.win32 (Windows only)
+      <li>org.eclipse.swt.printing
+      <li>org.eclipse.swt.program
+      <li>org.eclipse.swt.widgets
+      </ul>
+      <p>Classes that are not in these packages do not belong to SWT.</p>
+  </dd>
+ 
+  <dt><strong><a name="howbuildjar">Q: How do I build an SWT jar for my platform?</a></strong>
+  </dt>
+  <dd>A: The SWT jar can be built from the eclipse CVS repository using an Ant task:
+    <ol>
+      <li>Connect a CVS client (such as eclipse) to <strong>:pserver:anonymous@dev.eclipse.org:/home/eclipse</strong>.
+      <li>Checkout the projects <strong>org.eclipse.swt</strong> and <strong>org.eclipse.swt.</strong><em>WS</em> where <em>WS</em> is the name of the 
+        windowing system of interest.  For example <strong>org.eclipse.swt.gtk</strong>.
+      <li>In the project <strong>org.eclipse.swt.</strong><em>WS</em>, locate the file <strong>build.xml</strong>.  This is an Ant script.
+      <li>Run Ant on the target <strong>build.jars</strong>.  If you are using eclipse as your development environment, you can run 
+        Ant by selecting the file in the <strong>Navigator</strong> or <strong>Packages</strong> view, then selecting <strong>Run Ant...</strong> from the context
+        menu.
+      <li>This will create a file called <strong>swt.jar</strong> and put it in the folder 
+        <strong>org.eclipse.swt.</strong><em>WS</em><strong>/ws/</strong><em>WS</em>.
+    </ol>
+  </dd>
+
+  <dt><strong><a name="howbuilddll">Q: How do I build the SWT JNI libraries for my platform?</a></strong>
+  </dt>
+  <dd>A: SWT uses JNI to interact with the native widgets in the
+   operating system.  The SWT JNI libraries must be compiled for the
+   windowing system, operating system and hardware architecture of
+   interest.  The libraries can be built either from the code in the CVS
+   repository or from an eclipse SDK download.
+  
+   <p>In order to build the required libraries and run Eclipse, you
+   will require a JDK (Java Development Kit) version that is suppored
+   by Eclipse.  Check eclipse.org for details.</p>
+    
+   <p><strong>Building the SWT JNI libraries from the eclipse SDK download:</strong>
+   <ol>
+     <li>Download an Eclipse distribution from 
+       <a href="http://www.eclipse.org/downloads/index.php">http://www.eclipse.org/downloads/index.php</a>.</li>
+
+     <li>Unzip the distribution.  This will create a directory called <tt>eclipse</tt>.
+       This directory is subsequently referred to as <em>&lt;eclipseRoot&gt;</em>.
+
+     <li>In the directory <tt><em>&lt;eclipseRoot&gt;</em>/plugins/org.eclipse.rcp.source.platform_X.X.X</tt>,
+         find the source zip in the SWT subdirectory.
+
+     <li>Unzip contained file <tt>src.zip</tt>.
+
+     <li>Edit the file <strong>build.sh</strong> (or <strong>build.bat</strong> on Windows)
+         in the current directory. Set the environment variables defined in that file to
+         match the location of your JRE, etc. Save the file and close it.
+
+     <li>Run the <tt>build</tt> command (<strong>sh build.sh</strong> for UNIX and Linux
+         platforms, <strong>build.bat</strong> for Windows).  This will create the appropriate
+         library file(s) in the current directory.  For example, this will create a
+         <tt>swt_XXXX.dll</tt> file on windows, or a <tt>libswt_XXXX.so</tt> file on Linux
+         and Solaris.  On some platforms multiple libraries will be created.
+   </ol>
+
+   <p>This description was originally contributed by Colin R Devilbiss.</p>
+
+    
+   <p><strong>Building the SWT JNI libraries from the eclipse CVS repository:</strong><br>
+   <strong>NOTE</strong>: These instructions require you to use Eclipse
+
+   <ol>
+     <li>Follow <a href="cvs.html">these instructions</a> to checkout SWT from CVS.
+
+     <li>Compile the project.  This will create a folder called bin under the org.eclipse.swt project.
+
+     <li>Change directory into <tt>org.eclipse.swt/bin/library</tt>
+
+     <li>Edit the file <strong>build.sh</strong> (or <strong>build.bat</strong> on Windows)
+         in the current directory. Set the environment variables defined in that file to
+         match the location of your JRE, etc. Save the file and close it.
+
+     <li>Run the <tt>build</tt> command (<strong>sh build.sh</strong> for UNIX and Linux
+         platforms, <strong>build.bat</strong> for Windows).  This will create the appropriate
+         library file(s) in the current directory.  For example, this will create a
+         <tt>swt_XXXX.dll</tt> file on windows, or a <tt>libswt_XXXX.so</tt> file on Linux
+         and Solaris.  On some platforms, more than one library will be created.
+  </ol>
+  </dd>
+
+  <dt><strong><a name="buildeclipseexe">Q: How do I build the Eclipse executable for my platform?</a></strong>
+  </dt>
+  <dd>A: Eclipse is launched by a binary executable which puts up a splash screen and launches a Java VM. 
+    The executable must be compiled for the windowing system, operating system and hardware architecture of interest.
+    The libraries can be built either from the code in the CVS repository or from an eclipse SDK download. 
+    
+    <p><strong>Building the Eclipse executable from the eclipse SDK download:</strong>
+    <ol>
+      <li>In order to build the required libraries and run Eclipse, 
+        you will require a JDK (Java Development Kit) of version 1.4.1 or later.
+        Download an Eclipse distribution from
+        <a href="http://www.eclipse.org/downloads/index.php">http://www.eclipse.org/downloads/index.php</a>.</li>
+
+      <li>Unzip the distribution.  This will create a directory called <tt>eclipse</tt>.
+        This directory is subsequently referred to as <em>&lt;eclipseRoot&gt;</em>.
+
+      <li>In the directory <tt><em>&lt;eclipseRoot&gt;</em>/plugins/org.eclipse.platform.source_X.X.X</tt>,
+        find the <tt>launchersrc.zip</tt> file under <tt>org.eclipse.platform_X.X.X</tt>.
+
+      <li>Unzip the file <tt>launchersrc.zip</tt>.  This will create a directory called <tt>library</tt>.
+
+      <li>Change directory into <tt>library/<em>WS</em></tt>, where <em>WS</em> is the name of the windowing system 
+        e.g. win32, motif, gtk, photon, or carbon.
+        Modify any incorrect <tt>_HOME</tt> variables defined at the top of the appropriate <tt>.mak</tt> file.
+
+      <li>Run the <tt>build</tt> command (<strong>sh build.sh</strong> for UNIX and Linux, <strong>build.bat</strong> for Windows).
+        This will create an executable launcher called <tt>eclipse</tt>.
+        Move this <tt>eclipse</tt> executable to <em>&lt;eclipseRoot&gt;</em>.
+    </ol>
+
+    <p>This description was originally contributed by Colin R Devilbiss.</p>
+  </dd>
+
+  <dt><strong><a name="guibuilder">Q: Is there a GUI Builder for SWT?</a></strong></dt>
+  <dd>A: SWT itself does not provide a GUI Builder (also known as "GUI Designer", "GUI Editor",
+  "Visual Builder", "Visual Designer", "Visual Editor", or "Visual Composition Editor").
+  There are, however, several mature 'third-party' products listed at
+  <a href="http://www.eclipseplugincentral.com/">http://www.eclipseplugincentral.com/</a>.
+  Or you can follow the progress on the <a href="http://www.eclipse.org/vep/">Eclipse Visual Editor Project</a>.
+  </dd>
+
+  <dt><strong><a name="missingjar">Q: Why do I get the error "java.lang.NoClassDefFoundError: org/eclipse/swt/internal/XXX/OS."?</a></strong></dt>
+  <dd>A: On some platforms such as GTK, SWT is broken into multiple jars.  Therefore,
+      you must ensure that all required jars are on the classpath.  The required jars are:
+      <ul>
+      <li>swt.jar (all platforms)</li>
+      <li>swt-pi.jar (some platforms like GTK and Carbon)</li>
+      <li>swt-mozilla.jar (for Browser widget on GTK and Motif)</li>
+      <li>swt-gtk.jar (on Linux Motif)</li>
+      </ul>
+  </dd>
+  
+
+  <dt><strong><a name="missingdll">Q: Why do I get the error "java.lang.UnsatisfiedLinkError: no swt-win32-2034 in java.library.path."?</a></strong></dt>
+  <dd>A: You need to place the SWT JNI libraries that allow Java to use 
+    the native widgets in a place where the Java Virtual Machine 
+    will find them.
+    
+    <p>The SWT JNI libraries are included in the eclipse download.  The location of
+    the libraries depends on the operating system and windowing system of interest.
+    
+    <ul>
+      <li>Windows:
+        <ul>
+          <li>Eclipse 3.0 - <em>&lt;eclipseRoot&gt;</em>\plugins\org.eclipse.swt.win32_3.0.0\os\win32\x86
+          <li>Eclipse 2.1 - <em>&lt;eclipseRoot&gt;</em>\plugins\org.eclipse.swt.win32_2.1.0\os\win32\x86
+        </ul>
+      <li>Linux:
+        <ul>
+          <li>Eclipse 3.0 - <em>&lt;eclipseRoot&gt;</em>/plugins/org.eclipse.swt.WS_3.0.0/os/linux/x86
+          <li>Eclipse 2.1 - <em>&lt;eclipseRoot&gt;</em>/plugins/org.eclipse.swt.WS_2.1.0/os/linux/x86
+        </ul>
+    </ul>
+      
+    <p>A Java application can be informed of the location of the libraries in several ways:
+    <p></p>
+      <ol>
+      <li>Set the library path in the VM launch arguments.
+      
+      <p>In the Launch Configuration Dialog of eclipse select the Arguments 
+      page, and in the VM arguments field enter:
+      <tt>-Djava.library.path={runtime-library-path}</tt>
+      Where the runtime-library-path is the absolute path to the directory containing
+      the native code library (see above). 
+    
+      <p>This solution means that the SWT libraries have to be manually 
+      added to every project that uses SWT.</p><p></p>
+    
+    <li>Set the library location in an environment variable.
+    <p>For Windows this is done by editing the PATH environment variable to 
+    include the above mentioned runtime-library-path.
+    <br>in Win 9X this is done by editing the Autoexec.bat file,
+    <br>on NT or 2K the variable is edited through <strong>My Computer</strong> &gt; <strong>Properties</strong> &gt; <strong>Advanced</strong> &gt; <strong>Environment Variables</strong>.
+	<p>On linux/unix, modify the LD_LIBRARY_PATH environment variable to include the runtime-library-path.
+	<p></p>
+	
+	<li>Copy the SWT library to a directory that is already on the Java library path.  For example, the jre/bin directory.
+    <p>The disadvantage of this solution is that every time you upgrade eclipse you have to remember to copy the native code library.
+   </ol>
+  </dd>
+
+  <dt><strong><a name="missinglibXm">Q: Why do I get the error "java.lang.UnsatisfiedLinkError: libXm.so.2: cannot open shared object file: No such file or directory."?</a></strong></dt>
+  <dd>A: On motif, the SWT library links against the open motif library libXm.so.2.  On most platforms, the open motif library is installed 
+  and added to the library path by default. However, on some Linux platforms, either open motif is not installed or is not on the default library 
+  path, or lesstif is installed.  Eclipse (and the standalone version of SWT) includes the libXm.so.2 library in the root of the Eclipse install.
+  <p>You need to either launch Eclipse from the installed directory or modify the LD_LIBRARY_PATH environment variable to 
+  include the location of libXm.so.2. </p>
+  <p>Note <code>-Djava.library.path</code> is used by the VM to locate libraries for System.loadLibrary calls.  However, it does
+  not update the LD_LIBRARY_PATH and therefore does not help libraries locate other libraries.</p>
+  </dd>
+
+  <dt><strong><a name="uithread">Q: Why do I get the error "org.eclipse.swt.SWTException: Invalid thread access"?</a></strong></dt>
+  <dd>A: In SWT, by definition the thread that creates the Display is a UI-thread.  This thread is responsible for 
+  reading and dispatching events from the operating system event queue, and invoking listeners in response to these events.  
+  Listener code is executed in the UI-thread.  This makes an SWT application generally quite responsive, behaving like most 
+  other operating system programs.  However, any long operation, when executed by a listener, will run in the UI-thread 
+  and prevent it from reading and dispatching events, thus hanging the application.
+  
+  <p>If a listener has a large amount of work to perform, instead of performing that work in the UI-thread, it can 
+  fork a separate thread so the UI-thread can continue dispatching events. If the other thread needs to execute code 
+  that accesses an SWT object, such as changing the string in a label, there is a concurrency issue.  At the very 
+  least, some kind of synchronization is necessary to prevent the operating system or SWT from crashing, hanging or 
+  behaving unpredictably.</p>
+
+  <p>SWT implements a single-threaded UI model often called apartment threading.  In this model, only the UI-thread 
+  can invoke UI operations.  SWT strictly enforces this rule.  If you try and access an SWT object from outside the 
+  UI-thread, you get the exception "org.eclipse.swt.SWTException: Invalid thread access".  Different operating systems 
+  have different rules governing threads, UI components and synchronization.  Some use a single-threaded UI model 
+  like SWT.  Others allow only one thread at a time in the window system library, controlling access through a 
+  global lock.  This type of multi-threaded UI model is often called free threading.  Currently, in order to be 
+  simple, efficient and portable, SWT is apartment threaded.</p>
+
+  <p>To allow background threads to perform operations on objects belonging to the UI-thread, the methods 
+  syncExec(Runnable runnable) and asyncExec(Runnable runnable) of Display are used.  These are the only 
+  methods in SWT that can be called from any thread.  They allow a runnable to be executed by the UI-thread, 
+  either synchronously, causing the background thread to wait for the runnable to finish, or asynchronously 
+  allowing the background thread to continue execution without waiting for the result.  A runnable that is 
+  executed using syncExec() most closely matches the equivalent direct call to the UI operation because a 
+  Java method call always waits for the result before proceeding, just like syncExec().</p>
+ 
+  <p>The following code sets the text of a label from a background thread and waits for the operation to complete:
+
+<pre>display.syncExec(
+  new Runnable() {
+    public void run(){
+      label.setText(text);
+    }
+  });
+</pre>
+   </dd>
+
+  <dt><strong><a name="pocketpcstart">Q: What do I need to do to run SWT on the PocketPC?</a></strong>
+  </dt>
+  <dd>A: There is an experimental version of SWT for WinCE devices. If you feel like
+    giving it a try, the following steps might help you getting started.
+    <ol>
+      <li>Install a VM on your PocketPC.
+        <br>The port is tested using the J9 VM for ARM WinCE PocketPC.
+        <ul>
+          <li>For information on how to get the J9 VM, see at the WebSphere Studio Device Developer website (which ships J9):
+            <br><a href="http://www.embedded.oti.com/wdd">http://www.embedded.oti.com/wdd</a>
+          <li>For questions on how to use the J9 VM, see the WebSphere newsgroup:
+            <br><a href="news://news.software.ibm.com/ibm.software.websphere.studio.device-developer">ibm.software.websphere.studio.device-developer</a>
+        </ul>
+      <li>Get the swt.jar and SWT dll for PocketPC. See <a href="#pocketpclibrary">Where is the SWT library for the PocketPC?</a>
+      <li>Copy the swt.jar and SWT dll to your device.
+      <li>Copy your SWT app to your device.
+        <br>For example, compile the following class inside Eclipse and copy the resulting
+          class file to your device.
+        <pre>
+import org.eclipse.swt.*;
+import org.eclipse.swt.widgets.*;
+import org.eclipse.swt.layout.*;
+
+public class HelloWorld {
+public static void main(String[] args) {
+    Display display = new Display();
+  
+    /* 
+     * Create a Shell with the default style
+     * i.e. full screen, no decoration on PocketPC.
+     * Alternative: 'new Shell(display, SWT.CLOSE)'
+     * to get the Pocket PC 'Ok' button.
+     */
+    Shell shell = new Shell(display);
+  
+    /* 
+     * Set a text so that the top level Shell
+     * also appears in the Pocket PC task list
+     */
+    shell.setText("HelloWorld");
+  
+    /*
+     * Set a menubar to follow UI guidelines
+     * on Pocket PC
+     */
+    Menu mb = new Menu(shell, SWT.BAR);
+    shell.setMenuBar(mb);
+  
+    /* 
+     * Add widgets
+     */
+    FillLayout layout = new FillLayout();
+    layout.type = SWT.VERTICAL;
+    shell.setLayout(layout);
+    Label label = new Label(shell, SWT.CENTER);
+    label.setText("Hello World");
+    
+    shell.open();
+    while (!shell.isDisposed()) {
+        if (!display.readAndDispatch())
+            display.sleep();
+    }  
+}
+}
+</pre>
+
+      <li>Run your SWT application.
+        <br>One way to start your application is to create a shortcut file.
+        <ol>
+          <li>On your desktop, create a file 'HelloWorld.lnk'. Insert the following line.
+<pre>68#\j9\bin\j9.exe -Djava.home=\j9
+     -cp:\java\swt.jar;\java HelloWorld</pre>
+            This is assuming that you have installed the J9 VM in the folder \j9, and that
+            you have copied the swt.jar and your application HelloWorld.class into the folder \java.
+            It also assumes that the SWT dll was copied into the folder \j9\bin where it will be
+            found by the VM.
+          <li>Save the shortcut file. Copy the file to your device.
+          <li>Using the file explorer on your device, click on the shortcut file.
+             <br>If everything is correctly setup, the SWT app should come up.
+      </ol>
+    </ol>
+  </dd>
+
+  <dt><strong><a name="pocketpclibrary">Q: Where is the SWT library for the PocketPC?</a></strong></dt>
+  <dd>A: There is an experimental version of SWT for WinCE devices. The swt.jar and ARM Pocket PC
+    dll are available from the Eclipse download page.
+    <p>Choose which swt.jar fits your project requirements. You can also build a custom
+    version. A custom version allows you, for example, to exclude image decoders or layouts, to
+    further reduce the size.</p>
+    <ol>
+      <li>win32-ce-arm-ppc.zip
+		<ul>
+		  <li>J2SE profile</li>
+		  <li>Emulated Drag and Drop (no OLE support)</li>
+		  <li>Native widgets only (no custom widgets)</li>
+		  <li>No class file debug information (for reduced size)</li>
+		</ul>
+		<br>
+    <li>win32-ce-arm-ppc-j2me.zip
+	  <ul>
+        <li>J2ME profile (CLDC)</li>
+        <li>Emulated Drag and Drop (no OLE support)</li>
+        <li>Native widgets only (no custom widgets)</li>
+        <li>No class file debug information (for reduced size)</li>
+      </ul>
+      <br>
+    <li>Custom SWT library
+      <ol>
+		<li>From Eclipse, check out the projects org.eclipse.swt and org.eclipse.swt.win32.wce_ppc.arm
+		(from the head stream). These projects reside in the Eclipse repository
+		<li>Build the swt.jar
+		<br>Open the file org.eclipse.swt.win32.wce_ppc.arm/build_custom.xml
+		<br>The file contains indications on how to build the swt.jar as recommended for WinCE PocketPC.
+	  <li>Get the corresponding dll
+	  <br>The latest dll is available under org.eclipse.swt.win32.wce_ppc.arm
+	  </ol>
+	</ol>
+  </dd>
+  
+  <dt><strong><a name="gtkstartup">Q: What do I need to run SWT on Linux/GTK?</a></strong></dt>
+  <dd>A: SWT requires the following libraries with the specified versions or later:
+    <p>For Eclipse 3.0:</p>
+    <ul>
+      <li>GTK 2.2.1</li>
+      <li>ATK 1.2.0</li>
+      <li>glib 2.2.1</li>
+      <li>Pango 1.2.1</li>
+      <li>Freetype 2.1.3</li>
+    </ul>
+    <p>For Eclipse 2.1:</p>
+    <ul>
+      <li>GTK 2.0.6</li>
+      <li>ATK 1.0.1</li>
+      <li>glib 2.0.4</li>
+      <li>Pango 1.0.3</li>
+      <li>Freetype 2.1.2</li>
+    </ul>
+  </dd>
+  
+
+  <dt><strong><a name="motiffontsandcolors">Q: On motif, how do I change the default fonts and colors of widgets?</a></strong></dt>
+  <dd>A: Motif uses a file called <tt>.Xdefaults</tt> which is located in your home directory.
+    Here is an example of the content of that file which sets the font and colors for Eclipse:
+<pre>Eclipse*spacing:0
+Eclipse*XmForm.background:#e8e7e3
+Eclipse*XmList.background:#e8e7e3
+Eclipse*XmTextField.background:#e8e7e3
+Eclipse*background:#d6d3ce
+Eclipse*fontList:-misc-fixed-medium-r-normal-*-10-100-75-75-c-60-iso8859-1
+</pre>
+    
+    After creating/modifying this file, you must run "xrdb ~/.Xdefaults" or restart X to make the changes take effect.
+  </dd>
+  
+  <dt><strong><a name="gtkfontsandcolors">Q: On GTK, how do I change the default fonts and colors of widgets?</a></strong></dt>
+  <dd>A: GTK uses a file called <tt>.gtkrc</tt> which is located in your home directory.  
+    On some versions of Linux, this file is called <tt>.gtkrc-2.0</tt>.
+    Here is an example of the content of that file which sets the font and colors for Eclipse:
+    <pre>
+      style "eclipse" {
+        font_name = "Sans 12"
+        bg[NORMAL] = "#d6d3ce"
+        bg[ACTIVE] = "#c7c2bc"
+        bg[INSENSITIVE] = "#828282"
+        bg[PRELIGHT] = "#3a6ea5"
+        fg[NORMAL] = "#000000"
+        fg[ACTIVE] = "#000000"
+        fg[INSENSITIVE] = "#d4d0c8"
+        fg[PRELIGHT] = "#ffffff"
+      }
+      class "GtkWidget" style "eclipse"
+    </pre>
+    
+    <p>To turn off anti-aliasing of fonts you should use the facilities
+    available in your desktop if possible, such as the Gnome Font
+    Properties dialog.  An alternate approach is to ensure that your
+    ~/fonts.conf or system-wide fonts.conf file contains the following:</p>
+    <pre>
+    &lt;match target="font"&gt;
+    &lt;edit name="antialias" mode="assign"&gt;&lt;bool&gt;false&lt;/bool&gt;&lt;/edit&gt;
+    &lt;edit name="hinting" mode="assign"&gt;&lt;bool&gt;true&lt;/bool&gt;&lt;/edit&gt;
+    &lt;edit name="autohint" mode="assign"&gt;&lt;bool&gt;false&lt;/bool&gt;&lt;/edit&gt;
+    &lt;/match&gt;
+    </pre>
+  </dd>
+
+  <dt><strong><a name="gtkselectiongone">Q: On GTK, why does my widget's selection disappear when it loses focus?</a></strong></dt>
+  <dd>A: This effect may be seen if KDE color settings are being
+      utilized.  This can be fixed by unchecking the "Apply KDE colors to
+      non-KDE apps" option in the KDE colors control panel.
+  </dd>
+
+  <dt><strong><a name="carbonapp">Q: On carbon, how do I run an SWT application from the command line?</a></strong></dt>
+  <dd>A: If you run a Java application that uses Carbon via JNI, the application is not registered with the OS as 
+      a 'normal' UI application.  As a consequence, it has no entry in the dock and it cannot be activated. AWT 
+      (or Swing) based applications don't have this problem because they seem to use undocumented SPI to register 
+      themselves.
+
+      <p>To work around this problem you'll have to use the executable 'java_swt' that is part of the 
+      Eclipse distribution (you can find it inside the Eclipse application Eclipse.app/Contents/MacOS/java_swt). 
+      Basically it is a replacement for /usr/bin/java and the 'JavaApplicationStub' used in bundled applications.</p>
+
+      <p>If you want to run your SWT-based application from the command line just use 'java_swt' instead of 'java':</p>
+      <pre>
+         java_swt -cp swt.jar:. ControlExample
+      </pre>
+	
+      <p>If you want to run a bundled application, you'll have to replace the executable found in the Contents/MacOS 
+      subdirectory of the application bundle with (a renamed) 'java_swt' program.</p>
+
+      <p>If you need to create a new application bundle from scratch, please refer to comment #5 in 
+      <a href="http://bugs.eclipse.org/bugs/show_bug.cgi?id=40003">bug #40003</a>.</p>
+
+  </dd>
+  
+  <dt><strong><a name="xpthemes">Q: How do I make SWT show the Windows XP skins?</a></strong></dt>
+  <dd> A: In order for an application to show the Windows XP skins, there must be a manifest file 
+    located in the same place as the executable that launches the application.
+    Here is a <a href="javaw.exe.manifest">sample manifest file</a> to download.
+    
+    <p>The name of the manifest file must match the name of the executable.  
+    In the case of eclipse, the executable is <tt>javaw.exe</tt> and the manifest file 
+    must have the name <tt>javaw.exe.manifest</tt>.  The manifest file must be in the
+    <tt>jre\bin</tt> folder for the VM you use to launch Eclipse.  Note: the 
+    <tt>eclipse.exe</tt> executable does not launch Eclipse; <tt>eclipse.exe</tt>
+    displays a splash screen and then invokes the Java VM.</p>
+  </dd>
+  
+  <dt><strong><a name="swinginswt">Q: Can I use Swing or AWT inside Eclipse?</a></strong></dt>
+  <dd>A: Yes.  As of Eclipse 3.0, Swing and AWT can be embedded in SWT on Windows, Motif and GTK 
+  using JDK 1.5.
+  
+  <p>See this <a href="http://dev.eclipse.org/viewcvs/index.cgi/org.eclipse.swt.snippets/src/org/eclipse/swt/snippets/Snippet135.java?rev=HEAD&amp;content-type=text/vnd.viewcvs-markup">snippet</a> for an example of how to use the API.
+  </dd>
+  
+  <dt><strong><a name="smallprint">Q: Why does everything I print seem so small?</a></strong></dt>
+  <dd>A: When you are printing something from the screen to a printer device, you
+    need to think about scaling. What is happening is that your figure is being drawn
+    in something like 72 x 72 dots per inch on the screen, but then you are printing
+    it to something like a 300 x 300 or 600 x 600 DPI printer. What you have to do is
+    ask both the screen and the printer what their DPI is, and then figure out what
+    scale factor you need to use when you draw to the printer GC. The code might look
+    like this:
+    <pre>
+      Point screenDPI = display.getDPI();
+      Point printerDPI = printer.getDPI();
+      int scaleFactor = printerDPI.x / screenDPI.x;
+    </pre>
+    Please see the ImageAnalyzer example in the org.eclipse.swt.examples project
+    for an example of printing an image to a printer. Look at method
+    menuPrint(). Note however that this is a pretty rough example, and it does
+    not take into account what happens if the image is larger than the page - it
+    just clips.
+
+    <p>Text printing takes some thought also. You need to wrap words, put your page
+    breaks in the right place, know where your margins are, etc. The SWT
+    StyledText widget does its own text printing. If you need to see a more
+    complicated example of printing a document, wrapping, margins, multi-page,
+    etc., then please look at the inner class Printing in StyledText in
+    org.eclipse.swt.custom. An instance of this class is created by the
+    StyledText.print(Printer) API method.
+    
+    <p>Note also that when printing, any graphics objects that you use to draw,
+    such as fonts, colors, and images, need to be re-created on the printer
+    device before you can draw them to the printer GC.
+
+    <p>We also recommend that you run your print job in a separate thread and not in
+    the UI thread, because printing a long document to a slow printer can hang
+    your entire UI while the printer spools.
+
+    <p>Unfortunately, printing is not simply a matter of just passing in the
+    printer GC instead of the screen GC. Printing has to be designed into your
+    drawing classes. You don't have scrollbars anymore, so you have to either
+    cut stuff off and print it on another page, or reorganize it, or scale it
+    down, or wrap it somehow. Maybe you want to give some control to your users,
+    and let them specify how many inches something should be, or whatever -
+    maybe give them a ruler. There is no magic bullet - you
+    will definitely have to give it some thought.
+  </dd>
+
+  <dt><strong><a name="supportJavaBeans">Q: Does SWT support JavaBeans?</a></strong></dt>
+  <dd>A: To the extent that it makes sense, given the constraints of operating system
+    compatibility, SWT mirrors the beans behavior. An example of this is the use
+    of standard beans mechanisms for event dispatch (EventListener, EventObject and adapter
+    classes). Some aspects of the beans paradigm, such as the ability to create beans with
+    null constructors, run counter to the constraints of the underlying operating systems
+    that SWT runs on.  For example, operating systems do not typically support creating a
+    widget without specifying its parent. 
+    <p></p>
+    The essence of the problem is that if you allow a widget to be created with a null
+    constructor, then you can't actually create the o/s resources at the time the constructor
+    runs (you would have to wait until later, after the parent has been set). We can not
+    do this, since we <em>always</em> create the o/s resources in the constructor, and for
+    performance/efficiency/consistency reasons do not keep slots in the object to hold
+    whatever state would be required if the object were to be created later. 
+  </dd>
+  
+  <dt><strong><a name="scrollonlinux"> Q: Why doesn't mouse scrolling work on Linux/Motif?</a></strong></dt>
+  <dd>A: Mouse scrolling on Linux/Motif relies on the IMWheel driver.  Here is how it works:
+    <ol>
+      <li>The X Server gets the wheel event.</li>
+      <li>Your /etc/X11/XF86Config must contain "ZAxisMap 4 5" (or the equivalent "Option" 
+        line if you use XFree86 4.x) in the Mouse section.  This maps the wheel to emulated
+        mouse buttons "4" and "5".</li>
+      <li>IMWheel has a global hook on the mouse, only looking for button4/5 events.
+        When it sees one, it looks in /etc/X11/imwheel which is a table of what to do for
+        which application.  E.g., GTK-based applications support the idea of 5-button mice
+        natively, so the imwheel file says "do nothing (pass through) for gtk".
+        On the other hand, no known Motif-based app seems to know about these, so imwheel
+        eats the mouse event and emits an accelerator event for "PgUp" or whatever your
+        preference is.  It has some clever pre-sets for xterm, netscape, and so on.</li>
+    </ol>
+  </dd>
+  
+  <dt><strong><a name="printstacktrace">Q: Why don't SWTError and SWTException override all printStackTrace methods?</a></strong></dt>
+  <dd>A: SWTError and SWTException each contain a slot which records the original
+    exception (if it is known) that caused the SWTError or SWTException to be thrown.
+    The printStackTrace() method in these classes has been overridden to print the
+    stacktrace of the original exception as well.
+
+    <p>The problem with the other two API methods (i.e. printStackTrace(PrintStream) and 
+    printStackTrace(PrintWriter)) is that the classes mentioned in their arguments 
+    (PrintStream and PrintWriter) are not available in the CLDC class library.
+    Because we need to maintain compatability with CLDC, we can not override them.
+  </dd>
+
+  <dt><strong><a name="noprintimage">Q: How do I print a snapshot of a widget?</a></strong></dt>
+  <dd>A: To print an image, the image needs to be created on the <em>printer</em>.
+    A common mistake is to try to print an image that was created on a <em>display</em>.
+
+    <p>First take the snapshot into an image that was created on the display,
+    and then get the imageData and create a new Image just for printing.
+    Something like this:
+<pre>  // Take the snapshot into a display Image
+  Point size = myWidget.getSize();
+  Image image = new Image(display, size.x, size.y);
+  GC gc = new GC(myWidget);
+  gc.copyArea(image, 0, 0);
+  gc.dispose();
+
+  // Get the ImageData and create a new printer Image from it
+  ImageData imageData = image.getImageData();
+  Image printImage = new Image(printer, imageData);</pre>
+    
+    <p>Then print using <em>printImage</em>.
+    (Remember to dispose both images when you are done with them).
+
+    <p>This is true for all graphic objects that you want to use for printing:
+    Fonts, Colors, and Images. You need to recreate them on the printer before
+    you can use them for drawing on the printer GC. You might get lucky sometimes,
+    if the printer happens to have this font or that color, but you won't get lucky
+    on all platforms and for all printers, and you won't get lucky for images.
+    So get into the habit of thinking "Did I create this graphics resource
+    on the same device that I am now trying to draw to?"
+  </dd>
+
+  <dt><strong><a name="printOnMotif">Q: Why is the Print menu item disabled in Eclipse on Motif?</a></strong></dt>
+  <dd>A: Printing on Motif requires that Xprint be installed on your
+      machine.
+
+      <p>A good FAQ regarding Xprint can be found at
+      <a href="http://xprint.mozdev.org/docs/Xprint_FAQ.html">http://xprint.mozdev.org/docs/Xprint_FAQ.html</a>.</p>
+  </dd>
+
+  <dt><strong><a name="printOnGTK">Q: Why is the Print menu item disabled in Eclipse on GTK?</a></strong></dt>
+  <dd>A: Printing on GTK has not been implemented yet. You can use the
+      External Tools support in Eclipse to print files using lpr or some other
+      printing utility.
+  </dd>
+
+  <dt><strong><a name="printOnX">Q: How do I print using my favorite Unix print program?</a></strong></dt>
+  <dd>A: You can use the External Tools support in Eclipse to print files using external programs.
+    Just create a new Program launch config from the External Tools dialog that launches your
+    favorite printing utility and you can pass the selected resource as a parameter.
+    <ol>
+    <li>Select the file you want to print.</li>
+    <li><i>Run &gt; External Tools &gt; External Tools...</i></li>
+    <li>Select "Program" in the Configurations: list.</li>
+    <li>Click New</li>
+    <li>Type: Print Selected File<br>
+   in the Name: field.</li>
+    <li>Type the full path name of your favorite printing program in the Location: field.
+    For example: /usr/bin/lpr</li>
+    <li>Type: ${container_loc}/${resource_name}<br>
+   in the Arguments: field.</li>
+    <li>Click Apply</li>
+    <li>Click Run</li>
+    </ol>
+  </dd>
+
+  <dt><strong><a name="usingLesstif">Q: Why do I get the warning "XmParseMappingCreate() is not implemented yet" on Linux/Motif?</a></strong></dt>
+  <dd>A: This warning is shown if you're accessing installed LessTif libraries instead of the
+    shipped OpenMotif libraries.  If you see this warning, add the eclipse install directory 
+    to your LD_LIBRARY_PATH before launching eclipse. For example, if you are using csh: <br>
+    
+    <pre>setenv LD_LIBRARY_PATH /opt/eclipse:${LD_LIBRARY_PATH}</pre>
+  </dd>
+    
+  <dt><strong><a name="konquerorUnzip">Q: Why do I get an error beginning with "...SWTException: Unsupported or unrecognized format" on startup?</a></strong></dt>
+  <dd>A: There is a bug in the Konqueror decompressor which causes Eclipse to be improperly extracted
+    if used.  To avoid this the Eclipse archive should first be downloaded to your machine and
+    then extracted using unzip at the command line.
+  </dd>
+    
+  <dt><strong><a name="useUnzip">Q: Why do I get the error "error while loading shared libraries: ./libXm.so.2: file too short" on startup?</a></strong>
+  </dt>
+  <dd>A: You must use unzip, not jar, to extract your eclipse download.  Jar does not extract the libXm.so.2 link file properly.
+  </dd>
+    
+  <dt><strong><a name="subclassing">Q: Why can't I subclass SWT widgets like Button and Table?</a></strong></dt>
+  <dd>A: You can but it is not recommended.  The article <a href="http://eclipse.org/articles/Article-Writing%20Your%20Own%20Widget/Writing%20Your%20Own%20Widget.htm">Creating Your Own Widget using SWT</a> describes the reasons in detail:
+  
+  <h3>Subclassing Widgets Directly</h3>
+
+<p>In extreme circumstances, you may need to subclass a widget other than
+<i>Canvas</i> or <i>Composite</i>. We recommend against doing this unless all
+other avenues have been explored and exhausted. Try to wrap the widget first,
+before subclassing it. Here is why:</p>
+
+<ul>
+<li>Subclasses may inherit a lot of API that makes no sense, and must be
+overridden.  In Java, you cannot override a method and change the return
+type; therefore you cannot reimplement some methods.</li>
+
+<li>Subclassing is typically not the safest way to extend a class that
+you do not own.  For a simplified list of the common arguments, see the
+article by <strong>Bill Venners</strong> in the Nov '98 issue of <i>Java
+World</i> called <i>"Inheritance versus composition: Which one should
+you choose?"</i> at: <a href="http://www.javaworld.com/javaworld/jw-11-1998/jw-11-techniques.html">
+http://www.javaworld.com/javaworld/jw-11-1998/jw-11-techniques.html</a></li>
+
+<li>Widget subclasses are almost certainly guaranteed to be
+platform-specific unless great care is taken to ensure that they work on
+all platforms.</li>
+
+<li>Subclassed widgets can be affected by changes in the non-API
+implementation of the superclass.</li>
+
+<li>Subclassing may cause bad system-level bugs, and runs the risk of
+leaking resources.  For example, if a subclass reimplements a method
+without making certain that dispose code from the superclass method is
+still called, then the new method will leak system resources.</li>
+
+<li>Binary incompatibility across releases becomes possible. If a method
+signature or field name changes, or new methods or fields are added,
+there may be a name conflict in the widget subclass. Only <i>Canvas</i>
+and <i>Composite</i> are guaranteed not to have name conflicts in future
+releases.</li>
+
+<li>See any paper by Leonid Mikhajlov on the <i>"Fragile Base Class
+Problem"</i>.  You can find his paper "A Study of The Fragile Base Class
+Problem" at: <a href="http://www.cas.mcmaster.ca/~emil/publications/fragile/">http://www.cas.mcmaster.ca/~emil/publications/fragile/</a></li>
+
+</ul>
+
+  <p>Subclassing <i>Canvas</i> or <i>Composite</i> is the best way to
+  ensure that your widget works on all SWT platforms. The 'is-a' test in
+  this case tests whether your widget is-a basic or compound widget.
+  Subclassing anything else requires asking if the new widget <b>is an SWT
+  native widget of the type being subclassed</b>. For example, a 100% Java
+  portable <i>PictureLabel</i> is not an SWT native <i>Label</i>.</p>
+
+  <p>When subclassing anything other than <i>Composite</i> or
+  <i>Canvas</i> you must override the method <b>protected void
+  checkSubclass()</b> to do nothing. Make sure you read the method comment
+  before overriding it.</p>
+  </dd>
+
+  <dt><strong><a name="whatisasnippet">Q: What is a snippet and why do I care?</a></strong>
+  </dt>
+  <dd>A: A snippet is a <em>minimal stand alone</em> program that demonstrates functionality or
+  	lack of functionality.  
+  	
+  	<p>Why is this important?  Posting a snippet to the news group is the
+  	quickest way to get help.  Including a snippet in a bug report is the fastest
+  	way to get a bug fixed.  Taking the time to construct a snippet helps you understand
+  	the API of the library you are calling and focuses your thinking.  For example, the
+  	SWT team uses C and Java snippets internally to prove or disprove problems in the operating system.
+	Often, something you think is a bug is actually caused by something elsewhere
+	in your program.  
+	
+	<p>Snippets isolate problems.  Code speaks louder than words.  
+	
+	<p>Here is a minimal stand alone SWT program to help you get started:
+<pre>public static void main (String [] args) {
+    Display display = new Display ();
+    Shell shell = new Shell (display);
+    shell.open ();
+    while (!shell.isDisposed ()) {
+        if (!display.readAndDispatch ()) display.sleep ();
+    }
+    display.dispose ();
+}</pre>
+    
+	For a list of sample snippets, see the <a href="snippets.html">SWT snippets page</a>.
+    
+  </dd>
+
+  <dt><strong><a name="javawebstart">Q: How can I package my standalone SWT app for Java Web Start?</a></strong></dt>
+  <dd>A: Follow the steps below to deploy your SWT app with Java Web
+      Start. You can also follow the article from Jeff Gunther on how to
+      <a href="http://www-106.ibm.com/developerworks/opensource/library/os-jws/">Deploy
+      an SWT application using Java Web Start</a>.
+
+      <p>NOTE: As of 2.1, SWT Java Web Start apps can only be deployed
+      on Windows and GTK.  <p>Example:  Package the SWT ControlExample
+      application.</p>
+    <ol>
+	<li>Create the file "<a href="swtexamples.jnlp.txt">swtexamples.jnlp</a>".
+            In the file, replace the value of the codebase attribute with your own URI.
+    	<li>Create the file "<a href="swt.jnlp.txt">swt.jnlp</a>"
+            In the file, replace the value of the codebase attribute with your own URI.
+    	<li>Create the following folders and files:
+	    	<ul>
+    			<li>root (e.g. d:/jws or the URL of your website)
+    			<ul>
+    				<li>apps/swtexamples/swtexamples.jar contains the SWT ControlExample
+	    			<li>apps/swtexamples/swtexamples.jnlp (Java Web Start extension file)
+	    			<li>swt/swt.jnlp (Java Web Start extension file)
+	    			<li>swt/os/linux/x86/swtNativeLib.jar contains the GTK linux native libraries: libswt-gtk-xxxx.so, libswt-pi-gtk-xxxx.so, libswt-gnome-gtk-xxxx.so
+	    			<li>swt/os/win32/x86/swtNativeLib.jar contains the Win32 native library: swt-win32-xxxx.dll
+					<li>swt/ws/linux/swt.jar contains the SWT Linux GTK jar library
+					<li>swt/ws/linux/swt-pi.jar contains the SWT Linux GTK jar library
+					<li>swt/ws/win32/swt.jar contains the SWT Win32 jar library
+    			</ul>
+	    	</ul>
+	    	<br>- The swtexamples.jar can be found in the Example Plug-ins section of the Eclipse download page.
+	    	<br>- The SWT jars and native libraries can also be downloaded from the Eclipse download page.
+	    	<br>- You need to create the swtNativeLib.jar files described previously. Create empty jars with the name 'swtNativeLib.jar'.  Add the native SWT library into the swtNativeLib.jar file you just created. As indicated previously, insert the SWT Win32 native library (swt-win32-xxxx.dll) into the swt/os/win32/x86/swtNativeLib.jar file. Insert the SWT GTK linux native libraries in the swt/os/linux/x86/swtNativeLib.jar.
+	    <li>Sign the jar files
+	    	<br>Each jar file must be signed with your own key certificate.
+	    <li>Create a web page linking to the extension file root/apps/swtexamples/swtexamples.jnlp
+    </ol>
+    
+    <p>This description was originally contributed by &Oslash;yvind Harboe.</p>
+  </dd>
+	
+  <dt><strong><a name="contributeToSWT">Q: How can I contribute to SWT?</a></strong>
+  </dt>
+  <dd>A: The SWT team is interested in recruiting more developers to our cause.  There are many ways 
+  you can make contributions to the SWT project:
+  
+  <ul>
+    <li>Enter <a href="https://bugs.eclipse.org/bugs/">bug reports</a> against Platform SWT to request enhancements or when you find errors or platform inconsistencies.</li>
+    <li>Write <a href="http://www.eclipse.org/arg/index.html">articles</a> for Eclipse about how to use SWT.</li>
+    <li>Write snippets for the <a href="snippets.html">SWT snippet page</a> and send them to the mailing list.</li>
+    <li>Create your own web site with useful SWT information and ask us to add it our <a href="SWT_Resources.html">list of other
+    useful information</a>.</li>
+    <li>Help fellow SWT users by answering questions in <a href="news://news.eclipse.org/eclipse.platform.swt">eclipse.platform.swt</a>.</li>
+    <li>Test SWT on a specific platform, particularly one that is less common or that is still 
+    in a beta release.  Run the <a href="test_plan.html">SWT test plan</a> 
+    and post the results in a bug report against Platform SWT.</li>
+    <li>Contribute solutions to bug reports against Platform SWT.  This is the best way to
+    become familiar with the SWT architecture.  If you are familiar with a widget toolkit
+    for a specific Operating System, you should find our Java code quite familiar.
+    Attach your solution as a patch to the bug report.  If your solution is not accepted we will 
+    provide an explanation.  We have fairly strict coding guidelines which we are currently trying 
+    to capture in a document.</li>
+    <li>Implement new widgets.  Since SWT needs to be portable, this task can be difficult because 
+    it requires you to have all the platforms available to you.  Your best bet would be to 
+    implement the widget for Windows and GTK plus an emulated version.  Again, we have fairly 
+    strict coding guidelines which we expect to be followed.</li>
+    <li>Port SWT to a new platform.  If your port is available under CPL and is in a repository
+    that is publicly accessible, we will inspect your code and give you feedback.</li>
+  </ul>
+
+  
+  <p>Code that you contribute to SWT will come under the CPL license.  We will acknowledge any 
+  contributions in the Copyright documentation at the top of the source code file.  Code must either
+  be sent to <a href="http://dev.eclipse.org/mailman/listinfo/platform-swt-dev">platform-swt-dev@eclipse.org</a> 
+  or <a href="news://news.eclipse.org/eclipse.platform.swt">eclipse.platform.swt</a> or attached to a 
+  <a href="https://bugs.eclipse.org/bugs/">bug report</a> against Platform SWT to be accepted.  
+  Please do not email code to individual members of the SWT team.</p>
+  </dd>
+  
+  <dt><strong><a name="whatisbrowser">Q: What is the SWT Browser widget?</a></strong></dt>
+  <dd>A: The SWT Browser widget is used to display HTML documents. It is
+      designed to provide a basic and portable API sufficient for essential
+      HTML browsing and rendering on the platforms on which it is implemented.
+  </dd>
+  
+  <dt><strong><a name="browserlinux">Q: What do I need to run the SWT Browser inside Eclipse on Linux/GTK or Linux/Motif?</a></strong></dt>
+  <dd>A: You need the Mozilla version 1.4 GTK2. Mozilla 1.5 GTK2 or Mozilla 1.6 GTK2 can also be used with SWT 3.0. In addition, Mozilla 1.7.3 GTK2 can be used starting with SWT 3.1 v3104. The version of Mozilla installed on your system varies with your Linux distribution
+    <br><br>The following Linux distributions meet the Mozilla requirements for using the Browser widget.
+    <ul>
+    	<li>RedHat Enterprise Linux 3</li>
+    	<li>Suse 9</li>
+    </ul>
+    <br>If you use the IBM 1.4 VM <a href="#browserlinuxibm">check this.</a>
+    <br>
+    <br>Instructions for RedHat 9 users:
+  	<br>You need the Mozilla version 1.4 GTK2 RPMs for RedHat 9. Mozilla 1.5 GTK2 or Mozilla 1.6 GTK2 can also be used. For example, the RPMs for the Mozilla version 1.6 GTK2 can be downloaded from the
+	  <a href="http://ftp26moz.newaol.com/pub/mozilla.org/mozilla/yum/SeaMonkey/releases/1.6/redhat/1/i386/">Mozilla ftp site</a>.
+	<br>
+	<ol>
+    	<li>Uninstall any prior Mozilla version</li>
+	    <li>Install the Mozilla RPMs</li>
+    	<li>Run Mozilla once. Verify the application opens HTML documents correctly. Check the version number (1.6) in the Mozilla About dialog.. Verify you now have the Mozilla configuration file /etc/gre.conf.</li>
+    	<li>Start Eclipse. Eclipse is now ready to use the Browser widget.</li>
+	</ol>
+	<br>Instructions for other Linux distributions:
+	<br>You need the Mozilla version 1.4 GTK2 for your distribution. Mozilla 1.5 GTK2 or Mozilla 1.6 GTK2 can also be used.
+  <ol>
+  	<li>If you are using SWT 3.0, download the Mozilla 1.6 Xft and GTK2 build available from <a href="http://www.braindrain.be/mozilla/">the Mozilla XFT website</a>. If you are using SWT 3.1, you can choose to use the more recent <a href="http://ftp.mozilla.org/pub/mozilla.org/mozilla/releases/mozilla1.7.3/contrib/mozilla-i686-pc-linux-gnu-1.7.3-gtk2+xft.tar.gz">Mozilla 1.7.3 GTK2 from Mozilla.org</a>.</li>
+  	<li>Uninstall any prior Mozilla version.</li>
+  	<li>Extract and install the Mozilla build.</li>
+  	<li>Run Mozilla once. Verify the application run correctly and check the version number (1.6) in the Mozilla About dialog.</li>
+  	<li>Set the environment variable MOZILLA_FIVE_HOME to the folder containing your Mozilla install. e.g. <code>setenv MOZILLA_FIVE_HOME /usr/lib/mozilla</code></li>
+  	<li>Start Eclipse. Eclipse is now ready to use the Browser widget.</li>
+  </ol>
+  </dd>
+
+  <dt><strong><a name="browserlinuxrcp">Q: What do I need to run the SWT Browser in a standalone application on Linux GTK or Linux Motif?</a></strong></dt>
+  <dd>A: Follow the steps below to use the SWT Browser widget in your standalone SWT application.
+    <ol>
+    	<li>A supported version of Mozilla must be installed - 1.4 GTK2, 1.5 GTK2 or 1.6 GTK2. <a href="#browserlinux">Instructions here</a></li>
+    	<li>Set the environment variable MOZILLA_FIVE_HOME to your Mozilla installation folder. e.g. <code>setenv MOZILLA_FIVE_HOME /usr/lib/mozilla</code></li>
+    	<li>Set the environmnent variable LD_LIBRARY_PATH to include MOZILLA_FIVE_HOME. e.g. <code>setenv LD_LIBRARY_PATH ${MOZILLA_FIVE_HOME}:${LD_LIBRARY_PATH}</code></li>
+    	<li>Your standalone SWT application can now use the Browser widget.
+    </ol>
+    <br>If you use the IBM 1.4 VM <a href="#browserlinuxibm">check this.</a>
+    <br>
+  </dd>
+
+  <dt><strong><a name="browserlinuxibm">Q: How can I get the SWT Browser to work with the IBM 1.4 VM?</a></strong></dt>
+  <dd>A: The IBM 1.4 VM accidentally removes certain entries of the environment variable LD_LIBRARY_PATH. This occurs in particular
+  for entries starting with /usr/lib. It will leave untouched entries such as /usr/../usr/lib.
+  
+  <br>Instructions for Red Hat users:
+    <ol>
+    	<li>Mozilla is installed in <code>/usr/lib/mozilla-1.x</code> on this platform. Set the environment variable MOZILLA_FIVE_HOME to <code>/usr/../usr/lib/mozilla-1.x</code></li>
+    	<li>Start Eclipse. If you are not using Eclipse, add MOZILLA_FIVE_HOME to LD_LIBRARY_PATH before starting your standalone SWT application.</li>
+		<li>The Browser widget should now work with the IBM VM.</li>
+    </ol>
+  </dd>
+
+  <dt><strong><a name="browserplatforms">Q: Which platforms are supported by the SWT Browser?</a></strong></dt>
+  <dd>A: The SWT Browser is currently available on the following platforms:
+  <br>
+  <ol>
+    <li>Windows (Internet Explorer 5 or above)</li>
+    <li>Mac (Panther OS X.3 or above. Safari based)</li>
+    <li>Linux GTK and Linux Motif (both using Mozilla 1.4 GTK2 - or above 1.4)
+    <br>The following Linux distributions meet the Mozilla requirements for using the Browser widget:
+    <ul>
+    	<li>RedHat Enterprise Linux 3</li>
+    	<li>Suse 9</li>
+    </ul>
+    Other Linux distributions require a supported version of Mozilla to be installed. <a href="#browserlinux">See instructions</a>
+    <li>Photon</li>
+  </ol> 
+  </dd>
+  
+  <dt><strong><a name="browserplugins">Q: Why can't I run Java applets in the SWT Browser?</a></strong></dt>
+  <dd>A: Applets usually don't show up in the SWT Browser. On Windows (Internet Explorer), the Java
+  plugin fails to run a second Java virtual machine to execute the applet because two Java virtual machines cannot run
+  in the same process. On Linux (Mozilla), the Java plug-in has been reported to work because it executes in its own process.
+  <a href="https://bugs.eclipse.org/bugs/show_bug.cgi?id=59506">See bug 59506</a> .
+  </dd>
+
+  <dt><strong><a name="gtk64">Q: How do I build the 64 bit version of SWT GTK?</a></strong></dt>
+  <dd>Sept. 29th 2004. An SWT GTK library is under development for the 64 bit platform. It is being developed and tested on an AMD64 machine.
+  The SWT build for the AMD64 Linux platform is available from the Eclipse download page along with the other SWT ports.
+  <br>Follow these steps to extract the 64 bit SWT GTK source code and produce your own build.
+  <ol>
+  	<li>Start Eclipse and download the following projects from dev.eclipse.org: org.eclipse.swt, org.eclipse.swt.gtk64, org.eclipse.swt.tools</li>
+  	<li>Open the file build.xml located into the org.eclipse.swt.gtk64 fragment. Run Ant to execute the ant task build.nativeLibraries defined in build.xml.</li>
+  	<li>Refresh the project org.eclipse.swt.gtk64</li>
+  </ol>
+  The project org.eclipse.swt.gtk64 now contains the 64 bit native libraries. The 64 bit java and C source code
+  has been copied under the org.eclipse.swt.gtk64/src folder.
+  </dd>
+
+  <dt><strong><a name="autotest">Q: How can I implement user interaction test cases?</a></strong></dt>
+  <dd>A: The method <code>org.eclipse.swt.widgets.Display.post(Event)</code> can be used to
+      post mouse and keyboard events into the OS, which emulates a user
+      performing the specified action.  Also, open source application
+      <a href="http://sourceforge.net/projects/abbot/">"Abbot for SWT"</a> assists
+      in the writing of automated test suites.
+  </dd>
+
+  <dt><strong><a name="noeventfire">Q: Why are some events not fired in response to programmatic widget changes?</a></strong></dt>
+  <dd>A: This is a design decision that was made in order to minimize
+      notification of potentially unwanted events.  For example, when the
+      selection of a control is changed programmatically, SWT does not issue a
+      selection event.  If this were not the case then changing the selection
+      multiple times would send multiple notifications and run application
+      listener code multiple times, thereby leading to a potential performance
+      problem.  Clients that wish to notify widget listeners of changes made
+      programatically can do so by creating an <code>Event</code> object and
+      invoking <code>Widget.notifyListeners(int, Event)</code> on the widget.
+      Note that some programmatically-triggered events are sent, typically in
+      response to low-level widget operations such as focus, move and resize
+      changes.
+  </dd>
+  
+  <dt><strong><a name="nographicslibrary">Q: Why do I get "SWTException: Unable to load graphics library" using GC?</a></strong></dt>
+  <dd>A: Support for advanced graphics operations such as path for curvers and
+      lines, alpha blending, antialiasing, patterns and transformations was
+      added to SWT 3.1. On Windows, <a href="http://msdn.microsoft.com/library/default.asp?url=/library/en-us/gdicpp/gdiplus/gdiplus.asp">GDI+</a>
+      is required. On X Windows platforms (i.e. GTK and Motif),
+      <a href="http://cairographics.org/introduction">Cairo 0.4.0</a> is
+      required. If your Windows platform does not have GDI+ by default, you can
+      <a href="http://www.microsoft.com/downloads/details.aspx?FamilyID=6a63ab9c-df12-4d41-933c-be590feaa05a&amp;DisplayLang=en">download</a>
+      a redistributable package from Microsoft.
+  </dd>
+</dl>
+</table>
+
+</body>
+</html>
diff --git a/sidebar.php b/sidebar.php
index d194912..5e4fc8c 100755
--- a/sidebar.php
+++ b/sidebar.php
@@ -1,13 +1,14 @@
 <td valign="top" bgcolor="#6699cc"><p><table class="nav" width="90%">
-<tr><td class="nav">&nbsp; <a class="nav" href="foo">Widgets</a>
-<tr><td class="nav">&nbsp; <a class="nav" href="foo">Snippets</a>
-<tr><td class="nav">&nbsp; <a class="nav" href="foo">FAQ</a>
-<tr><td class="nav">&nbsp; <a class="nav" href="foo">Tools</a>
-<tr><td class="nav">&nbsp; <a class="nav" href="foo">Documentation</a>
-<tr><td class="nav">&nbsp; <a class="nav" href="foo">Community</a>
-<tr><td class="nav">&nbsp; <a class="nav" href="foo">SWT Home</a>
+<tr><td class="nav">&nbsp; <a class="nav" href="widgets.php">Widgets</a>
+<tr><td class="nav">&nbsp; <a class="nav" href="snippets.php">Snippets</a>
+<tr><td class="nav">&nbsp; <a class="nav" href="faq.php">FAQ</a>
+<tr><td class="nav">&nbsp; <a class="nav" href="tools.php">Tools</a>
+<tr><td class="nav">&nbsp; <a class="nav" href="docs.php">Documentation</a>
+<tr><td class="nav">&nbsp; <a class="nav" href="community.php">Community</a>
+<tr><td class="nav">&nbsp; <a class="nav" href="http://bugs.eclipse.org/bugs/">Bugs</a>
+<tr><td class="nav">&nbsp; <a class="nav" href="http://www.eclipse.org/swt/">SWT Home</a>
 </table></p><p><table class="nav" width="90%">
-<tr><td class="nav">&nbsp; <a class="nav" href="foo">Bugs</a>
-<tr><td class="nav">&nbsp; <a class="nav" href="foo">Mailing List</a>
+<tr><td class="nav">&nbsp; <a class="nav" href="http://www.eclipse.org/projects/">Eclipse Projects</a>
+<tr><td class="nav">&nbsp; <a class="nav" href="http://www.eclipse.org/">Eclipse Home</a>
 </table></p>
 <center><p><a href="http://www.eclipse.org/"><img src="http://www.eclipse.org/images/EclipseBannerPic.jpg" border="0"></a></p></center>
diff --git a/tools.php b/tools.php
new file mode 100755
index 0000000..f9f225b
--- /dev/null
+++ b/tools.php
@@ -0,0 +1,78 @@
+<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
+<html>
+<head>
+    <title>SWT Development Resources</title>
+    <meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1">
+    <link rel="stylesheet" href="http://dev.eclipse.org/default_style.css" type="text/css">
+    <link rel="stylesheet" href="swt.css" type="text/css">
+    <link rel="shortcut icon" href="http://www.eclipse.org/images/eclipse.ico" type="image/x-icon">
+</head>
+<body bgcolor="#ffffff" text="#000000">
+<table width="635px" style="border-bottom: 1px solid #000000;">
+<colgroup><col width="125px"><col width="510px"></colgroup>
+<tr><?php include "sidebar.php"; ?>
+<td valign="top" style="padding: 10px"><h1 style="padding: 0; margin: 0; border-bottom: 1px solid #000000;">SWT Development Resources</h1>
+
+<p>This page contains information and tools for SWT developers.</p>
+
+<table width="100%">
+<tr><th bgcolor="#0080c0" align="left" style="padding: 2px;"><font color="#ffffff">Experimental OpenGL Plug-in</font>
+</table>
+
+<p>An OpenGL plug-in has been developed and is available for download
+here.  The plugin consists of a library that provides bindings for all
+native OpenGL functions, and the classes that facilitate the use of
+these bindings for drawing on an SWT Canvas.  Note that this plug-in is
+purely experimental in nature and is not intended to be part of the
+standard SWT distribution.</p>
+
+<ul>
+  <li><a href="opengl/opengl.html">org.eclipse.swt.opengl</a></li>
+</ul>
+
+<table width="100%">
+<tr><th bgcolor="#0080c0" align="left" style="padding: 2px;"><font color="#ffffff">Tools</font>
+</table>
+
+<p><b>Sleak</b> is a simple tool that monitors the creation and
+disposing of SWT graphics resources.</p>
+<ul>
+  <li><b>Sleak plug-in for Eclipse</b> <a href="tools/org.eclipse.swt.sleak_1.0.0.zip">(zip file)</a>
+    <ul>
+      <li>Requires Eclipse 2.1.0 or later.</li>
+      <li>Extract the zip file above into the <code>eclipse/plugins/</code> folder.</li>
+      <li>Extract the <code>.options</code> file from the <code>eclipse/plugins/org.eclipse.ui_&lt;version&gt;.jar/</code> archive to the <code>eclipse/</code> folder.</li>
+       <li>Add the following lines to the <code>.options</code> file:<br>
+           <code>org.eclipse.ui/debug=true</code>
+           <br><code>org.eclipse.ui/trace/graphics=true</code></li>
+       <li>Launch Eclipse with the "-clean -debug" option on the command line.</li>
+    </ul>
+
+  <li><b>Sleak for standalone applications </b><a href="http://dev.eclipse.org/viewcvs/index.cgi/org.eclipse.swt.tools/Sleak/org/eclipse/swt/tools/internal/Sleak.java?rev=HEAD&amp;content-type=text/vnd.viewcvs-markup">(Sleak.java)</a></li>
+</ul>
+
+<p><b>JniGen</b> is a tool that generates JNI wrappers for creating the SWT Platform Interface.</p>
+
+<ul>
+  <li>Retrieve the org.eclipse.swt.tools project from dev.eclipse.org.</li>
+  <li>Run the org.eclipse.swt.tools.internal.JNIGeneratorAppUI class inside the JNI Generation folder.</li>
+</ul>
+    
+<p><b>SWT Spy plug-in</b> for Eclipse is a simple tool that prints out
+information about the widget under the cursor.  Currently, this includes
+style, layout and parent information.</p>
+
+<ul>
+  <li>Requires Eclipse 3.0 or later.</li>
+  <li>Extract <a href="tools/org.eclipse.swt.spy_1.0.0.zip">org.eclipse.swt.spy_1.0.0.zip</a>
+      into the <code>eclipse/plugins/</code> folder.</li>
+  <li>Launch eclipse with "-clean" argument (clears caches so eclipse will pick up new plugin).</li>
+  <li>Open the SWT Spy view (Window &gt; Show View &gt; Other ... &gt; Tools &gt; SWT Spy.</li>
+  <li>Enable collection of info by clicking on the "Monitor" button in Spy view.</li>
+  <li>Move cursor over the control of interest and see data printed in Spy view.</li>
+  <li>To start or stop data collection while over a control, toggle the monitor action using ALT+SHIFT+".".</li>
+</ul>
+
+</table>
+</body>
+</html>
\ No newline at end of file
diff --git a/widgets.php b/widgets.php
new file mode 100644
index 0000000..504a1bd
--- /dev/null
+++ b/widgets.php
@@ -0,0 +1,260 @@
+<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
+<html>
+<head>
+    <title>SWT Widgets</title>
+    <meta http-equiv="Content-Type" content="text/html; charset=utf-8">
+    <meta http-equiv="Content-Style-Type" content="text/css">
+    <link rel="stylesheet" href="http://dev.eclipse.org/default_style.css" type="text/css">
+    <link rel="stylesheet" href="swt.css" type="text/css">
+    <link rel="shortcut icon" href="http://www.eclipse.org/images/eclipse.ico" type="image/x-icon">
+</head>
+<body bgcolor="#ffffff" text="#000000">
+<table width="875px" style="border-bottom: 1px solid #000000;">
+<colgroup><col width="125px"><col width="750px"></colgroup>
+<tr><?php include "sidebar.php"; ?>
+<td valign="top" style="padding: 10px"><h1 style="padding: 0; margin: 0; border-bottom: 1px solid #000000;">SWT Widgets</h1>
+
+<p>Below are screenshots and links to documentation for many of the
+widgets included in SWT.  For a complete list of classes including
+those that don't screeenshot well, see the
+<a href="http://help.eclipse.org/help31/topic/org.eclipse.platform.doc.isv/reference/api/org/eclipse/swt/package-summary.html">SWT Javadoc</a>.</p>
+
+<table width="100%" style="border-bottom: 1px solid #000000;">
+<colgroup>
+    <col width="242">
+    <col width="242">
+    <col width="242">
+</colgroup>
+<tr><td align="center" valign="bottom">
+        <table>
+        <tr><td align="center"><a href="http://help.eclipse.org/help31/topic/org.eclipse.platform.doc.isv/reference/api/org/eclipse/swt/browser/Browser.html"><img src="images/gallery-browser.png" width="169" height="111" border="0" alt="Bowser"></a>
+        <tr><td align="center"><b>Browser</b><br>
+        <small><a href="http://help.eclipse.org/help31/topic/org.eclipse.platform.doc.isv/reference/api/org/eclipse/swt/browser/Browser.html">javadoc</a> -
+        <a href="snippets.html#browser">snippets</a></small>
+        </table>
+    <td align="center" valign="bottom">
+        <table>
+        <tr><td align="center"><a href="http://help.eclipse.org/help31/topic/org.eclipse.platform.doc.isv/reference/api/org/eclipse/swt/widgets/Button.html"><img src="images/gallery-arrow.png" width="55" height="58" border="0" alt="Button"></a>
+        <tr><td align="center"><b>Button</b> (<tt>SWT.ARROW</tt>)<br>
+        <small><a href="http://help.eclipse.org/help31/topic/org.eclipse.platform.doc.isv/reference/api/org/eclipse/swt/widgets/Button.html">javadoc</a> -
+        <a href="snippets.html#button">snippets</a></small>
+        </table>
+    <td align="center" valign="bottom">
+        <table>
+        <tr><td align="center"><a href="http://help.eclipse.org/help31/topic/org.eclipse.platform.doc.isv/reference/api/org/eclipse/swt/widgets/Button.html"><img src="images/gallery-check.png" width="94" height="62" border="0" alt="Button"></a>
+        <tr><td align="center"><b>Button</b> (<tt>SWT.CHECK</tt>)<br>
+        <small><a href="http://help.eclipse.org/help31/topic/org.eclipse.platform.doc.isv/reference/api/org/eclipse/swt/widgets/Button.html">javadoc</a> -
+        <a href="snippets.html#button">snippets</a></small>
+        </table>
+<tr><td height="25px"><td><td>
+<tr><td align="center" valign="bottom">
+        <table>
+        <tr><td align="center"><a href="http://help.eclipse.org/help31/topic/org.eclipse.platform.doc.isv/reference/api/org/eclipse/swt/widgets/Button.html"><img src="images/gallery-push.png" width="100" height="62" border="0" alt="Button"></a>
+        <tr><td align="center"><b>Button</b> (<tt>SWT.PUSH</tt>)<br>
+        <small><a href="http://help.eclipse.org/help31/topic/org.eclipse.platform.doc.isv/reference/api/org/eclipse/swt/widgets/Button.html">javadoc</a> -
+        <a href="snippets.html#button">snippets</a></small>
+        </table>
+    <td align="center" valign="bottom">
+        <table>
+        <tr><td align="center"><a href="http://help.eclipse.org/help31/topic/org.eclipse.platform.doc.isv/reference/api/org/eclipse/swt/widgets/Button.html"><img src="images/gallery-radio.png" width="210" height="56" border="0" alt="Button"></a>
+        <tr><td align="center"><b>Button</b> (<tt>SWT.RADIO</tt>)<br>
+        <small><a href="http://help.eclipse.org/help31/topic/org.eclipse.platform.doc.isv/reference/api/org/eclipse/swt/widgets/Button.html">javadoc</a> -
+        <a href="snippets.html#button">snippets</a></small>
+        </table>
+    <td align="center" valign="bottom">
+        <table>
+        <tr><td align="center"><a href="http://help.eclipse.org/help31/topic/org.eclipse.platform.doc.isv/reference/api/org/eclipse/swt/widgets/Button.html"><img src="images/gallery-toggle.png" width="132" height="63" border="0" alt="Button"></a>
+        <tr><td align="center"><b>Button</b> (<tt>SWT.TOGGLE</tt>)<br>
+        <small><a href="http://help.eclipse.org/help31/topic/org.eclipse.platform.doc.isv/reference/api/org/eclipse/swt/widgets/Button.html">javadoc</a> -
+        <a href="snippets.html#button">snippets</a></small>
+        </table>
+<tr><td height="25px"><td><td>
+<tr><td align="center" valign="bottom">
+        <table>
+        <tr><td align="center"><a href="http://help.eclipse.org/help31/topic/org.eclipse.platform.doc.isv/reference/api/org/eclipse/swt/widgets/Canvas.html"><img src="images/gallery-canvas.png" width="123" height="121" border="0" alt="Canvas"></a>
+        <tr><td align="center"><b>Canvas</b><br>
+        <small><a href="http://help.eclipse.org/help31/topic/org.eclipse.platform.doc.isv/reference/api/org/eclipse/swt/widgets/Canvas.html">javadoc</a> -
+        <a href="snippets.html#canvas">snippets</a></small>
+        </table>
+    <td align="center" valign="bottom">
+        <table>
+        <tr><td align="center"><a href="http://help.eclipse.org/help31/topic/org.eclipse.platform.doc.isv/reference/api/org/eclipse/swt/widgets/Combo.html"><img src="images/gallery-combo.png" width="162" height="60" border="0" alt="Combo"></a>
+        <tr><td align="center"><b>Combo</b><br>
+        <small><a href="http://help.eclipse.org/help31/topic/org.eclipse.platform.doc.isv/reference/api/org/eclipse/swt/widgets/Combo.html">javadoc</a> -
+        <a href="snippets.html#combo">snippets</a></small>
+        </table>
+    <td align="center" valign="bottom">
+        <table>
+        <tr><td align="center"><a href="http://help.eclipse.org/help31/topic/org.eclipse.platform.doc.isv/reference/api/org/eclipse/swt/widgets/Composite.html"><img src="images/gallery-composite.png" width="179" height="108" border="0" alt="Composite"></a>
+        <tr><td align="center"><b>Composite</b><br>
+        <small><a href="http://help.eclipse.org/help31/topic/org.eclipse.platform.doc.isv/reference/api/org/eclipse/swt/widgets/Composite.html">javadoc</a> -
+        <a href="snippets.html#composite">snippets</a></small>
+        </table>
+<tr><td height="25px"><td><td>
+<tr><td align="center" valign="bottom">
+        <table>
+        <tr><td align="center"><a href="http://help.eclipse.org/help31/topic/org.eclipse.platform.doc.isv/reference/api/org/eclipse/swt/widgets/CoolBar.html"><img src="images/gallery-coolbar.png" width="230" height="84" border="0" alt="CoolBar"></a>
+        <tr><td align="center"><b>CoolBar</b><br>
+        <small><a href="http://help.eclipse.org/help31/topic/org.eclipse.platform.doc.isv/reference/api/org/eclipse/swt/widgets/CoolBar.html">javadoc</a> -
+        <a href="snippets.html#coolbar">snippets</a></small>
+        </table>
+    <td align="center" valign="bottom">
+        <table>
+        <tr><td align="center"><a href="http://help.eclipse.org/help31/topic/org.eclipse.platform.doc.isv/reference/api/org/eclipse/swt/custom/CTabFolder.html"><img src="images/gallery-ctabfolder.png" width="222" height="79" border="0" alt="Group"></a>
+        <tr><td align="center"><b>CTabFolder</b><br>
+        <small><a href="http://help.eclipse.org/help31/topic/org.eclipse.platform.doc.isv/reference/api/org/eclipse/swt/custom/CTabFolder.html">javadoc</a> -
+        <a href="snippets.html#ctabfolder">snippets</a></small>
+        </table>
+    <td align="center" valign="bottom">
+        <table>
+        <tr><td align="center"><a href="http://help.eclipse.org/help31/topic/org.eclipse.platform.doc.isv/reference/api/org/eclipse/swt/widgets/Group.html"><img src="images/gallery-group.png" width="106" height="115" border="0" alt="Group"></a>
+        <tr><td align="center"><b>Group</b><br>
+        <small><a href="http://help.eclipse.org/help31/topic/org.eclipse.platform.doc.isv/reference/api/org/eclipse/swt/widgets/Group.html">javadoc</a>
+        </small>
+        </table>
+<tr><td height="25px"><td><td>
+<tr><td align="center" valign="bottom">
+        <table>
+        <tr><td align="center"><a href="http://help.eclipse.org/help31/topic/org.eclipse.platform.doc.isv/reference/api/org/eclipse/swt/widgets/Label.html"><img src="images/gallery-label.png" width="145" height="119" border="0" alt="Label"></a>
+        <tr><td align="center"><b>Label</b><br>
+        <small><a href="http://help.eclipse.org/help31/topic/org.eclipse.platform.doc.isv/reference/api/org/eclipse/swt/widgets/Label.html">javadoc</a> -
+        <a href="snippets.html#label">snippets</a></small>
+        </table>
+    <td align="center" valign="bottom">
+        <table>
+        <tr><td align="center"><a href="http://help.eclipse.org/help31/topic/org.eclipse.platform.doc.isv/reference/api/org/eclipse/swt/widgets/Link.html"><img src="images/gallery-link.png" width="210" height="50" border="0" alt="Link"></a>
+        <tr><td align="center"><b>Link</b><br>
+        <small><a href="http://help.eclipse.org/help31/topic/org.eclipse.platform.doc.isv/reference/api/org/eclipse/swt/widgets/Link.html">javadoc</a> -
+        <a href="snippets.html#link">snippets</a></small>
+        </table>
+    <td align="center" valign="bottom">
+        <table>
+        <tr><td align="center"><a href="http://help.eclipse.org/help31/topic/org.eclipse.platform.doc.isv/reference/api/org/eclipse/swt/widgets/List.html"><img src="images/gallery-list.png" width="147" height="168" border="0" alt="List"></a>
+        <tr><td align="center"><b>List</b><br>
+        <small><a href="http://help.eclipse.org/help31/topic/org.eclipse.platform.doc.isv/reference/api/org/eclipse/swt/widgets/List.html">javadoc</a> -
+        <a href="snippets.html#list">snippets</a></small>
+        </table>
+<tr><td height="25px"><td><td>
+<tr><td align="center" valign="bottom">
+        <table>
+        <tr><td align="center"><a href="http://help.eclipse.org/help31/topic/org.eclipse.platform.doc.isv/reference/api/org/eclipse/swt/widgets/Menu.html"><img src="images/gallery-menu.png" width="242" height="166" border="0" alt="Menu"></a>
+        <tr><td align="center"><b>Menu</b><br>
+        <small><a href="http://help.eclipse.org/help31/topic/org.eclipse.platform.doc.isv/reference/api/org/eclipse/swt/widgets/Menu.html">javadoc</a> -
+        <a href="snippets.html#menu">snippets</a></small>
+        </table>
+    <td align="center" valign="bottom">
+        <table>
+        <tr><td align="center"><a href="http://help.eclipse.org/help31/topic/org.eclipse.platform.doc.isv/reference/api/org/eclipse/swt/widgets/ProgressBar.html"><img src="images/gallery-progressbar.png" width="159" height="51" border="0" alt="ProgressBar"></a>
+        <tr><td align="center"><b>ProgressBar</b><br>
+        <small><a href="http://help.eclipse.org/help31/topic/org.eclipse.platform.doc.isv/reference/api/org/eclipse/swt/widgets/ProgressBar.html">javadoc</a> -
+        <a href="snippets.html#progressbar">snippets</a></small>
+        </table>
+    <td align="center" valign="bottom">
+        <table>
+        <tr><td align="center"><a href="http://help.eclipse.org/help31/topic/org.eclipse.platform.doc.isv/reference/api/org/eclipse/swt/widgets/Sash.html"><img src="images/gallery-sash.png" width="144" height="141" border="0" alt="Sash"></a>
+        <tr><td align="center"><b>Sash</b><br>
+        <small><a href="http://help.eclipse.org/help31/topic/org.eclipse.platform.doc.isv/reference/api/org/eclipse/swt/widgets/Sash.html">javadoc</a> -
+        <a href="snippets.html#sash">snippets</a></small>
+        </table>
+<tr><td height="25px"><td><td>
+<tr><td align="center" valign="bottom">
+        <table>
+        <tr><td align="center"><a href="http://help.eclipse.org/help31/topic/org.eclipse.platform.doc.isv/reference/api/org/eclipse/swt/custom/ScrolledComposite.html"><img src="images/gallery-scrolledcomposite.png" width="134" height="131" border="0" alt="ScrolledComposite"></a>
+        <tr><td align="center"><b>ScrolledComposite</b><br>
+        <small><a href="http://help.eclipse.org/help31/topic/org.eclipse.platform.doc.isv/reference/api/org/eclipse/swt/custom/ScrolledComposite.html">javadoc</a> -
+        <a href="snippets.html#scrolledcomposite">snippets</a></small>
+        </table>
+    <td align="center" valign="bottom">
+        <table>
+        <tr><td align="center"><a href="http://help.eclipse.org/help31/topic/org.eclipse.platform.doc.isv/reference/api/org/eclipse/swt/widgets/Shell.html"><img src="images/gallery-shell.png" width="222" height="47" border="0" alt="Shell"></a>
+        <tr><td align="center"><b>Shell</b><br>
+        <small><a href="http://help.eclipse.org/help31/topic/org.eclipse.platform.doc.isv/reference/api/org/eclipse/swt/widgets/Shell.html">javadoc</a> -
+        <a href="snippets.html#shell">snippets</a></small>
+        </table>
+    <td align="center" valign="bottom">
+        <table>
+        <tr><td align="center"><a href="http://help.eclipse.org/help31/topic/org.eclipse.platform.doc.isv/reference/api/org/eclipse/swt/widgets/Slider.html"><img src="images/gallery-slider.png" width="189" height="54" border="0" alt="Slider"></a>
+        <tr><td align="center"><b>Slider</b><br>
+        <small><a href="http://help.eclipse.org/help31/topic/org.eclipse.platform.doc.isv/reference/api/org/eclipse/swt/widgets/Slider.html">javadoc</a> -
+        <a href="snippets.html#slider">snippets</a></small>
+        </table>
+<tr><td height="25px"><td><td>
+<tr><td align="center" valign="bottom">
+        <table>
+        <tr><td align="center"><a href="http://help.eclipse.org/help31/topic/org.eclipse.platform.doc.isv/reference/api/org/eclipse/swt/widgets/Scale.html"><img src="images/gallery-scale.png" width="191" height="75" border="0" alt="Scale"></a>
+        <tr><td align="center"><b>Scale</b><br>
+        <small><a href="http://help.eclipse.org/help31/topic/org.eclipse.platform.doc.isv/reference/api/org/eclipse/swt/widgets/Scale.html">javadoc</a> -
+        <a href="snippets.html#scale">snippets</a></small>
+        </table>
+    <td align="center" valign="bottom">
+        <table>
+        <tr><td align="center"><a href="http://help.eclipse.org/help31/topic/org.eclipse.platform.doc.isv/reference/api/org/eclipse/swt/widgets/Spinner.html"><img src="images/gallery-spinner.png" width="98" height="67" border="0" alt="Spinner"></a>
+        <tr><td align="center"><b>Spinner</b><br>
+        <small><a href="http://help.eclipse.org/help31/topic/org.eclipse.platform.doc.isv/reference/api/org/eclipse/swt/widgets/Spinner.html">javadoc</a> -
+        <a href="snippets.html#spinner">snippets</a></small>
+        </table>
+    <td align="center" valign="bottom">
+        <table>
+        <tr><td align="center"><a href="http://help.eclipse.org/help31/topic/org.eclipse.platform.doc.isv/reference/api/org/eclipse/swt/custom/StyledText.html"><img src="images/gallery-styledtext.png" width="208" height="98" border="0" alt="StyledText"></a>
+        <tr><td align="center"><b>StyledText</b><br>
+        <small><a href="http://help.eclipse.org/help31/topic/org.eclipse.platform.doc.isv/reference/api/org/eclipse/swt/custom/StyledText.html">javadoc</a> -
+        <a href="snippets.html#styledtext">snippets</a></small>
+        </table>
+<tr><td height="25px"><td><td>
+<tr><td align="center" valign="bottom">
+        <table>
+        <tr><td align="center"><a href="http://help.eclipse.org/help31/topic/org.eclipse.platform.doc.isv/reference/api/org/eclipse/swt/widgets/TabFolder.html"><img src="images/gallery-tabfolder.png" width="178" height="116" border="0" alt="TabFolder"></a>
+        <tr><td align="center"><b>TabFolder</b><br>
+        <small><a href="http://help.eclipse.org/help31/topic/org.eclipse.platform.doc.isv/reference/api/org/eclipse/swt/widgets/TabFolder.html">javadoc</a> -
+        <a href="snippets.html#tabfolder">snippets</a></small>
+        </table>
+    <td align="center" valign="bottom">
+        <table>
+        <tr><td align="center"><a href="http://help.eclipse.org/help31/topic/org.eclipse.platform.doc.isv/reference/api/org/eclipse/swt/widgets/Table.html"><img src="images/gallery-table.png" width="210" height="130" border="0" alt="Table"></a>
+        <tr><td align="center"><b>Table</b><br>
+        <small><a href="http://help.eclipse.org/help31/topic/org.eclipse.platform.doc.isv/reference/api/org/eclipse/swt/widgets/Table.html">javadoc</a> -
+        <a href="snippets.html#table">snippets</a></small>
+        </table>
+    <td align="center" valign="bottom">
+        <table>
+        <tr><td align="center"><a href="http://help.eclipse.org/help31/topic/org.eclipse.platform.doc.isv/reference/api/org/eclipse/swt/widgets/Text.html"><img src="images/gallery-textsingle.png" width="185" height="66" border="0" alt="Text"></a>
+        <tr><td align="center"><b>Text</b> (<tt>SWT.SINGLE</tt>)<br>
+        <small><a href="http://help.eclipse.org/help31/topic/org.eclipse.platform.doc.isv/reference/api/org/eclipse/swt/widgets/Text.html">javadoc</a> -
+        <a href="snippets.html#text">snippets</a></small>
+        </table>
+<tr><td height="25px"><td><td>
+<tr><td align="center" valign="bottom">
+        <table>
+        <tr><td align="center"><a href="http://help.eclipse.org/help31/topic/org.eclipse.platform.doc.isv/reference/api/org/eclipse/swt/widgets/Text.html"><img src="images/gallery-textmulti.png" width="180" height="79" border="0" alt="Text"></a>
+        <tr><td align="center"><b>Text</b> (<tt>SWT.MULTI</tt>)<br>
+        <small><a href="http://help.eclipse.org/help31/topic/org.eclipse.platform.doc.isv/reference/api/org/eclipse/swt/widgets/Text.html">javadoc</a> -
+        <a href="snippets.html#text">snippets</a></small>
+        </table>
+    <td align="center" valign="bottom">
+        <table>
+        <tr><td align="center"><a href="http://help.eclipse.org/help31/topic/org.eclipse.platform.doc.isv/reference/api/org/eclipse/swt/widgets/ToolBar.html"><img src="images/gallery-toolbar.png" width="185" height="60" border="0" alt="ToolBar"></a>
+        <tr><td align="center"><b>ToolBar</b><br>
+        <small><a href="http://help.eclipse.org/help31/topic/org.eclipse.platform.doc.isv/reference/api/org/eclipse/swt/widgets/ToolBar.html">javadoc</a> -
+        <a href="snippets.html#toolbar">snippets</a></small>
+        </table>
+    <td align="center" valign="bottom">
+        <table>
+        <tr><td align="center"><a href="http://help.eclipse.org/help31/topic/org.eclipse.platform.doc.isv/reference/api/org/eclipse/swt/widgets/Tray.html"><img src="images/gallery-tray.png" width="180" height="90" border="0" alt="Tray"></a>
+        <tr><td align="center"><b>Tray</b><br>
+        <small><a href="http://help.eclipse.org/help31/topic/org.eclipse.platform.doc.isv/reference/api/org/eclipse/swt/widgets/Tray.html">javadoc</a> -
+        <a href="snippets.html#tray">snippets</a></small>
+        </table>
+<tr><td height="25px"><td><td>
+<tr><td align="center" valign="bottom">
+    <td align="center" valign="bottom">
+        <table>
+        <tr><td align="center"><a href="http://help.eclipse.org/help31/topic/org.eclipse.platform.doc.isv/reference/api/org/eclipse/swt/widgets/Tree.html"><img src="images/gallery-tree.png" width="185" height="134" border="0" alt="Tree"></a>
+        <tr><td align="center"><b>Tree</b><br>
+        <small><a href="http://help.eclipse.org/help31/topic/org.eclipse.platform.doc.isv/reference/api/org/eclipse/swt/widgets/Tree.html">javadoc</a> -
+        <a href="snippets.html#tree">snippets</a></small>
+        </table>
+    <td align="center" valign="bottom">
+</table>
+</table>
+</body>
+</html>
\ No newline at end of file
