再ターゲット可能なアクション

プラグインのビューおよびエディターについて、クリップボードでの切り取り/コピー/貼り付け、ビュー最新表示、またはプロパティーなどの 内容的に同じアクションを既存のワークベンチ・アクションにインプリメントすることは共通です。  それぞれのビューとエディターが、これらの操作のために独自のアクションを定義して、それらのメニュー内に定義を組み込む必要がある場合、 ビューおよびエディターのポップアップ・メニューは、かなり乱雑なものになります。 

この問題を解決するために、ワークベンチは再ターゲット可能な (グローバルとも呼ばれる) アクションを定義します。 これは、任意のビューまたはエディターによって扱われます。  ビューまたはエディターがアクティブであるときは、ワークベンチ・メニューまたはツールバーからアクションを選択したときに、そのハンドラーが実行されます。  これによって、ビューまたはエディターは、内容的に同じアクションのために、ワークベンチ・メニューのスペースを共有できます。

IWorkbenchActionConstants は、 すべてのワークベンチ・アクションを記述し、グローバルとして再ターゲット可能なアクションを指示します。  例えば、以下は Properties アクションの定義です。

public static final String PROPERTIES = "properties"; // Global action. 

下の表で、ビューおよびエディターによってインプリメントされる、再ターゲット可能なアクションのうち、より一般的なものをいくつか要約します。

  「ファイル」メニュー 「編集」メニュー 「ナビゲート」メニュー 「プロジェクト」メニュー
ビュー 移動
名前変更
リフレッシュ
プロパティー
  中へジャンプ
リソースへジャンプ
エディターとの同期化 (sync with editor)
戻る
進む
上へ
次へ
戻る
開く
閉じる
ビルド
再ビルド
エディター 前回保存した状態に戻す
印刷
検索    
ビューおよびエディター   切り取り
コピー
貼り付け
削除
すべて選択
元に戻す
やり直し
   

再ターゲット可能なアクションは、RetargetAction を使用して作成されます。  以下の抜粋は、WorkbenchActionBuilder からのものです。

 propertiesAction = createGlobalAction(IWorkbenchActionConstants.PROPERTIES, "file", false); 

createGlobalAction メソッドは、 RetargetAction を作成する方法を示します。

private RetargetAction createGlobalAction(String id, String actionDefPrefix, boolean labelRetarget) {
	RetargetAction action;
	if (labelRetarget) {
		action = new LabelRetargetAction(id, WorkbenchMessages.getString("Workbench." + id)); 
	}
	else {
		action = new RetargetAction(id, WorkbenchMessages.getString("Workbench." + id)); 
	}
	...
	return action;
}

再ターゲット可能なアクションを作成しているとき、ワークベンチは、アクションおよびデフォルト・ラベルのために ID を割り当てます。  2 つのスタイルの再ターゲット・アクションがあることに注意してください。  RetargetAction は、 単にビューまたはエディターがアクションをインプリメントできるようします。  LabelRetargetAction は、 さらにビューまたはエディターがアクションのラベルをリセットできるようにします。  これは、Undo アクションを Undo Typing として再ラベルするなど、さらに具体的で明確なメニュー・ラベルを使用する際に役立ちます。    

これで、再ターゲット可能なアクションがワークベンチによって定義される方法がわかりました。  次は、再ターゲット可能なアクションのために、ビューまたはエディターがインプリメンテーションを提供する方法を見てみましょう。  これは、グローバル・アクション・ハンドラーの設定によって行われます。

Copyright IBM Corporation and others 2000, 2003.