`
salever
  • 浏览: 255403 次
  • 性别: Icon_minigender_1
  • 来自: 北京
社区版块
存档分类
最新评论

RCP View右键弹出菜单的使用

    博客分类:
  • RCP
阅读更多

在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
               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>

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

 

记住,如果仅仅扩展org.eclipse.ui.popupMenus是看不见菜单的,必须在Viewer中添加并注册ContextMenu。

 

有一篇blog讲得比较详细,引用一下:(来自IBM DeveloperWorks)

http://www.ibm.com/developerworks/cn/opensource/os-cn-ecl-menuext/index.html

分享到:
评论

相关推荐

    RCP自定义透视图切换按钮的右键菜单

    同时,可以添加一个右键菜单,当用户点击按钮时弹出。 4. **去除Editor的右键菜单和关闭按钮**: 通过`IWorkbenchWindow`对象,我们可以获取到工作台窗口中的所有编辑器,并移除它们的右键菜单。对于关闭按钮,...

    RCP的Navigator例子源代码(包括修改默认的new右键菜单)

    4. **贡献菜单项**:使用`org.eclipse.ui.menus`扩展点,将自定义命令添加到右键菜单中。需要指定命令ID、菜单ID(例如`org.eclipse.ui.navigator.NewMenu`表示Navigator的“新建”菜单)以及菜单位置。 5. **激活和...

    plugin2_RCP菜单_teamcenter_

    此外,还可以通过`menuContribution`元素来指定菜单或工具栏的位置,如主菜单、弹出菜单或工具栏。 4. **Teamcenter中的菜单集成**:在Teamcenter的RCP环境中,菜单和工具栏的定制通常涉及到对Teamcenter API的调用...

    RCP popupMene高级教程 使用Visibility定制弹出菜单

    创建一个rcp工程,模板使用有一个view的 step2.创建popupMenu step2_1.新建类Action1: step2_2.添加扩展点: 好的step2已经结束了,现在您可以运行一下程序,看看效果. 接下来将要进行的是,只有选中Three时...

    RCP弹出日期控件

    RCP弹出日期控件是这种环境中用于用户界面交互的一个重要组件,它提供了一种方便的方式来选择日期,增强了用户体验。 在RCP系统中,弹出式日期控件通常是为了简化用户在日期输入时的操作。这种控件不仅允许用户通过...

    RCP 菜单与工具栏小结

    通过深入理解RCP的贡献系统和菜单工具栏的实现机制,开发者可以构建出既强大又易于使用的桌面应用程序。在实际开发过程中,应充分利用RCP提供的框架和工具,同时结合具体的应用需求进行定制,以达到最佳的用户界面...

    Eclipse rcp深入浅出中英文版及配套代码

    6. **命令(Command)与菜单(Menu)**:Eclipse RCP的命令系统允许动态创建和绑定菜单项,实现了行为与表示的分离。 7. **服务(Service)**:服务是一种共享的、可插入的组件,提供特定的功能,如文件I/O或网络...

    RCP入门 View Editor

    RCP允许开发者专注于业务逻辑的实现,而不必过于关注用户界面的设计,因为RCP已经提供了一系列预定义的界面元素,如菜单、工具栏、视图(View)和编辑器(Editor)。 **1. 菜单栏(Menu Bar)和工具栏(Tool Bar)*...

    eclipse rcp demo例子 view editor 图表

    本示例是一个Eclipse RCP的实战演示,展示了如何在Eclipse RCP应用中实现View和Editor,以及可能涉及图表的展示。 在Eclipse RCP中,View和Editor是两种主要的用户界面组件。View通常用于显示辅助信息或工具,而...

    eclipse rcp 菜单小例子

    在Eclipse RCP中,我们可以使用`IMenuService`来管理这些菜单。 菜单项的创建通常在`ActionBarAdvisor`类中完成,它是负责初始化和配置应用动作栏的。在`fillMenuBar`方法中,我们会定义`MenuBarManager`,并添加...

    RCP-1500中文操作手册.pdf

    在操作和维护方面,RCP-1500系列遥控面板提供了一个详细的菜单系统,包括菜单操作、状态画面、着色菜单、文件菜单、维护菜单和配置菜单等。用户可以通过这些菜单来进行高级的配置和设置,以确保设备的性能达到最佳。...

    plugin1_RCP菜单_teamcenter_

    本文将深入探讨“plugin1_RCP菜单_teamcenter_”这一主题,重点讲解如何在Teamcenter的RCP(Rich Client Platform)环境中开发一级和二级主菜单,并通过配置plugin.xml文件来实现这一功能。 首先,让我们理解什么是...

    RCP,RCP开发

    4. **多语言支持**:RCP支持国际化,方便全球用户使用。 5. **强大的API**:RCP提供了丰富的API,方便开发者进行界面设计和事件处理。 **OSGI概述** OSGI(Open Services Gateway Initiative)是一种动态模块系统,...

    eclipse rcp 自学教程

    RCP的核心优势在于其灵活性和可重用性,使得开发者可以用Java编写出与Eclipse一样具有高级特性的桌面应用。 创建Eclipse RCP程序的初始步骤包括: 1. 新建一个插件项目:在Eclipse中选择“新建” -&gt; “项目” -&gt; ...

    eclipse rcp 开发实例 (源码下载)

    前一段时间学习eclipse rcp开发写的一个学习用的工程。涉及了我当时学到的一些方面。 当时想找一个可以用来学习的简单的源代码真难,有的都是复杂的。 这里提供一个简单的工程。...右键、菜单、双击等事件

    rcp.zip_DEMO_RCP dialog_java rcp_rcp

    在Java RCP中,对话框(Dialog)是用来与用户交互的重要组件,它可以弹出一个窗口来获取用户的输入或显示一些信息。对话框通常分为标准对话框(如打开/保存文件对话框)和自定义对话框。在这个示例中,"demo_rcp_...

    使用Eclipse RCP进行桌面程序开发

    ### 使用Eclipse RCP进行桌面程序开发:详细指南 #### 一、Eclipse RCP简介与快速起步 **Eclipse RCP** (Rich Client Platform) 是一种基于Java的开源框架,用于开发桌面应用程序。自从Eclipse 3.0版本以来,RCP...

    eclipse RCP Plug-in开发自学教程.pdf

    eclipse RCP(Rich Client Platform)是一种基于eclipse的插件式开发平台,允许开发者使用eclipse结构风格设计弹性的可扩展的应用程序。RCP插件式开发方式可以重用eclipse中的方法和编码模式,提高开发效率和代码...

Global site tag (gtag.js) - Google Analytics