« Eclipseを覗き込むSpiderプラグイン | トップページ | ツールバーへのトグルボタンの追加 »

2004.01.23

ツールバーへのアクションの追加

基本に立ち戻り,「Contributing to eclipse」に沿って学習しなおすことにしたEclipseプラグイン開発。最初のお題は,「Helloアクション」。ツールバーにボタンを追加するという単純なプラグイン。

アクションはアクションセットの中で定義されるので,まずプラグインのマニフェスト(plugin.xml)の中にactionSet要素を準備する。そしてactionSet要素の中に,action要素を記述してアクションを定義する。以下のような感じ。

  <extension point="org.eclipse.ui.actionSets">
    <actionSet
        label="Hello Action Set"
        id="yoichiro.hello.actionSet">
      <action
        label="Hello"
        id="yoichiro.hello.action"
        toolbarPath="helloGroup"
        class="yoichiro.hello.HelloAction">
      </action>
    </actionSet>
  </extension>

上記をプラグインのマニフェストのplugin要素内に記述するだけで,一応プラグインとして認識され,ちゃんとツールバーにボタンが出現する(アイコンを指定していないので,デフォルトの赤ポッチのちっちゃなボタンになる)。この際,「Window>Customize Perspective」メニューを使って,Other内にあるHello Action Set にチェックを入れないと,ツールバーにボタンが表示されない(チェックを入れることを活性化,チェックを外すことを非活性化とここでは呼ぶ)。toolbarPath属性を使って,ツールバー上に新たにhelloGroupグループを作成している。これにより,ツールバー内にアクションがボタンとして表示されるようになる。

アクションの定義は上記でOK。次はアクションの実装となるクラスであるが,これはIWorkbenchWindowActionDelegateインタフェースの実装クラスでなければならない。クラスは以下のような感じ。

  public class HelloAction
      implements IWorkbenchWindowActionDelegate {
    public HelloAction() {}
    public void init(IWorkbenchWindow window) {}
    public void run(IAction action) {}
    public void dispose() {}
    public void selectionChanged(IAction action, ISelection selection) {}
  }

アクションセットが活性化されてツールバーにボタンが表示されただけでは,上記のアクションのインスタンスは生成されない。ボタンを押して初めてインスタンスが生成される。・・・と本には書いてあるんだけど,それは最初の一回目だけで,アクションセットを非活性化し,再度活性化すると,その直後にインスタンスが作られている。まぁ,この動作の違いはプラグインを自作するときにはそんなに気にならないだろう。

ボタンが押されたときに実行したい処理は,runメソッド内に記述すればよい。

ちなみに,パースペクティブを切り替えたりするとアクションはdisposeメソッドが呼ばれて破棄され,元のパースペクティブに戻ってくるとインスタンスが再度作り直される,といった動きをするので,もちろんアクションクラスにインスタンス変数を作って状態を覚えるといったことはご法度です。

|

« Eclipseを覗き込むSpiderプラグイン | トップページ | ツールバーへのトグルボタンの追加 »

コメント

コメントを書く



(ウェブ上には掲載しません)




トラックバック

この記事のトラックバックURL:
http://app.cocolog-nifty.com/t/trackback/12631/127670

この記事へのトラックバック一覧です: ツールバーへのアクションの追加:

« Eclipseを覗き込むSpiderプラグイン | トップページ | ツールバーへのトグルボタンの追加 »