Eclipse/プラグイン開発のTIPS集/org.eclipse.ui.IViewActionDelegate(ポップアップ・メニューバー)
をテンプレートにして作成
[
トップ
] [
新規
|
一覧
|
単語検索
|
最終更新
|
ヘルプ
|
ログイン
]
開始行:
// 下階層用テンプレート
#topicpath
----
//ここにコンテンツを記述します。
すでに他のプラグイン開発者から提供されているビュー(IViewP...
-ビュー自体のメニューバーにアクションを追加
#ref(pic2.png)
~
-ビュー内のウィジェット(例はTableViewer)のポップアップメ...
#ref(pic1.png)
#contents
**ビュー自体のメニューバーにアクションを追加する。 [#w2f8...
***拡張ポイント [#m903914d]
org.eclipse.ui.viewActions
***plugin.xmlのサンプル [#n5a5e1b3]
<extension point="org.eclipse.ui.viewActions">
<viewContribution
id="nu.mine.kino.plugin.samples.rcp.viewContribution2"
targetID="nu.mine.kino.plugin.samples.rcp.view3">
<action
class="nu.mine.kino.plugin.samples.rcp.ViewActionD...
id="nu.mine.kino.plugin.samples.rcp.action2"
label="アクション3" menubarPath="addition"
style="push"/>
</viewContribution>
</extension>
~
引き続き、ビュー内のViewerクラスのポップアップメニューに...
**ビュー内のViewerクラスのポップアップメニューにアクショ...
***拡張ポイント [#b2c43867]
org.eclipse.ui.popupMenus
***その前に [#ef888ced]
他のビュー内のViewerのポップアップメニューにアクションを...
getSite().registerContextMenu(menuMgr, getSite().getSel...
を使ってビューがメニューを公開してくれている必要がありま...
さて、通常ビューを作るときは以下のようなサンプルになると...
public void createPartControl(Composite parent) {
viewer = new TableViewer(parent, SWT.MULTI | SWT.H_SCR...
| SWT.V_SCROLL);
...
makeActions(); <- フィールドのアクションをnewする
hookContextMenu();
hookDoubleClickAction();
contributeToActionBars();
}
private void hookContextMenu() {
↓そのビュー用のMenuManagerを作る
MenuManager menuMgr = new MenuManager("#PopupMenu");
menuMgr.setRemoveAllWhenShown(true);
menuMgr.addMenuListener(new IMenuListener() {
public void menuAboutToShow(IMenuManager manager) {
fillContextMenu(manager);
}
});
↓MenuManagerを使って(ビュー内の)viewerにコンテキストメ...
Menu menu = menuMgr.createContextMenu(viewer.getContro...
viewer.getControl().setMenu(menu);
↓そのビューのメニューマネージャを外部に公開する
getSite().registerContextMenu(menuMgr, viewer);
}
private void fillContextMenu(IMenuManager manager) {
manager.add(action1);
manager.add(action2);
// Other plug-ins can contribute there actions here
manager.add(new Separator(IWorkbenchActionConstants.MB...
↑ メニューの追加させたい場所にキー値(IWorkbenchActionC...
(実際の文字列はadditions)をセットしておく。
}
ビュー側がこんな風になっていれば、外部からビュー内のViewe...
ところで
getSite().registerContextMenu(menuMgr, viewer);
の第二引数の型はISelectionProviderなのですが、まだ役目が...
:2006/3/30追記|わかりました。[[Eclipse/プラグイン開発のTI...
ちなみに[[プロパティシートを使う>Eclipse/プラグイン開発の...
***plugin.xml のサンプル [#j583f5eb]
getSite().registerContextMenu(menuMgr, viewer);
manager.add(new Separator(IWorkbenchActionConstants.MB_A...
としたことで、
-外部にポップアップはmenuMgrを公開しますよ
-そのポップアップのIDはビューのIDですよ
-ポップアップにアクションを追加するときにplugin.xmlに指定...
-plugin.xmlのmenubarPathはIWorkbenchActionConstants.MB_AD...
-追加したアクションクラスに選択したものを通知するSelectio...
という事になります。ここまでビュー側で設定してくれている...
アクションを追加するにはplugin.xmlで以下のように
-targetID: アクションを追加したいメニューのID
-menubarPath: そのメニューの追加する場所
を宣言すればOKです。
<extension point="org.eclipse.ui.popupMenus">
<viewerContribution
id="nu.mine.kino.plugin.samples.rcp.viewerContribut...
targetID="nu.mine.kino.plugin.samples.rcp.view3">
↑ これはビューのIDではなく registerConte...
でもデフォルト値がビューのIDなのでほ...
<action
class="nu.mine.kino.plugin.samples.rcp.Action4"
↑ IViewActionDelegateの実装クラス
id="nu.mine.kino.plugin.samples.rcp.action4"
label="アクション4"
menubarPath="additions"/>
↑ additionsは IWorkbenchActionConstants.MB_ADDITIO...
</viewerContribution>
</extension>
***実装クラスのサンプルソース [#h7431c2e]
追加されたアクションがメニューで選択された場合に起動され...
package nu.mine.kino.plugin.samples.rcp;
import org.eclipse.jface.action.IAction;
import org.eclipse.jface.viewers.ISelection;
import org.eclipse.jface.viewers.IStructuredSelection;
import org.eclipse.ui.IViewActionDelegate;
import org.eclipse.ui.IViewPart;
public class Action4 implements IViewActionDelegate {
private ISelection selection;
private IViewPart view;
public void init(IViewPart view) {
this.view = view;
}
public void run(IAction action) {
if (selection instanceof IStructuredSelection) {
IStructuredSelection sselection = (IStructuredSele...
String firstElement = (String) sselection.getFirst...
System.out.println(firstElement);
}
}
public void selectionChanged(IAction action, ISelection...
this.selection = selection;
}
}
いやあ長かった。これでようやく外部のプラグインがビューの...
**関連リンク [#b87846e7]
-[[コンテキストメニューの作成:http://www.willbe-computing...
----
この記事は
#vote(おもしろかった[3],そうでもない[0])
-%%registerContextMenuの第二引数ってなんのために必要なん...
-ビューのメニューバーに追加するときはビューのIDを、ポップ...
-SelectionProviderとregisterContextMenuをいっつも混同しち...
#comment
#topicpath
SIZE(10){現在のアクセス:&counter;}
終了行:
// 下階層用テンプレート
#topicpath
----
//ここにコンテンツを記述します。
すでに他のプラグイン開発者から提供されているビュー(IViewP...
-ビュー自体のメニューバーにアクションを追加
#ref(pic2.png)
~
-ビュー内のウィジェット(例はTableViewer)のポップアップメ...
#ref(pic1.png)
#contents
**ビュー自体のメニューバーにアクションを追加する。 [#w2f8...
***拡張ポイント [#m903914d]
org.eclipse.ui.viewActions
***plugin.xmlのサンプル [#n5a5e1b3]
<extension point="org.eclipse.ui.viewActions">
<viewContribution
id="nu.mine.kino.plugin.samples.rcp.viewContribution2"
targetID="nu.mine.kino.plugin.samples.rcp.view3">
<action
class="nu.mine.kino.plugin.samples.rcp.ViewActionD...
id="nu.mine.kino.plugin.samples.rcp.action2"
label="アクション3" menubarPath="addition"
style="push"/>
</viewContribution>
</extension>
~
引き続き、ビュー内のViewerクラスのポップアップメニューに...
**ビュー内のViewerクラスのポップアップメニューにアクショ...
***拡張ポイント [#b2c43867]
org.eclipse.ui.popupMenus
***その前に [#ef888ced]
他のビュー内のViewerのポップアップメニューにアクションを...
getSite().registerContextMenu(menuMgr, getSite().getSel...
を使ってビューがメニューを公開してくれている必要がありま...
さて、通常ビューを作るときは以下のようなサンプルになると...
public void createPartControl(Composite parent) {
viewer = new TableViewer(parent, SWT.MULTI | SWT.H_SCR...
| SWT.V_SCROLL);
...
makeActions(); <- フィールドのアクションをnewする
hookContextMenu();
hookDoubleClickAction();
contributeToActionBars();
}
private void hookContextMenu() {
↓そのビュー用のMenuManagerを作る
MenuManager menuMgr = new MenuManager("#PopupMenu");
menuMgr.setRemoveAllWhenShown(true);
menuMgr.addMenuListener(new IMenuListener() {
public void menuAboutToShow(IMenuManager manager) {
fillContextMenu(manager);
}
});
↓MenuManagerを使って(ビュー内の)viewerにコンテキストメ...
Menu menu = menuMgr.createContextMenu(viewer.getContro...
viewer.getControl().setMenu(menu);
↓そのビューのメニューマネージャを外部に公開する
getSite().registerContextMenu(menuMgr, viewer);
}
private void fillContextMenu(IMenuManager manager) {
manager.add(action1);
manager.add(action2);
// Other plug-ins can contribute there actions here
manager.add(new Separator(IWorkbenchActionConstants.MB...
↑ メニューの追加させたい場所にキー値(IWorkbenchActionC...
(実際の文字列はadditions)をセットしておく。
}
ビュー側がこんな風になっていれば、外部からビュー内のViewe...
ところで
getSite().registerContextMenu(menuMgr, viewer);
の第二引数の型はISelectionProviderなのですが、まだ役目が...
:2006/3/30追記|わかりました。[[Eclipse/プラグイン開発のTI...
ちなみに[[プロパティシートを使う>Eclipse/プラグイン開発の...
***plugin.xml のサンプル [#j583f5eb]
getSite().registerContextMenu(menuMgr, viewer);
manager.add(new Separator(IWorkbenchActionConstants.MB_A...
としたことで、
-外部にポップアップはmenuMgrを公開しますよ
-そのポップアップのIDはビューのIDですよ
-ポップアップにアクションを追加するときにplugin.xmlに指定...
-plugin.xmlのmenubarPathはIWorkbenchActionConstants.MB_AD...
-追加したアクションクラスに選択したものを通知するSelectio...
という事になります。ここまでビュー側で設定してくれている...
アクションを追加するにはplugin.xmlで以下のように
-targetID: アクションを追加したいメニューのID
-menubarPath: そのメニューの追加する場所
を宣言すればOKです。
<extension point="org.eclipse.ui.popupMenus">
<viewerContribution
id="nu.mine.kino.plugin.samples.rcp.viewerContribut...
targetID="nu.mine.kino.plugin.samples.rcp.view3">
↑ これはビューのIDではなく registerConte...
でもデフォルト値がビューのIDなのでほ...
<action
class="nu.mine.kino.plugin.samples.rcp.Action4"
↑ IViewActionDelegateの実装クラス
id="nu.mine.kino.plugin.samples.rcp.action4"
label="アクション4"
menubarPath="additions"/>
↑ additionsは IWorkbenchActionConstants.MB_ADDITIO...
</viewerContribution>
</extension>
***実装クラスのサンプルソース [#h7431c2e]
追加されたアクションがメニューで選択された場合に起動され...
package nu.mine.kino.plugin.samples.rcp;
import org.eclipse.jface.action.IAction;
import org.eclipse.jface.viewers.ISelection;
import org.eclipse.jface.viewers.IStructuredSelection;
import org.eclipse.ui.IViewActionDelegate;
import org.eclipse.ui.IViewPart;
public class Action4 implements IViewActionDelegate {
private ISelection selection;
private IViewPart view;
public void init(IViewPart view) {
this.view = view;
}
public void run(IAction action) {
if (selection instanceof IStructuredSelection) {
IStructuredSelection sselection = (IStructuredSele...
String firstElement = (String) sselection.getFirst...
System.out.println(firstElement);
}
}
public void selectionChanged(IAction action, ISelection...
this.selection = selection;
}
}
いやあ長かった。これでようやく外部のプラグインがビューの...
**関連リンク [#b87846e7]
-[[コンテキストメニューの作成:http://www.willbe-computing...
----
この記事は
#vote(おもしろかった[3],そうでもない[0])
-%%registerContextMenuの第二引数ってなんのために必要なん...
-ビューのメニューバーに追加するときはビューのIDを、ポップ...
-SelectionProviderとregisterContextMenuをいっつも混同しち...
#comment
#topicpath
SIZE(10){現在のアクセス:&counter;}
ページ名: