`

RCP去掉多余菜单项

    博客分类:
  • Java
阅读更多

   在Eclipse RCP开发中,如果你的dependencies中包含了org.eclipse.ui.ide,在创建菜单栏是你会发现出现了多余的菜单项,例如"Convert Line Delimiters to"和"Last Edit Location"这两个菜单项。如何去掉这些多余的菜单项呢?

可以在你的ApplicationActionBarAdvisor类中添加如下代码(可以在makeActions方法中调用以下代码):

    /*
     * 去掉因为导入依赖包(org.eclipse.ui.ide)而产生的多余的菜单项,一般
     * 情况下包括三个
     */
    @SuppressWarnings("restriction")
    public void removeDuplicateAction()
    {
    	ActionSetRegistry reg = WorkbenchPlugin.getDefault().getActionSetRegistry();
    	IActionSetDescriptor[] actionSets = reg.getActionSets();
    	// removing annoying gotoLastPosition Message.
    	String actionSetId = "org.eclipse.ui.edit.text.actionSet.navigation"; //$NON-NLS-1$
    	for (int i = 0; i <actionSets.length; i++)
    	{
    	    if (!actionSets[i].getId().equals(actionSetId))
    	        continue;
    	        IExtension ext = actionSets[i].getConfigurationElement()
    	            .getDeclaringExtension();
    	        reg.removeExtension(ext, new Object[] { actionSets[i] });
    	}
    	// Removing convert line delimiters menu.
    	actionSetId = "org.eclipse.ui.edit.text.actionSet.convertLineDelimitersTo"; //$NON-NLS-1$
    	for (int i = 0; i <actionSets.length; i++)
    	{
    	    if (!actionSets[i].getId().equals(actionSetId))
    	        continue;
    	    IExtension ext = actionSets[i].getConfigurationElement()
    	            .getDeclaringExtension();
    	   reg.removeExtension(ext, new Object[] { actionSets[i] });
    	}
    	actionSetId = "org.eclipse.ui.actionSet.openFiles";
    	for (int i = 0; i <actionSets.length; i++)
    	{
    	    if (!actionSets[i].getId().equals(actionSetId))
    	        continue;
    	    IExtension ext = actionSets[i].getConfigurationElement()
    	            .getDeclaringExtension();
    	   reg.removeExtension(ext, new Object[] { actionSets[i] });
    	}
    }

  

 

分享到:
评论
1 楼 paradigm 2011-02-17  
谢谢 。。代码写得不够简洁

相关推荐

    plugin2_RCP菜单_teamcenter_

    通过`plugin.xml`文件,开发者可以定义菜单项、子菜单、快捷键和工具栏按钮等,以实现特定的功能。`plugin.xml`配置文件是Eclipse插件的核心,它包含了插件的元数据、视图、编辑器、命令、快捷键、菜单和工具栏的...

    RCP 菜单与工具栏小结

    下面是一个简单的示例,展示如何在RCP应用中创建一个菜单项: ```java IWorkbenchWindow window = PlatformUI.getWorkbench().getActiveWorkbenchWindow(); IMenuService menuService = (IMenuService)window....

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

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

    eclipse rcp 菜单小例子

    在这个“eclipse rcp 菜单小例子”项目中,我们将深入探讨如何在Eclipse RCP应用中创建和配置菜单,以及如何通过`visibleWhen`标签控制菜单项的可见性。 首先,让我们了解Eclipse RCP中的菜单结构。菜单主要分为三...

    RCP,RCP开发

    **RCP(Rich Client Platform)与OSGI详解** **RCP概述** RCP,全称为Rich Client Platform,是由Eclipse基金会开发的一种软件框架,主要用于构建功能丰富的桌面应用程序。RCP提供了一个灵活的基础平台,允许开发者...

    plugin1_RCP菜单_teamcenter_

    在Teamcenter RCP菜单开发中,我们会在plugin.xml文件中声明菜单项、子菜单项以及它们之间的关系。例如,可以使用`&lt;menuContribution&gt;`元素来添加新的菜单,使用`&lt;command&gt;`元素定义命令,然后通过`&lt;menu&gt;`和`...

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

    本教程将详细介绍如何通过`org.eclipse.ui.presentationFactories`扩展点来实现这一目标,以及如何去除Editor的右键菜单和关闭按钮,提升用户体验。 透视图是Eclipse RCP中的一个重要概念,它定义了工作台窗口中各...

    RCP弹出日期控件

    在IT领域,特别是软件开发中,RCP(Rich Client Platform)是一种基于Eclipse框架的应用程序开发模型,它允许开发者创建功能丰富的桌面应用程序。RCP弹出日期控件是这种环境中用于用户界面交互的一个重要组件,它...

    eclipse rcp 自学教程

    1. 创建菜单和工具栏:通过编程或者使用Eclipse的图形化工具(如Perspective Editor和Action Set Editor)来添加菜单项和工具栏按钮。 2. 绑定事件处理:为菜单项和工具栏按钮关联相应的事件处理器,实现功能逻辑。 ...

    RCP程序设计自学RCP的教程

    在RCP应用中,Actions用于创建菜单项和工具栏按钮,是用户界面的重要组成部分。通过定义和管理Actions,你可以为用户提供直观的操作入口,提高应用的可用性。 ##### 2. 通过编码添加 Actions可以通过编程的方式...

    RCP编程入门(doc版)

    Eclipse RCP中的命令系统提供了统一的用户操作接口,如菜单项和工具栏按钮。命令可以绑定到快捷键,以提高用户的工作效率。 **七、国际化和本地化** RCP支持多语言环境,开发者可以为应用添加不同语言的资源包,使...

    rcp收集资料上传

    在RCP菜单中的"Event Listener"模式可能是指如何在RCP应用的菜单系统中添加事件监听器,以便当用户执行特定操作时,如点击菜单项,可以触发相应的逻辑处理,例如数据的收集和上传。 在RCP应用中,事件监听是常见的...

    RCP-1500中文操作手册.pdf

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

    rcp欢迎界面

    RCP欢迎界面设计 RCP(Rich Client Platform)是一种基于Eclipse平台的富客户端应用程序开发架构。它提供了一系列的扩展点和API,允许开发者轻松地构建复杂的桌面应用程序。本文将详细介绍RCP欢迎界面设计的知识点...

    RCP在线升级,RCP在线升级

    RCP(Rich Client Platform)是Eclipse开源框架的一部分,它为构建桌面应用程序提供了一个灵活的平台。RCP在线升级是指在不卸载原有版本的情况下,通过网络更新来安装RCP应用的新版本,以确保用户始终能够使用最新...

    Eclipse Rcp

    RCP应用通常拥有和Eclipse类似的外观与操作体验,例如动态的菜单栏(Menubar)、工具栏(Toolbar)、编辑器(Editor)、视图(View)、工作台窗口(WorkbenchWindow)以及工作区(WorkSpace)等。这些组件共同构成了...

    eclipse rcp经典程序

    开发者可以自定义菜单项和工具栏按钮,绑定到相应的操作。在HelloWorld中,可能有如何添加和配置这些元素的示例。 7. **命令和 Handler**:Eclipse RCP使用命令(Commands)和处理器(Handlers)来实现用户界面的...

    EclipseRcp 例子程序

    6. **命令与快捷键**:Eclipse RCP提供了命令框架,允许自定义用户操作,如菜单项和快捷键。例子程序会展示如何定义、注册和绑定这些命令。 7. **服务(Service)**:Eclipse RCP支持服务导向的架构,通过服务,...

    RCP自学文档

    动作(Actions)是RCP中实现用户交互的关键元素,通常表现为菜单项和工具栏按钮。它们可以触发事件处理,执行特定的操作。 4.2. **通过编码添加** 开发者可以直接在代码中创建和注册动作,将其与菜单项或工具栏...

Global site tag (gtag.js) - Google Analytics