<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
<meta http-equiv="content-type" content="text/html; charset=UTF-8">
<!-- -*- xhtml -*- -->
  <title>针对 NetBeans 6.0、6.1 和 6.5 平台的代码生成器集成教程</title>
  <link rel="stylesheet" type="text/css" href="https://netbeans.org/netbeans.css">
  <meta name="AUDIENCE" content="NBUSER">
  <meta name="TYPE" content="ARTICLE">
  <meta name="EXPIRES" content="N">
  <meta name="developer" content="gwielenga@netbeans.org">
  <meta name="indexed" content="y">
  <meta name="description"
 content="A short guide to using the Nodes API.">
<!--      Copyright (c) 2009, 2010, Oracle and/or its affiliates. All rights reserved. -->
<!--     Use is subject to license terms.-->
</head>
<body>
	<h1>代码生成器集成教程</h1>

<p>本教程介绍如何编写在 NetBeans 代码生成功能中集成新项目的模块，您可以通过在编辑器中按 Alt-Insert 组合键来调用该模块。 

   </p><p><b>目录</b></p>
   
       <img  src="../images/articles/65/netbeans-stamp65.gif" class="stamp" width="114" height="114" alt="本页上的内容适用 NetBeans IDE 6.5" title="本页上的内容适用 NetBeans IDE 6.5"> </p>
      <ul class="toc">
  <li><a href="#intro">代码生成器集成简介</a></li>
  <li><a href="#creating">创建模块项目</a></li>
  <li><a href="#use">使用“代码生成器提供器”向导</a></li>
  <li><a href="#code">实现代码生成器集成</a></li>
  <li><a href="#install">安装并试用功能</a></li>
  <li><a href="#share">创建可共享的二进制文件</a></li>
       </ul>
         
<p><b>要学习本教程，您需要具备下表中列出的软件和资源。</b></p>

      <table>
        <tbody>
            <tr>
                <th class="tblheader" scope="col">软件或资源</th>
                <th class="tblheader" scope="col">要求的版本</th>
            </tr> 
           <tr>
                <td class="tbltd1"><a href="https://netbeans.org/downloads/index.html">NetBeans IDE</a></td>
                <td class="tbltd1">版本 6.5</td>
            </tr>
            <tr>
                <td class="tbltd1"><a href="http://java.sun.com/javase/downloads/index.jsp">Java 开发工具包 (Java Developer Kit,JDK)</a></td>
                <td class="tbltd1">版本 6 或<br/>版本 5</td>
            </tr>
        </tbody>
    </table>
    
 <p class="tips">（可选）要解决疑难问题，可以<a href="http://plugins.netbeans.org/PluginPortal/faces/PluginDetailPage.jsp?pluginid=11179"> 下载完整的样例 </a>并查看其源代码。
    


</p><h2 class="tutorial"><a name="intro"></a>代码生成器集成简介</h2>

<p>NetBeans IDE 6.5 中引入的代码生成器功能由一系列项目组成，您可以按 Alt-Insert 组合键来调用它们。每个项目都会将代码生成到编辑器中。

</p><p></p><p align="left"><img border="1" src="../images/tutorials/code-generator/code-generator-5.png" alt="部署后的结果">


<!-- ===================================================================================== -->

</p><h2 class="tutorial"><a name="creating"></a>创建模块项目</h2>
      
<p>在本节中，我们将利用向导创建每个 NetBeans 模块所需的源代码结构。源代码结构包含位于特定位置的某些文件夹以及一组始终需要的文件。例如，每个 NetBeans 模块都需要一个 &quot;<tt>nbproject</tt>&quot; 文件夹和一个 <tt>layer.xml</tt> 文件，前者用于存放项目的 meta 数据，后者用于工具栏按钮和窗口等项的声明性注册。

</p><ol>
          
	      <li>选择“文件”&gt;“新建项目”(Ctrl-Shift-N)。在“类别”下选择“NetBeans 模块”。在“项目”下面，选择“模块”并单击“下一步”。</li>
	<li>在“名称和位置”面板的“项目名称”中键入 <tt>DemoCodeGenerator</tt>。将项目位置更改为计算机上的任意目录，例如 <tt>c:\mymodules</tt>。将“独立模块”单选按钮保留为选中状态。此面板现在应如下所示：

<p></p><p align="left"><img border="1" src="../images/tutorials/code-generator/code-generator-1.png" alt="“新建项目”向导的第 1 步。">
 </p><p>单击“下一步”。

