検索
連載

プラグインの設定を保存するには作って覚えるEclipseプラグイン(4)(1/2 ページ)

Share
Tweet
LINE
Hatena

 プラグインでは必要に応じて設定内容を保存しておかなければならない場合があります。また、ユーザーの好みに合わせて設定を変更できるようなカスタマイズ機能を提供したい場合も同様です。今回は第3回で作成したXMLエディタプラグインを題材に、プラグインでの設定内容の保存方法を解説したいと思います。

プリファレンスストアを使用する

 プラグインの設定を行う方法として最も一般的な方法はEclipseのメニューから[ウィンドウ]→[設定]で開く設定ダイアログでしょう。ここでの設定内容はプリファレンスストアに保存され、ワークスペース全体で共有されます。プリファレンスストアの内容はワークスペース配下の.metadata/plugins/org.eclipse.core.runtime/.settingsフォルダにプラグインごとにプラグインID.prefs というファイル名で保存されていますので興味のある方はのぞいてみてください。

図1 Eclipseの設定ダイアログ
図1 Eclipseの設定ダイアログ

 このプリファレンスストアを使用して、エディタでの強調表示に使用する色を設定できるようにしてみます。

プリファレンスストアの利用方法

 プリファレンスストアはプラグインクラスのgetPreferenceStore()メソッドで取得することができます。また、取得したプリファレンスストアに対してsetValue()メソッドで値の保存、getInt()やgetString()などのメソッドで値の取得を行うことができます。使用例を以下に示します。

*** 一部省略されたコンテンツがあります。PC版でご覧ください。 ***

  値としてはプリミティブ型およびString型を扱うことができます。それ以外のオブジェクトを保存したい場合は文字列に変更する必要があります。プリミティブ型のラッパクラスや文字列型の配列、org.eclipse.swt.graphicsパッケージに含まれているRGB、FontData、Point、Rectangle といったデータ型に関してはorg.eclipse.jface.resource.StringConverterクラスに文字列とオブジェクトの相互変換を行うユーティリティメソッドが提供されていますので、必要に応じて利用するとよいでしょう。

初期値の設定

 プリファレンスストアの利用に当たっては、まずプリファレンスの初期値を指定しておく必要があります。初期値の指定はプリファレンスイニシャライザ(org.eclipse.core.runtime.preferences.AbstractPreferenceInitializerを継承したクラス)で行います。

*** 一部省略されたコンテンツがあります。PC版でご覧ください。 ***

 なお、プリファレンスのキーについては以下のように別クラスで定義するようにしました。プリファレンスストアへの値の保存や取得に関してはこのキーを使用することになります。

*** 一部省略されたコンテンツがあります。PC版でご覧ください。 ***

 プリファレンスイニシャライザは、以下のようにplugin.xmlに登録しておきます。

*** 一部省略されたコンテンツがあります。PC版でご覧ください。 ***

 以上で初期値の設定は完了です。

プリファレンスページの実装

 次に実際に設定を行うためのインターフェイスを実装します。Eclipseの設定ダイアログの各ページはプリファレンスページと呼ばれており、org.eclipse.jface.preference.PreferencePageを継承し、さらにorg.eclipse.ui.IWorkbenchPreferencePage インターフェイスを実装する必要があります。基本的な実装は以下のようになります。

*** 一部省略されたコンテンツがあります。PC版でご覧ください。 ***

 createContents()メソッドでユーザーインターフェイスを作成し、performOk()およびperformDefaults()メソッドにそれぞれボタンが押されたときの処理を記述するわけです。「キャンセル」ボタンが押されたときに呼び出されるperformCancel()というメソッドもありますが、キャンセル時は何もせずに設定ダイアログが閉じるため、通常はオーバーライドする必要はないでしょう。

 なお、EclipseのプリファレンスAPIにはorg.eclipse.jface.preference.FieldEditorPreferencePage というクラスが用意されており、このクラスを継承することで簡単なプリファレンスページであれば非常に容易に作成することができます。今回はエディタの色を指定するだけなので、FieldEditorPreferencePageを使ってみることにします。この場合の実装は以下のようになります。

*** 一部省略されたコンテンツがあります。PC版でご覧ください。 ***

 FieldEditorPreferencePageではcreateFieldEditors()メソッドをオーバーライドしaddField()メソッドでフィールドエディタを追加するだけで、ユーザーインターフェイスの作成やプリファレンスの保存といった処理は自動的に行ってくれます。ここでは色の指定を行うのでColorFieldEditorを使用していますが、このほかにもorg.eclipse.jface.preferenceパッケージには以下のようなフィールドエディタが用意されています。もちろんフィールドエディタを自作することも可能です。

クラス名 説明
BooleanFieldEditor チェックボックスで真偽値を入力
IntegerFieldEditor テキストフィールドで数値を入力
StringFieldEditor テキストフィールドで文字列を入力
RadioGroupFieldEditor ラジオボタンで項目を選択
ColorFieldEditor 色を選択
FontFieldEditor フォントを選択
DirectoryFieldEditor ファイルシステム上のディレクトリを選択
FileFieldEditor ファイルシステム上のファイルを選択
PathEditor ファイルシステム上の複数のパスを選択

 以上でプリファレンスページが完成しました。plugin.xmlには以下のようにして登録しておきます。

*** 一部省略されたコンテンツがあります。PC版でご覧ください。 ***

 ランタイムワークベンチを起動し、設定ダイアログに「Sample XML Editor」が追加されていることを確認しておきましょう。

       | 次のページへ

Copyright © ITmedia, Inc. All Rights Reserved.

ページトップに戻る