-PreferenceWrapper

Preferences(OSGi)はEclipse既存のPreferencesと違い、setDefault()、getDefault()が無いことはすでに言及しました。この影響はつまらないところに出てきて、OSGi仕様(つまりはEclipse3.0仕様)でGUIを作っていると雑多なコードが増えちゃうんです。ということで、PreferencesWrapper?みたいなのを作るといいですね。

PreferencesWrapper wrapper = new PreferencesWrapper(
pluginScope.getNode("hoge"), // /plugin/hoge
instanceScope.getNode("geho"), // /instance/geho
defaultScope.getNode("gheo") ); // /default/gheo
String val1 = wrapper.getString("value1");
long val2 = wrapper.getDefaultLong("value2");
wrapper.setInt("value3", 1234);
wrapper.setDefaultBoolean("value4", true);
wrapper.reset(); // InstancePreferencesからセットされる
wrapper.fullReset(); // DefaultPreferencesからセットされる
<<
DefaultPreferencesというのがEclipseで用意されていて、これはファイルから設定値を読み込みはするが変更できない、デフォルトバリュー用のものです。Kijimunaでは、PluginPreferences(プロジェクト毎の設定) - InstancePreferences(ワークスペース毎の設定)- DefaultPreferences(プラグイン初期値)の三層のPreferencesを上記のような仕組みでやろうかと松涛公園で鯉が泳いでるのを見ながら考えました。