JavaCapabilityConfigurationPageの利用

http://d.hatena.ne.jp/skrb/20050904/p1

利用例

JavaCapabilityConfigurationPageの利用例といえば、Javaプロジェクトの作成ウィザード。クラスで言うと、こんなのみたいです。

  • org.eclipse.jdt.internal.ui.wizards.JavaProjectWizard (ウィザード)
  • org.eclipse.jdt.internal.ui.wizards.JavaProjectWizardFirstPage (ページ1)
  • org.eclipse.jdt.internal.ui.wizards.JavaProjectWizardSecondPage (ページ2)


JavaProjectWizardSecondPageがJavaCapabilityConfigurationPageをextendsしたページになってる模様。

init()

2ページ目が表示されたときにinit()が呼ばれるよになってるようです。

JavaProjectWizardSecondPage#setVisible()→changeToNewProject()→updateProject()→init()


init()には「少なくともIJavaProject」を渡してやる必要があるようです。
IJavaProjectは1ページ目で入力されたプロジェクト名から作成しているようです。
IJavaProjectは

JavaCore.create(project)

で取得しますが、引数にIProjectが必要で、IProjectはワークスペースAPIを操作して作ります。

ResourcesPlugin.getWorkspace().getRoot().getProject(name)

configureJavaProject()

configureJavaProject()は、ウィザードをFinishしたときに呼ばれるようです。
これを呼ぶ前に先にIProject自体はcreate()しておく必要があるようです(上のgetProject()では、ハンドルは取得しているが、物理的なファイルはまだ作ってない)。


サンプル

Eclipse SDKのソース追うのも複雑怪奇で辛いなぁ。。。、
ちょっと、JavaCapabilityConfigurationPage利用のサンプル作ってみました。

http://miya.ws/misc/pluginsample/test2_1.0.0.jar

でも、これで正しいものかどうか不明。JavaProjectWizardFirstPage、JavaProjectWizardSecondPage とか使えれば、そのまま使いたい気もする。internalだけど。