Commits

Anonymous committed 8c90908

Initial revision.

  • Participants
  • Parent commits 184f281

Comments (0)

Files changed (1)

doc/html/jde-ug/jde-ug-content.html

+<html>
+   <head>
+      <meta http-equiv="Content-Type" content="text/html; charset=utf-8">
+   
+      <link rel="StyleSheet" href="../css/jde_style.css" TYPE="text/css">
+      <title>JDE User's Guide</title>
+      <meta name="generator" content="DocBook XSL Stylesheets V1.18">
+   </head>
+   <body bgcolor="white" text="black" link="#0000FF" vlink="#840084" alink="#0000FF">
+      <div class="book" id="ab2">
+         <div class="titlepage">
+            <h1 class="title"><a name="ab2">JDE User's Guide</a></h1>
+            <hr>
+         </div>
+         <div id="ab2b1" class="chapter">
+            <h2 class="title"><a name="ab2b1"><a name="Intro"></a>Introduction</a></h2>
+            <p>Welcome to the <i>JDE User's Guide</i>. This
+               guide explains how to use the JDE to develop Java applications and
+               applets. The guide assumes that you are familiar with Emacs and
+               JavaSoft's Java development tools.
+            </p>
+            <div id="ab2b1b2" class="section">
+               <h2 class="title" style="clear: all"><a name="ab2b1b2"><b><a name="AboutJDE"></a>About the JDE</b></a></h2>
+               <p>The Java Development Environment (JDE) is an Emacs Lisp
+                  	package that interfaces Emacs to third-party Java application
+                  	development tools, such as those provided by JavaSoft's Java
+                  	Development Kit (JDK). The result is an integrated development
+                  	environment (IDE) comparable in power to many commercial Java IDEs.
+                  	Features include: 
+               </p>
+               <div class="itemizedlist">
+                  <ul>
+                     <li><a name="ab2b1b2b2a"></a><p>source code editing with syntax highlighting and auto
+                           	    indentation
+                        </p>
+                     </li>
+                     <li><a name="ab2b1b2b2b1"></a><p>automatic completion of class fields and methods    
+                           	  
+                        </p>
+                     </li>
+                     <li><a name="ab2b1b2b2b2"></a><p>compilation with automatic jump from error messages
+                           	    to responsible line in the source code.
+                        </p>
+                     </li>
+                     <li><a name="ab2b1b2b2b3"></a><p>
+                           	    generates class and method skeletons automatically
+                           	  
+                        </p>
+                     </li>
+                     <li><a name="ab2b1b2b2b4"></a><p>run Java application in an interactive (comint)
+                           	    Emacs buffer
+                           	  
+                        </p>
+                     </li>
+                     <li><a name="ab2b1b2b2b5"></a><p>
+                           	    integrated debugging with interactive debug command
+                           	    buffer and automatic display of current source file/line
+                           	    when stepping through code
+                           	  
+                        </p>
+                     </li>
+                     <li><a name="ab2b1b2b2b6"></a><p>
+                           	    browse JDK doc, using the browser of your choice
+                           	  
+                        </p>
+                     </li>
+                     <li><a name="ab2b1b2b2b7"></a><p>
+                           	    browse your source code, using the Emacs etags facility
+                           	    or a tree-structured speedbar.
+                           	  
+                        </p>
+                     </li>
+                     <li><a name="ab2b1b2b2b8"></a><p>
+                           	    supports latest version of JavaSoft's Java Development
+                           	  
+                        </p>
+                     </li>
+                     <li><a name="ab2b1b2b2b9"></a><p>
+                           	    runs on any platform supported by Emacs and Sun's Java SDK (e.g.,
+                           	    Win95/NT and Solaris)
+                           	  
+                        </p>
+                     </li>
+                     <li><a name="ab2b1b2b2c10"></a><p>
+                           	    easily and infinitely customizable
+                           	  
+                        </p>
+                     </li>
+                     <li><a name="ab2b1b2b2c11"></a><p>
+                           	    works with FSF Emacs and XEmacs
+                           	  
+                        </p>
+                     </li>
+                  </ul>
+               </div>
+            </div>
+            <div id="ab2b1b3" class="section">
+               <h2 class="title" style="clear: all"><a name="ab2b1b3"><b><a name="JDERequirements"></a>JDE Requirements</b></a></h2>
+               <p>The JDE requires the following software: </p>
+               <div class="itemizedlist">
+                  <ul>
+                     <li><a name="ab2b1b3b2a"></a><p><a href="http://www.gnu.org/">FSF Emacs</a> or
+                           	    <a href="http://www.xemacs.org/">XEmacs</a> on Unix
+                           	    platforms; the 20.6.1 version of  
+                           	    <a href="http://www.cs.washington.edu/homes/voelker/ntemacs.html">NT/Emacs</a> on
+                           	    Windows platforms, for general source file editing and tool integration functions.
+                           	  
+                        </p>
+                     </li>
+                     <li><a name="ab2b1b3b2b1"></a><p>
+                           	    <a href="http://www.javasoft.com/java2/">Java
+                              	      Development Kit (JDK)</a> or compatible set of Java
+                           	    development tools (compiler, virtual machine, debugger,
+                           	    class libraries, etc.)
+                           	  
+                        </p>
+                     </li>
+                     <li><a name="ab2b1b3b2b2"></a><p>
+                           	    Web browser (e.g., Netscape or Internet Explorer) for
+                           	    viewing documentation.
+                           	  
+                        </p>
+                     </li>
+                     <li><a name="ab2b1b3b2b3"></a><p>
+                           	    latest versions of Eric Ludlam's speedbar, 
+                           	    semantic bovinator, and
+                           	    eieio packages available for download from
+                           	    <a href="http://www.ultranet.com/~zappo/semantic.shtml">Eric's home page</a>
+                           	  
+                        </p>
+                     </li>
+                     <li><a name="ab2b1b3b2b4"></a><p>
+                           	    The elib package available from the 
+                           	    <a href="http://sunsite.auc.dk/jde/">JDE web site</a>
+                           	  
+                        </p>
+                     </li>
+                     <li><a name="ab2b1b3b2b5"></a><p>
+                           	    <a href="http://www.cygnus.com/misc/gnu-win32/">bash</a>
+                           	    or other Unix-style shell highly recommended for Windows95/NT
+                           	    environments.
+                           	  
+                        </p>
+                     </li>
+                  </ul>
+               </div>
+            </div>
+            <div id="ab2b1b4" class="section">
+               <h2 class="title" style="clear: all"><a name="ab2b1b4"><b><a name="JDEComponents"></a>JDE Components</b></a></h2>
+               <p>
+                  	The JDE distribution includes the following files:
+                  
+               </p>
+               <div class="itemizedlist">
+                  <ul>
+                     <li><a name="ab2b1b4b2a"></a><p> 
+                           
+                           
+                           	    <a href="../../../lisp/jde.el"><tt>jde.el</tt></a>. 
+                           	    Defines jde-mode, a major Emacs mode for developing Java code.
+                           	  
+                        </p>
+                     </li>
+                     <li><a name="ab2b1b4b2b1"></a><p>
+                           	    <a href="../../../lisp/jde-run.el"><tt>jde-run.el</tt></a>. 
+                           	    Runs Java applications and applets
+                           	  
+                        </p>
+                     </li>
+                     <li><a name="ab2b1b4b2b2"></a><p>
+                           	    <a href="../../../lisp/jde-db.el"><tt>jde-db.el</tt></a>. 
+                           	    Interfaces Emacs to <b>jdb</b>, the command-line debugger that
+                           	    comes with the JDK.
+                           	  
+                        </p>
+                     </li>
+                     <li><a name="ab2b1b4b2b3"></a><p>
+                           	    <a href="../../../lisp/jde-gen.el"><tt>jde-gen.el</tt></a>. Contains code
+                           	    generation templates.
+                           	  
+                        </p>
+                     </li>
+                     <li><a name="ab2b1b4b2b4"></a><p>
+                           	    <tt>bsh.jar</tt>. Compiled files for the <a href="http://www.beanshell.org/">BeanShell</a>, a
+                           	    Java source code interpreter developed by Pat Neimeyer.
+                           	  
+                        </p>
+                     </li>
+                     <li><a name="ab2b1b4b2b5"></a><p>
+                           	    <a href="../../../lisp/beanshell.el"><tt>beanshell.el</tt></a>. Provides an
+                           	    Emacs interface to the BeanShell interpreter.
+                           	  
+                        </p>
+                     </li>
+                     <li><a name="ab2b1b4b2b6"></a><p>
+                           	    <a href="../../../lisp/jde-wiz.el"><tt>jde-wiz.el</tt></a>. Provides "wizards"
+                           	    that generate skeleton implementations of interfaces and
+                           	    skeleton overrides of methods declared by superclasses.
+                           	  
+                        </p>
+                     </li>
+                     <li><a name="ab2b1b4b2b7"></a><p>
+                           	    <a href="../../../lisp/jde-complete.el"><tt>jde-complete.el</tt></a>. Automatic field
+                           	    and method completion package.
+                           	  
+                        </p>
+                     </li>
+                     <li><a name="ab2b1b4b2b8"></a><p>
+                           	    <a href="../../../lisp/jde-parse.el"><tt>jde-parse.el</tt></a>. 
+                           	    Java parser package.
+                        </p>
+                     </li>
+                     <li><a name="ab2b1b4b2b9"></a><p>
+                           	    <a href="../../../lisp/java.bnf"><tt>java.bnf</tt></a>. 
+                           	    Java grammar used to generate the JDE's lisp-based Java parser.
+                           	  
+                        </p>
+                     </li>
+                     <li><a name="ab2b1b4b2c10"></a><p>
+                           	    <a href="../../../lisp/jde-bug.el"><tt>jde-bug.el
+                                 	      </tt></a>. 
+                           	    JDEbug user interface package.
+                           	  
+                        </p>
+                     </li>
+                     <li><a name="ab2b1b4b2c11"></a><p>
+                           	    <a href="../../../lisp/jde-dbs.el"><tt>jde-dbs.el</tt></a>. 
+                           	    JDEbug low-level command interface package.
+                           	  
+                        </p>
+                     </li>
+                     <li><a name="ab2b1b4b2c12"></a><p>
+                           	    <a href="../../../lisp/jde-dbo.el"><tt>jde-dbo.el</tt></a>. 
+                           	    JDEbug output processing functions.
+                           	  
+                        </p>
+                     </li>
+                     <li><a name="ab2b1b4b2c13"></a><p>
+                           	    source code, jar files, and documentation for the 
+                           	    <a href="../../java/">Java components</a> of the JDE.
+                        </p>
+                     </li>
+                     <li><a name="ab2b1b4b2c14"></a><p><a href="../../../lisp/jtags"><tt>jtags</tt></a> is a bash shell script that
+                           	    tags Java source hierarchies.
+                           	  
+                        </p>
+                     </li>
+                     <li><a name="ab2b1b4b2c15"></a><p>
+                           	    <a href="../../../lisp/jtags.csh"><tt>jtags.csh</tt></a> is a c shell script
+                           	    that tags Java source heierarchies.
+                           	  
+                        </p>
+                     </li>
+                  </ul>
+               </div>
+            </div>
+            <div id="ab2b1b5" class="section">
+               <h2 class="title" style="clear: all"><a name="ab2b1b5"><b><a name="LatestVersion"></a>Latest Version</b></a></h2>
+               <p>See <a href="http://sunsite.auc.dk/jde/rootpage.html#Downloading">
+                     	  Downloading the JDE</a> on the JDE website for instructions on
+                  	downloading the most recent version of the JDE. 
+                  
+               </p>
+            </div>
+            <div id="ab2b1b6" class="section">
+               <h2 class="title" style="clear: all"><a name="ab2b1b6"><b><a name="InstallingJDE"></a>Installing the JDE</b></a></h2>
+               <p>See the <a href="http://sunsite.auc.dk/jde/install.html">
+                     	JDE Installation Guide</a> on the JDE website for information
+                  on installing the JDE on your system.
+               </p>
+            </div>
+            <div id="ab2b1b7" class="section">
+               <h2 class="title" style="clear: all"><a name="ab2b1b7"><b><a name="ContactingAuthor"></a>Contacting the Author</b></a></h2>
+               <p>Please send bug reports and enhancement suggestions to 
+                  	<a href="mailto:paulk@mathworks.com">Paul Kinnucan</a>.
+                  
+               </p>
+            </div>
+         </div>
+         <div id="ab2b2" class="chapter">
+            <h2 class="title"><a name="ab2b2"><a name="EditingJavaSourceFiles"></a>Editing Java Source Files</a></h2>
+            <p>
+               To edit an existing Java source file, load it into an Emacs
+               buffer by executing <b>C-x C-f</b>. Loading a Java source file
+               into a buffer causes the buffer to enter into <tt>jde-mode</tt>,
+               a variant of <tt>java-mode</tt>, which is in turn a variant of
+               the standard Emacs <tt>cc-mode</tt> for editing source files
+               written in C and related languages. <tt>jde-mode</tt> offers all the
+               specialized source file editing commands of <tt>cc-mode</tt> plus
+               functions for compiling, running, and debugging Java source files.
+               You can invoke the commands by selecting them from the JDE
+               menu that <tt>jde-mode</tt> displays on the Emacs menu bar or by
+               typing the commands in the Emacs minibuffer.
+               
+            </p>
+            <p>
+               
+               <div class="screenshot">
+                  <div class="mediaobject"><img src="images/jdemenu.gif"></div>
+               </div>
+               
+            </p>
+            <div id="ab2b2b3" class="section">
+               <h2 class="title" style="clear: all"><a name="ab2b2b3"><b><a name="DocumentingCode"></a>Documenting Code</b></a></h2>
+               <p>
+                  	The JDE provides complete support for generating HTML documentation for 
+                  	Java classes from comments inserted into the source code for those classes.
+                  
+               </p>
+               <p>See also</p>
+               <p><a href="#DisplayingDoc">Displaying Java Documentation</a></p>
+               <div id="ab2b2b3b4" class="section">
+                  <h3 class="title"><a name="ab2b2b3b4"><b><a name="InsertingComments"></a>Inserting Javadoc Comments</b></a></h3>
+                  <p>
+                     	  To insert a skeleton javadoc comment for a class or method,
+                     	  position point in the first line of the method or class and
+                     	  select JDE-&gt;Document from the
+                     	  Emacs menubar  or type <b>C-c C-v j</b>.
+                     	
+                  </p>
+                  <p>
+                     	  To customize the javadoc skeletons, select JDE-&gt;Options-&gt;Project-&gt;Javadoc 
+                     	  from the Emacs menubar.
+                     	
+                  </p>
+                  <div class="note" style="margin-left: 0.5in; margin-right: 0.5in;">
+                     <h3 class="title"><a name="ab2b2b3b4b3">Thanks...</a></h3>
+                     <p>
+                        	    to <a href="mailto:david@dponce.com">David Ponce</a> for developing the JDE's javadoc 
+                        	    comment generation facility.
+                        	  
+                     </p>
+                  </div>
+               </div>
+               <div id="ab2b2b3b5" class="section">
+                  <h3 class="title"><a name="ab2b2b3b5"><b><a name="GeneratingJavadoc"></a>Generating the Documentation</b></a></h3>
+                  <p>
+                     	  To generate documentation for the current project, open any source
+                     	  file in the project and select Make Doc from the
+                     	  JDE menu or enter <b>M-x jde-javadoc-make</b>.
+                     	
+                  </p>
+                  <p>
+                     	  The <b>jde-javadoc-make</b> command runs the JDK's javadoc program to 
+                     	  generate the documentation. The <b>javadoc</b> command
+                     
+                     	  must be on your system's command path.
+                     	
+                  </p>
+                  <p>
+                     	  The <b>jde-javadoc-make</b> command uses
+                     	  <tt>jde-global-classpath</tt> 
+                     	  as the <tt>-classpath</tt> and <tt>jde-db-source-directories
+                        	  </tt>
+                     	  as the <tt>-sourcepath</tt> option for generating the doc. You can specify all
+                     
+                     	  other javadoc options via JDE customization variables. To specify the
+                     
+                     	  options, select Project-&gt;Options-&gt;Javadoc from the JDE
+                     	  menu. Use 
+                     	  <tt>jde-javadoc-gen-packages</tt> to specify the packages, classes, or source
+                     
+                     	  files for which you want to generate javadoc. If this variable is <tt>nil</tt>,
+                     
+                     	  the <b>jde-javadoc-make</b> generates javadoc for the Java source file in the current
+                     
+                     	  buffer.
+                     	
+                  </p>
+                  <div class="note" style="margin-left: 0.5in; margin-right: 0.5in;">
+                     <h3 class="title"><a name="ab2b2b3b5b4">Note</a></h3>
+                     <p>
+                        	    Thanks to <a href="mailto:sakliban@cs.wustl.edu">Sergey A Klibanov
+                           	    </a> for developing the JDE's javadoc generation facility.
+                        	  
+                     </p>
+                  </div>
+               </div>
+            </div>
+            <div id="ab2b2b4" class="section">
+               <h2 class="title" style="clear: all"><a name="ab2b2b4"><b><a name="CodeCompletion"></a>Code Completion</b></a></h2>
+               <p>
+                  	With the JDE, you can enter the first few letters of a Java
+                  	keyword, field, or method name and then have the JDEenter the
+                  	remaining characters. When completing methods, the JDE enters
+                  	the method arguments as well. The following sections describes
+                  	the completion options that the JDE offers.
+                  
+               </p>
+               <div id="ab2b2b4b2" class="section">
+                  <h3 class="title"><a name="ab2b2b4b2"><b><a name="JavaKeywordCompletion"></a>Java Keyword Completion</b></a></h3>
+                  <p>The JDE defines a set of abbreviations for Java
+                     	  keywords. When you type one of these abbreviations followed
+                     	  by a space in a Java source buffer, the JDE optionally
+                     	  expands the abbreviation into the keyword. For example, when
+                     	  the abbreviation mode is enabled, you need only type
+                     	  <tt>fa</tt> followed by a space to enter the Java
+                     	  keyword <tt>false</tt>. To enable or disable
+                     	  abbreviation mode, select JDE-&gt;Project-&gt;Options-&gt;General and toggle the boolean variable <tt>jde-enable-abbrev-mode</tt>. To change, remove, or add an abbreviation, edit the variable <tt>jde-mode-abbreviations</tt> in the project customization buffer.
+                  </p>
+                  <div class="note" style="margin-left: 0.5in; margin-right: 0.5in;">
+                     <h3 class="title"><a name="ab2b2b4b2b2">Note</a></h3>
+                     <p>The JDE's Java keyword expansion facility is based
+                        	    on the Emacs <tt>abbrev-mode</tt> facility. For
+                        	    more information, see the Emacs user manual.
+                     </p>
+                  </div>
+               </div>
+               <div id="ab2b2b4b3" class="section">
+                  <h3 class="title"><a name="ab2b2b4b3"><b><a name="ControlFlowCompletion"></a>Control Flow Completion</b></a></h3>
+                  <p>The JDE defines abbreviations for Java control flow
+                     	  structures, such as if-then-else. When you enter the
+                     	  abbreviation followed by a space, the JDE expands the
+                     	  abbreviation into a corresponding control structure
+                     	  template.
+                  </p>
+                  <div class="example">
+                     <p><a name="ab2b2b4b3b2"></a><b>Example 1. Expanding a Control Flow Abbreviation</b></p>
+                     <p>The if-then-else abbreviation</p><pre class="programlisting">
+	    ife
+	  </pre><p>expands to the control flow structure</p><pre class="programlisting">
+	    if ( ) {    
+	    } // end of if ()
+	    else   
+	    } // end of if ()else
+	  </pre></div>
+                  <div id="ab2b2b4b3b3" class="section">
+                     <h4 class="title"><a name="ab2b2b4b3b3"><b>Control Flow Abbreviations</b></a></h4>
+                     <p>The JDE defines the following abbreviations for control structures.</p>
+                     <div class="table">
+                        <p><a name="ab2b2b4b3b3b2"></a><b>Table 1. </b></p>
+                        <table border="1">
+                           <colgroup>
+                              <col>
+                              <col>
+                           </colgroup>
+                           <thead>
+                              <tr>
+                                 <th>Statement</th>
+                                 <th>Abbreviation</th>
+                              </tr>
+                           </thead>
+                           <tbody>
+                              <tr>
+                                 <td><tt>if-then</tt></td>
+                                 <td><tt>if</tt></td>
+                              </tr>
+                              <tr>
+                                 <td><tt>else</tt></td>
+                                 <td><tt>else</tt></td>
+                              </tr>
+                              <tr>
+                                 <td><tt>if-then-else</tt></td>
+                                 <td><tt>ife</tt></td>
+                              </tr>
+                              <tr>
+                                 <td><tt>while</tt></td>
+                                 <td><tt>while</tt></td>
+                              </tr>
+                              <tr>
+                                 <td><tt>for</tt></td>
+                                 <td><tt>for</tt></td>
+                              </tr>
+                              <tr>
+                                 <td><tt>for (int I=0;I&lt;UL;I++)</tt></td>
+                                 <td><tt>for</tt></td>
+                              </tr>
+                              <tr>
+                                 <td><tt>main method</tt></td>
+                                 <td><tt>main</tt></td>
+                              </tr>
+                              <tr>
+                                 <td><tt>switch</tt></td>
+                                 <td><tt>switch</tt></td>
+                              </tr>
+                              <tr>
+                                 <td><tt>case</tt></td>
+                                 <td><tt>case</tt></td>
+                              </tr>
+                           </tbody>
+                        </table>
+                     </div>
+                     <div class="note" style="margin-left: 0.5in; margin-right: 0.5in;">
+                        <h3 class="title"><a name="ab2b2b4b3b3b3">Note</a></h3>
+                        <p>
+                           	      You must enable the JDE's Java keyword abbreviation mode to use the control flow abbreviations. See <a href="#JavaKeywordCompletion">Java Keyword Completion</a> for more information.
+                           	    
+                        </p>
+                     </div>
+                  </div>
+                  <div id="ab2b2b4b3b4" class="section">
+                     <h4 class="title"><a name="ab2b2b4b3b4"><b>Left Brace Placement</b></a></h4>
+                     <p>
+                        	    The JDE's Java control flow templates support two options for opening brace placement: placement on the first line of
+                        the template (Kerningham &amp; Ritchie Style, the default) and placement on a separate line. Type <b>M-x customize-variable jde-gen-k&amp;r</b> to specify the style you prefer.
+                        	  
+                     </p>
+                  </div>
+                  <div id="ab2b2b4b3b5" class="section">
+                     <h4 class="title"><a name="ab2b2b4b3b5"><b>Customizing the Control Flow Templates</b></a></h4>
+                     <p>You can customize the templates to suit any indentation style. To customize the templates, select 
+                        	    Project-&gt;Options-&gt;Autocode
+                        	    from the JDE menu.
+                     </p>
+                  </div>
+                  <div id="ab2b2b4b3b6" class="section">
+                     <h4 class="title"><a name="ab2b2b4b3b6"><b>Enabling Variable Content</b></a></h4>
+                     <p>Some templates optionally prompt you for items to insert into the template. To enable 
+                        	    prompting, set the variable <tt>tempo-interactive</tt> to a 
+                        	    non-<tt>nil</tt> value in your <tt>.emacs</tt> file.
+                     </p>
+                  </div>
+                  <div id="ab2b2b4b3b7" class="section">
+                     <h4 class="title"><a name="ab2b2b4b3b7"><b>Disabling the Control Flow Abbreviations</b></a></h4>
+                     <p>To disable the control flow abbreviations, set the variable <tt>jde-gen-cflow-enable</tt> off.
+                     </p>
+                     <div class="note" style="margin-left: 0.5in; margin-right: 0.5in;">
+                        <h3 class="title"><a name="ab2b2b4b3b7b2">Thanks to...</a></h3>
+                        <p>Thanks to Eric D. Friedman &gt;friedman@lmi.net&lt;
+                           	      for contributing the control flow templates.
+                        </p>
+                     </div>
+                  </div>
+               </div>
+               <div id="ab2b2b4b4" class="section">
+                  <h3 class="title"><a name="ab2b2b4b4"><b><a name="DynamicKeywordCompletion"></a>Dynamic Keyword Completion</b></a></h3>
+                  <p>Emacs provides dynamic completion commands attempt to find completions for the word at point in the current buffer or other
+                     buffers.
+                     	
+                  </p>
+                  <div class="example">
+                     <p><a name="ab2b2b4b4b2"></a><b>Example 2. Using Dynamic Completion</b></p>
+                     <p>
+                        	    Suppose that the current source buffer contains the class
+                        	    names <tt>Component</tt> and
+                        	    <tt>Container</tt>. Now suppose you enter
+                        	    <tt>Co</tt> somewhere in the buffer and type
+                        	    M-/.
+                        	    
+                        	    The text <tt>Component</tt> replaces
+                        	    <tt>Co</tt> in the buffer. 
+                        	  
+                     </p>
+                     <p>Typing
+                        	    M-/
+                        	    again changes <tt>Component</tt> to
+                        	    <tt>Container</tt>. In this way, you can cycle
+                        	    through all the possible completions for
+                        	    <tt>Co</tt> in the current buffer.
+                        	  
+                     </p>
+                  </div>
+                  <div id="ab2b2b4b4b3" class="section">
+                     <h4 class="title"><a name="ab2b2b4b4b3"><b>Dynamic Completion Commands</b></a></h4>
+                     <p>Emacs provides two dynamic completion commands.</p>
+                     <p>
+                        	    The <b>dabbrev-expand</b> command is bound to
+                        	    the key combination
+                        	    M-/
+                        	    by default. It searches the current buffer for completions
+                        	    of the word at point and, if none are found, other buffers
+                        	    of the same type. For example, if the current buffer is a
+                        	    Java source buffer, it searches other Java source buffers
+                        	    for completions if none are found in the active buffer.
+                        	  
+                     </p>
+                     <p>
+                        	    The <b>hippie-expand</b> command provides more
+                        	    extensive search capabilities. See the docstrings for
+                        	    these functions for more information.
+                        	  
+                     </p>
+                  </div>
+               </div>
+               <div id="ab2b2b4b5" class="section">
+                  <h3 class="title"><a name="ab2b2b4b5"><b><a name="FieldAndMethodCompletion"></a>Field and Method Completion</b></a></h3>
+                  <p>
+                     	  The JDE provides two commands for completing a Java field or
+                     	  method name at point in the current buffer.
+                  </p>
+                  <div class="itemizedlist">
+                     <ul>
+                        <li><a name="ab2b2b4b5b2a"></a><p><b>jde-complete-at-point</b>
+                              	      (C-c-C-v-.)
+                              	    
+                           </p>
+                        </li>
+                        <li><a name="ab2b2b4b5b2b1"></a><p><b>jde-complete-at-point-menu</b> 
+                              	      (C-c-C-v-C-.)
+                              	    
+                           </p>
+                        </li>
+                     </ul>
+                  </div>
+                  <div id="ab2b2b4b5b3" class="section">
+                     <h4 class="title"><a name="ab2b2b4b5b3"><b>jde-complete-at-point</b></a></h4>
+                     <p>
+                        	    This command is bound to
+                        	    C-c-C-v-.. 
+                        	    It finds all the fields
+                        	    and methods that complete the name at point. It then inserts the first potential
+                        	    completion in the buffer at point. Repeatedly 
+                        	    typing C-c-C-v-. causes 
+                        	    the JDE to cycle through the other potential completions. If the completion is 
+                        	    a method name, the command completes the method name and displays the method signature
+                        	    in the minibuffer.
+                        	  
+                     </p>
+                     <div class="example">
+                        <p><a name="ab2b2b4b5b3b2"></a><b>Example 3. Completing a String Method Name</b></p>
+                        <p>
+                           	      Typing C-c-C-v-.
+                           	    
+                        </p><pre class="programlisting">
+	      String s;
+	      s.get
+	      ^
+	    </pre><p>
+                           	      completes the method name at point as follows
+                        </p><pre class="programlisting">
+	      String s;
+	      s.getClass(
+              ^
+	    </pre><p>and displays</p><pre class="programlisting">
+	      java.lang.Class getClass()
+	    </pre><p>in the minibuffer. Repeatedly typing 
+                           	      C-c-C-v-. 
+                           	      cycles through all the other get methods for the Java  <tt>String</tt> class.
+                        </p>
+                     </div>
+                     <p>This command works for all of the following cases.</p>
+                     <div class="itemizedlist">
+                        <ul>
+                           <li><a name="ab2b2b4b5b3b4a"></a><p>objects referenced by variables declared in the current buffer</p>
+                           </li>
+                           <li><a name="ab2b2b4b5b3b4b1"></a><p>static fields and methods</p>
+                           </li>
+                           <li><a name="ab2b2b4b5b3b4b2"></a><p>
+                                 		fields and methods of objects defined by the current class and its parent
+                                 	      
+                              </p>
+                              <p>
+                                 		Names of fields and methods of the current class must start with <tt>this</tt> or 
+                                 		<tt>.</tt> (period). Names of fields and methods declared by
+                                 		the parent of the current class must start with <tt>super</tt>.
+                                 	      
+                              </p>
+                              <p>For example, this command completes</p><pre class="programlisting">
+		.
+		^
+		this.
+		^
+		super.
+		^
+	      </pre></li>
+                           <li><a name="ab2b2b4b5b3b4b3"></a><p>
+                                 		objects referenced by the fields of objects referenced by variables declared in the
+                                 		current class or its parent or by static fields
+                                 	      
+                              </p>
+                              <p>For example, this command completes</p><pre class="programlisting">
+		System.out.prin
+		^
+	      </pre></li>
+                           <li><a name="ab2b2b4b5b3b4b4"></a><p>
+                                 		objects returned by methods of objects referenced by variables defined in the current 
+                                 	      
+                              </p>
+                              <p>
+                                 		For example, this command completes
+                                 	      
+                              </p><pre class="programlisting">
+		Toolkit.getDefaultToolkit().get
+		^
+	      </pre></li>
+                           <li><a name="ab2b2b4b5b3b4b5"></a><p>
+                                 		objects referenced by method parameters
+                              </p>
+                              <p>
+                                 		For example, this command completes
+                                 	      
+                              </p><pre class="programlisting">
+		void setColor(String color) {
+		color.get
+		^
+		}
+	      </pre></li>
+                        </ul>
+                     </div>
+                     <p>
+                        	    The <b>jde-complete-at-point</b> command uses
+                        	    the Beanshell to run Java code that in turn uses Java's
+                        	    reflection (class introspection) capability to determine
+                        	    the fields and methods defined for the class of object at
+                        	    point. The command starts the Beanshell if it is not
+                        	    running. This can cause a noticeable delay in the
+                        	    execution of the command the first time it is used in a
+                        	    session. The response can also be slow for classes
+                        	    containing many methods and fields.
+                        	  
+                     </p>
+                     <p>
+                        	    The completion command works only for compiled classes
+                        	    that reside in the classpath defined by
+                        	    <tt>jde-global-classpath</tt> when the Beanshell
+                        	    starts. Thus, if the command is unable to complete a
+                        	    method or field, make sure that the class that defines the
+                        	    field or method is compiled and exists on
+                        	    <tt>jde-global-classpath</tt>.
+                        	  
+                     </p>
+                  </div>
+                  <div id="ab2b2b4b5b4" class="section">
+                     <h4 class="title"><a name="ab2b2b4b5b4"><b>jde-complete-at-point-menu</b></a></h4>
+                     <p>This command works exactly like
+                        	    <b>jde-complete-at-point</b> except that it
+                        	    displays the potential completions for a field or method
+                        	    in a popup menu. Selecting a completion from the menu
+                        	    causes the command to use it to complete the method or
+                        	    field at point.
+                        	  
+                     </p>
+                  </div>
+               </div>
+            </div>
+            <div id="ab2b2b5" class="section">
+               <h2 class="title" style="clear: all"><a name="ab2b2b5"><b><a name="GeneratingCode"></a>Generating Code</b></a></h2>
+               <p>The JDE provides the following code generation capabilities.</p>
+               <div class="itemizedlist">
+                  <ul>
+                     <li><a name="ab2b2b5b2a"></a><p>Code wizards</p>
+                     </li>
+                     <li><a name="ab2b2b5b2b1"></a><p>Code templates</p>
+                     </li>
+                  </ul>
+               </div>
+               <div id="ab2b2b5b3" class="section">
+                  <h3 class="title"><a name="ab2b2b5b3"><b><a name="CodeWizards"></a>Code Wizards</b></a></h3>
+                  <p>
+                     	  The JDE provides code generation wizards that generate
+                     	  class-dependent code without requiring you to supply any
+                     	  other information than the unqualified name of the class.
+                     	   
+                  </p>
+                  <p>
+                     	  The wizards use the BeanShell to run a Java utility that
+                     	  searches the classpath specified by
+                     	  <tt>jde-global-classpath</tt> for classes that
+                     	  match the unqualified name. If a wizard finds more than one
+                     	  class of the same unqualified name on the classpath, i.e., a
+                     	  class that exists in more than one package, it prompts you
+                     	  to select one of the classes.
+                     	
+                  </p>
+                  <div class="note" style="margin-left: 0.5in; margin-right: 0.5in;">
+                     <h3 class="title"><a name="ab2b2b5b3b3">Note</a></h3>
+                     <p>
+                        	    A wizard starts the Beanshell interpreter if it is not
+                        	    already running. Thus, you may experience a slight delay
+                        	    when invoking a wizard for the first time in a session.
+                        	  
+                     </p>
+                  </div>
+                  <div id="ab2b2b5b3b4" class="section">
+                     <h4 class="title"><a name="ab2b2b5b3b4"><b><a name="ImportWizard"></a>Import Wizard</b></a></h4>
+                     <p>
+                        	    The import wizard generates an import statement for the
+                        	    class name at point if an import statement does not
+                        	    already exist for that class. The wizard generates the
+                        	    import statement at the head of the source buffer.
+                        	  
+                     </p>
+                     <p>
+                        	    To import the class at point, select JDE-&gt;Wizards-&gt;Import
+                        		Class from the Emacs
+                        	    menubar or type
+                        	    C-c-C-v-C-z.
+                        	  
+                     </p>
+                     <p>
+                        	    The import wizard searches the current classpath for classes that match the class name at point, which may be unqualified.
+                        If the import wizard finds more than one class of the same unqualified name on the current classpath, it prompts you to select
+                        one of the classes to import.
+                        	  
+                     </p>
+                     <div class="note" style="margin-left: 0.5in; margin-right: 0.5in;">
+                        <h3 class="title"><a name="ab2b2b5b3b4b4">Note</a></h3>
+                        <p>
+                           	      The classpath that the import wizard searches for import candidates is the classpath specified by <tt>jde-global-classpath</tt> when the BeanShell was last started.
+                           	    
+                        </p>
+                     </div>
+                     <p>
+                        	    The customization variable <tt>jde-wiz-import-excluded-packages</tt> allows you to specify a list of packages to exclude from consideration for import into the current source file. If the import
+                        wizard finds any classes on the classpath that belong to the list of prohibited packages, it removes them from the list of
+                        classes considered for import.
+                        	  
+                     </p>
+                  </div>
+                  <div id="ab2b2b5b3b5" class="section">
+                     <h4 class="title"><a name="ab2b2b5b3b5"><b><a name="MethodOverrideWizard"></a>Method Override Wizard</b></a></h4>
+                     <p>
+                        	    The method override wizard generates a skeleton method that
+                        	    overrides a similarly named method defined by a superclass.
+                        	  
+                     </p>
+                     <p>To override a method of a superclass: </p>
+                     <div class="orderedlist">
+                        <ol>
+                           <li><a name="ab2b2b5b3b5b3a"></a><p>
+                                 		Position the Emacs point at the location in the buffer
+                                 		where you want the generated method to appear.
+                                 	      
+                              </p>
+                              <p>
+                                 		The point must be within the class that is overriding the   method. 
+                                 	      
+                              </p>
+                              <p>
+                                 		
+                                 <div class="screenshot">
+                                    <div class="mediaobject"><img src="images/OverrideMeth1.gif" alt="Screen capture showing point inside a class."></div>
+                                 </div>
+                                 	      
+                              </p>
+                           </li>
+                           <li><a name="ab2b2b5b3b5b3b1"></a><p>
+                                 		Select Wizards-&gt;Override Method from the JDE menu or enter M-x &nbsp;<tt>jde-wiz-overrided-method</tt>. 
+                                 	      
+                              </p>
+                              <p>
+                                 		
+                                 <div class="screenshot">
+                                    <div class="mediaobject"><img src="images/OverrideMeth2.gif" alt="Screen shot showing Wizards menu."></div>
+                                 </div>
+                                 	      
+                              </p>
+                              <p>
+                                 		The JDE prompts you to enter the name of the method to  be overridden in the minibuffer. 
+                                 	      
+                              </p>
+                              <p>
+                                 		
+                                 <div class="screenshot">
+                                    <div class="mediaobject"><img src="images/OverrideMeth3.gif" alt="Screen shot showing prompt for method name. "></div>
+                                 </div>
+                                 	      
+                              </p>
+                              <p>
+                                 		The name must be the name of a method defined by an
+                                 		ancestor of the class in which the Emacs point is located.
+                                 		The compiled class of the ancestor must be on the
+                                 		classpath specified by <tt>jde-global-classpath</tt>. 
+                                 	      
+                              </p>
+                           </li>
+                           <li><a name="ab2b2b5b3b5b3b2"></a><p>
+                                 		Enter the name of the method to be overridden. 
+                                 	      
+                              </p>
+                              <p>
+                                 		If the  ancestors of the class in which you are overriding the
+                                 		method define more than one method of the same name, the
+                                 		wizard displays a dialog buffer that lists the methods.
+                                 		For example, Java's awt class hierarchy defines several
+                                 		variants of the method <tt>repaint</tt>. If you specify <tt>repaint</tt>
+                                 		as the method to override, the JDE displays the following
+                                 		dialog buffer: 
+                                 	      
+                              </p>
+                              <p>
+                                 		
+                                 <div class="screenshot">
+                                    <div class="mediaobject"><img src="images/OverrideMeth4.gif" alt="Screen shot showing dialog buffer for selecting method. "></div>
+                                 </div>
+                                 	      
+                              </p>
+                              <p>
+                                 		The dialog buffer lists the signature of each variant
+                                 		of the method you specified. Next to each signature is a
+                                 		radio button. The radio button of the currently selected
+                                 		signature contains an asterisk. To select another
+                                 		signature, right-click the radio button next to the
+                                 		variant. To confirm your selection and dismiss the dialog,
+                                 		right-click the [Ok] button. 
+                                 	      
+                              </p>
+                           </li>
+                           <li><a name="ab2b2b5b3b5b3b3"></a><p>
+                                 		Select the method variant you want to override and
+                                 		click the [Ok] button. 
+                                 	      
+                              </p>
+                              <p>The   wizard inserts a skeleton implementation of the selected
+                                 		method at the current point in the Java source buffer.
+                              </p>
+                              <p>
+                                 		
+                                 <div class="screenshot">
+                                    <div class="mediaobject"><img src="images/OverrideMeth5.gif" alt="Screen shot showing the inserted method. "></div>
+                                 </div>
+                                 	      
+                              </p>
+                              <p>
+                                 		The wizard also inserts import statements for any
+                                 		classes referenced by the method that are not already
+                                 		imported by the containing class either explicitly or
+                                 		implicitly. The wizard inserts the import statements at
+                                 		the head of the source buffer after any existing import
+                                 		statements, or any package statement, or the first blank
+                                 		line in the buffer. 
+                                 	      
+                              </p>
+                              <div class="note" style="margin-left: 0.5in; margin-right: 0.5in;">
+                                 <h3 class="title"><a name="ab2b2b5b3b5b3b3b4">Note</a></h3>
+                                 <p>
+                                    		  The method override wizard uses the BeanShell to create the interface 
+                                    		  implementation. If the   BeanShell is not currently running, the wizard 
+                                    		  starts the   BeanShell. Thus, if the BeanShell is not already running,
+                                    		  you may experience a short pause the first time you   override a method.
+                                    		
+                                 </p>
+                              </div>
+                           </li>
+                        </ol>
+                     </div>
+                  </div>
+                  <div id="ab2b2b5b3b6" class="section">
+                     <h4 class="title"><a name="ab2b2b5b3b6"><b><a name="InterfaceWizard"></a>Interface Wizard</b></a></h4>
+                     <p>
+                        	    This wizard creates a skeleton implementation of any interface
+                        	    defined on the classpath specified by <tt>jde-global-classpath</tt>.
+                        	  
+                     </p>
+                     <p>To create an implementation of an interface: </p>
+                     <div class="orderedlist">
+                        <ol>
+                           <li><a name="ab2b2b5b3b6b3a"></a><p>
+                                 		If the interface is to be implemented by a new class,
+                                 		create the class in a buffer.
+                                 	      
+                              </p>
+                           </li>
+                           <li><a name="ab2b2b5b3b6b3b1"></a><p>
+                                 		Position the Emacs point at the point in the class where
+                                 		you want the implementation of the interface's methods to
+                                 		appear.
+                                 	      
+                              </p>
+                           </li>
+                           <li><a name="ab2b2b5b3b6b3b2"></a><p>
+                                 		Select JDE-&gt;Wizards-&gt;Implement Interface or enter 
+                                 		M-x  &nbsp;<tt>jde-wiz-implement-interface</tt>. 
+                                 	      
+                              </p>
+                              <p>
+                                 		The JDE prompts you   to enter the name of the interface to be implemented. 
+                                 	      
+                              </p>
+                           </li>
+                           <li><a name="ab2b2b5b3b6b3b3"></a><p>Enter the fully qualified name of the interface,
+                                 		for   example, <tt>java.awt.Event.MouseListener</tt>.
+                              </p>
+                              <p>
+                                 		The wizard inserts skeleton implementations of the methods
+                                 		declared by the interface at the current point in the
+                                 		current buffer. It inserts import statements for any
+                                 		classes required by the interface at the head of the
+                                 		current buffer (only if import statements do not already
+                                 		exist for the required classes). It also updates or
+                                 		creates an implements clause for the class.
+                                 	      
+                              </p>
+                           </li>
+                        </ol>
+                     </div>
+                     <div class="note" style="margin-left: 0.5in; margin-right: 0.5in;">
+                        <h3 class="title"><a name="ab2b2b5b3b6b4">Note</a></h3>
+                        <p>
+                           	      The interface wizard uses the BeanShell to create
+                           	      the interface implementation. If the BeanShell is not currently
+                           	      running, it starts the BeanShell. Thus, if the BeanShell is not
+                           	      already running, you may experience a short pause the first time
+                           	      you use the wizard. 
+                        </p>
+                     </div>
+                  </div>
+                  <div id="ab2b2b5b3b7" class="section">
+                     <h4 class="title"><a name="ab2b2b5b3b7"><b><a name="DelegateWizard"></a>Delegate Wizard</b></a></h4>
+                     <p>
+                        	    This wizard generates methods that delegate calls to a
+                        	    class in the current buffer to an attribute of the class,
+                        	    i.e., to an object that is a field of the current class.
+                        	    For example, if the current buffer contains class
+                        	    <tt>A</tt> and  <tt>A</tt> has
+                        	    an   attribute, <tt>A.b</tt>, that is an instance
+                        	    of class <tt>B</tt>,  this wizard generates
+                        	    all the public methods of class <tt>B</tt>
+                        	    in <tt>A</tt> and delegates   handling of
+                        	    those methods to <tt>b</tt>.
+                        	  
+                     </p>
+                     <div class="note" style="margin-left: 0.5in; margin-right: 0.5in;">
+                        <h3 class="title"><a name="ab2b2b5b3b7b2">Thanks to...</a></h3>
+                        <p>
+                           	      <a href="mailto:cfhart@Z-TEL.com">Charles Hart</a> for
+                           	      contributing this wizard.
+                           	    
+                        </p>
+                     </div>
+                  </div>
+               </div>
+               <div id="ab2b2b5b4" class="section">
+                  <h3 class="title"><a name="ab2b2b5b4"><b><a name="CodeTemplates"></a>Code Templates</b></a></h3>
+                  <div id="ab2b2b5b4b1" class="section">
+                     <h4 class="title"><a name="ab2b2b5b4b1"><b><a name="BufferTemplates"></a>Buffer Templates</b></a></h4>
+                     <p>These commands create buffers containing a skeleton Java class.
+                        	    Each command prompts you to enter the path to a new Java source
+                        	    file. They then create a buffer for the new file and insert a
+                        	    template for a class of the same name as the newly created file.
+                        	    In particular, the command 
+                     </p>
+                     <div class="itemizedlist">
+                        <ul>
+                           <li><a name="ab2b2b5b4b1b2a"></a><p>
+                                 		Files-&gt;JDE New-&gt;Class creates a buffer containing a generic Java public class.
+                                 	      
+                              </p>
+                           </li>
+                           <li><a name="ab2b2b5b4b1b2b1"></a><p>
+                                 		Files-&gt;JDE New-&gt;Console creates a buffer containing the main class of a
+                                 		Java console application.
+                                 	      
+                              </p>
+                           </li>
+                           <li><a name="ab2b2b5b4b1b2b2"></a><p>
+                                 		Files-&gt;JDE New-&gt;Other prompts you to create any of the above buffers or a
+                                 		custom (user-defined) buffer.
+                                 	      
+                              </p>
+                           </li>
+                        </ul>
+                     </div>
+                     <p>
+                        	    You can create an empty Java class buffer by selecting 
+                        	    Files-&gt;Open 
+                        	    (C-x&nbsp;f) and
+                        	    entering the path for a new file whose root name is the same as
+                        	    the class you want to create and whose extension is <tt>.java.</tt>
+                        	  
+                     </p>
+                     <div id="ab2b2b5b4b1b4" class="section">
+                        <h5 class="title"><a name="ab2b2b5b4b1b4"><b>Specifying Boilerplate Text</b></a></h5>
+                        <p>
+                           	      You can specify boilerplate text (for example, a copyright
+                           	      notice) to be inserted at the head of class source files created
+                           	      by the JDE. The JDE provides two ways to specify the boilerplate
+                           	      text. The simplest way is to enter the lines of boilerplate text
+                           	      as the value of the customization variable <tt>jde-gen-buffer-boilerplate</tt>.
+                           	      Another way to specify the text is to set the value of the
+                           	      customization variable <tt>jde-gen-boilerplate-function</tt>to a
+                           	      function that generates the boilerplate text. (The default value
+                           	      of this variable is <tt>jde-gen-create-buffer-boilerplate</tt>,
+                           	      which returns the value of the boilerplate variable, 
+                           	      <tt>jde-gen-buffer-boilerplate</tt>).
+                           	      The functional approach allows you to generate boilerplate text
+                           	      dynamically by evaluating the appropriate Lisp code. By saving
+                           	      the values of boilerplate variables in project files, you can
+                           	      specify different boilerplate text&nbsp; for each project. 
+                           	    
+                        </p>
+                     </div>
+                     <div id="ab2b2b5b4b1b5" class="section">
+                        <h5 class="title"><a name="ab2b2b5b4b1b5"><b>Customization Variables</b></a></h5>
+                        <p>The following JDE customization variables control creation of
+                           	      autocoded Java source buffers: 
+                           	    
+                        </p>
+                        <div class="table">
+                           <p><a name="ab2b2b5b4b1b5b2"></a><b>Table 2. </b></p>
+                           <table border="1">
+                              <colgroup>
+                                 <col>
+                                 <col>
+                                 <col>
+                              </colgroup>
+                              <thead>
+                                 <tr>
+                                    <th>Variable</th>
+                                    <th>Group</th>
+                                    <th>Usage</th>
+                                 </tr>
+                              </thead>
+                              <tbody>
+                                 <tr>
+                                    <td><tt>jde-gen-class-buffer-template</tt></td>
+                                    <td>Autocode</td>
+                                    <td>Template for a generic public class buffer.</td>
+                                 </tr>
+                                 <tr>
+                                    <td><tt>jde-gen-console-buffer-template</tt></td>
+                                    <td>Autocode</td>
+                                    <td>Template for a console application buffer.</td>
+                                 </tr>
+                                 <tr>
+                                    <td><tt>jde-gen-jfc-app-buffer-template</tt></td>
+                                    <td>Autocode</td>
+                                    <td>Template for a JFC (Swing) application.</td>
+                                 </tr>
+                                 <tr>
+                                    <td><tt>jde-gen-buffer-templates</tt></td>
+                                    <td>Autocode</td>
+                                    <td>Specifies templates available to create
+                                       		      Java buffers.
+                                    </td>
+                                 </tr>
+                                 <tr>
+                                    <td><tt>jde-gen-buffer-boilerplate</tt></td>
+                                    <td>Autocode</td>
+                                    <td>Specifies lines of text to be inserted
+                                       		      at the head of class files.
+                                    </td>
+                                 </tr>
+                                 <tr>
+                                    <td><tt>jde-gen-boilerplate-function</tt></td>
+                                    <td>Autocode</td>
+                                    <td>Specifies a function that returns a string of
+                                       		      boilerplate text. The default value is <tt>jde-gen-create-buffer-boilerplate</tt>,
+                                       		      which returns the value of <tt>jde-gen-buffer-boilerplate</tt>.
+                                    </td>
+                                 </tr>
+                              </tbody>
+                           </table>
+                        </div>
+                        <p>
+                           	      See <a href="#CustomizingAutocode">Customizing Autocode
+                              		Templates</a> for information on how to customize the class
+                           	      autocode templates. 
+                        </p>
+                     </div>
+                  </div>
+                  <div id="ab2b2b5b4b2" class="section">
+                     <h4 class="title"><a name="ab2b2b5b4b2"><b><a name="PointTemplates"></a>Point Templates</b></a></h4>
+                     <p>The following commands insert templates at the current point
+                        	    in the buffer: 
+                     </p>
+                     <div class="itemizedlist">
+                        <ul>
+                           <li><a name="ab2b2b5b4b2b2a"></a><p>
+                                 		JDE-&gt;Generate-&gt;Get/Set Pair 
+                                 		generates an instance variable and a get and set method  .
+                                 		for that variable
+                                 	      
+                              </p>
+                           </li>
+                           <li><a name="ab2b2b5b4b2b2b1"></a><p>
+                                 		JDE-&gt;Generate-&gt;Println 
+                                 		generates a <pre class="programlisting">System.out.println(...);</pre> statement.
+                                 	      </p>
+                           </li>
+                           <li><a name="ab2b2b5b4b2b2b2"></a><p>
+                                 		JDE-&gt;Generate-&gt;Action 
+                                 		generates and registers an action listener for a
+                                 		specified component.
+                                 	      
+                              </p>
+                           </li>
+                           <li><a name="ab2b2b5b4b2b2b3"></a><p>
+                                 		JDE-&gt;Generate-&gt;Listener-&gt;Window  
+                                 		generates and registers a window listener for a specified
+                                 		window.
+                                 	      
+                              </p>
+                           </li>
+                           <li><a name="ab2b2b5b4b2b2b4"></a><p>
+                                 		JDE-&gt;Generate-&gt;Listener-&gt;Mouse 
+                                 		generates and registers a mouse listener for a specified
+                                 		component.
+                                 	      
+                              </p>
+                           </li>
+                           <li><a name="ab2b2b5b4b2b2b5"></a><p>
+                                 		JDE-&gt;Generate-&gt;Other 
+                                 		allows you to select any of the above templates or a
+                                 		custom (user-defined) template.
+                                 	      
+                              </p>
+                           </li>
+                        </ul>
+                     </div>
+                     <p>The following variables control generation of code at  point: 
+                        	  
+                     </p>
+                     <div class="table">
+                        <p><a name="ab2b2b5b4b2b4"></a><b>Table 3. </b></p>
+                        <table border="1">
+                           <colgroup>
+                              <col>
+                              <col>
+                              <col>
+                           </colgroup>
+                           <thead>
+                              <tr>
+                                 <th>Variable</th>
+                                 <th>Group</th>
+                                 <th>Usage</th>
+                              </tr>
+                           </thead>
+                           <tbody>
+                              <tr>
+                                 <td><tt>jde-gen-get-set-var-template</tt></td>
+                                 <td>Autocode</td>
+                                 <td>Defines a get/set method pair template.</td>
+                              </tr>
+                              <tr>
+                                 <td><tt>jde-gen-listener-action-template</tt></td>
+                                 <td>Autocode</td>
+                                 <td>Defines an action listener template.</td>
+                              </tr>
+                              <tr>
+                                 <td><tt>jde-gen-listener-window-template</tt></td>
+                                 <td>Autocode</td>
+                                 <td>Defines a window listener template.</td>
+                              </tr>
+                              <tr>
+                                 <td><tt>jde-gen-listener-mouse-template</tt></td>
+                                 <td>Autocode</td>
+                                 <td>Defines a mouse listener template.</td>
+                              </tr>
+                              <tr>
+                                 <td><tt>jde-gen-inner-class-template</tt></td>
+                                 <td>Autocode</td>
+                                 <td>Defines a template for creating a class inside
+                                    		    another class or inside an existing source buffer.
+                                 </td>
+                              </tr>
+                              <tr>
+                                 <td><tt>jde-gen-code-templates</tt></td>
+                                 <td>Autocode</td>
+                                 <td>Specifies available code templates.</td>
+                              </tr>
+                           </tbody>
+                        </table>
+                     </div>
+                     <p>See</p>
+                     <div class="itemizedlist">
+                        <ul>
+                           <li><a name="ab2b2b5b4b2b6a"></a><p>
+                                 		<a href="#CustomizingStandardTemplates">Customizing
+                                    		  Standard Templates</a> for information on how to customize 
+                                 		templates provided by the JDE.
+                                 	      
+                              </p>
+                           </li>
+                           <li><a name="ab2b2b5b4b2b6b1"></a><p>
+                                 		<a href="#CreatingCustomTemplates">Creating Custom
+                                    		  Templates</a> for information on how to create templates
+                                 		from scratch.
+                                 	      
+                              </p>
+                           </li>
+                        </ul>
+                     </div>
+                  </div>
+                  <div id="ab2b2b5b4b3" class="section">
+                     <h4 class="title"><a name="ab2b2b5b4b3"><b><a name="CustomizingTemplates"></a>Customizing Templates</b></a></h4>
+                     <p>You can customize the JDE's standard code templates, using the Emacs
+                        	    customization feature. 
+                     </p>
+                     <p>To customize an autocode template: </p>
+                     <div class="orderedlist">
+                        <ol>
+                           <li><a name="ab2b2b5b4b3b3a"></a><p>Select JDE-&gt;Options-&gt;Autocode</p>
+                              <p>The JDE displays a customization buffer containing the
+                                 		autocode templates. 
+                              </p>
+                           </li>
+                           <li><a name="ab2b2b5b4b3b3b1"></a><p>Edit the template to suit your needs.</p>
+                              <p>The JDE uses the
+                                 		template format defined by <tt>tempo.el</tt> to represent
+                                 		class templates. Each template consists of a list of
+                                 		strings, symbols, and functions, each of which represents
+                                 		content to be inserted successively into the buffer at
+                                 		the current point. The strings represent fixed content.
+                                 		The symbols and functions represent variable content. See
+                                 		the docstring for the function <tt>tempo-define-template</tt>
+                                 		for more information, including the meaning of special
+                                 		symbols such as <tt>'n</tt>. 
+                              </p>
+                           </li>
+                           <li><a name="ab2b2b5b4b3b3b2"></a><p>Select the state button associated with the template.</p>
+                              <p>A menu pops up with a list of options for saving your
+                                 		changes. 
+                              </p>
+                           </li>
+                           <li><a name="ab2b2b5b4b3b3b3"></a><p>Save your changes.</p>
+                              <p>Select 
+                                 		Save for Future Sessions if you want 
+                                 		your changes to apply to all projects. If you want your changes to apply
+                                 		only to the current projects, select Set for Current Session. Then select 
+                                 		JDE-&gt;Options-&gt;Save Project
+                                 		to save your changes in the current project's project file.
+                              </p>
+                           </li>
+                        </ol>
+                     </div>
+                  </div>
+                  <div id="ab2b2b5b4b4" class="section">
+                     <h4 class="title"><a name="ab2b2b5b4b4"><b><a name="CreatingTemplates"></a>Creating Templates</b></a></h4>
+                     <p>The JDE considers any command (interactive function) that
+                        	    inserts code into a buffer at point to be a template. The JDE
+                        	    uses the Emacs tempo library to create built-in templates.
+                        	    You can use tempo to create your own, add-on templates (see below
+                        	    and the doc for the <tt>tempo-define-template </tt>for
+                        	    more information) or create templates from scratch.
+                        	    In either case, once you have created a template, you can add it
+                        	    to the JDE's lists of available code and/or buffer templates, 
+                        	    using the JDE's <tt>jde-gen-code-templates</tt> and/or 
+                        	    <tt>jde-gen-buffer-templates</tt>
+                        	    variables, respectively. Adding a template to these lists enables
+                        	    you to invoke the templates from the JDE menus. When adding a
+                        	    template, you need to specify a unique title for the template.
+                        	    These titles enable you to specify the templates when invoking
+                        	    them, using the JDE's custom code template commands  
+                        	    (Files-&gt;JDE New-&gt;Custom  and  
+                        	    JDE-&gt;Generate-&gt;Custom). You can use
+                        	    auto completion to enter a template title when invoking a custom
+                        	    code generation command. Note that you can specify different sets
+                        	    of templates for different projects, by setting and saving the
+                        	    template list variables in project files. See the following
+                        	    sections for more information: 
+                     </p>
+                     <div class="itemizedlist">
+                        <ul>
+                           <li><a name="ab2b2b5b4b4b2a"></a><p><a href="#DefiningTemplate">Defining a Template and
+                                    		  Template Insertion Function</a></p>
+                           </li>
+                           <li><a name="ab2b2b5b4b4b2b1"></a><p><a href="#RegisterTemplate">Registering Custom
+                                    		  Templates</a></p>
+                           </li>
+                           <li><a name="ab2b2b5b4b4b2b2"></a><p><a href="#AssignKeyToTemplate">Assigning Keys To
+                                    		  emplates</a></p>
+                           </li>
+                        </ul>
+                     </div>
+                     <div id="ab2b2b5b4b4b3" class="section">
+                        <h5 class="title"><a name="ab2b2b5b4b4b3"><b><a name="DefiningTemplate"></a>Defining a Template and Template Insertion Function</b></a></h5>
+                        <p>The <tt>tempo-define-template</tt> macro enables you
+                           	      to define a template and a function that inserts that template at the
+                           	      current point in the current buffer. You specify the template as a
+                           	      list oftemplate elements where each element is text, a special symbol,
+                           	      or a Lisp expression. The function inserts each text element exactly
+                           	      as specified in the buffer; it replaces special symbols with some text
+                           	      (e.g., user input), and it replaces Lisp expressions with the text
+                           	      that results from evaluating them. 
+                        </p>
+                        <p>For example, the following Lisp code </p><pre class="programlisting">
+	      (tempo-define-template
+	      "foo"                              ;; template name
+	      '("System.out.println(\"foo\");") ;;template definition
+	      "f"                               ;; abbreviation
+	      "Inserts a print foo message")       ;; template documentation
+	    </pre><p>defines a template for Java code that always prints
+                           	      "foo" to standard out: 
+                        </p><pre class="programlisting">
+	      System.out.println("foo");
+	    </pre><p>Notice that the template definition uses the Lisp string escape
+                           	      character to specify the string "foo".  This is necessary
+                           	      when you want to include quoted strings in a template definition.)
+                           	    
+                        </p>
+                        <p>The sample Lisp form also defines an interactive template
+                           	      function <tt>tempo-template-foo</tt>. Now suppose you insert
+                           	      the sample code in your <tt>.emacs</tt> file. After Emacs
+                           	      starts up, whenever you enter the command M-x
+                           	      <tt>tempo-template-foo,</tt> Emacs inserts 
+                        </p><pre class="programlisting">
+	      System.out.println("foo");
+	    </pre><p>at the current point in your Java source buffer (or any buffer,
+                           	      tempo doesn't care). 
+                        </p>
+                        <p>The preceding example is admittedly not vary useful because it
+                           	      always prints the same text. You can create more useful templates,
+                           	      using special tempo template symbols and lisp forms. This
+                           	      approach, for example, allows you to create a template that can
+                           	      print any user-defined text to standard out: 
+                        </p><pre class="programlisting">
+	      (tempo-define-template
+	      "debug"                          ;; template name
+	      '("if (debug)" n&gt;                ;; insert new line plus indent
+	      "System.out.println("
+	      (p "Enter debug message:")       ;; Prompts for debug message
+	      ");")
+	      "d"                              ;; abbreviation 
+
+	      "Inserts a print debug message") ;; template documentation 
+	    </pre><p>The template function produced by this example prompts you to
+                           	      enter the text to be printed when inserting the function into a
+                           	      buffer. In particular, it inserts 
+                        </p><pre class="programlisting">
+	      if (debug)
+	      System.out.println(DEBUG-MESSAGE);
+	    </pre><p>where <tt>DEBUG-MESSAGE</tt> is any text that you enter. For
+                           	      example, suppose you enter 
+                        </p><pre class="programlisting">
+	      "Selected color = " + color
+	    </pre><p>at the prompt. The template function inserts </p><pre class="programlisting">
+	      if (debug)
+	      System.out.println("Selected color = " + color);
+	    </pre><p>at the current point in the buffer. </p>
+                        <p>See the documentation for <tt>tempo-define-template</tt> (type
+                           	      c-h&nbsp;f&nbsp;
+                           	      <tt>tempo-define-template</tt>) for more
+                           	      information on creating templates. 
+                        </p>
+                     </div>
+                     <div id="ab2b2b5b4b4b4" class="section">
+                        <h5 class="title"><a name="ab2b2b5b4b4b4"><b><a name="RegisterTemplate"></a>Registering Custom Templates</b></a></h5>
+                        <p>You can register templates that you create with the JDE. When
+                           	      you register a template with the JDE, it appears among the list of
+                           	      templates that you can select when you select JDE-&gt;Generate-&gt;Other..... You register a
+                           	      template by customizing the JDE variable
+                           	      <tt>jde-gen-code-templates</tt>. The value of this variable is a list
+                           	      of the template functions that the JDE command  JDE-&gt;Generate-&gt;Other.... can invoke. To
+                           	      register a custom template, add its name to the list. For example, the
+                           	      following screen shows the customization buffer for
+                           	      <tt>jde-gen-code-templates</tt> after it has been customized to
+                           	      include the template defined in the previous example. 
+                        </p>
+                        <p>
+                           	      
+                           <div class="screenshot">
+                              <div class="mediaobject"><img src="images/RegisterTemplate.gif" alt="Screenshot showing customization buffer for registering&#xA;		      templates."></div>
+                           </div>
+                           	    
+                        </p>
+                        <p>To insert a template that you have registered </p>
+                        <div class="procedure">
+                           <ol>
+                              <li>
+                                 <p>Select JDE-&gt;Generate-&gt;Other....</p>
+                                 <p>The JDE displays the prompt</p><pre class="programlisting">
+		  Enter template:
+		</pre><p>in the minibuffer. </p>
+                              </li>
+                              <li>
+                                 <p>Enter the template's name and press <b>Enter</b></p>
+                                 <p>or,</p>
+                                 <p>press the <b>Tab</b> key to
+                                    		  display a list of templates in a completion buffer: 
+                                 </p>
+                                 <p>
+                                    		  
+                                    <div class="screenshot">
+                                       <div class="mediaobject"><img src="images/TemplateList.gif" alt="Screenshot showing template completion buffer."></div>
+                                    </div>
+                                    		
+                                 </p>
+                                 <p>Select the template you want by double-clicking its
+                                    		  name.
+                                 </p>
+                              </li>
+                           </ol>
+                        </div>
+                     </div>
+                     <div id="ab2b2b5b4b4b5" class="section">
+                        <h5 class="title"><a name="ab2b2b5b4b4b5"><b><a name="AssignKeyToTemplate"></a>Assigning Keys to Templates</b></a></h5>
+                        <p>You can assign templates to keyboard keys to speed use of
+                           	      frequently used templates. For example, insert this form 
+                        </p><pre class="programlisting">
+	      (global-set-key [f9] 'jde-gen-to-string-method)
+	    </pre><p>in your <tt>.emacs</tt> file to assign
+                           	      the <b>F9</b> function key to the JDE template
+                           	      that generates a skeleton <tt>toString</tt>
+                           	      method. 
+                        </p>
+                     </div>
+                  </div>
+               </div>
+            </div>
+         </div>
+         <div id="ab2b3" class="chapter">
+            <h2 class="title"><a name="ab2b3"><a name="CompilingJavaPrograms"></a></a></h2>
+            <p>The <tt>jde-compile</tt> command (JDE-&gt;Compile,
+               <b>C</b><b>c</b>-<b>C</b><b>v</b>-<b>C</b><b>c</b>) compiles the Java source file in the
+               current buffer, using <tt>javac</tt>, the Java compiler provided
+               by the JDK, or another compiler that you specify (see <a href="#SpecifyingCompiler">Specifying a Compiler</a>). The
+               compile command displays the output of the compiler in a separate
+               compilation buffer. If a compilation buffer does not exist, the
+               compile command creates the buffer; otherwise, it reuses the
+               existing compile output buffer. The compilation buffer operates
+               in <tt>compilation-mode</tt>, a standard Emacs buffer mode. This
+               mode greatly simplify locating compilation errors in the Java
+               source code. For example, to find the line that cause a
+               compilation error, simply click the error message in the
+               compilation buffer. 
+            </p>
+            <p>The JDE uses the Emacs command <tt>start-process-shell-command</tt>
+               to launch a Java compile process. This command in turn uses the equivalent of
+            </p><pre class="programlisting">
+      SHELL COMMAND_SWITCH javac OPTIONS BUFFER_NAME.java
+    </pre><p>  to launch the compile process where <tt>SHELL</tt> is
+               the command shell  specified by the Emacs variable
+               <tt>shell-file-name</tt>  and 
+               <tt>COMMAND_SWITCH</tt> is the value of the Emacs  variable
+               <tt>shell-command-switch</tt>. You must set these variables
+               to be  compatible in your <tt>.emacs</tt> file. For example,
+               if you set <tt>shell-file-name</tt> to
+               <tt>bash</tt>, you must set
+               <tt>shell-command-switch</tt> to <tt>-c</tt>, the
+               command   switch used by <tt>bash</tt>.
+               
+            </p>
+            <div class="note" style="margin-left: 0.5in; margin-right: 0.5in;">
+               <h3 class="title"><a name="ab2b3b5">Note</a></h3>
+               <p>Compile processes are the only processes launched by JDE, using a
+                  	command shell. The JDE uses the Emacs command <tt>start-process</tt> to launch all
+                  	other processes, e.g., java, jdb, and JDEbug processes. The <tt>start-process</tt>
+                  	launches processes as subprocesses of Emacs, without doing any wild-card expansion or
+                  	environment variable substitution of command-line arguments.
+                  
+               </p>
+            </div>
+            <div id="ab2b3b6" class="section">
+               <h2 class="title" style="clear: all"><a name="ab2b3b6"><b><a name="CompilationOptions"></a>Compilation Options</b></a></h2>
+               <p>The JDE allows you to specify compilation options by
+                  	setting  compilation variables.You must use the Emacs
+                  	customization  feature or, if available, JDE functions to set
+                  	compilation  variables. To use the customization feature,
+                  	select JDE-&gt;Options-&gt;Compile.  (See
+                  	<a href="#ConfiguringJDE">Configuring  the JDE</a> for
+                  	more information on using the customization  feature). To save
+                  	the compilation settings in the project  file (see <a href="#UsingProjectFiles">Using Project Files</a>)  for the current source buffer, select JDE-&gt;Options-&gt;Update  Project.
+                  
+               </p>
+               <div id="ab2b3b6b2" class="section">
+                  <h3 class="title"><a name="ab2b3b6b2"><b><a name="SetCompileOptionsInteractively"></a>Setting Compile Options Interactively</b></a></h3>
+                  <p>If you set the customization variable
+                     	  <tt>jde-read-compile-args</tt>  to a
+                     	  non-<tt>nil</tt> value, the JDE compile command prompts you
+                     	  to enter compilation options in the minibuffer. It appends the  options
+                     	  that you enter to the options specified via customization  variables.
+                     	  The JDE saves the arguments that you enter in a  minibuffer history
+                     	  list. You can recall previously entered  options by pressing the up or
+                     	  down arrows on your keyboard. 
+                  </p>
+                  <div class="note" style="margin-left: 0.5in; margin-right: 0.5in;">
+                     <h3 class="title"><a name="ab2b3b6b2b2">Note</a></h3>
+                     <p>The JDE uses the values of the JDE customization  variables to
+                        	    set the compiler's command-line option switches. The  JDE assumes that
+                        	    the compiler you are using (specified by the  customization variable
+                        	    <tt>jde-compiler</tt>) has the same set of  command-line
+                        	    switches as the latest version of <tt>javac</tt> , the
+                        	    compiler supplied with JavaSoft's JDK. If the command-line  switch for
+                        	    a particular option supported by the compiler  your are using is not
+                        	    the same as that specified by the latest  version of
+                        	    <tt>javac</tt>, you must use the variable
+                        	    <tt>jde-compile-option-command-line-args</tt>  to select the
+                        	    option.
+                     </p>
+                  </div>
+               </div>
+               <div id="ab2b3b6b3" class="section">
+                  <h3 class="title"><a name="ab2b3b6b3"><b><a name="CustomizationVariables"></a>Customization Variables</b></a></h3>
+                  <p>The following table lists the JDE compilation variables and
+                     	  the functions used to set them.
+                  </p>
+                  <div class="table">
+                     <p><a name="ab2b3b6b3b2"></a><b>Table 1. </b></p>
+                     <table border="1">
+                        <colgroup>
+                           <col align="left">
+                           <col align="left">
+                           <col align="left">
+                        </colgroup>
+                        <thead>
+                           <tr>
+                              <th>
+                                 <p>Name</p>
+                              </th>
+                              <th>
+                                 <p>Group</p>
+                              </th>
+                              <th>
+                                 <p>Usage</p>
+                              </th>
+                           </tr>
+                        </thead>
+                        <tbody valign="top">
+                           <tr>
+                              <td>
+                                 <p><tt>jde-compiler</tt></p>
+                              </td>
+                              <td>Project</td>
+                              <td>
+                                 <p>Specifies the compiler  (javac, by default)
+                                    		    to use to compile the code in  the current source buffer. The command
+                                    		    <tt>jde-set-compiler</tt>  sets the buffer-local value of
+                                    		    this option.
+                                 </p>
+                              </td>
+                           </tr>
+                           <tr>
+                              <td><tt>jde-compile-option-command-line-</tt>&nbsp;
+                                 		  
+                                 		  <tt>args</tt>&nbsp;
+                              </td>
+                              <td>Compile</td>
+                              <td>Specifies a string of
+                                 		  command-line arguments to be passed to the compiler.
+                              </td>
+                           </tr>
+                           <tr>
+                              <td><tt>jde-global-classpath</tt></td>
+                              <td>Project</td>
+                              <td>Specify class paths
+                                 		  for compile, run, and debug commands.
+                              </td>
+                           </tr>
+                           <tr>
+                              <td><tt>jde-read-compile-args</tt></td>
+                              <td>Project</td>
+                              <td>Specify whether to read compile
+                                 		  options from the minibuffer.
+                              </td>
+                           </tr>
+                           <tr>
+                              <td><tt>jde-compile-option-classpath</tt></td>
+                              <td>Compile&nbsp;</td>
+                              <td>Specifies the
+                                 		  classpath for compile command. If set, this variable
+                                 		  overrides <tt>jde-global-classpath</tt>.&nbsp;
+                              </td>
+                           </tr>
+                           <tr>
+                              <td><tt>jde-compile-option-sourcepath</tt></td>
+                              <td>Compile</td>
+                              <td>Specifies the path of source files
+                                 		  for classes required to compile the current class.
+                              </td>
+                           </tr>
+                           <tr>
+                              <td><tt>jde-quote-classpath</tt></td>
+                              <td>Project&nbsp;</td>
+                              <td>Quote the classpath
+                                 		  argument.
+                              </td>
+                           </tr>
+                           <tr>
+                              <td><tt>jde-compile-option-directory</tt></td>
+                              <td>Compile&nbsp;</td>
+                              <td>Specifies the
+                                 		  directory into which to place the compiled class.&nbsp;
+                              </td>
+                           </tr>
+                           <tr>
+                              <td><tt>jde-compile-option-deprecation</tt></td>
+                              <td>Compile&nbsp;</td>
+                              <td>Warn of use or
+                                 		  override of a deprecated member or class&nbsp;
+                              </td>
+                           </tr>
+                           <tr>
+                              <td><tt>jde-compile-option-debug</tt></td>
+                              <td>Compile&nbsp;</td>
+                              <td>Generate information
+                                 		  about local variables for debug tools.&nbsp;
+                              </td>
+                           </tr>
+                           <tr>
+                              <td><tt>jde-compile-option-optimize</tt></td>
+                              <td>Compile&nbsp;</td>
+                              <td>Directs the compiler
+                                 		  to try to generate faster varname.&nbsp;
+                              </td>
+                           </tr>
+                           <tr>
+                              <td><tt>jde-compile-option-depend</tt></td>
+                              <td>Compile</td>
+                              <td>Analyze dependencies.</td>
+                           </tr>
+                           <tr>
+                              <td><tt>jde-compile-option-depend-switch</tt></td>
+                              <td>Compile</td>
+                              <td>Command line switch that causes the
+                                 		  compiler to analyze dependencies.
+                              </td>
+                           </tr>
+                           <tr>
+                              <td><tt>jde-compile-option-vm-args</tt></td>
+                              <td>Compile&nbsp;</td>
+                              <td>Specify command-line
+                                 		  arguments for Java interpreter used to run the compiler.&nbsp;
+                              </td>
+                           </tr>
+                           <tr>
+                              <td><tt>jde-compile-option-verbose-path</tt></td>
+                              <td>Compile&nbsp;</td>
+                              <td>Print verbose messages.</td>
+                           </tr>
+                           <tr>
+                              <td><tt>jde-compile-option-verbose</tt></td>
+                              <td>Compile</td>
+                              <td>List directories searched to
+                                 		  compile current class.
+                              </td>
+                           </tr>
+                           <tr>
+                              <td><tt>jde-compile-option-nowarn</tt></td>
+                              <td>Compile&nbsp;</td>
+                              <td>Turn off warnings.</td>
+                           </tr>
+                           <tr>
+                              <td><tt>jde-compile-option-encoding</tt></td>
+                              <td>Compile&nbsp;</td>
+                              <td>Specify the source
+                                 		  file encoding name, such as EUCJIS\SJIS.&nbsp;
+                              </td>
+                           </tr>
+                           <tr>
+                              <td><tt>jde-compile-option-target</tt></td>
+                              <td>Compile</td>
+                              <td>Generate code compatible with a
+                                 		  specified vm version.
+                              </td>
+                           </tr>
+                           <tr>
+                              <td><tt>jde-compile-option-bootclasspath</tt></td>
+                              <td>Compile</td>
+                              <td>Specify classpath of standard
+                                 		  libraries for target vm.
+                              </td>
+                           </tr>
+                           <tr>
+                              <td><tt>jde-compile-option-bootclasspath</tt></td>
+                              <td>Compile</td>
+                              <td>Specify path of directories
+                                 		  containing extensions for target vm.
+                              </td>
+                           </tr>
+                        </tbody>
+                     </table>
+                  </div>
+               </div>
+            </div>
+         </div>
+         <div id="ab2b4" class="chapter">
+            <h2 class="title"><a name="ab2b4"><a name="BuildingJavaApplications"></a>Building Java Applications</a></h2>
+            <p>The JDE-&gt;Build
+               command builds  or rebuilds an application. This command has two
+               operating modes:  java and make. In java mode, this command uses
+               javac's built-in  make (<tt>-depend</tt>) facility to rebuild
+               a project. In make  mode, this command uses a user-specified make
+               utility, such as  GNU make, to rebuild a project. See <a href="#SampleMakefile">Sample Makefile</a> for an example  of a
+               makefile for building a Java project. JDE configuration  variables
+               control which mode is used. In particular, if the  variable
+               <tt>jde-build-use-make</tt> is non-<tt>nil</tt>,
+               this  command invokes the make program specified by the variable
+               <tt>jde-make-program</tt>.  If the variable
+               <tt>jde-make-args</tt> is a non-empty string,  this function
+               uses its contents to invoke make; otherwise, it  prompts you to enter
+               command-line arguments for make. If
+               <tt>jde-build-use-make</tt>  is <tt>nil</tt>, this
+               function invokes javac on the source file  for the class specified by
+               <tt>jde-run-app-class</tt>, with the
+               <tt>-depend</tt>  option. This causes javac to recompile all
+               missing or out-of-date  files required to run the application's main
+               class. JDE finds the  source for your application's main class by
+               searching the  directories specified by
+               <tt>jde-db-source-directories</tt>. Thus,  you must set this
+               variable to use the Java build mode. 
+            </p>
+            <div id="ab2b4b2" class="section">
+               <h2 class="title" style="clear: all"><a name="ab2b4b2"><b><a name="BuildOptions"></a> Build Options</b></a></h2>
+               <p>The following table summarizes the usage of the build
+                  	configuration variables.
+               </p>
+               <div class="table">
+                  <p><a name="ab2b4b2b2"></a><b>Table 1. </b></p>
+                  <table border="1">
+                     <colgroup>
+                        <col align="left">
+                        <col align="left">
+                        <col align="left">
+                     </colgroup>
+                     <thead>
+                        <tr>
+                           <th>Name</th>
+                           <th>Group</th>
+                           <th>Usage</th>
+                        </tr>
+                     </thead>
+                     <tbody>
+                        <tr>
+                           <td valign="top"><tt>jde-build-use-make</tt></td>
+                           <td valign="top">Project</td>
+                           <td>A non-nil values causes the JDE to use a make utility
+                              		(specified by <tt>jde-make-program</tt>) to execute the
+                              		JDE-&gt;Build command. A nil values causes the JDE to use
+                              		<tt>javac</tt>  with the <tt>-depend</tt> option to
+                              		execute the
+                              		JDE-&gt;Build  command.
+                           </td>
+                        </tr>
+                        <tr>
+                           <td valign="top"><tt>jde-make-program</tt></td>
+                           <td valign="top">Project</td>
+                           <td>Specifies the name of the make utility used to  execute the
+                              		JDE-&gt;Build command. The default  values is
+                              		<tt>make</tt>.
+                           </td>
+                        </tr>
+                        <tr>
+                           <td valign="top"><tt>jde-make-args</tt></td>
+                           <td valign="top">Project</td>
+                           <td>Specifies a string of command-line arguments (for  example,
+                              		"<tt>-f mymakefile all</tt>") to be passed to  the
+                              		make utility used to execute the JDE-&gt;Build  command. If the null
+                              		string (""), the JDE  prompts the user to enter the
+                              		command-line arguments in  the minibuffer.
+                           </td>
+                        </tr>
+                     </tbody>
+                  </table>
+               </div>
+               <div id="ab2b4b2b3" class="section">
+                  <h3 class="title"><a name="ab2b4b2b3"><b><a name="SampleMakefile"></a>Sample Makefile</b></a></h3>
+                  <p>The following is a sample makefile that you can use as a model
+                     	  for creating makefiles to build Java projects. 
+                  </p><pre class="programlisting">
+	  JDK = d:/jdk1.2/lib/classes.zip 
+	  JMATH = d:/jmath/src 
+	  CLASSPATH = $(JMATH);$(JDK) 
+	  COMPILER = javac 
+	  VM = java 
+	  COPTIONS = -g -deprecation 
+	  ROPTIONS = 
+	  
+	  CLASSES = Test.class \ 
+          JMathError.class \ 
+          JMathException.class \ 
+          LinearSystem.class 
+	  
+	  .SUFFIXES: .java .class 
+	  
+	  all : $(CLASSES) 
+	  
+	  # Rebuild (if necessary) and run the JMath test suite.
+	  
+	  run: $(CLASSES) 
+	  $(VM) -classpath "$(CLASSPATH)" jmath.Test
+	  
+	  
+	  # Remove all class files from the project directory. 
+	  clean: 
+	  rm *.class 
+	  
+	  # Implicit rule for making Java class files from Java
+	  
+	  # source files. 
+	  .java.class: 
+	  $(COMPILER) $(COPTIONS) -classpath "$(CLASSPATH)" $? 
+	</pre></div>
+            </div>
+         </div>
+         <div id="ab2b5" class="chapter">
+            <h2 class="title"><a name="ab2b5"><a name="RunningJavaApps"></a>Running Java Applications</a></h2>
+            <p>The JDE allows you to run a Java application as an Emacs
+               subprocess. You can run multiple applications concurrently, but
+               only one instance of each application at a time. The JDE displays
+               each application's standard and error output in an Emacs command
+               interface (<tt>comint</tt>) buffer. You can interact with
+               applications that accept command line input via the <tt>comint</tt>
+               buffer. When interacting with an application, you can use any of <tt>comint-mode</tt>'s
+               extensive set of command-line history commands to speed
+               interaction. To run an application, enter 
+            </p><pre class="programlisting">
+      M-x jde-run
+    </pre><p>or select Java-&gt;Run App on the
+               Emacs menubar or type C-c&nbsp;C-v&nbsp;C-r. 
+            </p>
+            <div id="ab2b5b4" class="section">
+               <h2 class="title" style="clear: all"><a name="ab2b5b4"><b><a name="SpecifyingStartupDirectory"></a>Specifying a Startup Directory</b></a></h2>
+               <p>The JDE can start an application from any directory that you
+                  	specify. By default, the JDE starts an application from the
+                  	default directory of the current source buffer. The default
+                  	directory of the current source buffer is the directory
+                  	containing the source file displayed in the buffer. You can
+                  	specify another directory as the startup directory by setting the
+                  	JDE customization variable <tt>jde-run-working-directory</tt>.
+               </p>
+               <p>To set this variable, </p>
+               <div class="procedure">
+                  <ol>
+                     <li>
+                        <p>Display its customization panel.</p>
+                        <p>You can do this by  typing </p>
+                        <p>M-x&nbsp;<tt>customize-variable</tt>&nbsp;<tt>jde-run-working-directory</tt></p>
+                        <p>or selecting JDE-&gt;Options-&gt;Project
+                           	    to display the project customization  panel and searching this panel
+                           	    for <tt>jde-run-working-directory</tt>.
+                           	  
+                        </p>
+                        <p>
+                           	    
+                           <div class="screenshot">
+                              <div class="mediaobject"><img src="images/WorkingDirectory.gif" alt="Screenshow showing customization buffer for&#xA;		    jde-run-working-directory."></div>
+