</p></li><li>在“基本模块配置”面板中，键入 <tt>org.netbeans.modules.demo</tt> 作为代码名称基。选中“生成 XML 层”复选框，并保留本地化绑定和 XML 层的位置不变，这样它们将存储在名称为 <tt>org/netbeans/modules/demo</tt> 的包中。 此面板现在应如下所示：

<p></p><p align="left"><img border="1" src="../images/tutorials/code-generator/code-generator-2.png" alt="“新建项目”向导的第 2 步。">

</p></li><li>单击“完成”。</li></ol>

<p> IDE 将创建 <tt>DemoCodeGenerator</tt> 项目。此项目包含所有源代码和项目 meta 数据，例如项目的 Ant 生成脚本。此项目将会在 IDE 中打开。您可以在“项目”窗口 (Ctrl-1) 中查看其逻辑结构，在“文件”窗口 (Ctrl-2) 中查看其文件结构。 


      <br />

<!-- ===================================================================================== -->
</p><h2><a name="use">使用“代码生成器提供器”向导</a></h2>

<p>在本节中，我们将通过向导来创建实现生成器功能集成所需的桩模块类和层条目。

  
 </p><ol>
	
	 <li>右键单击项目节点，然后选择“新建”&gt;“其他”。在“新建文件”对话框中，选择“模块开发”&gt;“代码生成器”，如下所示：
<p></p><p align="left"><img border="1" src="../images/tutorials/code-generator/code-generator-3.png" alt="代码生成器向导。">
              </p></li>
	      <li>在“新建代码生成器”面板中，设置以下内容：
        <p></p><ul>
            <li><b>类名。</b>指定向导将生成的桩模块的类名。在该字段中键入 &quot;DemoCodeGenerator&quot;。
            </li><li><b>包。</b>指定将在其中生成桩模块类的包。从下拉列表中选择 &quot;org.netbeans.modules.demo&quot;。
            </li><li><b>Mime 类型。</b>指定代码生成器集成将应用的 Mime 类型。在该字段中键入 &quot;x-java&quot;。
            </li><li><b>生成代码生成器上下文提供器。</b>在代码生成器的查找中添加一些额外的对象。保留此复选框为未选中状态。
          </li></ul>
          <p>您现在应该看到下面的屏幕：
</p><p></p><p align="left"><img border="1" src="../images/tutorials/code-generator/code-generator-4.png" alt="快速搜索模板">
          
</p></li><li>单击“完成”。

<p></p><p>“项目”窗口现在应如下所示：

</p><p></p><p align="left"><img border="1" src="../images/tutorials/code-generator/code-generator-6.png" alt="最终的“项目”窗口。"></p></li>
</ol>
      <p>在 <tt>layer.xml</tt> 文件中，您应该能看到以下内容：
      
</p><pre>&lt;filesystem&gt;
    &lt;folder name=&quot;Editors&quot;&gt;
        &lt;folder name=&quot;text&quot;&gt;
            &lt;folder name=&quot;x-java&quot;&gt;
                &lt;folder name=&quot;CodeGenerators&quot;&gt;
                    &lt;file name=&quot;org-netbeans-modules-demo-DemoCodeGenerator$Factory.instance&quot;/&gt;
                &lt;/folder&gt;
            &lt;/folder&gt;
        &lt;/folder&gt;
    &lt;/folder&gt;
&lt;/filesystem&gt;</pre>      

<p>生成的类应如下所示：

</p><pre>public class DemoCodeGenerator implements CodeGenerator {

    JTextComponent textComp;

    /**
     * 
     * @param context containing JTextComponent and possibly other items 
     * registered by {@link CodeGeneratorContextProvider}
     */
    private DemoCodeGenerator(Lookup context) { 
    // Good practice is not to save Lookup outside ctor
        textComp = context.lookup(JTextComponent.class);
    }

    public static class Factory implements CodeGenerator.Factory {

        public List<? extends CodeGenerator> create(Lookup context) {
            return Collections.singletonList(new DemoCodeGenerator(context));
        }
    }

    /**
     * The name which will be inserted inside Insert Code dialog
     */
    public String getDisplayName() {
        return &quot;Sample Generator&quot;;
    }

    /**
     * This will be invoked when user chooses this Generator from Insert Code
     * dialog
     */
    public void invoke() {
    }
    
}</pre>


      <br />
    
    <!-- ======================================================================================= -->
      
      <h2><a name="code">实现代码生成器集成</a></h2>
