プラグインでは必要に応じて設定内容を保存しておかなければならない場合があります。また、ユーザーの好みに合わせて設定を変更できるようなカスタマイズ機能を提供したい場合も同様です。今回は第3回で作成したXMLエディタプラグインを題材に、プラグインでの設定内容の保存方法を解説したいと思います。
プラグインの設定を行う方法として最も一般的な方法はEclipseのメニューから[ウィンドウ]→[設定]で開く設定ダイアログでしょう。ここでの設定内容はプリファレンスストアに保存され、ワークスペース全体で共有されます。プリファレンスストアの内容はワークスペース配下の.metadata/plugins/org.eclipse.core.runtime/.settingsフォルダにプラグインごとにプラグインID.prefs というファイル名で保存されていますので興味のある方はのぞいてみてください。
このプリファレンスストアを使用して、エディタでの強調表示に使用する色を設定できるようにしてみます。
プリファレンスストアはプラグインクラスのgetPreferenceStore()メソッドで取得することができます。また、取得したプリファレンスストアに対してsetValue()メソッドで値の保存、getInt()やgetString()などのメソッドで値の取得を行うことができます。使用例を以下に示します。
// プリファレンスストアの取得 |
値としてはプリミティブ型およびString型を扱うことができます。それ以外のオブジェクトを保存したい場合は文字列に変更する必要があります。プリミティブ型のラッパクラスや文字列型の配列、org.eclipse.swt.graphicsパッケージに含まれているRGB、FontData、Point、Rectangle といったデータ型に関してはorg.eclipse.jface.resource.StringConverterクラスに文字列とオブジェクトの相互変換を行うユーティリティメソッドが提供されていますので、必要に応じて利用するとよいでしょう。
プリファレンスストアの利用に当たっては、まずプリファレンスの初期値を指定しておく必要があります。初期値の指定はプリファレンスイニシャライザ(org.eclipse.core.runtime.preferences.AbstractPreferenceInitializerを継承したクラス)で行います。
public class XMLEditorPreferenceInitializer |
なお、プリファレンスのキーについては以下のように別クラスで定義するようにしました。プリファレンスストアへの値の保存や取得に関してはこのキーを使用することになります。
public class PreferenceConstants { |
プリファレンスイニシャライザは、以下のようにplugin.xmlに登録しておきます。
<extension point="org.eclipse.core.runtime.preferences"> |
以上で初期値の設定は完了です。
次に実際に設定を行うためのインターフェイスを実装します。Eclipseの設定ダイアログの各ページはプリファレンスページと呼ばれており、org.eclipse.jface.preference.PreferencePageを継承し、さらにorg.eclipse.ui.IWorkbenchPreferencePage インターフェイスを実装する必要があります。基本的な実装は以下のようになります。
public class XMLEditorPreferencePage extends PreferencePage implements
IWorkbenchPreferencePage { |
createContents()メソッドでユーザーインターフェイスを作成し、performOk()およびperformDefaults()メソッドにそれぞれボタンが押されたときの処理を記述するわけです。「キャンセル」ボタンが押されたときに呼び出されるperformCancel()というメソッドもありますが、キャンセル時は何もせずに設定ダイアログが閉じるため、通常はオーバーライドする必要はないでしょう。
なお、EclipseのプリファレンスAPIにはorg.eclipse.jface.preference.FieldEditorPreferencePage というクラスが用意されており、このクラスを継承することで簡単なプリファレンスページであれば非常に容易に作成することができます。今回はエディタの色を指定するだけなので、FieldEditorPreferencePageを使ってみることにします。この場合の実装は以下のようになります。
public class XMLEditorPreferencePage extends FieldEditorPreferencePage
implements IWorkbenchPreferencePage { |
FieldEditorPreferencePageではcreateFieldEditors()メソッドをオーバーライドしaddField()メソッドでフィールドエディタを追加するだけで、ユーザーインターフェイスの作成やプリファレンスの保存といった処理は自動的に行ってくれます。ここでは色の指定を行うのでColorFieldEditorを使用していますが、このほかにもorg.eclipse.jface.preferenceパッケージには以下のようなフィールドエディタが用意されています。もちろんフィールドエディタを自作することも可能です。
クラス名 | 説明 |
---|---|
BooleanFieldEditor | チェックボックスで真偽値を入力 |
IntegerFieldEditor | テキストフィールドで数値を入力 |
StringFieldEditor | テキストフィールドで文字列を入力 |
RadioGroupFieldEditor | ラジオボタンで項目を選択 |
ColorFieldEditor | 色を選択 |
FontFieldEditor | フォントを選択 |
DirectoryFieldEditor | ファイルシステム上のディレクトリを選択 |
FileFieldEditor | ファイルシステム上のファイルを選択 |
PathEditor | ファイルシステム上の複数のパスを選択 |
以上でプリファレンスページが完成しました。plugin.xmlには以下のようにして登録しておきます。
<extension |
ランタイムワークベンチを起動し、設定ダイアログに「Sample XML Editor」が追加されていることを確認しておきましょう。
Copyright © ITmedia, Inc. All Rights Reserved.