在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
分享到:
相关推荐
同时,可以添加一个右键菜单,当用户点击按钮时弹出。 4. **去除Editor的右键菜单和关闭按钮**: 通过`IWorkbenchWindow`对象,我们可以获取到工作台窗口中的所有编辑器,并移除它们的右键菜单。对于关闭按钮,...
4. **贡献菜单项**:使用`org.eclipse.ui.menus`扩展点,将自定义命令添加到右键菜单中。需要指定命令ID、菜单ID(例如`org.eclipse.ui.navigator.NewMenu`表示Navigator的“新建”菜单)以及菜单位置。 5. **激活和...
此外,还可以通过`menuContribution`元素来指定菜单或工具栏的位置,如主菜单、弹出菜单或工具栏。 4. **Teamcenter中的菜单集成**:在Teamcenter的RCP环境中,菜单和工具栏的定制通常涉及到对Teamcenter API的调用...
创建一个rcp工程,模板使用有一个view的 step2.创建popupMenu step2_1.新建类Action1: step2_2.添加扩展点: 好的step2已经结束了,现在您可以运行一下程序,看看效果. 接下来将要进行的是,只有选中Three时...
RCP弹出日期控件是这种环境中用于用户界面交互的一个重要组件,它提供了一种方便的方式来选择日期,增强了用户体验。 在RCP系统中,弹出式日期控件通常是为了简化用户在日期输入时的操作。这种控件不仅允许用户通过...
通过深入理解RCP的贡献系统和菜单工具栏的实现机制,开发者可以构建出既强大又易于使用的桌面应用程序。在实际开发过程中,应充分利用RCP提供的框架和工具,同时结合具体的应用需求进行定制,以达到最佳的用户界面...
6. **命令(Command)与菜单(Menu)**:Eclipse RCP的命令系统允许动态创建和绑定菜单项,实现了行为与表示的分离。 7. **服务(Service)**:服务是一种共享的、可插入的组件,提供特定的功能,如文件I/O或网络...
RCP允许开发者专注于业务逻辑的实现,而不必过于关注用户界面的设计,因为RCP已经提供了一系列预定义的界面元素,如菜单、工具栏、视图(View)和编辑器(Editor)。 **1. 菜单栏(Menu Bar)和工具栏(Tool Bar)*...
本示例是一个Eclipse RCP的实战演示,展示了如何在Eclipse RCP应用中实现View和Editor,以及可能涉及图表的展示。 在Eclipse RCP中,View和Editor是两种主要的用户界面组件。View通常用于显示辅助信息或工具,而...
在Eclipse RCP中,我们可以使用`IMenuService`来管理这些菜单。 菜单项的创建通常在`ActionBarAdvisor`类中完成,它是负责初始化和配置应用动作栏的。在`fillMenuBar`方法中,我们会定义`MenuBarManager`,并添加...
在操作和维护方面,RCP-1500系列遥控面板提供了一个详细的菜单系统,包括菜单操作、状态画面、着色菜单、文件菜单、维护菜单和配置菜单等。用户可以通过这些菜单来进行高级的配置和设置,以确保设备的性能达到最佳。...
本文将深入探讨“plugin1_RCP菜单_teamcenter_”这一主题,重点讲解如何在Teamcenter的RCP(Rich Client Platform)环境中开发一级和二级主菜单,并通过配置plugin.xml文件来实现这一功能。 首先,让我们理解什么是...
4. **多语言支持**:RCP支持国际化,方便全球用户使用。 5. **强大的API**:RCP提供了丰富的API,方便开发者进行界面设计和事件处理。 **OSGI概述** OSGI(Open Services Gateway Initiative)是一种动态模块系统,...
RCP的核心优势在于其灵活性和可重用性,使得开发者可以用Java编写出与Eclipse一样具有高级特性的桌面应用。 创建Eclipse RCP程序的初始步骤包括: 1. 新建一个插件项目:在Eclipse中选择“新建” -> “项目” -> ...
前一段时间学习eclipse rcp开发写的一个学习用的工程。涉及了我当时学到的一些方面。 当时想找一个可以用来学习的简单的源代码真难,有的都是复杂的。 这里提供一个简单的工程。...右键、菜单、双击等事件
在Java RCP中,对话框(Dialog)是用来与用户交互的重要组件,它可以弹出一个窗口来获取用户的输入或显示一些信息。对话框通常分为标准对话框(如打开/保存文件对话框)和自定义对话框。在这个示例中,"demo_rcp_...
### 使用Eclipse RCP进行桌面程序开发:详细指南 #### 一、Eclipse RCP简介与快速起步 **Eclipse RCP** (Rich Client Platform) 是一种基于Java的开源框架,用于开发桌面应用程序。自从Eclipse 3.0版本以来,RCP...
eclipse RCP(Rich Client Platform)是一种基于eclipse的插件式开发平台,允许开发者使用eclipse结构风格设计弹性的可扩展的应用程序。RCP插件式开发方式可以重用eclipse中的方法和编码模式,提高开发效率和代码...