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

自定义 RCP 编辑器和视图标题菜单

    博客分类:
  • RCP
阅读更多

编辑器和视图标题中有许多默认的菜单,这些菜单不是由 IEditorPart 或者 IViewPart 控制的,而是通过 AbstracPresentationFactory 来初始化和进行处理的。 Eclipse 提供一个默认的实现—— WorkbenchPresentationFactory , 核心代码如下:

public StackPresentation createEditorPresentation(Composite parent,
			IStackPresentationSite site) {
		DefaultTabFolder folder = new DefaultTabFolder(parent,
				editorTabPosition | SWT.BORDER, site
						.supportsState(IStackPresentationSite.STATE_MINIMIZED),
				site.supportsState(IStackPresentationSite.STATE_MAXIMIZED));

		/*
		 * 
		 * Set the minimum characters to display, if the preference is something
		 * 
		 * other than the default. This is mainly intended for RCP applications
		 * 
		 * or for expert users (i.e., via the plug-in customization file).
		 */
		final IPreferenceStore store = PlatformUI.getPreferenceStore();
		if (store
				.contains(IWorkbenchPreferenceConstants.EDITOR_MINIMUM_CHARACTERS)) {
			final int minimumCharacters = store
					.getInt(IWorkbenchPreferenceConstants.EDITOR_MINIMUM_CHARACTERS);
			if (minimumCharacters >= 0) {
				folder.setMinimumCharacters(minimumCharacters);
			}
		}
		PresentablePartFolder partFolder = new PresentablePartFolder(folder);
		TabbedStackPresentation result = new TabbedStackPresentation(site,
				partFolder, new StandardEditorSystemMenu(site));
		DefaultThemeListener themeListener = new DefaultThemeListener(folder,
				result.getTheme());
		result.getTheme().addListener(themeListener);
		new DefaultMultiTabListener(result.getApiPreferences(),
				IWorkbenchPreferenceConstants.SHOW_MULTIPLE_EDITOR_TABS, folder);
		new DefaultSimpleTabListener(result.getApiPreferences(),
				IWorkbenchPreferenceConstants.SHOW_TRADITIONAL_STYLE_TABS,
				folder);
		return result;
	}

 这个方法是用来给编辑器添加标题菜单的,默认的实现为 StandardEditorSystemMenu , 跟踪代码可以发现这个类继承自 StandardViewSystemMenu , 不同的地方是多添加了三个菜单项 CloseOthers CloseAll OpenAgain 。 知道这些,如何去实现自己的编辑器标题菜单就很容易了。 StandardEditorSystemMenu 的 关键代码:

public StandardEditorSystemMenu(IStackPresentationSite site) {
		super(site);
		closeOthers = new SystemMenuCloseOthers(site);
		closeAll = new SystemMenuCloseAll(site);
		openAgain = ActionFactory.NEW_EDITOR.create
		(PlatformUI.getWorkbench().getActiveWorkbenchWindow());
		menuManager.add(closeOthers);
     	        menuManager.add(closeAll);
		menuManager.add(new Separator());
		menuManager.add(openAgain);
}

 实现了自己的 PresentationFactory 以 后,让它生效还必须添加一个 Extension —— org.eclipse.ui.presentationFactories ,语法很简单:

<extension

         point="org.eclipse.ui.presentationFactories">

         <factory 

           class="test.PresentationFactory" 

           id="test.PresentationFactory" 

           name="My Presentation"/> 

</extension>

然后在 plugin_customization.ini 文 件中指定要使用的 presentationFactory org.eclipse.ui/presentationFactoryId=test.PresentationFactory

这样 RCP 就 会使用自定义的 PresentationFactory 中的标题菜单 了。

分享到:
评论

