Top / Eclipse / プラグイン開発のTIPS集 / 再ターゲット可能なアクション

カット、コピー、ペーストなどは、ビューがアクティブな場合とエディタがアクティブな場合で、実行するアクションクラスが異なると思います。でもメニューんなかに、「ビューのコピー」と「エディタのコピー」それぞれのメニューがあっても見栄えが悪いです。EclipseIDEでも当然コピーはメニュー上ひとつですよね。

ようするに表示上は全ウィジェットで共通だけれど、選択されているウィジェットによって異なるアクションを実行したいというニーズがあります。そんなときに、この再ターゲット(Retarget)可能なアクションというのを用います。これによって、あるビューが選択されているときはそのビューのアクションを実行する、なんていうべんりなメニューを作ることができます。

やりかた

でやり方ですが、とりあえず宣言的に行う場合をやってみました。plugin.xmlを以下のようにします。

<actionSet label="ラベル"
  visible="true" id="nu.mine.kino.plugin.samples.rcp.actionsets">
  <action
       id="nu.mine.kino.plugin.samples.rcp.actions.retargetaction01"
       label="リターゲット可能アクション"
       menubarPath="help/group01"
       retarget="true"
       style="push"/>
</actionSet>

retarget="true" とするだけです。クラスはそれぞれのウィジェットが動的に代入するため、ココでは指定しません。

次にビューの場合は、各クラスのcreatePartControl?で以下のようにコーディングしておきます。

↓ SampleView1ってクラスです。
public void createPartControl(Composite parent) {
  ......
  getViewSite().getActionBars().setGlobalActionHandler(
      "nu.mine.kino.plugin.samples.rcp.actions.retargetaction01",
      new Action() {    ↑ これはactionタグのidです
        public void run() {
          System.out.println("hoge");
        }
      });
}

これで、このビューが選択されているときは、

nu.mine.kino.plugin.samples.rcp.actions.retargetaction01

というキー値のメニューはこのアクションクラスを使えよー、というのを指定したことになります。

実際、

view01.png

の様にSampleView1がアクティブの場合はアクションがenableになっていて、

view02.png

の様にSampleView2がアクティブの場合はアクションがdisableとなります。

これは便利!


この記事は

選択肢 投票
おもしろかった 6  
そうでもない 0  
  • こんなん自分で制御しろって言われたら、ゾッっとしますよね。やっぱEclipse/RCPってすげーよなぁ -- きの? 2006-03-03 00:16:34 (金)
  • プログラマティカルにやる場合は、
    new RetargetAction(id,"Add &Contact");
    と、生成時にidというStringのキー値を設定します。 ビュー側でsetGlobalActionHandler?するのは同じです。キー値をこのidにするだけですね。 -- きの? 2006-03-03 00:18:43 (金)
  • ラベルの変更まで許す、LabelRetargetAction? とか宣言的なら allowLabelUpdate?="true" なんてのもあるみたい。 -- きの? 2006-03-03 00:21:28 (金)
  • エディタの場合は、contributorClass の initメソッド内でやるみたいです。 -- きの? 2006-03-03 00:22:16 (金)
  • 詳細はヘルプの再ターゲット可能なエディター・アクションを参照! -- きの? 2006-03-03 00:22:49 (金)

Top / Eclipse / プラグイン開発のTIPS集 / 再ターゲット可能なアクション

現在のアクセス:10611


添付ファイル: fileview01.png 951件 [詳細] fileview02.png 905件 [詳細]

トップ   編集 凍結 差分 バックアップ 添付 複製 名前変更 リロード   新規 一覧 単語検索 最終更新   ヘルプ   最終更新のRSS
Last-modified: 2014-01-12 (日) 14:49:23 (3983d)