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

RCP 开发中去掉系统默认的菜单项和工具项

 
阅读更多

 

//隐藏掉系统中的默认的菜单和工具项

public static void hideSystemMenu() {
  IWorkbenchPage page = PlatformUI.getWorkbench().getActiveWorkbenchWindow().getActivePage();
  page.hideActionSet("org.eclipse.ui.WorkingSetActionSet");
  page.hideActionSet("org.eclipse.ui.edit.text.actionSet.annotationNavigation");
  page.hideActionSet("org.eclipse.ui.edit.text.actionSet.navigation");
  page.hideActionSet("org.eclipse.search.searchActionSet");
 }

----------------------------------

//把该方法在postWindowOpen()中调用 一下就ok了,如果是多个透视图的情况,在透视图转换后调用一下该方法就ok了

透视图转换的操作:

public static void switchPerspective(String perspectiveID) {;//perspectiveID 是对应的透视图的ID,是自定义的
  IPerspectiveRegistry reg = PlatformUI.getWorkbench().getPerspectiveRegistry();
  IWorkbenchPage page = PlatformUI.getWorkbench().getActiveWorkbenchWindow().getActivePage();
  page.setPerspective(reg.findPerspectiveWithId(perspectiveID));//从新设置透视图,根据透视图ID
 //隐藏到系统的默认菜单项

  hideSystemMenu();
 }

-----------------------------------

其实,隐藏菜单项和工具项也可以通过配置实现,而不是直接像上面硬编码的方式:

对org.eclipse.ui.perspectiveExtensions 透视图扩展点进行扩展:

在perspectiveExtension项下可以选择hiddenMenuItem、hiddenToolBarItem进行相应的隐藏操作。

 

 

 

 

 

 

  1. public void postWindowCreate() {  
  2.         IActionBarConfigurer actionBarConfigurer = getWindowConfigurer()  
  3.                 .getActionBarConfigurer();  
  4.         IContributionItem[] coolItems = actionBarConfigurer.getCoolBarManager()  
  5.                 .getItems();  
  6.         for (int i = 0; i < coolItems.length; i++) {  
  7.             if (coolItems[i] instanceof ToolBarContributionItem) {  
  8.                 ToolBarContributionItem toolbarItem = (ToolBarContributionItem) coolItems[i];  
  9.                 if (toolbarItem.getId().equals(  
  10.                         "org.eclipse.ui.WorkingSetActionSet") || //$NON-NLS-1$  
  11.                         toolbarItem  
  12.                                 .getId()  
  13.                                 .equals(  
  14.                                         "org.eclipse.ui.edit.text.actionSet.annotationNavigation") || //$NON-NLS-1$  
  15.                         toolbarItem  
  16.                                 .getId()  
  17.                                 .equals(  
  18.                                         "org.eclipse.ui.edit.text.actionSet.navigation")) { //$NON-NLS-1$  
  19.                     toolbarItem.getToolBarManager().removeAll();  
  20.                 }  
  21.             }  
  22.         }  
  23.         actionBarConfigurer.getCoolBarManager().update(true);  
  24.     }  

 

 

