FeaturesPluginsDocs & SupportCommunityPartners

NetBeans エディタ拡張のチュートリアル

フィードバック

このチュートリアルでは IDE のエディタ機能を拡張するモジュールを作成する手順を説明します。IDE にはさまざまなエディタがあります。たとえば XML エディタ、Java エディタ、JSP エディタ、SQL エディタなどがあります。通常すべての IDE のエディタはソースエディタとば呼ばれています。しかしそれぞれのエディタは違うものであり、その機能はそれぞれのファイルの種類に特化したものです。このチュートリアルでは XML エディタにアクションを追加してみます。モジュールを作成し追加すると XML ファイルを開いたときにエディタのコンテキストメニューに新しいメニュー項目が追加することができます。メニューを選択すると XML ファイルのタグを「出力」ウィンドウに表示します。

このチュートリアルでは以下のことを説明します:

このチュートリアルはソフトウェアがインストールできれば 45 分程度で完了します。

モジュール開発に関する詳細は NetBeans サイトの NetBeans Development Project home をご覧下さい。わからないところがあれば NetBeans Developer FAQ をご覧下さい。またこのページの「フィードバック」リンクを使ってください。


ソフトウェアのインストール

まずはじめにコンピュータにソフトウェアをインストールします:


サンプルのインストール

次の手順でサンプルをインストールします:

  1. サンプルファイル を展開 (unzip) します。

  2. IDE の「ファイル」>「プロジェクトを開く」を選択し、解凍したファイルがあるフォルダまで移動します。モジュールプロジェクトを開きます。プロジェクトを開くと次のようになります:

    すべてのソースファイル

  3. プロジェクトノードを右クリックし「ターゲットプラットフォームでのインストール/再読み込み」を選びます。ターゲットプラットフォームが開きモジュールがインストールされます。

  4. 使い方は モジュールの使用 セクションで説明していますのでモジュールが正しくインストールできているかどうか確認してください。

最終的な結果がどのようになるかわかったので、スクラッチからモジュールを作り作成の過程でそれぞれの部分を勉強してみましょう。


モジュールプロジェクトの設定

モジュールを作成する前にまずプロジェクトが正しく設定されているか確認する必要があります。NetBeans IDE 5.0 ではモジュールのための基本的なファイルを設定するためにウィザードを提供しています。

モジュールプロジェクトの作成

  1. 「ファイル」>「新規プロジェクト」(Ctrl-Shift-N) を選択してください。「カテゴリ」で「NetBeans プラグインモジュール」を選択します。「プロジェクト」では「モジュールプロジェクト」を選択し「次へ」ボタンをクリックします。
  2. 「名前と場所」パネルでは「プロジェクト名」に「ShowXMLStructure」と入力します。「プロジェクトの場所」は適当なディレクトリを指定します。たとえば c:\mymodules などです。「スタンドアロンモジュール」のラジオボタンはそのままにします。「主プロジェクトとして設定」を洗濯します。「次へ」をクリックします。

  3. 「基本モジュール構成」パネルでは「コード名ベース」で「yourorghere」を「myorg」に、「ShowXMLStructure」を「xmltree」に置き換え、「org.myorg.xmltree」にします。デフォルトの「モジュール表示名」に空白を挿入し「Show XML Structure」にします。「地域対応のバンドル」と「XML レイヤー」はそのままにし org/myorg/xmltree にこれらのファイルが保存されるようにします。「完了」ボタンをクリックします。

IDE は Show XML Structure プロジェクトを作成します。プロジェクトは必要なすべてのソースやメタデータ、たとえばプロジェクトの構築スクリプトなどを含んでいます。プロジェクトは IDE 上で開かれます。「プロジェクト」ウィンドウ(Ctrl-1) で理論的な構成を表示できます。また「ファイル」ウィンドウ(Ctrl-2)ではファイル構造を表示できます。たとえば「プロジェクト」ウィンドウではこのようになります:

初期の「プロジェクト」ウィンドウ

これらのファイルの基本的な説明は NetBeans プラグインモジュールクイックスタートガイド を参照してください。

モジュールの依存性の指定

NetBeans API のいくつかのクラスのサブクラスが必要です。これらはモジュールの依存性として宣言する必要があります。これは「プロジェクト」プロパティーを使って設定できます。

  1. 「プロジェクト」ウィンドウで Show XML Structure プロジェクトを右クリックし、「プロパティー」を選択します。

  2. 次のそれぞれの API は「ライブラリ」パネルで「追加...」ボタンをクリックしモジュールを選択して「了解」ボタンを押すことで追加できます:

    • 入出力 API
    • ノード API
    • テキスト API
    • ユーティリティー API
    • ウィンドウシステム API

  3. 「了解」をクリックしてプロジェクトの「プロパティー」ダイアログを閉じます。

  4. 「プロジェクト」ウィンドウで「プロジェクトメタデータ」をダブルクリックモジュールの依存性が正しく宣言されているか確認できます。

