Java のプロジェクトを作りたいっ その 2

昨日、Winzard の [Next>] ボタンが押されたイベントがとれないと書いたのですが、はじめからページ同士を連携させておけば、イベントはとれなくてもいいのではと思い直すことにしました。

ということはどういうことかというと、ページを生成するときに参照を持たせてあげればいいのではと考えたのです。

で、そのときに唯一使えそうな JavaCapabilityConfigurationPage クラスのメソッドは init メソッドです。もしかしたら、createProject メソッドでもいいかもしれません。

init メソッドの定義は次のようになっていました。

	public void init(IJavaProject jproject,
                        IPath defaultOutputLocation,
                        IClasspathEntry[] defaultEntries,
                        boolean defaultsOverrideExistingClasspath);

一方の WizardNewProjectCreationPage オブジェクトから取得できるのは IJavaProject オブジェクトではなくて、IProject です。IPath オブジェクトは getLocationPath() メソッドを使えば取得できそうです。

IJavaProject インタフェースは名前からして IProject インタフェースの派生クラスなのでしょう。だとすると、何らかの変換方法があるはずです。

で、IJavaProject インタフェースの Javadoc を見てみたら...

なんと、IProject インタフェースの派生インタフェースではないんですね。これはビックリ。

どちらも IAdaptable インタフェースの派生インタフェースですが、直接の継承関係にはないようです。

これは困ったなぁと思っていたのですが、Javadoc を読み進んでいったら、IJavaProject インタフェースの See Also のところに JavaCore.create(org.eclipse.core.resources.IProject) というのが書いてあります。

もしかしてと思って、さっそく見てみると...

やはり、IProject オブジェクトから IJavaProject オブジェクトを作るメソッドのようです。

これを使えば、やりたいことはできそうです。