<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0 Transitional//EN">
<html>
<head>
<meta name="copyright" content="Copyright (c) IBM Corporation and others 2000, 2005. This page is made available under license. For full details see the LEGAL in the documentation book that contains this page." >
   <meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1">
   <title>SWT Standalone Examples Setup</title>
</head>
<body>

<h2>SWT standalone examples setup</h2>

<h3>Adding SWT to your workspace</h3>

<ol>
<li>Download SWT for standalone applications.  A standalone version of SWT is available 
on the same download page as the Eclipse SDK.  Look for the section titled 
<strong>SWT Binary and Source</strong>.  Do not extract the archive file, just save it to disk.
<li>Select <strong>Import...</strong> from the <strong>File</strong> menu.</li>
<li>Select <strong>Existing Projects into Workspace</strong> and click on the <strong>Next</strong> button.</li>
<li>Select <strong>Select archive file:</strong> and use the <strong>Browse</strong> button to locate the SWT 
standalone archive you have previously downloaded.</li>
<li>Click on the <strong>Finish</strong> button.</li>
</ol>

<h3>Importing example source</h3>

<ol>
<li>Download and install the Eclipse Example Plug-ins.  The Eclipse Example Plug-ins are available on the same
download page as the Eclipse SDK.  Look for the section titled <strong>Example Plug-ins</strong>.
You can install the examples in the same location as you installed Eclipse or you can choose
a different location.  If you install the examples in the same location as Eclipse, the example views 
and editors will show up in your Eclipse environment (e.g. <strong>Windows &gt; Show View ... &gt; Other ... &gt; SWT Examples</strong>
If the SWT example views do not appear right away in your menu, restart eclipse with the <strong>-clean</strong> argument).
This is fine but it is not necessary.
<li>Select <strong>New &gt; Project ...</strong> from the <strong>File</strong> menu.
<li>Select <strong>Java Project</strong> and click on the <strong>Next</strong> button.</li>
<li>Give the java project a name such as "SWT Examples".</li>
<li>Select <strong>Create project from existing source</strong> and click on the <strong>Browse ...</strong> 
button to locate the following directory:
&nbsp;&nbsp;&nbsp;&nbsp;<code>eclipse/plugins/org.eclipse.sdk.examples.source_3.1.0/src/org.eclipse.swt.examples_3.1.0</code>
<li>Click on the <strong>Next</strong> button.</li>
<li>Click on the <strong>Projects</strong> tab and click on the <strong>Add</strong> button.</li>
<li>Place a check beside <strong>org.eclipse.swt</strong> and click on the <strong>OK</strong> button.</li>
<li>Click on the <strong>Finish</strong> button.</li>
</ol>

<p>At this point your SWT examples should be compiled without any errors.  Check the <strong>Problems</strong> 
view for errors.  If you get an error like "<code>java.lang.Object</code> not found" it means 
you have not configured a JRE.  Go to the <strong>Window</strong> &gt; <strong>Preferences ...</strong> dialog
and select the <strong>Java</strong> &gt; <strong>Installed JREs</strong> preference page.  Ensure that a JRE is installed 
and that the path to the JRE is correct.</p>

<h3><a NAME="Run"></a>Running the Example</h3>

<p>Now you can run the SWT standalone examples.

<ol>
<li>Open the Java perspective.
<li>In the Packages view, select the main class that you want to run.  
    For example, the main class for the Address Book example is 
    <code>org.eclipse.swt.examples.addressbook.AddressBook</code>.
<li>Select <strong>Run</strong> &gt; <strong>Run As...</strong> &gt; <strong>Java Application</strong> from the main menu.
</ol>


<h3>Examples Overview</h3>
<p>
Consult the documentation of each individual example for the name of
its main class and additional details.
The following examples are included in the <code>swtexamples.jar</code>:
</p>
<ul>
<li><a href="swt_addressbook_ex.html">Address Book</a>
<li><a href="swt_browser_ex.html">Browser Example</a>
<li><a href="swt_clipboard_ex.html">Clipboard</a>
<li><a href="swt_controls_ex.html">Controls</a>
<li><a href="swt_customcontrols_ex.html">Custom Controls</a>
<li><a href="swt_dnd_ex.html">Drag and Drop Example</a>
<li><a href="swt_fileviewer_ex.html">File Viewer</a>
<li><a href="swt_helloworld_ex.html">Hello World [1-5]</a>
<li><a href="swt_hoverhelp_ex.html">Hover Help</a>
<li><a href="swt_imageanalyzer_ex.html">Image Analyzer</a>
<li><a href="swt_javaviewer_ex.html">Java Syntax Viewer</a>
<li><a href="swt_layout_ex.html">Layouts</a>
<li><a href="swt_paint_ex.html">Paint Example</a>
<li><a href="swt_texteditor_ex.html">Text Editor</a>
</ul>

</body>
</html>