<p>接下来，我们将实现 API。API 的类如下所示：</p>


      <table>
        <tbody>
            <tr>
                <th class="tblheader" scope="col">类</th>
                <th class="tblheader" scope="col">描述</th>
            </tr>
            <tr>
                <td class="tbltd1">JavaSource</td>
                <td class="tbltd1">待完成</td>
            </tr>
            <tr>
                <td class="tbltd1">CancellableTask</td>
                <td class="tbltd1">待完成</td>
            </tr>
            <tr>
                <td class="tbltd1">WorkingCopy</td>
                <td class="tbltd1">待完成</td>
            </tr>
            <tr>
                <td class="tbltd1">CompilationUnitTree</td>
                <td class="tbltd1">待完成</td>
            </tr>
            <tr>
                <td class="tbltd1">TreeMaker</td>
                <td class="tbltd1">待完成</td>
            </tr>
            <tr>
                <td class="tbltd1">ClassTree</td>
                <td class="tbltd1">待完成</td>
            </tr>
            <tr>
                <td class="tbltd1">ModifiersTree</td>
                <td class="tbltd1">待完成</td>
            </tr>
            <tr>
                <td class="tbltd1">VariableTree</td>
                <td class="tbltd1">待完成</td>
            </tr>
            <tr>
                <td class="tbltd1">TypeElement</td>
                <td class="tbltd1">待完成</td>
            </tr>
            <tr>
                <td class="tbltd1">ExpressionTree</td>
                <td class="tbltd1">待完成</td>
            </tr>
            <tr>
                <td class="tbltd1">MethodTree</td>
                <td class="tbltd1">待完成</td>
            </tr>
            
        </tbody>
    </table>
    
<p></p><p>下面，我们将设置所需模块的依赖关系，然后在我们自己的模块中实现它们。

</p><div class="indent">
    
    <ol>
        
        <li> 右键单击项目，选择“属性”，在“库”面板中设置以下 4 个依赖关系。
        
     <p></p><p align="left"><img border="1" src="../images/tutorials/code-generator/code-generator-7.png" alt="设置依赖关系。" />
        
        </p><p><b>注意：</b>您会注意到，“代码生成器”向导已经自动设置了“编辑器库 2”和“实用程序 API”。另外两个依赖关系是“Javac API 包装器”和“Java 源代码”，您需要能够通过新的代码生成器集成生成新 Java 代码片段。
        
        </p></li><li>打开生成的类。
        
        </li><li>修改 <tt>invoke()</tt> 方法，如下所示：
    
<pre>public void invoke() {
    try {
        Document doc = textComp.getDocument();
        JavaSource javaSource = JavaSource.forDocument(doc);
        CancellableTask task = new CancellableTask&lt;WorkingCopy&gt;() {
            public void run(WorkingCopy workingCopy) throws IOException {
                workingCopy.toPhase(Phase.RESOLVED);
                CompilationUnitTree cut = workingCopy.getCompilationUnit();
                TreeMaker make = workingCopy.getTreeMaker();
                for (Tree typeDecl : cut.getTypeDecls()) {
                    if (Tree.Kind.CLASS == typeDecl.getKind()) {
                        ClassTree clazz = (ClassTree) typeDecl;
                        ModifiersTree methodModifiers = 
                                make.Modifiers(Collections.&lt;Modifier&gt;singleton(Modifier.PUBLIC), 
                                Collections.&lt;AnnotationTree&gt;emptyList());
                        VariableTree parameter = 
                                make.Variable(make.Modifiers(Collections.&lt;Modifier&gt;singleton(Modifier.FINAL), 
                                Collections.&lt;AnnotationTree&gt;emptyList()), 
                                &quot;arg0&quot;, 
                                make.Identifier(&quot;Object&quot;), 
                                null);
                        TypeElement element = workingCopy.getElements().getTypeElement(&quot;java.io.IOException&quot;);
                        ExpressionTree throwsClause = make.QualIdent(element);
                        MethodTree newMethod = 
                                make.Method(methodModifiers, 
                                &quot;writeExternal&quot;, 
                                make.PrimitiveType(TypeKind.VOID), 
                                Collections.&lt;TypeParameterTree&gt;emptyList(), 
                                Collections.singletonList(parameter), 
                                Collections.&lt;ExpressionTree&gt;singletonList(throwsClause), 
                                &quot;{ throw new UnsupportedOperationException(\&quot;Not supported yet.\&quot;) }&quot;, 
                                null);
                        ClassTree modifiedClazz = make.addClassMember(clazz, newMethod);
                        workingCopy.rewrite(clazz, modifiedClazz);
                    }
                }
            }
            public void cancel() {
            }
        };
        ModificationResult result = javaSource.runModificationTask(task);
        result.commit();
    } catch (Exception ex) {
        Exceptions.printStackTrace(ex);
    }
}</pre>
 
 </li><li>确保声明了以下导入数据：
 
