プロジェクト・ネーチャーの定義方法
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メソッドが呼ばれる)を担当するということができる。
ここで,大きな疑問が浮かび上がる。「プロジェクト・ネーチャーをプロジェクトに関連付けるにはどうするの?いつやるの?」とお思いのことだろう。この話は後のお楽しみ,として今回はこれまで。
| 固定リンク
この記事へのコメントは終了しました。
コメント