#topicpath ---- **設定ページ [#q24fd585] org.eclipse.ui.IWorkbenchPreferencePage はウィンドウ >> 設定 にある設定ページを表すインターフェースです。 #ref(preference.png) 実際はorg.eclipse.jface.preference.FieldEditorPreferencePage をextendsして使うのが多いようです。 #contents ***設定ページの拡張ポイント [#p618a200] org.eclipse.ui.preferencePages ***plugin.xmlのサンプル [#n4e5a3ab] <extension point="org.eclipse.ui.preferencePages"> <page class="nu.mine.kino.plugin.hsqldb.ui.HsqldbPreferencePage" id="nu.mine.kino.plugin.hsqldb.ui.HsqldbPreferencePage" name="Hsqldb設定"/> </extension> ***ソース [#i47c9138] キー値の定数クラス public interface IConstants { public static final String USER_ID = "user_id"; public static final String PASSWORD = "password"; public static final String PORT = "port"; } 画面クラス package nu.mine.kino.plugin.hsqldb.ui; import org.apache.log4j.Logger; import org.eclipse.jface.preference.FieldEditorPreferencePage; import org.eclipse.jface.preference.StringFieldEditor; import org.eclipse.ui.IWorkbench; import org.eclipse.ui.IWorkbenchPreferencePage; /** * @author Masatomi KINO * @version $Revision$ */ public class HsqldbPreferencePage extends FieldEditorPreferencePage implements IWorkbenchPreferencePage { /** * Logger for this class */ private static final Logger logger = Logger .getLogger(HsqldbPreferencePage.class); public HsqldbPreferencePage() { super(FieldEditorPreferencePage.GRID); setDescription("Hsqldbに接続するための設定を行います。設定を変更した場合、 起動しているサーバは停止されます。"); setPreferenceStore(HsqldbUIPlugin.getDefault().getPreferenceStore()); ↑ プラグインの IPreferenceStore フィールドと関連づけ } protected void createFieldEditors() { { addField(new StringFieldEditor(IConstants.USER_ID, "&UserID", getFieldEditorParent())); ↑キー値と画面のフィールドを関連づけ } { addField(new StringFieldEditor(IConstants.PASSWORD, "&Password", getFieldEditorParent())); ↑キー値と画面のフィールドを関連づけ } { addField(new StringFieldEditor(IConstants.PORT, "P&ort番号", getFieldEditorParent())); ↑キー値と画面のフィールドを関連づけ } } public void init(IWorkbench workbench) { } } ***設定値にアクセスする [#kb155f3c] 上のようにクラスを定義しておくと、実際に設定ページで設定した値には以下のようにアクセスすることができます。 String port = HsqldbUIPlugin.getDefault().getPreferenceStore() .getString(IConstants.PORT); ***初期値を設定する [#f70f3dea] さて、初期値(画面のsaとか9001とか)の設定は、別の拡張ポイント org.eclipse.core.runtime.preferences を使用します。この拡張ポイントに登録したクラスはプラグインの活性化時にロードされるので、その中で初期値をセットすればよいわけです。 拡張ポイントは以下のように設定しました。 <extension point="org.eclipse.core.runtime.preferences"> <initializer class="nu.mine.kino.plugin.hsqldb.ui. HsqldbPreferenceInitializer"/> </extension> この拡張ポイントのJavaのクラスは org.eclipse.core.runtime.preferences.AbstractPreferenceInitializer; です。このクラスを拡張する、以下のようなクラスを作りました。 package nu.mine.kino.plugin.hsqldb.ui; import org.apache.log4j.Logger; import org.eclipse.core.runtime.preferences.AbstractPreferenceInitializer; import org.eclipse.jface.preference.IPreferenceStore; public class HsqldbPreferenceInitializer extends AbstractPreferenceInitializer { public void initializeDefaultPreferences() { IPreferenceStore store = HsqldbUIPlugin.getDefault() .getPreferenceStore(); store.setDefault(IConstants.USER_ID, "sa"); store.setDefault(IConstants.PASSWORD, ""); store.setDefault(IConstants.PORT, "9001"); } } これで、プラグインが活性化されるときに上のメソッドが実行され、フィールドに初期値が設定されます。この初期値ははじめて設定ページを開いたときに表示されるのはもちろん「デフォルトの復元」などをクリックしたときもこの初期値に戻ります。 **TIPS [#l7191b19] ***OKボタンを押したときに、なんかやる [#xb3a575c] IPreferencePage#performOk()をOverrideします。 public boolean performOk() { String port = HsqldbUIPlugin.getDefault().getPreferenceStore() .getString(IConstants.PORT); String userid = HsqldbUIPlugin.getDefault().getPreferenceStore() .getString(IConstants.USER_ID); String password = HsqldbUIPlugin.getDefault().getPreferenceStore() .getString(IConstants.PASSWORD); HsqldbUIPlugin.getDefault().stopHsqldb(); return super.performOk(); } ***StringFieldEditor の他のエディタ [#d5eaed71] 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())); #ref(01.png) ***StringFieldEditorなどエディタクラスを自作する [#x8107e97] ***関連リンク [#k5a0e849] -[[Preference Dialogのサンプル:http://jssst03.c.u-tokyo.ac.jp/~ichiyama/cgi-bin/hiki/hiki.cgi?PreferenceDialog]] -[[プラグインの設定を保存するには:http://www.atmarkit.co.jp/fjava/rensai3/eclipsepde04/eclipsepde04_1.html]] ---- この記事は #vote(おもしろかった,そうでもない) -%%このままだと一度設定を開かないとデフォルト値が反映されないなぁ -- [[きの]] &new{2004-12-20 (月) 11:43:06};%% -%%initializeDefaultPreferencesを呼ぶんですね -- [[きの]] &new{2004-12-27 (月) 00:14:49};%% -Eclipse2.1のときのはなしです。これ↑ -- [[きの]] &new{2006-03-11 15:48:11 (土)}; #comment #topicpath SIZE(10){現在のアクセス:&counter;}