Top / Eclipse / プラグイン開発のTIPS集 / GooglePlugin / 設定を保持するIPreferenceStoreを使う

さて、ここではプラグインが使用する設定値の保存とリストアを実装します。このサイトでも

などでちょっとサンプルがあります。

目的は

String myGoogleKey = GooglePlugin.getDefault().getPreferenceStore()
              .getString(PreferenceConstants.GOOGLE_KEY);

などとしてプラグインの設定情報を取得することです。

基本的には

  • UIプラグインごとに存在する、設定を保存する箱となる org.eclipse.jface.preference.IPreferenceStore? インターフェース
  • 上の箱に値を設定するためのダイアログを形成するorg.eclipse.ui.IWorkbenchPreferencePage? インターフェース
  • 初期値を設定するための拡張ポイント org.eclipse.core.runtime.preferences

を作成することになります*1

org.eclipse.core.runtime.preferences

まずは初期値を設定するための拡張ポイントと実装クラスを作成します。 この拡張ポイントのplugin.xmlの記述は以下のようになりました。

<extension
      point="org.eclipse.core.runtime.preferences">
   <initializer class="nu.mine.kino.plugin.google.ui.
                       initializer.GooglePreferenceInitializer"/>
</extension>

実装クラスは以下の通り:

package nu.mine.kino.plugin.google.ui.initializer;

import nu.mine.kino.plugin.google.ui.GooglePlugin;
import nu.mine.kino.plugin.google.ui.preferences.PreferenceConstants;

import org.apache.log4j.Logger;
import org.eclipse.core.runtime.preferences.AbstractPreferenceInitializer;
import org.eclipse.jface.preference.IPreferenceStore;

public class GooglePreferenceInitializer extends AbstractPreferenceInitializer {
  private static final Logger logger = Logger
      .getLogger(GooglePreferenceInitializer.class);

  public void initializeDefaultPreferences() {
    logger.debug("initializeDefaultPreferences() - start");
    IPreferenceStore store = GooglePlugin.getDefault().getPreferenceStore();
    logger.debug(store);
    store.setDefault(PreferenceConstants.GOOGLE_KEY, ""); 
    // ↑ここで初期値を設定している
    logger.debug(GooglePlugin.getDefault().getPreferenceStore().getString(
        PreferenceConstants.GOOGLE_KEY));
    logger.debug("initializeDefaultPreferences() - end");
  }
}

org.eclipse.ui.IWorkbenchPreferencePage?

最後に設定画面を作成します。設定画面は

org.eclipse.ui.preferencePages

拡張ポイントと、その実装クラスを作成します。

拡張ポイントの記述は以下の通り:

<extension
   point="org.eclipse.ui.preferencePages">
   <page
      class="nu.mine.kino.plugin.google.ui.preferences.GooglePreferencePage"
      name="Google検索"
      id="nu.mine.kino.plugin.google.ui.preferences.GooglePreferencePage"/>
</extension>

実装クラスは以下の通り:

package nu.mine.kino.plugin.google.ui.preferences;

import nu.mine.kino.plugin.google.ui.GooglePlugin;

import org.eclipse.jface.preference.FieldEditorPreferencePage;
import org.eclipse.jface.preference.StringFieldEditor;
import org.eclipse.ui.IWorkbench;
import org.eclipse.ui.IWorkbenchPreferencePage;

public class GooglePreferencePage extends FieldEditorPreferencePage implements
    IWorkbenchPreferencePage {
  public GooglePreferencePage() {
    super(GRID);
    // 実際のKey,Valueを格納する、PreferenceStoreを設定。
    setPreferenceStore(GooglePlugin.getDefault().getPreferenceStore());
    setDescription("Google検索時のキーを設定します");
  }

  protected void createFieldEditors() {
    {
      addField(new StringFieldEditor(PreferenceConstants.GOOGLE_KEY,
          "&Google Key:", getFieldEditorParent()));
    }
  }

  public void init(IWorkbench workbench) {
  }

}

スクリーンショット

preference.png

この記事は

選択肢 投票
おもしろかった 7  
そうでもない 1  
  • できればjavaのエディタからコントロールを押下しながら文字列を見るとハイパーリンクのような動作を実装方法をいれてほしい -- kawashima? 2006-07-20 13:42:07 (木)

Top / Eclipse / プラグイン開発のTIPS集 / GooglePlugin / 設定を保持するIPreferenceStoreを使う

現在のアクセス:9654


*1 IPreferenceStore?は作成しないけど

添付ファイル: filepreference.png 567件 [詳細]

トップ   編集 凍結 差分 バックアップ 添付 複製 名前変更 リロード   新規 一覧 単語検索 最終更新   ヘルプ   最終更新のRSS
Last-modified: 2009-09-28 (月) 11:04:11 (3705d)