Preference のロードとセーブ

昨日のコードだと、値は常に初期化されてしまいます。それだと困るので Preference のロードとセーブをできるようにしてみたいと思います。

そういう用途のために IPreferenceStore インタフェースというのがすでに用意されているんですね。ただ、この IPreferenceStore オブジェクトをもっているのは AbstractUIPlugin クラスなので、PreferencePage で使うときはこのオブジェクトをセットしなくてはいけないようです。

すでに PreferencePage クラスには setPreferenceStore メソッドが用意されているので、それをコールします。これはコンストラクタでおこなうことにしました。

    public LG3DPreferencePage() {
        setPreferenceStore(WrpePlugin.getDefault().getPreferenceStore());
    }

まぁ、一種のお約束コードみたいなものなんでしょう。でも、よく使う処理なのだから、 PreferencePage クラスのデフォルトコンストラクタで定義してもいいと思うのですが...

後は、それぞれの Preference に、この IPreferenceStore オブジェクトを設定します。

        home.setPreferenceStore(getPreferenceStore());
        home.setPage(this);

ここまで来てしまえば、後は簡単。

ロードは load メソッド、セーブは store メソッドをコールするだけのようです。

        home.load();

store メソッドをコールした後には、Plugin#savePluginPreferences メソッドをコールして、Preference を保存します。

    private void updateHome(String value) {
        home.store();
        WrpePlugin.getDefault().savePluginPreferences();
    }

これで実行すると、ちゃんと前の値を覚えていることができました。よかった、よかった。

でも、PreferencePage としてはとっておけますが、プラグインのフィールドとしてはまだ何も利用していません。

明日はそこら辺から手をつけていきたいと思います。