- 追加された行はこの色です。
- 削除された行はこの色です。
#topicpath
----
//ここにコンテンツを記述します。
org.eclipse.ui.IEditorActionDelegateはエディタを右クリックしたときに現れるポップアップメニューに項目を追加するためのインターフェースです。
#contents
***拡張ポイント
org.eclipse.ui.popupMenus
(IObjectActionDelegateと同じ)
org.eclipse.ui.popupMenus (IObjectActionDelegateと同じ)
***plugin.xmlのサンプル
<extension point="org.eclipse.ui.popupMenus">
<viewerContribution
targetID="#CompilationUnitEditorContext" <- Javaエディタ
id="nu.mine.kino.plugin.javadocsearch.CompilationUnitEditorContext">
<action label="JavaDoc検索" <- コンテキストメニューの文字列
class="nu.mine.kino.plugin.javadocsearch.CompilationUnitEditorContextAction"
menubarPath="additions" ↑ 実装クラス
id="nu.mine.kino.plugin.javadocsearch.CompilationUnitEditorContextAction">
<selection
class="org.eclipse.jface.text.ITextSelection">
</selection>
</action>
</viewerContribution>
</extension>
**ポイント
実装クラスはIEditorActionDelegateを実装します。実際に使用するメソッドは
setActiveEditor(IAction action, IEditorPart targetEditor)
run(IAction action)
でしょう。
***setActiveEditor(IAction action, IEditorPart targetEditor)
なにかが選択されたときに呼ばれるメソッドです。selectionを用いて、メニュー内でクリックされたリソースが何であるかを判定するロジックを記述します。
エディタの編集しているファイルが切り替わったときに呼ばれるメソッドです。このメソッド内でフィールドにIEditorPartを保持しておいて、runメソッドでIEditorPart から何かを取り出す、といったロジックが多いのかな?
***run(IAction action)
実際にメニューから選択されたときに呼ばれるメソッドです。selectionChangedで選択されたリソースをフィールドに保持して、runメソッド内でロジックを記述する、なんてのが基本パターンでしょうか。
実際にメニューから選択されたときに呼ばれるメソッドです。setActiveEditorで選択されたリソースをフィールドに保持して、runメソッド内でロジックを記述する、なんてのが基本パターンでしょうか。
***エディタで選択された文字列をビューで使う
よく使われそうな処理フローは
-エディタで文字列を選択して右クリック、このメニューを選択
-その文字列を使ってなんか処理して
-結果をビューに表示する
などだと思います。((CallHierarchyとかそうですよね))
このとき run(IAction action) からビューに処理を依頼しなくてはいけないので、ビューへの参照が必要です。やり方はIWorkbenchPage#showView(String viewID)を使えばよいようです。
IWorkbenchPage workbenchPage = editor.getSite().getPage();
try {
HogeView view =
(HogeView) workbenchPage.showView("HogeViewのID");
} catch (PartInitException e) {
}
今のところまだよくわからないのが、viewerContributionのtargetID="#CompilationUnitEditorContext" ですね。これって??
http://yoichiro.cocolog-nifty.com/eclipse/2004/02/post_4.html
----
この記事は
#vote(おもしろかった,そうでもない)
#comment
#topicpath
SIZE(10){現在のアクセス:&counter;}