RCP View右クリックポップアップメニューの使用
3186 ワード
RCPでは、Viewerは独自の右クリックポップアップメニューを持つことができ、Eclipseは2つの方式でポップアップメニューを制御することができ、1つは符号化実現であり、もう1つは拡張点orgを通じてである.eclipse.ui.popupMenus実装.
いずれにしても、まずViewerに右クリックメニュー(MenuManager)を追加する必要があります.一般的にViewerのcreatePartControl(Component parent)には、次のコードが追加されます.
エンコーディングでメニュー項目を追加するにはfillContextMenu()メソッドを使用します.
ここにはEclipseに付属するExitとAboutメニュー項目が2つ追加されています.
orgを通過する.eclipse.ui.PopupMenus方式でメニュー項目を追加し、比較的柔軟である:
ここでsalever.rcp.viewaction.demo.popup.actions.NewActionはIViewActionDelegateを実現しなければならない.
いずれにしても、まずViewerに右クリックメニュー(MenuManager)を追加する必要があります.一般的にViewerのcreatePartControl(Component parent)には、次のコードが追加されます.
public void createPartControl(Composite parent) {
viewer = new TableViewer(parent, SWT.MULTI | SWT.H_SCROLL
| SWT.V_SCROLL);
viewer.setContentProvider(new ViewContentProvider());
viewer.setLabelProvider(new ViewLabelProvider());
viewer.setInput(getViewSite());
createContextMenu();
}
private void createContextMenu() {
MenuManager menuManager = new MenuManager();
menuManager.setRemoveAllWhenShown(true);
menuManager.addMenuListener(new IMenuListener() {
public void menuAboutToShow(IMenuManager manager) {
fillContextMenu(manager);
}
});
Menu menu = menuManager.createContextMenu(viewer.getControl());
viewer.getControl().setMenu(menu);
getSite().setSelectionProvider(viewer);
getSite().registerContextMenu(menuManager, viewer);
}
エンコーディングでメニュー項目を追加するにはfillContextMenu()メソッドを使用します.
protected void fillContextMenu(IMenuManager menu) {
menu.add(ActionFactory.QUIT.create(getSite().getWorkbenchWindow()));
menu.add(new Separator());
menu.add(new Separator(IWorkbenchActionConstants.MB_ADDITIONS));
menu.add(new Separator(IWorkbenchActionConstants.MB_ADDITIONS
+ "-end"));
menu.add(ActionFactory.ABOUT.create(getSite().getWorkbenchWindow()));
}
ここにはEclipseに付属するExitとAboutメニュー項目が2つ追加されています.
orgを通過する.eclipse.ui.PopupMenus方式でメニュー項目を追加し、比較的柔軟である:
<extension
point="org.eclipse.ui.popupMenus">
<viewerContribution
id="org.salever.rcp.viewaction.demo.viewerContribution1"
targetID="org.salever.rcp.viewaction.demo.view">
<menu
id="org.salever.rcp.viewaction.demo.menu1"
label="New Submenu"
path="additions">
<separator
name="group1">
</separator>
</menu>
<action
class="org.salever.rcp.viewaction.demo.popup.actions.NewAction"
id="org.salever.rcp.viewaction.demo.newAction"
label="New Action"
menubarPath="org.salever.rcp.viewaction.demo.menu1/group1">
</action>
</viewerContribution>
</extension>
ここでsalever.rcp.viewaction.demo.popup.actions.NewActionはIViewActionDelegateを実現しなければならない.