エディタに設定内容を反映する
さて、ここまでの内容でEclipseの設定ダイアログから強調表示に使用する色を設定できるようになったわけですが、肝心のエディタ側で設定内容を読み込むようにしないと設定内容が反映されません。前回作成したXMLエディタに手を加えて設定内容が反映されるようにしてみます。まずはColorManagerを修正し、プリファレンスストアからColorオブジェクトを取得するためのメソッドを追加します(追加した部分を赤字にしてあります)。
*** 一部省略されたコンテンツがあります。PC版でご覧ください。 ***
後はColorManagerからColorオブジェクトを取得している部分を修正していきます。修正が必要なのはXMLConfiguration、XMLScanner、XMLTagScannerの3つのクラスです。例えばXMLScannerの場合は以下のように修正します。これまではIXMLColorConstantsで定義されていたRGBオブジェクトを基にColorオブジェクトを取得していたわけですが、その部分をコメントアウトし、PreferenceConstantsで定義されているプリファレンスのキーを指定してColorオブジェクトを取得するようにしています(変更部分を赤字にしてあります)。
*** 一部省略されたコンテンツがあります。PC版でご覧ください。 ***
これで設定した色がXMLエディタに反映されるようになります。設定ダイアログで色を変更したら、一度エディタを閉じてから開き直してみてください。強調表示に使用される色が変更されているはずです。
プリファレンスの変更を検知する
前節まででプリファレンスストアへの設定内容の保存と読み込みを行いましたが、設定した色を反映させるためにはエディタを一度閉じて開き直す必要がありました。プリファレンスストアにIPropertyChangeListenerを登録しておくと設定が変更された場合に変更内容を検知することができますので、これを利用してリアルタイムに設定を反映させることも可能です。これを実装したエディタクラスは以下のようになります(追加した部分を赤字にしてあります)。
*** 一部省略されたコンテンツがあります。PC版でご覧ください。 ***
(1)でエディタ自身を変更通知を受け取るリスナとして登録し、(2)でエディタの廃棄と同時にリスナを削除しています。実際に設定の変更時に呼び出されるのは(3)のpropertyChange()メソッドになります。この中でXMLConfigurationに設定が変更されたことを通知した後、エディタのプレゼンテーションを再描画しています。実際に色の再設定を行っているのはXMLConfiguration クラスの内部での処理になりますが、そちらの実装についてはサンプルのソースコードをご覧ください。
今回作成したサンプルはここからダウンロードすることが可能です。ダウンロードしたファイルをそのままEclipseにプロジェクトとしてインポートしてご利用ください。本稿では詳しく解説できなかった部分もありますので、ぜひソースコードをのぞいてみてください。
さて、次回はウィザードの作成方法を解説する予定です。せっかくXMLエディタを作りましたので、XMLファイルを新規作成するウィザードを作ってみたいと思います。お楽しみに。
Copyright © ITmedia, Inc. All Rights Reserved.