private static final String[] ACTIONSETID = new String[] { "org.eclipse.ant.ui.actionSet.presentation", //$NON-NLS-1$
         "org.eclipse.debug.ui.breakpointActionSet",//$NON-NLS-1$ 
         "org.eclipse.debug.ui.debugActionSet",//$NON-NLS-1$ 
         "org.eclipse.debug.ui.launchActionSet",//$NON-NLS-1$ 
         "org.eclipse.debug.ui.profileActionSet",//$NON-NLS-1$ 
         "org.eclipse.jdt.ui.actions.GoToPackage",//$NON-NLS-1$ 
         "org.eclipse.jdt.ui.actions.GoToType", //$NON-NLS-1$ 
         "org.eclipse.jdt.ui.actions.OpenExternalJavaDoc",//$NON-NLS-1$ 
         "org.eclipse.jdt.ui.actions.OpenSuperImplementation", //$NON-NLS-1$ 
         "org.eclipse.jdt.ui.actions.CopyQualifiedName",//$NON-NLS-1$ 
         "org.eclipse.jdt.ui.actions.Open", //$NON-NLS-1$ 
         "org.eclipse.jdt.ui.actions.OpenTypeHierarchy", //$NON-NLS-1$ 
         "org.eclipse.jdt.ui.actions.OpenCallHierarchy",//$NON-NLS-1$ 
         "org.eclipse.jdt.ui.JavaElementCreationActionSet",//$NON-NLS-1$ 
         "org.eclipse.jdt.ui.JavaActionSet",//$NON-NLS-1$ 
         "org.eclipse.jdt.ui.A_OpenActionSet",//$NON-NLS-1$ 
         "org.eclipse.jdt.ui.CodingActionSet",//$NON-NLS-1$ 
         "org.eclipse.jdt.ui.SearchActionSet",//$NON-NLS-1$ 
         "org.eclipse.jdt.ui.text.java.actionSet.presentation",//$NON-NLS-1$ 
         "org.eclipse.search.searchActionSet",//$NON-NLS-1$ 
         "org.eclipse.team.ui.actionSet",//$NON-NLS-1$ 
         "org.eclipse.ui.NavigateActionSet", //$NON-NLS-1$ 
         "org.eclipse.ui.edit.text.actionSet.openExternalFile", //$NON-NLS-1$ 
         "org.eclipse.ui.edit.text.actionSet.presentation",//$NON-NLS-1$ 
         "org.eclipse.ui.edit.text.actionSet.annotationNavigation",//$NON-NLS-1$ 
         "org.eclipse.ui.edit.text.actionSet.navigation",//$NON-NLS-1$ 
         "org.eclipse.ui.externaltools.ExternalToolsSet",//$NON-NLS-1$ 
         "org.eclipse.ui.edit.text.actionSet.convertLineDelimitersTo", //$NON-NLS-1$
         "org.eclipse.ui.actionSet.keyBindings",//$NON-NLS-1$ 
         "org.eclipse.ui.actionSet.openFiles",//$NON-NLS-1$ 
         "org.eclipse.ui.WorkingSetActionSet",//$NON-NLS-1$ 
         "org.eclipse.ui.WorkingSetModificationActionSet",//$NON-NLS-1$ 
         "org.eclipse.ui.WorkingSetActionSet.toolbar",//$NON-NLS-1$ 
         "org.eclipse.update.ui.softwareUpdates",//$NON-NLS-1$ 
 };

 /*
  * (non-Javadoc)
  * 
  * @see org.eclipse.ui.application.ActionBarAdvisor#fillCoolBar(org.eclipse.jface.action.ICoolBarManager)
  */
 protected void fillCoolBar(ICoolBarManager coolBar) {
     IToolBarManager toolbar = new ToolBarManager(SWT.FLAT | SWT.RIGHT);

     coolBar.add(new ToolBarContributionItem(toolbar, "save")); //$NON-NLS-1$
    

     // toolbar = new ToolBarManager(SWT.FLAT | SWT.RIGHT);
     // coolBar.add(new ToolBarContributionItem(toolbar, "ads")); //$NON-NLS-1$
     // AnnouncementContributionItem announcementItem = new AnnouncementContributionItem(Messages
     // .getString("ApplicationActionBarAdvisor.message"));
     // toolbar.add(announcementItem); //$NON-NLS-1$

     ActionSetRegistry reg = WorkbenchPlugin.getDefault().getActionSetRegistry();
     IActionSetDescriptor[] actionSets = reg.getActionSets();
     List list = Arrays.asList(ACTIONSETID);
     for (int i = 0; i < actionSets.length; i++) {
         if (list.contains(actionSets[i].getId())) {
             removeAction(reg, actionSets[i]);
         }
     }
 }

 private void removeAction(final ActionSetRegistry reg, final IActionSetDescriptor actionSet) {
     IExtension ext = actionSet.getConfigurationElement().getDeclaringExtension();
     reg.removeExtension(ext, new Object[] { actionSet });
 }

 

     具体使用方法如下:

