読者です 読者をやめる 読者になる 読者になる

Preference ページを作る

今のままだと LG3D を起動するにしても、LG3D をインストールしたディレクトリが決めうちなのが問題です。

そこで、Preference ページを作ってインストールしたディレクトリを設定できるようにしてみます。

まずは Extensions タブから Extension Point を新たに設定します。もう、何度もやっているので、ここだけは覚えました ^^;;

左側の All Extensions の [Add...] をクリックして、Preference ページの Extensions である org.eclipse.ui.preferencePages を追加します。

そして、追加した org.eclipse.ui.preferencePages の上で右クリックして [New] -> [page] を選択します。

ページが追加できたので、今度は右側の Extension Element Details を埋めました。

id:    jp.gr.java_conf.skrb.lg3d.wrpe.page1
name:  Project Looking Glass
class: jp.gr.java_conf.skrb.lg3d.wrpe.preference.LG3DPreferencePage

Preference Page

だいたい、今までの経験だと (少ないですけど...) name が実際に Preferences の項目名になるはずです。

LG3DPreferencePage もスケルトンを作ってくれました。

package jp.gr.java_conf.skrb.lg3d.wrpe.preference;

import org.eclipse.jface.preference.PreferencePage;
import org.eclipse.jface.resource.ImageDescriptor;
import org.eclipse.swt.widgets.Composite;
import org.eclipse.swt.widgets.Control;
import org.eclipse.ui.IWorkbench;
import org.eclipse.ui.IWorkbenchPreferencePage;

public class LG3DPreferencePage extends PreferencePage implements
        IWorkbenchPreferencePage {

    public LG3DPreferencePage() {
        super();
    }

    public LG3DPreferencePage(String title) {
        super(title);
    }

    public LG3DPreferencePage(String title, ImageDescriptor image) {
        super(title, image);
    }

    @Override
    protected Control createContents(Composite parent) {
        return null;
    }

    public void init(IWorkbench workbench) {
    }
}

おぉ、@Override アノテーションが使われていますよ。すごいですねっ、これは。

ということは IWorkbenchPreferencePage インタフェースで定義されているのでしょうか。さっそく、Javadoc だ。

予想に反して、違いました ^^;;;; IWorkbenchPreferencePage インタフェースは init が定義されているようです。
それじゃ、PreferencePage クラスを見てみます。ありました、ありました。ちゃんと createContents メソッドがあります。

よく考えてみたら、@Override アノテーションは書きかえたことを示すのですから、インタフェースで定義されたメソッドにはつかないですね ^^;;

LG3DPreferencePage クラスがあるので、そのまま実行できるはずです。

というわけで実行!

LG3D Preference Page