« 型の仲間達(サブクラス,スーパークラス)の取得方法 | トップページ | プロジェクト・ネーチャーの適用方法 »

2004.03.15

プロジェクト・ネーチャーの定義方法

Eclipse(Platform,JDTおよびPDEが導入されている環境)では,以下のプロジェクトを作成できる。
  ・Java (Java Project)
  ・Plug-in Development (Plug-in Projectなど)
  ・Simple (Project)
Platformが標準で提供している単純なプロジェクト(Simple)に比べて,Java ProjectやPlug-in Projectはそれぞれ固有の機能拡張がなされている。Java ProjectであればJavaソースファイルを自動的にコンパイルしてくれるし,Plug-in ProjectはJava Projectに加えてプラグイン・マニフェストを自動的にチェックしてくれる(両方とも「ビルダー」と呼ぶ)。

あるプロジェクトに対して機能追加などの「特徴付け」を行うには,プロジェクト・ネーチャー(Project Nature)という機構を使用する。先ほどの機能拡張はプロジェクト・ネーチャーが行っているものであり,例えばJava NatureがJava Builder(自動コンパイル機能など)をプロジェクトに付加することで,プロジェクトをJavaプロジェクトとしている。

新規にプロジェクト・ネーチャーを定義するには,org.eclipse.core.resources.natures拡張ポイントを使用する

  <extension
      point="org.eclipse.core.resources.natures"
      id="myNature"
      name="My nature">
    <runtime>
      <run class="yoichiro.MyNature"/>
    </runtime>
  </extension>

id属性に新規プロジェクト・ネーチャーを識別するための文字列を,name属性に新規プロジェクト・ネーチャーの名前を記述する。このプロジェクト・ネーチャーのIDは,例のごとく「プラグインID+ネーチャーID」であり,上記のプラグイン・マニフェストがyoichiro.myPluginというIDのプラグインであれば,プロジェクト・ネーチャーのIDは「yoichiro.myPlugin.myNature」となる。プロジェクト・ネーチャーの実体は,runtime要素のrun子要素のclass属性を使って指定する

プロジェクト・ネーチャーの実体は,IProjectNatureインタフェースの実装クラスである。この実装クラス内で,プロジェクトに特徴付けを行う(ビルダーの登録処理がほとんど)。

  public class MyNature implements IProjectNature {
    private IProject project;
    public void setProject(IProject project) {
      this.project = project;
    }
    public IProject getProject() {
      return project;
    }
    public void configure() throws CoreException {
      // projectへ特徴付けを行う(ビルダーの登録など)
    }
    public void deconfigure() throws CoreException {
      // projectから特徴付けを解除する(ビルダーの削除など)
    }
  }

あるプロジェクトにこのプロジェクト・ネーチャーが登録されると,まずsetProjectメソッドに対象のプロジェクト(IProjectオブジェクト)が渡される(通常はフィールドに保持しておく)。そしてその後configureメソッドが呼び出される。このconfigureメソッド内で,保持しておいたprojectオブジェクトに対して,ビルダーの登録などの特徴付けの処理を行う

プロジェクトからプロジェクト・ネーチャーが解除されたときは,deconfigureメソッドが呼び出される。deconfigureメソッドでは,configureメソッド内で対象プロジェクトに登録したビルダーの登録解除など,特徴付けを解除する処理を行う

このように,プロジェクト・ネーチャーは,あるプロジェクトに対するライフサイクル(プロジェクト活性化の際はconfigureメソッドが呼ばれ,非活性化の際はdeconfigureメソッドが呼ばれる)を担当するということができる。

ここで,大きな疑問が浮かび上がる。「プロジェクト・ネーチャーをプロジェクトに関連付けるにはどうするの?いつやるの?」とお思いのことだろう。この話は後のお楽しみ,として今回はこれまで。

|

« 型の仲間達(サブクラス,スーパークラス)の取得方法 | トップページ | プロジェクト・ネーチャーの適用方法 »

コメント

コメントを書く



(ウェブ上には掲載しません)




トラックバック

この記事のトラックバックURL:
http://app.cocolog-nifty.com/t/trackback/12631/301794

この記事へのトラックバック一覧です: プロジェクト・ネーチャーの定義方法:

« 型の仲間達(サブクラス,スーパークラス)の取得方法 | トップページ | プロジェクト・ネーチャーの適用方法 »