相关推荐

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

    透视图是Eclipse RCP中的一个重要概念,它定义了工作台窗口中各视图和编辑器的布局。默认情况下,Eclipse RCP提供了标准的透视图切换方式,但开发者可以根据需求进行自定义。下面我们将逐步解析这个过程: 1. **...

    rcp editor实例的项目代码

    4. **菜单和工具栏**:Eclipse RCP允许自定义菜单和工具栏,这些可以通过`Action`类实现。你可以创建`MenuManager`和`ToolBarManager`来管理这些动作,并在编辑器的上下文中添加它们。 5. **事件处理**:RCP编辑器...

    plugin2_RCP菜单_teamcenter_

    `plugin.xml`配置文件是Eclipse插件的核心,它包含了插件的元数据、视图、编辑器、命令、快捷键、菜单和工具栏的定义。 3. **plugin.xml配置**:在`plugin.xml`文件中,开发者可以使用XML语法来声明菜单和工具栏。...

    RCP与GEF课件,介绍RCP和GEF各组成部分和工作原理

    2. **Perspective**:透视图定义了工作台的布局和可见性,可以根据用户的任务或工作流来组织和显示不同的视图和编辑器。 3. **View**:视图是工作台中的独立组件,它们通常显示特定类型的信息或提供某种功能。例如...

    RCP 产品介绍图片

    图片会展示工作台的布局,包括左右两侧的视图栏,中间的编辑器区域,以及顶部的菜单和工具栏。 3. **视图(Views)**:视图是RCP中显示特定信息或提供操作的组件,例如项目浏览器、任务列表等。图片可能包含不同...

    eclipse rcp经典程序

    Eclipse RCP程序通常由多个组件构成,包括视图(Views)、编辑器(Editors)、透视图(Perspectives)、菜单和工具栏等。"eclipse rcp经典程序"这个资源很可能包含了完整的示例代码,帮助开发者了解并实践这些关键...

    rcp perspective

    透视图是Eclipse IDE和基于RCP的应用程序中的一个重要组成部分,它定义了工作台窗口中显示的视图、编辑器和其他组件的布局。在RCP开发中,透视图允许用户根据他们的工作需求定制和组织界面。 在描述中提到的博文...

    RCP入门 View Editor

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

    EclipseRcp 例子程序

    2. **工作台(Workbench)**:工作台是Eclipse RCP应用程序的中心,负责管理窗口、视图、编辑器等元素。开发者可以自定义工作台布局,例如添加新的视图或编辑器。 3. **视图(View)**:视图是用户界面中显示特定...

    RCP程序设计教程打包

    - **自定义视图和编辑器**:根据需求创建具有特定功能的视图和编辑器,例如,支持拖放操作、图表展示等。 4. **学习资源** - **"RCP程序设计.pdf"**:可能包含对RCP设计原理的深入解释,以及如何创建和配置RCP...

    RCP 中文文档

    3. **定义视图和编辑器**:根据应用需求,开发自定义视图和编辑器,这通常涉及编写SWT(Standard Widget Toolkit)和JFace代码。 4. **构建菜单和工具栏**:通过编程或使用图形化工具设计应用的菜单和工具栏,将...

    Eclipse RCP开发详解

    Eclipse RCP对象(如视图和编辑器)都有自己的生命周期,它们会经历创建、初始化、激活、停用和销毁等阶段。你需要正确处理这些生命周期事件,以确保插件的稳定性和性能。 部署方面,Eclipse RCP应用通常打包为一个...

    Eclipse RCP应用系统开发方法与实战(第四章)

    3. 定义透视图:根据需求,我们可以自定义透视图,将视图和编辑器组织成合适的布局。 4. 实现命令:Eclipse RCP的命令模型允许我们定义和绑定用户操作,比如菜单项和工具栏按钮,这样可以统一处理用户交互。 5. 集成...

    Eclipse RCP开发教程

    开发者可以自定义视图和编辑器,实现特定的用户界面和功能。 **6. 对话框(Dialogs)** 对话框用于向用户提供交互式界面,收集用户输入或显示警告信息。RCP 提供了多种预定义的对话框,同时支持自定义对话框的创建...

    RCP 资料

    在RCP中,开发者可以创建自定义的工作台视图、编辑器、透视图,以及通过插件系统进行功能扩展。Eclipse RCP的核心设计理念是“模型-视图-控制器”(MVC)模式,这使得应用程序的结构清晰,易于维护和扩展。 **主要...

    RCP 界面布局实例

    其次,透视图(Perspective)是RCP界面的另一个核心概念,它定义了不同视图和编辑器的组合,以满足特定任务的需求。例如,在CRM应用中,可能会有“销售”透视图,侧重于销售数据和机会管理;还有“客户服务”透视图...

    eclipse rcp demo

    3. **菜单和工具栏的创建**:Eclipse RCP允许开发者定义自定义菜单和工具栏项,这在示例中会被详细解释。 4. **事件和服务**:如何利用Eclipse RCP的事件机制和服务API来实现组件之间的通信。 5. **国际化...

    rcp editor实例的项目代码2

    本项目"rcp editor实例的项目代码2"是针对Eclipse插件开发的一个实战案例,旨在帮助开发者了解和掌握如何在Eclipse RCP环境中实现自定义编辑器。 首先,我们需要理解Eclipse插件开发的基本概念。Eclipse是一个开放...

    一个RCP的简单例子

    RCP允许开发者利用Eclipse的强大功能,如插件系统、工作台管理、视图和编辑器,来创建自定义的、模块化的用户界面。在本例子中,我们看到的是一个基于RCP实现的**客户关系管理(CRM)**系统。 CRM系统主要用于企业...

Global site tag (gtag.js) - Google Analytics