プロジェクトごとの設定

backport175のソースを見たら、簡単だった。

// 保存
IScopeContext projectScope = new ProjectScope(project);
IEclipsePreferences node = projectScope.getNode(PLUGIN_ID);
node.put("isEnable", Boolean.toString(isEnable));
node.flush();

// 取得
IScopeContext projectScope = new ProjectScope(project);
IEclipsePreferences node = projectScope.getNode(PLUGIN_ID);
boolean isEnable = Boolean.valueOf(node.get("isEnable", "true")).booleanValue();

node.get()の二つめのパラメータはデフォルト値。
node.flush()で書き込みと、workspace/プロジェクト/.settingsディレクトリに、PLUGIN_IDに.prefs拡張子を付けたファイルが作られる。その内容は、こんな感じ。

#Sun Sep 18 16:06:15 JST 2005
isEnable=true
eclipse.preferences.version=1

これで、プラグイン全体ではなくて、プロジェクトごとのプラグイン設定を保存・取得できました。
Kijimunaは上記とは別の方法で保存しているようで、どこにあるのか良くわかりません。workspace/.metadata/.plugins/org.seasar.kijimuna.core/.recorderディレクトリに、プロジェクト名.modelファイルに、Diconツリーがシリアライズされているので、その中に一緒に入っているのかな。こうしておけば、CVSに入れずに済みますね。

追記

node.put()だけじゃなくて、putBoolean()なんてのもありました。
これで作られる.prefsファイルですが、テキストエディタで直接編集すると、以降のnode.put()でBackingStoreExceptionが送出されています。とりあえず、workspace/.metadataディレクトリを削除して、Eclipseを再起動したらBackingStoreExceptionは直りました。インポートしたプロジェクトとか、ぜんぶ消されるけど。