<!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>
<!-- -*- xhtml -*- -->
  <title>NetBeans プラットフォーム 6.0、6.1、6.5: コードジェネレータの統合のチュートリアル</title>
  <link rel="stylesheet" type="text/css" href="https://netbeans.org/netbeans.css"/>
  <meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
  <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 Code Generator 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>
   
   <p><img  src="../images/articles/69/netbeans-stamp7-8-9.png" class="stamp" width="114" height="114" alt="このページの内容は NetBeans IDE 6.5、6.7、および 6.8 が対象です" title="このページの内容は NetBeans IDE 6.5、6.7、および 6.8 が対象です" /></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">version 6.7 以上</td>
            </tr>
            <tr>
                <td class="tbltd1"><a href="http://java.sun.com/javase/downloads/index.jsp">Java Developer Kit (JDK)</a></td>
                <td class="tbltd1">version 6 または<br/>version 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><img src="../images/tutorials/code-generator/code-generator-5.png" alt="配備結果" /></p>


<!-- ===================================================================================== -->

<h2 class="tutorial"><a name="creating"></a> モジュールプロジェクトの作成</h2>
      
<p>この節では、ウィザードを使用して、各 NetBeans モジュールが必要とするソースの構造を作成します。ソースの構造は、特定の場所にある特定のフォルダと、常に必要なファイルのセットで構成されます。たとえば、すべての NetBeans モジュールには、プロジェクトのメタデータを保存する <tt>nbproject</tt> フォルダと、ツールバーボタンやウィンドウなどの項目を宣言登録するための <tt>layer.xml</tt> ファイルが必要です。</p>

<ol>
          
	      <li>「ファイル」&gt;「新規プロジェクト」(Ctrl-Shift-N) を選択します。「カテゴリ」で「NetBeans モジュール」を選択します。「プロジェクト」で「モジュール」を選択し、「次へ」をクリックします。</li>
	<li>「名前と場所」パネルで、「プロジェクト名」に「<tt>DemoCodeGenerator</tt>」と入力します。「プロジェクトの場所」を、<tt>c:\mymodules</tt> などのコンピュータ上の任意のディレクトリに変更します。「スタンドアロンモジュール」ラジオボタンは選択したままにしておきます。パネルは次のようになります。

<p><img 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><img src="../images/tutorials/code-generator/code-generator-2.png" alt="新規プロジェクトウィザードの手順 2。" /></p></li>

<li>「完了」をクリックします。</li></ol>

<p> IDE によって <tt>DemoCodeGenerator</tt> プロジェクトが作成されます。このプロジェクトには、ソースや、プロジェクトの Ant 構築スクリプトなどのプロジェクトメタデータがすべて含まれます。IDE でプロジェクトが開きます。「プロジェクト」ウィンドウ (Ctrl-1) で、プロジェクトの論理構造を表示できます。また、「ファイル」ウィンドウ (Ctrl-2) で、プロジェクトのファイル構造を表示できます。 </p>



<!-- ===================================================================================== -->
<h2><a name="use"></a>「コードジェネレータ」ウィザードの使用</h2>

<p>この節では、ウィザードを使用して、コードジェネレータ機能との統合を開始するために必要となるスタブクラスとレイヤーのエントリを作成します。</p>

  
 <ol>
	
	 <li>プロジェクトノードを右クリックし、「新規」&gt;「その他」を選択します。次に示すように、「新規ファイル」ダイアログで、「モジュールの開発」&gt;「コードジェネレータ」を選択します。
              <p><img src="../images/tutorials/code-generator/code-generator-3.png" alt="「コードジェネレータ」ウィザード" /></p>
              </li>
	      <li>「新規コードジェネレータ」パネルで、次のとおりに設定します。
        <ul>
            <li><b>クラス名。</b>ウィザードで生成するスタブのクラス名を指定します。このフィールドには、「DemoCodeGenerator」と入力します。</li>
            <li><b>パッケージ。</b>スタブクラスが生成されるパッケージを指定します。ドロップダウンから「org.netbeans.modules.demo」を選択します。</li>
            <li><b>MIME タイプ。</b>コードジェネレータの統合が適用される MIME タイプを指定します。このフィールドには、「x-java」と入力します。</li>
            <li><b>CodeGeneratorContextProvider を生成。</b>コードジェネレータのルックアップにほかのオブジェクトを追加します。このチェックボックスは、選択解除したままにします。</li>
          </ul>
                  <p>画面は次のようになります。</p>
                  <p><img src="../images/tutorials/code-generator/code-generator-4.png" alt="高速検索テンプレート" /></p>
              </li>
<li>「完了」をクリックします。

    <p>「プロジェクト」ウィンドウは次のようになります。</p>

<p><img 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>

    <!-- ======================================================================================= -->
      
      <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>

<div class="indent">
    
    <ol>
        
        <li>プロジェクトを右クリックし、「プロパティー」を選択して「ライブラリ」パネルに次の 4 つの依存関係を設定します。
        
        <p><img src="../images/tutorials/code-generator/code-generator-7.png" alt="依存関係の設定" /></p>
        
        <p><b>注:</b> 「コードジェネレータ」ウィザードによって、「エディタライブラリ 2」と「ユーティリティー API」がすでに自動的に設定されていることがわかります。ほかの 2 つの依存関係は、「Javac API ラッパー」と「Java ソース」です。新しいコードジェネレータの統合を使用して、新しい Java コードスニペットを生成できる必要があります。</p></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>IDE の新しいインスタンスが開始され、コードジェネレータの統合モジュールがインストールされます。 </p></li>
               <li>Alt-Insert キーを押すと、新しい項目が含まれていることがわかります。
                   <p><img src="../images/tutorials/code-generator/code-generator-5.png" alt="配備結果" /></p></li>
                   <li>項目をクリックすると、コードが挿入されます。</li>
       </ol>          
   </div>
    
<!-- ======================================================================================= -->

<h2><a name="share"></a>共有可能なモジュールバイナリの作成</h2>

<p>モジュールが完了したので、ほかの人にそのモジュールを使用させることができます。そのためには、バイナリの「NBM」 (NetBeans モジュール) ファイルを作成し、それを配布する必要があります。 </p>

<div class="indent">
  
      <ol>
	      <li>「プロジェクト」ウィンドウでプロジェクトを右クリックし、「NBM を作成」を選択します。

                  <p>NBM ファイルが作成されます。これは「ファイル」ウィンドウ (Ctrl-2) で確認できます。</p></li>
	      <li>たとえば、<a href="http://plugins.netbeans.org/PluginPortal/">NetBeans プラグインポータル</a>を通じて、ほかの人がそのファイルを使用できるようにします。受信者は「プラグインマネージャー」(「ツール」&gt;「プラグイン」) を使用して、それをインストールします。</li>
       </ol>
 
    </div>


<!-- ======================================================================================== -->


<p><br/></p>
<div class="feedback-box"><a href="https://netbeans.org/about/contact_form.html?to=3&amp;subject=Feedback:%20Quick%20Search%20Integration%20Tutorial">ご意見をお寄せください</a></div>
<p><br style="clear:both;" /></p>
  
  
<!-- ======================================================================================== -->

<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_ja.html">その他の関連チュートリアル</a></li></ul>
  
<!-- ======================================================================================== -->
<!-- 
<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>
-->
</body>
</html>
