Eclipseを開発環境として利用する場合、コードを編集するためのテキストエディタは最も重要な要素といってもよいでしょう。テキストエディタには強調表示、コード補完など多くの機能が要求されます。今回はPDEのテンプレートとして用意されているXMLエディタを通してテキストエディタの実装方法を解説します。
テンプレートによるXMLエディタの生成
以下の手順でXMLエディタを生成します。
1.まずは連載第1回「いちばん簡単なEclipseプラグイン」と同じ手順でプラグイン・プロジェクトを作成します。
ここではプラグインIDをjp.sf.amateras.xmleditor、プラグイン名をXMLEditor Plug-in、プラグインクラスをjp.sf.amateras.xmleditor.XMLEditorPluginとしました(図1)。
2.テンプレートの選択画面で[エディター付きプラグイン]を選択して[終了]をクリックします(図2)。
これで、強調表示機能を備えたXMLエディタが生成されます。ランタイム・ワークベンチを起動して動作を確認してみます。適当なプロジェクトに拡張子が.xmlのファイルを作成し、エディタで開いてみてください。XMLが図3のように色分けされて表示されるはずです。
では、ソースを見ていきましょう。まずはplugin.xmlです。
*** 一部省略されたコンテンツがあります。PC版でご覧ください。 ***
(1)で指定している org.eclipse.ui.editors がエディタの拡張ポイントです。editor要素で実際のエディタの情報を記述しています。editor要素で指定できる主な属性は以下のとおりです。
属性名 | 説明 |
---|---|
id | エディタのIDを指定します |
name | エディタの名前を指定します |
icon | エディタのアイコンを指定します |
extensions | エディタに関連付けるファイルの拡張子を指定します。複数ある場合はカンマで区切って指定します |
class*1 | エディタの実装クラスとしてorg.eclipse.ui.IEditorPartを実装したクラスを指定します |
launcher*1 | org.eclipse.ui.IEditorLauncherを実装したクラスを指定します。ランチャーはファイルを外部エディタで開く場合に使用します |
contributorClass*2 | org.eclipse.ui.IEditorActionBarContributorの実装クラスを指定します。エディタのアクションをメニューバーやツールバーに表示します |
default | エディタに関連付けるファイルの名前を指定します。複数ある場合はカンマで区切って指定します |
表1 editor要素で指定可能な主な属性 *1:class、launcher、commandはいずれか1つのみ指定可能。 *2:contributorClassはclassを指定した場合のみ指定可能。 |
エディタの実装クラスであるXMLEditorクラスはリスト2のような実装になっています。
*** 一部省略されたコンテンツがあります。PC版でご覧ください。 ***
テキストエディタとしての基本機能は、スーパークラスのorg.eclipse.ui.editors.text.TextEditorで実装されているためかなりシンプルです。(1)のColorManagerはシンタックスハイライトに使用する色を管理するためのクラスです。SWTでは作成したColorオブジェクトは必要がなくなった時点で自分で廃棄するコードを記述する必要があるため、ColorManagerで一元管理し、エディタのdisposeメソッド内で廃棄するようになっています。
実際にハイライト処理を実現するうえで肝となるのはコンストラクタの(2)と(3)でセットしているXMLConfigurationとXMLDocumentProviderになります。ソースコードの詳細な説明に移る前に、まずはテキストエディタの構成要素を整理しておきましょう(図4)。
■IDocument(ドキュメント)
編集対象となるオブジェクトです。テキストの操作、位置の管理、テキストの変更の通知などを行います。
■IDocumentProvider(ドキュメントプロバイダ)
ドキュメントの生成と管理を行います。ドキュメントの変更を監視し、エディタへ通知を行います。また、ブックマークやブレークポイントといったアノテーションの作成も担当します。
■IDocumentPartitioner(ドキュメントパーテーショナ)
ドキュメントを意味的な区域(パーティション)に分割します。パーティションことにコンテンツアシストやシンタックスハイライトといった機能を適用することが可能です。
■SourceViewerConfiguration(ソースビューアコンフィグレーション)
ダブルクリック時の動作、シンタックスハイライト、コンテンツアシストなど、エディタのさまざまな動作をカスタマイズするためのエントリポイントとなるクラスです。
Copyright © ITmedia, Inc. All Rights Reserved.