<pre>import com.sun.source.tree.AnnotationTree;
import com.sun.source.tree.ClassTree;
import com.sun.source.tree.CompilationUnitTree;
import com.sun.source.tree.ExpressionTree;
import com.sun.source.tree.MethodTree;
import com.sun.source.tree.ModifiersTree;
import com.sun.source.tree.Tree;
import com.sun.source.tree.TypeParameterTree;
import com.sun.source.tree.VariableTree;
import java.io.IOException;
import java.util.Collections;
import java.util.List;
import javax.lang.model.element.Modifier;
import javax.lang.model.element.TypeElement;
import javax.lang.model.type.TypeKind;
import javax.swing.text.Document;
import javax.swing.text.JTextComponent;
import org.netbeans.api.java.source.CancellableTask;
import org.netbeans.api.java.source.JavaSource;
import org.netbeans.api.java.source.JavaSource.Phase;
import org.netbeans.api.java.source.ModificationResult;
import org.netbeans.api.java.source.TreeMaker;
import org.netbeans.api.java.source.WorkingCopy;
import org.netbeans.spi.editor.codegen.CodeGenerator;
import org.netbeans.spi.editor.codegen.CodeGeneratorContextProvider;
import org.openide.util.Exceptions;
import org.openide.util.Lookup;</pre> 
 
 </li></ol>
    </div>

      
    <!-- ======================================================================================= -->

<h2><a name="install"></a>安装并试用功能</h2>
<p>现在，安装模块并使用代码生成器功能集成。IDE 使用 Ant 生成脚本来生成和安装模块。此生成脚本是在创建项目时创建的。</p>
<div class="indent">


      <ol>
	      <li>在“项目”窗口中，右键单击项目并选择“运行”。
	      <p></p><p>此时将启动一个新的 IDE 实例，并安装代码生成器集成模块。 
               </p></li><li>按 Alt-Insert 组合键，您将看到其中包括的新项目：
<p></p><p align="left"><img border="1" src="../images/tutorials/code-generator/code-generator-5.png" alt="部署后的结果">
		 </p></li><li>单击某个项目，其中将插入代码。
       </li></ol>          
   </div>
      <br />
    
<!-- ======================================================================================= -->

<h2><a name="share"></a>创建可共享的模块二进制文件</h2>

<p>完成模块之后，您可以允许其他人使用它。为此，您需要创建一个 &quot;NBM&quot;（NetBeans 模块）二进制文件并分发它。 

</p><div class="indent">
  
      <ol>
	      <li>在“项目”窗口中，右键单击项目，然后选择“创建 NBM”。

	      <p></p><p>此时将创建 NBM 文件，您可以在“文件”窗口 (Ctrl-2) 中查看它：
	      </p></li><li>将它分发给其他人，比如说通过 <a href="http://plugins.netbeans.org/PluginPortal/">NetBeans 插件门户</a>。 接收者应使用插件管理器（“工具”&gt;“插件”）来安装它。
       </li></ol>
 
    </div>


<!-- ======================================================================================== -->


  <br>
<div class="feedback-box"><a href="https://netbeans.org/about/contact_form.html?to=3&amp;subject=Feedback:%20Quick%20Search%20Integration%20Tutorial">请将您的反馈发送给我们</a></div>
<br style="clear:both;" />
  
  
<!-- ======================================================================================== -->

<h2><a name="nextsteps"></a>未来计划</h2>

<p>有关创建和开发 NetBeans 模块的详细信息，请参见以下资源： 
  </p><ul>
	  <li><a href="https://platform.netbeans.org/index.html">NetBeans 平台主页</a></li>
	  <li><a href="https://netbeans.org/download/dev/javadoc/">NetBeans API 列表（当前开发版本）</a></li>
  <li><a href="https://netbeans.org/kb/trails/platform.html">其他相关教程</a></li></ul>
  </p>
  
  <hr><p></p><p>
<!-- ======================================================================================== -->
<!-- 
<h2><a name="version"></a>Versioning </h2>
<p>
<table width="76%" border="1">
 <tbody>
   <tr>
      <td>
        <div align="left"><b>Version</b></div>
      </td>
      <td>
	<div align="left"><b>Date</b></div>
      </td>
      <td>
	<div align="left"><b>Changes</b></div>
      </td>
  </tr>
  <tr>
      <td>
         1
      </td>
      <td>
         19 July 2008
      </td>
      <td>
      Initial version.
      </td>
  </tr>
 </tbody>
</table>
-->
</p></body>
</html>