モジュールのコーディング


アクションの作成

  1. プロジェクトノードで右クリックして「新規」>「ファイル/フォルダ」を選択します。「カテゴリ」で「NetBeans モジュール開発」を選択します。「ファイルの種類」で「アクション」を選択します。「次へ」をクリックします。
  2. 「アクションの種類」パネルで「条件付で有効」をクリックします。「EditorCookie」 を選択します。これはソースエディタがアクションにアクセスする時のクラス名です:

    新規アクションウィザードのステップ1

    「次へ」をクリックします。

  3. 「GUI の登録」パネルでは「カテゴリ」のドロップダウンリストから「編集」カテゴリを選択します。この「カテゴリ」ドロップダウンリストはキーボードショートカットエディタのどこにアクションを表示するかを指定します。次に「エディタコンテキストメニュー項目」を選択し「text/xml」MIME タイプを選択しま:

    新規アクションウィザードのステップ2

    メニュー項目の位置や前後にセパレータを入れるように設定できます。「次へ」をクリックします。

  4. 「名前と場所」パネルでは「クラス名」に「ShowXMLStructureAction」と入力し「表示名」には「Show XML Structure Action」と入力します。コンテキストメニューで提供されるメニュー項目はアイコンを表示しません。「完了」をクリックすると ShowXMLStructureAction.java がパッケージに追加されます。

  5. ソースエディタでアクションの performAction メソッドに次のコードを追加します:
        public void performAction(Node[] activatedNodes) {
            EditorCookie cookie = (EditorCookie)activatedNodes[0].getCookie(EditorCookie.class); 
            String tabName = NbBundle.getMessage(ShowXMLStructureAction.class,"LBL_tabName");
            
            // "XML Tree" tab is created in output window for writing the list of tags
            InputOutput io = IOProvider.getDefault().getIO(tabName,false);
            io.select(); //XML Tree tab is selected
            OutputWriter writer = io.getOut();
            
            try {
                writer.reset(); //clean the output window
                java.io.InputStream is =  ((org.openide.text.CloneableEditorSupport)cookie).getInputStream();
                parse(new InputSource(is));
                is.close();
                for (int i=0;i<tags.length;i++) {
                    writer.println(tags[i]); //write tag to output window
                }
            } catch (IOException ex) {
            } catch (SAXException ex){
                writer.println("Parse Error: "+ex.getMessage());
            }
            writer.flush();
            writer.close();
        }

  6. 新規メソッドを追加します:
         /** Parses XML document and creates the list of tags
         */
        private void parse(InputSource is) throws IOException, SAXException {
            XMLReader xmlReader = XMLUtil.createXMLReader();
            TagHandler handler = new TagHandler();
            xmlReader.setContentHandler(handler);
            xmlReader.parse(is);
            tags = handler.getTags(); 
        }

  7. tags 変数をソースファイルの先頭に追加します:
        private String[] tags;

  8. Alt-Shift-F を押します。IDE は自動的にクラスの先頭に import 文を追加します。いくつかのコードにはだ赤いアンダーラインが付いています。これはクラスパスに必要なすべてのパッケージが入っていないためです。プロジェクトノードで右クリックして「プロパティー」を選択します。「プロジェクト」のプロパティーダイアログで「ライブラリ」をクリックします。「ライブラリ」区画で「追加」をクリックし「ダイアログ API」を追加します。

    ShowXMLStructureAction.java クラスで Alt-Shift-F をもう一度押します。IDE は必要な「ダイアログ API」を見つけることができたので赤いアンダーラインは消えます。

アクションの地域対応化

  1. Bundle.properties ファイルに表示名を追加します:

    ACT_name=Show XML Structure
    LBL_tabName=XML Structure
  2. Ctrl-S を押してファイルを保存します。

