Eclipseプラグイン実践テクニック(2)
高機能なXMLエディタをプラグインとして作る
ハイパーリンク機能 |
最後にハイパーリンク機能についても触れておきましょう。EclipseのすべてのテキストエディタではURLに対するハイパーリンク機能がすでに提供されています。Ctrlキーを押しながらURL部分にマウスを合わせると以下のようにリンクが表示され、クリックするとそのURLをブラウザで開くことができます。
図6 標準のURL リンク機能 |
このほかにもJavaエディタではCtrl+クリックによるハイパーリンクでクラスやメソッドの宣言部を開くことができます。この機能はとても便利なので普段のコーディングで利用されている方も多いのではないでしょうか。今回は、XMLエディタでJavaのクラス名に対するハイパーリンク機能を実装してみます。Javaプロジェクト内のXMLファイルでクラス名らしき部分を発見した場合に、そのクラスをエディタで開けるようにします。
ハイパーリンク機能を拡張するにはorg.eclipse.jface.text.hyperlink.IHyperlinkインターフェイスと、org.eclipse.jface.text.hyperlink.IHyperlinkDetectorインターフェイスを実装したクラスをそれぞれ自前で用意する必要があります。それぞれのクラスの役割は以下のとおりです。
- IHyperlinkDetector ― ハイパーリンクする部分を検出するためのクラス。検出結果としてIHyperlinkを返却する。
- IHyperlink ― ハイパーリンクする部分、およびリンクがクリックされた場合の処理などを行うオブジェクト。
まずはIHyperlinkの実装クラスであるClassNameHyperlinkを見てみましょう。このクラスはJDTのAPIを利用して、 Javaの型をエディタで開く処理を実装しています。
リスト8 |
public class ClassNameHyperlink implements IHyperlink { |
IHyperlinkDetectorの実装クラスであるClassNameHyperlinkDetectorでは、マウス位置の文字列がクラス名らしき文字列だった場合にそのクラスがプロジェクト内に存在するかどうかを調べ、存在した場合は上記のClassNameHyperlinkを返却します。
リスト9 |
public class ClassNameHyperlinkDetector implements |
エディタクラスのcreatePartControl()メソッドをオーバーライドし、このディテクタをTextViewer#setHyperlinkDetector()メソッドでセットします。標準で利用可能なURL リンク機能を提供するURLHyperlinkDetectorも一緒にセットしています。
リスト10 |
public class XMLEditor extends TextEditor ... { |
以上でハイパーリンク機能の実装は完了です。以下のようにCtrlキーを押しながらマウスを合わせると、クラス名の部分がリンクになり、クリックするとエディタで開くことができます。
図7 クラス名に対するハイパーリンク |
おわりに |
テキストエディタはEclipseプラグインの中でも非常に多機能かつ奥の深いコンポーネントであり、このほかにもさまざまなカスタマイズを行うことが可能です。今回の例はサンプルということで作り込みの甘い部分もあり、実用的なエディタを提供するにはもう少しブラッシュアップが必要になりますが、より高機能なエディタを実装するための足掛かりとしていただければ幸いです。
次回は独自のパースペクティブを作成する方法について解説する予定です。
4/4 |
INDEX |
||
第2回 高機能なXMLエディタをプラグインとして作る |
||
Page1 テキストエディタの拡張 |
||
Page2 コードアシストの実装 |
||
Page3 ダブルクリック時の動作のカスタマイズ |
||
Page4 ハイパーリンク機能 |
Java Solution全記事一覧 |
- 実運用の障害対応時間比較に見る、ログ管理基盤の効果 (2017/5/9)
ログ基盤の構築方法や利用方法、実際の案件で使ったときの事例などを紹介する連載。今回は、実案件を事例とし、ログ管理基盤の有用性を、障害対応時間比較も交えて紹介 - Chatwork、LINE、Netflixが進めるリアクティブシステムとは何か (2017/4/27)
「リアクティブ」に関連する幾つかの用語について解説し、リアクティブシステムを実現するためのライブラリを紹介します - Fluentd+Elasticsearch+Kibanaで作るログ基盤の概要と構築方法 (2017/4/6)
ログ基盤を実現するFluentd+Elasticsearch+Kibanaについて、構築方法や利用方法、実際の案件で使ったときの事例などを紹介する連載。初回は、ログ基盤の構築、利用方法について - プログラミングとビルド、Androidアプリ開発、Javaの基礎知識 (2017/4/3)
初心者が、Java言語を使ったAndroidのスマホアプリ開発を通じてプログラミングとは何かを学ぶ連載。初回は、プログラミングとビルド、Androidアプリ開発、Javaに関する基礎知識を解説する。
|
|