minimize

事業拡大のため、新しい仲間を募集しています。
→詳しくはこちら

Preferenceページを作成する方法です。
plugin.xmlにエクステンションとして登録します。

<extension point="org.eclipse.ui.preferencePages">
   <page ... />
</extension>

Preferenceページの定義

Preferenceページを定義します。

<page
      name="LimyEclipse"
      class="org.limy.eclipse.preference.LimyPreferencePage"
      id="org.limy.eclipse.preference.LimyPreferencePage">
</page>
<page
      name="Lrd"
      category="org.limy.eclipse.preference.LimyPreferencePage"
      class="org.limy.eclipse.preference.LrdPrefrerencePage"
      id="org.limy.eclipse.preference.LrdPreferencePage">
</page>
id

Preferenceページに付けるID

name

Preferenceページの表示名

class

Preferenceページのクラス名を指定します。
org.eclipse.ui.IWorkbenchPreferencePage を実装しているクラスである必要があります。
org.eclipse.jface.preference.FieldEditorPreferencePage などの抽象クラスを利用すると便利です。

caterogy

親カテゴリとなるPreferenceページのIDを指定します。
省略すると、ルート要素が親カテゴリとなります。

Preferenceページクラスの作成例

ここでは org.eclipse.jface.preference.FieldEditorPreferencePage のサブクラスを使用します。

コンストラクタの作成

public LrdPrefrerencePage() {
    super(GRID);
    setPreferenceStore(LimyEclipsePlugin.getDefault().getPreferenceStore());

    IPreferenceStore store = getPreferenceStore();
    store.setDefault("storeColor", "0,0,255");
    store.setDefault("storeText", "");
}

最初にスーパーコンストラクタの呼び出し、次にストア(設定の格納場所)の設定、
最後にデフォルト値の設定を行っています。
色の値はRGB値(0?255)をカンマで区切って指定します。

フォームの作成

FieldEditorPreferencePage には簡易フォーム作成機能が付いているので、これを利用します。

protected void createFieldEditors() {
    addField(new ColorFieldEditor(
             "storeColor", "color:", getFieldEditorParent()));
    addField(new StringFieldEditor(
             "storeText", "text:", getFieldEditorParent()));
}

色設定フィールドと文字列設定をフィールドに追加しています。
他にもいくつかの種類のフィールドが利用できます。
org.eclipse.jface.preference.FieldEditor のサブクラスを検索してみて下さい。
各コンストラクタのパラメータは順番に「ストア文字列」「表示ラベル文字列」「親コンポーネント」になります。

addField メソッドで追加したフィールドが順番にフォームに配置されます。
より複雑なフォームを作成したい場合は

protected Control createContents(Composite parent)

メソッドをオーバーライドする必要があります。