Javadoc を組み込む その 1
Eclipse の機能の 1 つに Javadoc を表示するというのがありますね。LG3D 3D API に関しても、同じように Javadoc を表示したいのすね。実際は Project Looking Glass の Javadoc はかなり貧弱なので、表示してもあまり意味はないのですが、今後充実してくるでしょう。
それはそれでいいのですが、困ったのはどこを調べればいいかが分からないところ。ダメジャン ^^;;
だいたい、普通のプロジェクトでも Javadoc を追加するにはどうすればいいか知らないのですから、話にもなりません。調べてみたら、JAR 単位で Javadoc を追加できるんですね。JAR ファイルのプロパティで設定できました。
これが分かっただけでも、後はずいぶん調べやすくなります。
プロジェクトの外部ライブラリの JAR ファイルのプロパティということは、IJavaProject インタフェースに関連するのではと予想できます。そこで、まず IJavaProject インタフェースの Javadoc を見てみたのですが、いまいちよく分かりません。
やっぱり CLASSPATH 関連なのかなぁと思ったので、IJavaProject#getRowClasspath の戻り値である IClasspathEntry インタフェースを見てみます。そうすると、なにやらにおうメソッドが... getExtraAttributes です。この戻り値が IClasspathAttribute オブジェクトの配列。
そして、IClasspathAttribute インタフェースの Javadoc を見てみると、getValue と getName というメソッドがあります。そして、定数には JAVADOC_LOCATION_ATTRIBUTE_NAME という文字が...
しかし、IClasspathAttribute インタフェースも IClasspathEntry インタフェースも setter などの更新系のメソッドがありません。ということは、IJavaProject#getRowClasspath メソッドで取得した IClasspathEntry オブジェクトを更新するということはできないということです。
IJavaProject#setRawClasspath メソッドはあるので、引数に必要な情報を保持させた IClasspathEntry オブジェクトを指定すればいいのでしょう。
現在はこの CLASSPATH の設定は LG3DProjectWizard#perfromFinish メソッドでおこなっています。該当箇所を抜き出してみると
IClasspathEntry[] initialEntries = javaProject.getRawClasspath(); IClasspathEntry[] entries = new IClasspathEntry[initialEntries.length + 1]; System.arraycopy(initialEntries, 0, entries, 0, initialEntries.length); entries[initialEntries.length] = JavaCore.newLibraryEntry(corePath, null, null); javaProject.setRawClasspath(entries, monitor);
これを見ると、JavaCore#newLibraryEntry メソッドを使用して lg3d-core.jar に相当する IClasspathEntry オブジェクトを生成しています。
JavaCore クラスの Javadoc を見ると、newLibraryEntry メソッドは 2 つオーバーロードされており、一方は引数に IClasspathAttribute[] を指定できるようです。
実際にどのようにすればいいかは明日考えることにします。