Top / Eclipse / プラグイン開発のTIPS集 / org.eclipse.ui.IWorkbenchPreferencePage(設定ページ)

org.eclipse.ui.IWorkbenchPreferencePage? はウィンドウ >> 設定 にある設定ダイアログを表すインターフェースです。実際はorg.eclipse.jface.preference.FieldEditorPreferencePage? をextendsして使うのが多いようです。

これらのインターフェースを通して、

SamplePlugin.getDefault().getPreferenceStore()

などで取得できる IPreferenceStore? に値を設定していきます。IPreferenceStore?はマップみたいなもんだと思います*1

拡張ポイント

org.eclipse.ui.preferencePages

plugin.xmlのサンプル

<extension point="org.eclipse.ui.preferencePages">
 <page
   class="kino.plugin.samples.preferences.ExplorerPreferencePage"
   name="KinoExplorer設定"
   id="kino.plugin.samples.preferences.ExplorerPreferencePage"/>
</extension>

ポイント

使い方は

設定した値へのアクセス方法は、設定値を用いたい箇所でそれぞれ、

String target = SamplePlugin.getDefault().getPreferenceStore()
               .getString(ExplorerPreferencePage.P_TARGET);

とすればよいようです。ながい。。

このままだと一度設定を開かないとデフォルト値が反映されないので、どこかで値を設定するためにインスタンスを生成しないといけないのですが、フックできるメソッドはプラグインクラスにありました。AbstractUIPluginのサブクラスで、

protected void initializeDefaultPreferences(IPreferenceStore store) {
    ExplorerPreferencePage pref = new ExplorerPreferencePage();
    <-コンストラクタ内で初期値をセットするようコーディングした。
    store = pref.getPreferenceStore();
    super.initializeDefaultPreferences(store);
}

としておけばOKです。

Eclipse3.0では

このメソッドはEclipse3.0からdeprecatedになりました。初期値の設定はプラグインで行うのではなく、拡張ポイント

org.eclipse.core.runtime.preferences

を使用します。この拡張ポイントに登録したクラスはプラグインの起動時にロードされ、その中で初期値をセットすればよいわけです。

TIPS

addField に渡す引数 FieldEditor?のサブクラスには StringFieldEditor?の他にも以下のようなモノがあります。

String[][] labelAndValue = new String[][] {
  new String[] { "Select 1", "1" },
  new String[] { "Select 2", "2" },
  new String[] { "Select 3", "3" }, };
addField(new RadioGroupFieldEditor("radio1", "Radio Group",
  labelAndValue.length, labelAndValue, getFieldEditorParent()));
addField(new PathEditor("HOGE", "Path", "Chooser",
  getFieldEditorParent()));
addField(new FileFieldEditor("file1", "File", true,
  getFieldEditorParent()));
addField(new DirectoryFieldEditor("directory1", "Directory",
  getFieldEditorParent()));
addField(new FontFieldEditor("font1", "Font", "Preview",
  getFieldEditorParent()));
addField(new ColorFieldEditor("color1", "Color", getFieldEditorParent()));
01.png

関連リンク


この記事は

選択肢 投票
おもしろかった 0  
そうでもない 0  

Top / Eclipse / プラグイン開発のTIPS集 / org.eclipse.ui.IWorkbenchPreferencePage(設定ページ)

現在のアクセス:24154


*1 保存の仕方がよくわからん。とりあえずGUI上からは保存できるんだけど

トップ   新規 一覧 単語検索 最終更新   ヘルプ   最終更新のRSS