org.eclipse.ui.IWorkbenchPreferencePage? はウィンドウ >> 設定 にある設定ダイアログを表すインターフェースです。実際はorg.eclipse.jface.preference.FieldEditorPreferencePage? をextendsして使うのが多いようです。
これらのインターフェースを通して、
SamplePlugin.getDefault().getPreferenceStore()
などで取得できる IPreferenceStore? に値を設定していきます。IPreferenceStore?はマップみたいなもんだと思います*1。
org.eclipse.ui.preferencePages
<extension point="org.eclipse.ui.preferencePages"> <page class="kino.plugin.samples.preferences.ExplorerPreferencePage" name="KinoExplorer設定" id="kino.plugin.samples.preferences.ExplorerPreferencePage"/> </extension>
使い方は
public static final String P_TARGET = "stringPreference";
addField(new StringFieldEditor (P_TARGET, "&Target:", getFieldEditorParent()));
private void initializeDefaults() { IPreferenceStore store = getPreferenceStore(); store.setDefault(P_TARGET, "hoge"); }これで以下のようなダイアログが作成されます。簡単ですね。
設定した値へのアクセス方法は、設定値を用いたい箇所でそれぞれ、
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です。
このメソッド(initializeDefaultPreferences?)はEclipse3.0からdeprecatedになりました。初期値の設定はプラグインで行うのではなく、拡張ポイント
org.eclipse.core.runtime.preferences
を使用します。この拡張ポイントに登録したクラスはプラグインの起動時にロードされ、その中で初期値をセットすればよいわけです。
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()));
この記事は
現在のアクセス:24156