首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > 其他教程 > 开源软件 >

RCP View右键弹出菜单的运用

2012-07-15 
RCP View右键弹出菜单的使用在RCP里,Viewer可以拥有自己的右键弹出菜单,Eclipse提供了2种方式控制弹出菜单

RCP View右键弹出菜单的使用

在RCP里,Viewer可以拥有自己的右键弹出菜单,Eclipse提供了2种方式控制弹出菜单,一种是编码实现,另一种是通过扩展点org.eclipse.ui.popupMenus实现。

?

不管是哪种方式实现,都必须先在Viewer中添加右键菜单(MenuManager),一般在Viewer的createPartControl(Composite 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()));    }  

?

这里添加了2个Eclipse自带的Exit和About菜单项。

?

通过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                                 id="org.salever.rcp.viewaction.demo.newAction"                 label="New Action"                 menubarPath="org.salever.rcp.viewaction.demo.menu1/group1">           </action>        </viewerContribution>     </extension>  

?

这里org.salever.rcp.viewaction.demo.popup.actions.NewAction必须实现IViewActionDelegate。

热点排行