FeaturesPluginsDocs & SupportCommunityPartners

ファイルの種類を認識するチュートリアル

フィードバック

このチュートリアルでは IDE のプラグインモジュールや NetBeans Platform 上に作成されたアプリケーションに新しいファイルを認識させる方法を説明しています。IDE 上で認識されている「ファイルの種類」はそれぞれアイコン、メニュー、そして動作を持っています。FileObject として表示される "ファイル群" は java.io.File のラップか、あるいは構成ファイルではモジュールで使用される XML ファイルのようにデータストアのラップです。実際に見えるものは Node と呼ばれ、アクションなどの機能やファイルのオブジェクトのように地域対応された名前を提供します。この NodeFileObject の間が DataObject です。DataObjectFileObject のようなものですが、ファイルがどのような種類でどのように表示されるかの情報は知りません。ファイルには別の拡張と名前空間を持つ DataObject があります。それぞれの DataObject は別のモジュールから提供されます。それぞれの実装はひとつあるいはそれ以上のファイルの種類があります。例えば画像モジュールであれば .gif ファイルや .png ファイルを認識し開けるようにしています。

モジュールは DataLoader をインストールし新しいファイルの種類を認識します。これはそのファイルの種類特有の DataObject を提供するファクトリです。フォルダを展開すると IDE はそれぞれの利用可能な DataLoader に「これは何だかわかりますか?」と聞きにいきます。最初に「はい」と答えた DataLoader が DataObject を作成します。それぞれのファイルを実際に表示するにはシステムは DataObject.getNodeDelegate() をそれぞれの DataObject に対して呼び出します。Node が実際に IDE 上で表示されるものです。

以下の左の図にこれまでの説明して項目をあらわしています。右側の図はそれぞれの関係を表しています:

図 図

このチュートリアルではひとつのモジュールを作成し、JAR マニフェストファイル(.mf 拡張子)用の DataLoader をインストールする方法を説明します。デフォルトではマニフェストファイルは IDE では認識のできない「その他」のファイルとして扱われます。このようなファイルは通常テキストファイルとして扱われ IDE はテキストファイルとしての機能を提供します。一度モジュールを作成してしまえばマニフェストファイル専用の機能を拡張する方法を理解できます。開発サイクルが完了すれば「モジュール」として他の人にモジュールを簡単に使ってもらえるようになります。IDE を使えば他の人に配布できるようなバイナリを作成できます。他の人はアップデートセンター等でそのバイナリをインストールできます。

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

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

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


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

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


サンプルのインストール

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

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

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

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

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

  4. 「新規 プロジェクト」ウィザード (Ctrl-Shift-N) を使って Java アプリケーションを作成します。そこではマニフェストファイルは別のアイコンで表示されコンテキストメニューは新規のメニュー項目があります。コンテキストメニューを開いて結果を見てみます。

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

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

    新規プロジェクトウィザードのステップ1

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

  3. 「基本モジュール構成」パネルでは「コード名ベース」で yourorgheremyorg に置き換え、org.myorg.manifestfiletype にします。デフォルトの「モジュール表示名」に空白を挿入に Manifest File Type にします。「地域対応のバンドル」と「XML レイヤー」はそのままにし org/myorg/manifestfiletype にこれらのファイルが保存されるようにします。パネルはこのようになります:

    新規プロジェクトウィザードのステップ1

  4. 「完了」ボタンをクリックします。

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

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

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


マニフェストファイルの認識

  1. プロジェクトノードで右クリックして「新規」>「ファイルの種類」を選択します。「次へ」をクリックします。
  2. 「ファイルの認識」パネルでは次のようにします:

    • 「MIME タイプ」には text/x-java-jar-manifest と入力します。
    • 「ファイル名の拡張子」には .mf .MF と入力します。

    「ファイルの認識」パネルはこのようになります:

    新規ファイルウィザードのステップ1

    「ファイルの認識」パネルのそれぞれの項目は次のようになっています:

    • MIME タイプ はデータオブジェクトの一意の MIME タイプを指定します。
    • 識別方法
      • ファイル拡張子 は IDE がその MIME タイプに割り当てるひとつあるいはそれ以上のファイル拡張子を指定します。ファイル拡張子は任意でドット(.)を先頭に付けることができます。セパレータはコンマ、空白あるいはどちらでもかまいません。したがって以下の例はすべて有効です:

        • .abc,.def
        • .abc .def
        • abc def
        • abc,.def ghi, .wow

        JAR ファイルのマニフェストファイルは "MANIFEST.MF" であり少なくとも UNIX プラットフォームでは大文字小文字が区別されます。そのためこのチュートリアルでは 2つ の MIME タイプを使用します、.mf.MF です。

      • XML ルート要素 は他の XML ファイルと区別するための一意に決められた名前空間です。XML ファイルは同じ拡張子 (xml) を持つので IDE はこの XML ルート要素を使って XML ファイルを区別します。さらに具体的に言うと、IDE は XML ファイルの最初の要素で名前空間を区別します。これを使うことで例えば JBoss の配備記述子と WebLogic の配備記述子を区別することができます。この区別ができると JBoss の配備記述子のコンテキストメニューには表示されるが WebLogic のメニューには表示されないというようなメニュー項目を提供することができます。例として NetBeans コンポーネントパレットモジュールのチュートリアル(日本語) をご覧下さい。

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

  3. 「名前と場所」パネルでは「クラス名」に「Manifest」と入力し、16x16 ピクセルのイメージファイルを新しいファイルの種類のアイコンとして参照します。

    新規ファイルウィザードのステップ2

    NetBeans のインストールディレクトリにはいろいろな 16x16 ピクセルのイメージファイルがあります。例えば次の場所にあります:

    enterprise2\jakarta-tomcat-5.5.7\server\webapps\admin\images

    このチュートリアルでは上記ディレクトリの Datasource.gif を使用します。これは次のようなアイコンです:Datasource.gif

  4. 「完了」ボタンをクリックします。

    これで「プロジェクト」ウィンドウはこのようになります:

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

