Home > Eclipse

Eclipse Archive

URLエンコード/デコード を行う Eclipse プラグインを公開

しました。

Olen Onnellinen 2 – URLエンコード/デコードプラグイン

Web の開発をしていると、たまに URLデコード をしたいときがあります。

そんなときには Web 上に公開されている無料のフォームを使うのですが、いくつか気になる点がありました。

  1. いちいち Web サイトを開かなくてはならない
  2. 文字制限がある
  3. デコード時に文字コードを自動判定してしまうものが多く、テストに不向き

これらの点を踏まえ、Eclipse のプラグインとして作成したものが URLエンコード/デコードプラグインになります。

機能のわりに大仰な、という意見もあると思いますが、ちょっとした機能を追加していくことにより、より便利なツールセットになれば、と思いますので「こんな機能が欲しい」といった要望がありましたらぜひお知らせください。

Eclipseの水平ルーラー

Eclipse のエディタに水平ルーラーをつけてみました。

どうやって実装するかイメージがなかったのですが、 COBOL Editor なるものに水平ルーラーが実装されていたので、それを参考にしました。

簡単にいうと、SWTのコンポーネントを置いているだけですが、フォントやら日本語など、スクラッチじゃできなかっただろうなーと思います。

で、COBOL Editor の中に気になる箇所を見つけた。

■ スニペット
水平ルーラーのマーク位置を設定するところ。

  1.  char[] ch = new char[] {document.getChar(i)};
  2.  byte[] by = new String(ch).getBytes();
  3.  column += by.length;

例えば、”ほげほげほ”というテキストの末尾にカーソルがある場合、全角は2文字分の幅を使うのでルーラーの目盛は10になるはずです。

上記はその実装なのですが、UTF-8では全角日本語は3バイトだったりするのでバイト基準では、ずれてしまう…と思うのですがどうなんでしょう。

現在のコントリビュータは日本の企業なので、気付いていないって事もなさそうなんですけど。

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対応

PDT2.0を使ってみた

PDT2.0を使ってみたので、初期設定のメモだけ残しておきます。

まずはダウンロードページからAll-In-Oneをダウンロードします。

PHP Development Tools (PDT) – Downloads

こしあんの環境では以下のパッケージをダウンロードしました。

All-In-One PDT 2.0 (Windows 32-bit)

他にはお好みでプラグインをインストールします。
こしあんは日本語化の Pleiades と空白文字の可視化の JStyle をインストールしました。

Pleiades (Eclipse プラグイン日本語化プラグイン)

で、Eclipseの設定をします。
PHPとしては[PHP]→[PHP実行可能ファイル]→[追加]でPHP、設定ファイルの場所を設定しておきます。

20090124

これでPHPスクリプトを作成し、右クリックで実行できます。

※ デバッガの設定をしていない場合、PHPスクリプトを実行しようとすると”Launch Error – Session Terminated”エラーになることがあります。このときは、実行設定の”Display debug information when running”のチェックをはずしておけばOKです。

20090124a

おつかれちゃん。

Eclipseのスニペットとテンプレート

前回Eclipseのスニペット(Snippet)を紹介したのですが、もろもろ紛らわしい機能でして、誤解を与えそうってことでもう少し解説します。

貴方の思う”萌え”と、わたしの思う”萌え”は別なのよ、ということですね。わかりにくい!

えっと、まずは Eclipse3.3 のJDT(Java Development Tools)を前提として、機能を説明します。

■ コード・テンプレート
EclipseでJava開発をしていると、以下のようなコードが自動生成されることがありますよね。

  1.  } catch (Exception e) {
  2.      // TODO 自動生成された catch ブロック
  3.      e.printStackTrace();
  4.  }

他にも新規にクラスファイルを作成したときなどに自動生成されるコードがあります。

ここで自動生成される雛形はユーザが設定できるようになっています。
[設定]→[Java]→[コード・スタイル]→[コード・テンプレート]

これがコード・テンプレート機能です。

■ テンプレート
Javadocの中で文字列を選択し、Ctrl+Spaceを押すとその文字列をタグで囲むことができます。
“if”と入力してCtrl+Spaceと入力したときに”else if”ブロックなどの補完ができるのもテンプレートです。

20081202a

これは[設定]→[Java]→[エディター]→[テンプレート]から変更・追加が可能です。
これがテンプレート機能です。

■ スニペット
前回こしあんが紹介したのが、これ。
コードの断片を”ビュー”から挿入することができます。

スニペットはビューです。スニペット・ビュー。大事なことなので2回い(ry

と、いうわけで以上3つの機能を紹介しました。
どれもコードの断片を貼り付ける機能で同じではないかと思われるかもしれません。まったくその通りで、ユーザにとって機能名などどうでも良いことです。それなのに、わざわざこんな紹介をしたのは、Eclipseプラグイン開発の観点からの便宜上です。

プラグイン開発の話に進む前にEclipse3.4について触れておきます。

Eclipse3.4ではスニペット・ビューが標準で付属していません。これはおそらくですが、JDTに”テンプレート・ビュー”が実装されたためと思われます。
テンプレート・ビューとスニペット・ビューはほぼ役割が同じであるため、スニペット・ビューは付属しなくなったのでしょう。

さて、やっとメイン。Eclipse3.4でスニペット・ビューと同じ機能を持つプラグインを作りたい。
方法は2つ考えられます。

  1. WST を同梱し、SnippetContributionsを拡張する
  2. AbstractTemplatesPage を実装したクラスを作成する

3.4からは2つ目の方法をとりたいところ。

■ 参考
TemplatesView – Eclipse SDK

ITemplatesPage – Eclipse SDK

ホーム > Eclipse

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








DMM.com 家電・日用品通販

Return to page top