Home > Eclipse | Java > Eclipseプラグイン開発:ハイパーリンクのスタイル指定

Eclipseプラグイン開発:ハイパーリンクのスタイル指定

久しぶりに Eclipse のプラグイン開発の話を。

テキストエディタ内にハイパーリンクを作ったときのスタイルを指定する。

ハイパーリンクにカーソルをあわせたとき、「青字、下線付き」になることを期待しますよね。
ところがハイパーリンクは動くものの、「青字、下線付き」にならないという現象に遭遇。そして原因がわからずはまったのでメモ。

まず、「青字、下線付き」となることを期待する根拠は SourceViewerConfiguration の実装です。

  1.  public IHyperlinkPresenter getHyperlinkPresenter(ISourceViewer sourceViewer) {
  2.      return new DefaultHyperlinkPresenter(new RGB(0, 0, 255));
  3.  }

このようになっています。そのため、特別 Override しない限り、プレゼンテーションにはこの DefaultHyperlinkPresenter を使うことになります。
この DefaultHyperlinkPresenter には以下のコメントがあります。

The default hyperlink presenter underlines the link and colors the line and the text with the given color.

つまり、「青字、下線付き」ですよね。
それなのに、どうにも反応がありませんでした。
それでどうしたかというと、DefaultHyperlinkPresenter#applyTextPresentation 辺りにブレークポイントを設定してフィールド等を調べてみました。

結果わかったことは、範囲(Region)がうまく設定されてないってことです。
IHyperlink の実装クラスで Region を返すのですが、この Region が正しい範囲を指定していなかったのです。

  1.  public IHyperlink[] detectHyperlinks(ITextViewer textViewer, IRegion region, boolean canShowMultipleHyperlinks) {
  2.      // (略)
  3.  
  4.      // !! パラメータの region をそのまま渡しちゃってる !!
  5.      //     これはリンクを検出する前の範囲!
  6.      hyperLink = new HogeHyperLink(region);
  7.  
  8.      // (略)
  9.  }

IHyperlink の実装クラス(ここでは HogeHyperLink)に渡す範囲は検出時に計算したものじゃないとダメ(当たり前)。

  1.  public IHyperlink[] detectHyperlinks(ITextViewer textViewer, IRegion region, boolean canShowMultipleHyperlinks) {
  2.      // (略)
  3.  
  4.      // 検出結果のリンク文字列に対応した範囲を渡す!
  5.      hyperLink = new HogeHyperLink(new Region(linkOffset, linkOffsetLength));
  6.  
  7.      // (略)
  8.  }

あとは HogeHyperLink#getHyperlinkRegion で渡されてきた Region をそのまま返せば OK です。

単純なミスなのですけど、はまったので残しておきます。
げふ。

Eclipse 3.4 プラグイン開発 徹底攻略 Eclipse 3.4 Ganymede対応
Eclipse 3.4 プラグイン開発 徹底攻略 Eclipse 3.4 Ganymede対応

Comments:0

Comment Form
Remember personal info

Trackbacks:0

Trackback URL for this entry
http://blog.magellanic.net/archives/238/trackback
Listed below are links to weblogs that reference
Eclipseプラグイン開発:ハイパーリンクのスタイル指定 from Olen Onnellinen 2

Home > Eclipse | Java > Eclipseプラグイン開発:ハイパーリンクのスタイル指定

Search
Feeds
Link
あわせて読みたいブログパーツ
Meta
AD








DMM.com 家電・日用品通販

Return to page top