新規に作成されたファイルについて簡単に説明します:

  • ManifestDataLoader.java. このファイルは text/x-java-jar-manifest MIME タイプを認識します。ManifestDataObject.java のファクトリとして機能します。詳しい説明は What is a DataLoader? をご覧下さい。

  • ManifestResolver.xml. このファイルは .mf.MF の拡張子を MIME タイプにマップします。ManifestDataLoader は MIME タイプのみ認識します。ファイル拡張子についてはまったく知りません。

  • ManifestDataObject.java. このファイルは FileObject をラップします。DataObjects は DataLoaders によって生成されます。詳しい説明は What is a DataObject? をご覧下さい。

  • ManifestDataNode.java. このファイルはアクションなどの機能、アイコンや地域対応された名前など IDE 上での 見え方 を提供します。

  • ManifestDataLoaderBeanInfo.java. このファイルは「オプション」ウィンドウの「オブジェクトの種類」セクションでローダーを表示するかしないかを制御します。


マニフェストファイル用の機能を追加

アクションの追加

  1. プロジェクトノードで右クリックして「新規」>「アクション」を選択します。「次へ」をクリックします。
  2. 「アクションの種類」パネルで「条件付で有効」をクリックします。先ほどの「新規 ファイルの種類」ウィザードで生成されたデータオブジェクトの名前、ManifestDataObject を次のように入力します。

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

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

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

    次に「大域メニュー項目」は選択を解除し、「ファイルの種類のコンテキストメニュー項目」を選択します。「内容の種類」のドロップダウンリストでは「新規 ファイルの種類」ウィザードで指定した MIME タイプを指定します:

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

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

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

  5. ソースエディタでアクションの performAction メソッドにいくつかのコードを追加します:
        protected void performAction(Node[] activatedNodes) {
    	ManifestDataObject d = (ManifestDataObject) activatedNodes[0].getCookie(ManifestDataObject.class);
    	FileObject f = d.getPrimaryFile();
    	String displayName = FileUtil.getFileDisplayName(f);
    	String msg = "I am " + displayName + "!"; 
            NotifyDescriptor nd = new NotifyDescriptor.Message(msg);
            DialogDisplayer.getDefault().notify(nd);
        }

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

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

  6. 「重要なファイル」ノードで「XML レイヤー」ノードを展開します。2つのノード <このレイヤー><コンテキスト内のこのレイヤー> とそのサブノードで System Filesystem ブラウザを構成しています。<このレイヤー>、さらに Loaders、作成した Action が見えるまでノードを展開します。

  7. 次のように My Action「開く」 アクションの下にくるようにドラッグ & ドロップします:

    System Filesystem ブラウザ

    この2つの手順でわかるように System Filesystem ブラウザは System Filesystem に登録されている項目の順序を簡単に変更することができます。


マニフェストファイル用の DataLoader モジュールをインストール

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

NetBeans プラグインのインストール

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

    モジュールが構築されターゲット IDE にインストールされます。ターゲット IDE が起動し新規モジュールを試すことができます。デフォルトのターゲット IDE とは IDE の現在のインスタンスで使用しているインストールです。

NetBeans プラグインの使用

  1. 新規モジュールプロジェクトを作成します。

  2. 「重要なファイル」ノードを展開します。

    このモジュールマニフェストファイルは指定したアイコンになっています。また右クリックでのコンテキストメニューで表示されるメニューも利用可能になっています。これらは layer.xml でアクションのリストが定義されています:

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

  3. この新しいメニュー項目を選択します。するとマニフェストファイルの名前と場所が表示されます:

    情報

  4. 新規モジュールプロジェクトノードで右クリックして「新規」>「ファイル/フォルダ」を選択します。「その他」のカテゴリーでは新しいファイルの種類のテンプレートが利用可能になっています:

    テンプレート

    このテンプレートでデフォルトのコードを提供する場合はコードを ManifestTemplate.mf ファイルに加えます。このファイルは「新規 ファイルの種類」ウィザードで作成されています。

共有可能なプラグインバイナリの作成

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

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

    共有可能な NBM

  2. メールなどで送付することにより他の人に配布、共有できます。受信者は「アップデートセンター」でこのモジュールをインストールすることができます。

今後の拡張

いくつかの機能を付け足してみてもよいでしょう:

  • 構文強調機能

  • コンポーネントパレット

  • アクションの追加
  • ウィザードの拡張 - マニフェストファイル作成のためにパネルを追加する
  • プロパティシート
  • 新規ファイルの種類のテンプレートの使用


次のステップ

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


バージョン

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


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