1、(移除wizard中的General// 移除文件菜单下导入功能中自带的General

              AbstractExtensionWizardRegistry importWizardRegistry = (AbstractExtensionWizardRegistry) WorkbenchPlugin

                 .getDefault().getImportWizardRegistry();

              IWizardCategory[] categories = wizardRegistry.getRootCategory().getCategories();

              for (int i = 0; i < categories.length; i++){

                     if(categories[i].getId().equals("org.eclipse.ui.Basic")){

                            IWizardDescriptor[] wizard = categories[i].getWizards();

                            IExtensionRegistry registry = Platform.getExtensionRegistry();

                            IExtensionPoint point = registry.getExtensionPoint("org.eclipse.ui.importWizards");

                            IExtension[] extensions = point.getExtensions();

                            for (int j = 0; j < wizard.length; j++){

                                   wizardRegistry.removeExtension(extensions[i],

                                      new Object[] {wizard[j] });

                            }

                     }

              }

 

2、(移除wizard中的General// 移除文件菜单下导出功能中自带的General

              AbstractExtensionWizardRegistry exportWizardRegistry = (AbstractExtensionWizardRegistry) WorkbenchPlugin

                 .getDefault().getExportWizardRegistry();

              IWizardCategory[] categories = wizardRegistry.getRootCategory().getCategories();

              for (int i = 0; i < categories.length; i++){

                     if(categories[i].getId().equals("org.eclipse.ui.Basic")){

                            IWizardDescriptor[] wizard = categories[i].getWizards();

                            IExtensionRegistry registry = Platform.getExtensionRegistry();

                            IExtensionPoint point = registry.getExtensionPoint("org.eclipse.ui.exportWizards");

                            IExtension[] extensions = point.getExtensions();

                            for (int j = 0; j < wizard.length; j++){

                                   wizardRegistry.removeExtension(extensions[i],

                                      new Object[] {wizard[j] });

                            }

                     }

              }

 

3、(移除view中的General// 移除窗口菜单下显示视图中自带的General

              ViewRegistry viewRegistry = (ViewRegistry) WorkbenchPlugin.getDefault().getViewRegistry();

              IViewCategory[] viewCat = viewRegistry.getCategories();

              for (int i = 0; i < viewCat.length; i++){

                     if(viewCat[i].getId().equals("org.eclipse.ui")){

                            IViewDescriptor[] viewDes = viewCat[i].getViews();

                            IExtensionRegistry registry = Platform.getExtensionRegistry();

                            IExtensionPoint point = registry.getExtensionPoint("org.eclipse.ui.views");

                            IExtension[] extensions = point.getExtensions();

                            for (int j = 0; j < viewDes.length; j++){

                                   if(!viewDes[j].getId().equals("org.eclipse.ui.console.ConsoleView")){

                                          viewRegistry.removeExtension(extensions[i],

                                             new Object[] {viewDes[j] });

                                   }

 

                            }

                     }

              }

4、(移除ActionSet中的General

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] });
}

 

分享到:
评论

