第2回 「Hello♪」を表示するだけのEclipseプラグイン

HelloPluginを実装しよう

 プラグインの各種設定を完了した田中君は、いよいよプラグインの実装を行う。

長尾君 「実装を行う前に、もう一度作成するプラグインを確認しよう」


長尾君 「メニューバーに追加した[]アイコンをクリックすると、メッセージが表示されるプラグインだよね。ここからは[]アイコンをクリックされたら、メッセージダイアログを表示させる処理を書いていくよ」
長尾君 「先ほど作成したクラス[HelloPluginAction]を開いてみよう」

package helloPlugin.actions;

import org.eclipse.jface.action.IAction;
(3)
import org.eclipse.jface.viewers.ISelection;
import org.eclipse.ui.IWorkbenchWindow;
import org.eclipse.ui.IWorkbenchWindowActionDelegate;

public class HelloPluginAction implements IWorkbenchWindowActionDelegate {
(1)

  public void dispose() {
    // TODO 自動生成されたメソッド・スタブ
  }

  public void init(IWorkbenchWindow window) {
    // TODO 自動生成されたメソッド・スタブ
  }

  public void run(IAction action) {
    // TODO 自動生成されたメソッド・スタブ
  }

  public void selectionChanged(IAction action, ISelection selection) {
    // TODO 自動生成されたメソッド・スタブ
  }
}

(2)

田中君 「インターフェイス(1)と実装メソッド(2)が定義されているね」
長尾君 「インターフェイス[IWorkbenchWindowActionDelegate]は、ワークベンチウィンドウからのアクションを実行するために使用するんだ」

コラム ワークベンチウィンドウについて
プラグイン開発におけるワークベンチウィンドウとは、[Eclipseのメインウィンドウ]を指します。
Eclipseにはワークベンチウィンドウのほかにも、それぞれの領域に名称が与えられています。
領域の名称 (Eclipseオンラインヘルプより抜粋)

田中君 「インターフェイスのほかにはいくつかのimport文(3)が設定されているね」
長尾君 「これらはもちろん[IWorkbenchWindowActionDelegate]が参照しているパッケージだけど、いまこの時点で1つずつを詳しく説明してもとても難しいから、いまの時点では、自動的に設定される程度の認識でいいよ」
田中君 「うん、そうするよ。すべてが初めて目にするパッケージだからね。多分いま聞いても分からないと思うな」
長尾君 「実装メソッド(2)は以下の4種類あるから、ここで簡単に説明するね」

メソッド 内容
dispose 該当アクションが停止するときに呼ばれる
init 該当アクションの初期化時に呼ばれる
run 該当アクションの選択時に呼ばれる
selectionChanged ワークベンチ上での選択が変更された際に呼ばれる

田中君 「アクション初期化や停止があるけど、これってどのようなタイミングで初期化や停止メソッドが実行されるの?」
長尾君 「アクションの初期化、停止については実はとても奥が深い問題なんだけど、init、disposeとselectionChangedのメソッドは、このプラグインでは使用しないんだ。だから、今回はrunメソッドのみ説明するよ」

コラム 使用するメソッドの見極めについて
プラグインの開発ではインターフェイスの実装を行っていくパターンが多く存在します、そのときに、いったいどのメソッドを使ったらよいかやメソッドの使い方について分からないというような場合によく出くわします。
そのときの調査方法としてもはやり、Eclipseオンラインヘルプから調べるのが一番いいでしょう。
今回の場合、initメソッドをはじめとする各種実装メソッドの説明についても、EclipseオンラインヘルプからIWorkbenchWindowActionDelegateインターフェイスのAPIドキュメントが英文ですが用意されています。
APIドキュメントは[Platformプラグイン・デベロッパー・ガイド]から[参照]―[API参照]にAPIドキュメントがございますので、そこから、IWorkbenchWindowActionDelegateインターフェイスのパッケージである[org.eclipse.ui]をご覧ください。

田中君 「runメソッドは選択時に実行されるってことは、この場合、[ボタンがクリックされたとき]に実行されるってことかな?」
長尾君 「そのとおり、ツールバーのボタンがクリックされたら実行されるメソッドだよ」
田中君 「じゃあ、そのrunメソッドに、ダイアログを表示される処理を記述すればいいのだね? ダイアログ表示処理ってどうやって実装するのかな?」
長尾君 「実装については下のソースを見て」

public class HelloPluginAction implements IWorkbenchWindowActionDelegate {
  public void run(IAction action) {
    MessageDialog.openInformation(
        null,
        "はじめてのプラグイン",
        "Hello♪");
  }
// init、disposeとselectionChangedメソッドは省略

長尾君 「runメソッド内で[MessageDialog]クラスの[openInformation]というスタティックメソッドを呼んでいるけど、これがダイアログを表示させる処理なんだ」
長尾君 「[openInformation]メソッドの第2引数にはダイアログのウィンドウタイトルの文字列を、第3引数には、ダイアログに表示させるメッセージを表示させるんだ」
田中君 「第1引数に書いてある[null]ってどんな意味があるの?」
長尾君 「これは、ダイアログの親を指定する引数なんだけど、今回は特に指定する必要がないからnullを指定しているんだ。これですべての実装は終わりだよ」
田中君 「これだけ?? 案外簡単だったね」
長尾君 「そうなんだ、プラグインの開発も実際はJavaのアプリケーション開発だからね、実装自体もこの簡単なプラグインであればすごく簡単なんだ」
田中君 「プラグインの実装が終わったから、動作確認をしたいんだけど、これも簡単にできるのかな?」
長尾君 「うん、実は動作確認もワンタッチでできる方法があるんだ。早速動作確認してみよう!」

 プラグインの実装自体は意外と思えるほど簡単だった。次に田中君はプラグインの動作確認を行う。

2/3

Index
第2回 「Hello♪」を表示するだけのEclipseプラグイン
  Page1
Eclipseの機能を拡張しよう
Page2
Helloプラグインを実装しよう
  Page3
Helloプラグインの動作確認をしよう



Java Solution全記事一覧



Java Agile フォーラム 新着記事
@ITメールマガジン 新着情報やスタッフのコラムがメールで届きます(無料)

注目のテーマ

Java Agile 記事ランキング

本日 月間