タグハンドラの作成

  1. 「プロジェクト」ウィンドウでプロジェクトノードを展開します。「ソースパッケージ」ノードを展開し org.myorg.xmltree ノードで右クリックします。「新規」>「ファイル/フォルダ」を選択します。「カテゴリ」で「Java クラス」を選択します。「ファイルの種類」で「Java クラス」を選択します。「次へ」をクリックして、「クラス名」に「TagHandler」と入力します。「完了」ボタンをクリックします。ソースエディタに新規 Java クラスが開かれます。

  2. デフォルトのコードを次のように変更します:
    package org.myorg.xmltree;
    
    import org.xml.sax.Attributes;
    import org.xml.sax.SAXException;
    
         /** Specific XML handler used for creating list of starting and ending tags, e.g. :
         * <AAA>
         *   <BBB>
         *     <CCC/>
         *   </BBB>
         * </AAA>
         */
    
        public class TagHandler extends org.xml.sax.helpers.DefaultHandler {
           
    	private final int indentLength=2;        
            private java.util.List tagList;
            private String indent;
            private String space;
            private String lastElement;
            
            TagHandler() {
                tagList = new java.util.ArrayList();
                StringBuffer indentBuf = new StringBuffer();
                for (int i=0;i<indentLength;i++) indentBuf.append(' ');
                space=indentBuf.toString();
                indent="";
            }
    
            public void startElement(String uri, String localName, String qName, Attributes attributes) throws SAXException {
                tagList.add(indent+"<"+qName+">");
                indent+=space;
                lastElement=qName;
                
            }
    
            public void endElement(String uri, String localName, String qName) throws SAXException {
                indent=indent.substring(indentLength);
                if (qName.equals(lastElement)) {
                    int lastIndex = tagList.size()-1;
                    String lastInList = (String)tagList.get(lastIndex);
                    String replacedString = lastInList.replace(">","/>");
                    tagList.set(lastIndex,replacedString);
                } else {     
                    tagList.add(indent+"</"+qName+">");
                }
                lastElement=null;
            }
            
            String[] getTags() {
                String[] tags = new String[tagList.size()];
                tagList.toArray(tags);
                return tags;
            }
        }

  3. Ctrl-S を押してファイルを保存します。

モジュールの構築とインストール

IDE はモジュールの構築およびインストールに Ant 構築スクリプトを使用します。構築スクリプトはプロジェクトの作成時に作成されます。

モジュールのインストール

  • 「プロジェクト」ウィンドウで「Show XML Structure」プロジェクトを右クリックし「ターゲットプラットフォームでのインストール/再読み込み」を選びます。

    モジュールが構築されターゲット IDE あるいはプラットフォームにインストールされます。ターゲット IDE またはプラットフォームが起動し新規モジュールを試すことができます。デフォルトのターゲットプラットフォームとは IDE の現在のインスタンスで使用しているインストールです。モジュールを実行すると IDE のユーザーディレクトリとは別のテストユーザーディレクトリで実行されます。

モジュールの使用

  1. 「ファイル」>「新規プロジェクト」(Ctrl-Shift-N) を選択して新規プロジェクトを作成します。

  2. 「ファイル」ウィンドウ(Ctrl-2)で、プロジェクトノードを展開し、nbproject ノードを展開します。「build-impl.xml」をダブルクリックしてソースエディタで開きます。

  3. ソースエディタで右クリックするとポップアップメニューには「Show XML Structure」という新しいメニューがあります。

    新しいポップアップメニュー

  4. メニューを選択するとタグハンドラがすべてのタグを「出力」ウィンドウに出力します。

    新規出力ウィンドウ

  5. 別の種類のファイルをソースエディタで開きます。たとえば Java クラスを開いてください。ソースエディタで右クリックしてポップアップメニューを表示しても先ほどのメニュー項目はありません。

共有可能なモジュールバイナリの作成

  1. 「プロジェクト」ウィンドウで Show XML Structure プロジェクトを右クリックし、「NBM を作成」を選択します。

    NBM ファイルが作成されます。「ファイル」ウィンドウ (Ctrl-2) で確認できます:

    共有可能な NBM

  2. メールなどで送付することにより他の人に配布、共有できます。

モジュールのアンインストール

  1. モジュールをインストールした IDE またはプラットフォームを終了します。
  2. 「プロジェクト」ウィンドウでプロジェクトのノードを右クリックし「生成物を削除」を選択します。これで IDE やプラットフォームにはモジュールはインストールされていません。

次のステップ

モジュールの開発と作成の詳細は次のリソースを参照してください:


バージョン

詳細な更新履歴は 原文の英文 をご覧下さい。このファイルはリビジョン 1.13 を翻訳しています。


Companion
Projects:
MySQL Database Server   Open JDK: an Open SourceJDK   GlassFish Community: an Open Source Application Server    Mobile & Embedded Community    Open Solaris   java.net - The Source for Java Technology Collaboration   Virtual Box - full virtualizer  Open ESB - The Open Enterprise Service Bus Powered by