相关推荐

    rcp 开发档案管理系统

    rcp(Rich Client Platform)是一种基于Eclipse框架的客户端应用程序开发技术,它允许开发者创建功能丰富的桌面应用,同时保持与现有系统和服务的集成。本档案管理系统就是利用rcp技术构建的,旨在提供一个高效、...

    RCP 菜单与工具栏小结

    在RCP中,菜单和工具栏主要通过贡献系统(Contribution System)来实现。贡献系统允许不同的插件贡献自己的菜单项或工具栏按钮到主应用界面,从而实现了模块化和可扩展性。 #### 菜单和工具栏的定义 菜单和工具栏...

    RCP系统开发

    - **菜单和工具栏定制**:通过定义菜单项和工具栏按钮,提供直观的用户交互界面。 - **主界面透视图和视图**:透视图是RCP应用程序的主要布局,包含多个视图,用于展示数据或执行特定功能。 - **系统托盘和定时提示*...

    RCP,RCP开发

    1. **环境搭建**:安装Eclipse IDE,并配置RCP和OSGI相关的开发工具。 2. **插件创建**:使用Eclipse的插件向导创建新的OSGI Bundle,定义其提供的服务和依赖。 3. **UI设计**:使用SWT(Standard Widget Toolkit)...

    eclipse rcp 开发基础教程

    6. **Command Framework**:Eclipse RCP的命令框架允许开发者定义、分发和执行应用程序中的命令,包括菜单项、工具栏按钮等。 7. **Model Data Binding**:Eclipse RCP支持数据绑定,自动同步模型数据与UI组件的...

    eclipse rcp应用系统开发方法与实战源代码.zip

    在"eclipse rcp应用系统开发方法与实战源代码.zip"中,我们可以学习到以下关键知识点: 1. **Eclipse RCP架构**:理解Eclipse RCP的基础架构非常重要,包括插件(Plugins)、工作台(Workbench)、视图(Views)、...

    Eclipse RCP开发教程

    Actions 的用法(菜单和工具栏)** 4.1. 概述 在 RCP 应用中,Actions 是实现用户交互的核心,它们可以绑定到菜单、工具栏或快捷键上。Actions 可以是简单的命令,如打开、保存,也可以是复杂的业务逻辑。 4.2. ...

    Eclipse RCP 应用系统开发方法与实战 源代码

    在"第7章.rar"中,可能包含如何定义和定制菜单、子菜单、快捷键和工具栏按钮的代码,以提高用户体验。 5. **命令和服务(Commands and Services)** Eclipse RCP的命令模型使得功能的实现与UI解耦,增强了可复用性...

    ECLIPSE+RCP应用系统开发方法与实战(PDF 高岗著)

    《ECLIPSE+RCP应用系统开发方法与实战》这本书是高岗先生关于使用Eclipse RCP(Rich Client Platform)进行应用系统开发的一本实战指南。Eclipse RCP是Eclipse IDE的一部分,它提供了一个框架,使得开发者可以构建...

    rcp 开发自学教程

    在IT行业中,RCP(Rich Client Platform)是一种基于Java的开发框架,由Eclipse项目提供,用于构建功能丰富的桌面应用程序。本教程“rcp开发自学教程”旨在帮助初学者掌握如何利用Eclipse RCP进行软件开发,特别是与...

    eclipse RCP开发一个简单的MYSQL客户端工具介绍

    本篇文章将详细介绍如何利用Eclipse RCP开发一个简单的MySQL客户端工具,这对于想要深入理解Eclipse RCP框架以及插件开发的开发者来说是非常有帮助的。 首先,我们需要了解Eclipse RCP的基础。Eclipse RCP的核心...

    plugin2_RCP菜单_teamcenter_

    在本话题中,我们将深入探讨"plugin2_RCP菜单_teamcenter_"所涉及的核心知识点,以及如何通过`plugin.xml`配置文件来开发和定制RCP的菜单和工具栏。 1. **RCP(Rich Client Platform)**:RCP是Eclipse框架的一部分...

    Eclipse的RCP开发的入门教程

    "使用Eclipse RCP进行桌面程序开发(二):菜单、工具栏和对话框 .doc"则专注于用户界面(UI)元素的创建和管理,包括如何定义菜单、工具栏,以及创建自定义对话框。这些组件是用户与应用程序交互的关键部分,开发者...

    RCP开发入门-PDF.7z

    6. **命令(Command)与快捷键(Key Binding)**:Eclipse RCP使用命令体系来封装应用行为,允许动态绑定到菜单、工具栏或快捷键,实现功能的统一管理。 7. **工作流(Workflow)**:RCP支持复杂的用户交互流程,如...

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

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

    Eclipse RCP应用系统开发方法与实战

    Eclipse Rich Client Platform...通过理解其组件模型,掌握开发流程,以及运用实战技巧和最佳实践,开发者可以高效地开发出高质量的Eclipse RCP应用系统。在实践中,不断学习和积累经验,才能真正驾驭这个强大的平台。

    eclipse 3.6 rcp 开发

    - **XML贡献**: 在plugin.xml中定义扩展点,通过XML贡献菜单项和工具栏。 - **示例**: ```xml &lt;label&gt;Action Label ``` **3.4 添加全局快捷键** - **绑定机制**: - Command + Handler + Binding: ...

    RCP 开发自学教程

    - **Eclipse RCP (Rich Client Platform)**: 是一款强大的开源框架,用于开发桌面应用,它提供了丰富的组件和工具,使得开发者能够轻松地构建出功能完备且界面友好的应用。 **1.2 ECLIPSERCP 建设风格——插件,...

    eclipse RCP开发一个简单的MYSQL客户端工具介绍_

    在这个特定的项目中,我们看到的是一个使用Eclipse RCP开发的简单MySQL客户端工具的介绍。这个工具可能是为了方便用户在Eclipse环境中直接管理和操作MySQL数据库。 在描述中提到的“右键打不开数据库表”的问题,...

Global site tag (gtag.js) - Google Analytics