- 浏览: 297403 次
- 性别:
- 来自: 广州
文章分类
最新评论
-
M大米饭:
19774279 写道xj1990129 写道PackageF ...
Eclipse插件开发之获得当前项目 -
zhongmin2012:
AST抽象的java语法树 -
wd3389:
好可惜,你写的文章很有帮助,谢谢!
关于博客更新 -
zxjlwt:
http://surenpi.com/2015/07/13/e ...
eclipse扩展点清单 -
zxjlwt:
学习了。http://surenpi.com
Console 控制台扩展(一)
1.在RCP应用中,我们或多或少会依赖一些eclipse官方或第三方的插件,而这些插件或者它们依赖的插件很有可能有自己的UI。这样就会造成在某些位置会出现一些不该出现的组件,为了删除这些组件,我们通常会这样做:
getWindowConfigurer().getActionBarConfigurer().getCoolBarManager().removeAll(); getWindowConfigurer().getActionBarConfigurer().getCoolBarManager().update(true); getWindowConfigurer().getActionBarConfigurer().getMenuManager().removeAll(); getWindowConfigurer().getActionBarConfigurer().getMenuManager().update(true);在GsbpWorkbenchWindowAdvisor类中的postWindowOpen方法里面对菜单或者工具栏进行删除,这样做比较麻烦的是,我们通常不是希望删除所有。
2.无意中在网上发现了这样一个思路,就是删除某些UI扩展点的扩展,这样也可以把不该出现的组件删掉。本人比较赞同这种方式,感觉删除扩展点会删除整块UI而不是某个菜单,这样就不容易漏掉,包括像向导,view,Editor,透视图等都可以移除。如果有必要,还可以通过删除扩展点的方式删除不必要的功能。
虽然网上提供了这种思路,但是具体的实现并不详细,所有自己写了一个类似删除的工具类,此类只提供了删除,是因为增加一般都是通过直接扩展的方式实现的。
public class ExtensionUtil { public static final String Registry_Type_Perspective = "Perspective"; public static final String Registry_Type_ActionSet = "ActionSet"; public static final String Registry_Type_Editor = "Editor"; public static final String Registry_Type_ExportWizard = "ExportWizard"; public static final String Registry_Type_ImportWizard = "ImportWizard"; public static final String Registry_Type_NewWizard = "NewWizard"; public static final String Registry_Type_View = "View"; /** * 暂时没有必要实现 */ public static final String Registry_Type_Theme = "Theme"; public static final String Registry_Type_WorkingSet = "WorkingSet"; public static final String Registry_Type_Intro = "Intro"; /** * 删除ActionSet扩展,根据其id * * @param id * @return */ public static boolean removeActionSetRegistrys(List<String> list) { ActionSetRegistry registry = WorkbenchPlugin.getDefault() .getActionSetRegistry(); IActionSetDescriptor[] descriptors = registry.getActionSets(); for (IActionSetDescriptor descriptor : descriptors) { if (StringUtil.existInList(list, descriptor.getId())) { IExtension extension = descriptor.getConfigurationElement() .getDeclaringExtension(); registry.removeExtension(extension, new Object[] { descriptor }); list.remove(descriptor.getId()); } } return true; } /** * 删除View扩展,根据其id * * @param id * @return */ public static boolean removeViewRegistrys(List<String> list) { ViewRegistry registry = (ViewRegistry) WorkbenchPlugin.getDefault() .getViewRegistry(); IViewDescriptor[] descriptors = registry.getViews(); for (IViewDescriptor descriptor : descriptors) { ViewDescriptor vDescriptor = (ViewDescriptor) descriptor; if (StringUtil.existInList(list, vDescriptor.getId())) { IExtension extension = vDescriptor.getConfigurationElement() .getDeclaringExtension(); registry.removeExtension(extension, new Object[] { descriptor }); } } return true; } /** * 删除Perspective扩展,根据其id * * @param id * @return */ public static boolean removePerspectiveRegistrys(List<String> list) { PerspectiveRegistry registry = (PerspectiveRegistry) WorkbenchPlugin .getDefault().getPerspectiveRegistry(); IPerspectiveDescriptor[] descriptors = registry.getPerspectives();// PerspectiveDescriptor for (IPerspectiveDescriptor descriptor : descriptors) { PerspectiveDescriptor pDescriptor = (PerspectiveDescriptor) descriptor; if (StringUtil.existInList(list, pDescriptor.getId())) { IExtension extension = pDescriptor.getConfigElement() .getDeclaringExtension(); registry.removeExtension(extension, new Object[] { descriptor }); } } return true; } /** * 删除Editor扩展,根据其list中的id * * @param id * @return */ public static boolean removeEditorRegistrys(List<String> list)//String id { EditorRegistry registry = (EditorRegistry)WorkbenchPlugin.getDefault().getEditorRegistry(); IEditorDescriptor[] descriptors = registry.getSortedEditorsFromPlugins(); for(IEditorDescriptor descriptor: descriptors){ EditorDescriptor eDescriptor = (EditorDescriptor)descriptor; if (StringUtil.existInList(list, eDescriptor.getId())) { IExtension extension = eDescriptor.getConfigurationElement().getDeclaringExtension(); registry.removeExtension(extension, new Object[] { descriptor }); } } return true; } /** * 删除ImportWizard扩展,根据其id * * @param id * @return */ public static boolean removeWizardRegistrys(String type,List<String> list)// String id { WorkbenchPlugin wPlugin = WorkbenchPlugin.getDefault(); IWizardRegistry registry = null; if (Registry_Type_ExportWizard.equals(type)) { registry = wPlugin.getExportWizardRegistry(); } else if (Registry_Type_ImportWizard.equals(type)) { registry = wPlugin.getImportWizardRegistry(); } else if (Registry_Type_NewWizard.equals(type)) { registry = wPlugin.getNewWizardRegistry(); } if (wPlugin == null) { return false; } IWizardCategory root = registry.getRootCategory(); segmentRemoveWizardRegistrys(registry, root,list); return true; } private static void segmentRemoveWizardRegistrys( IWizardRegistry registry, IWizardCategory root,List<String> list) { IWizardDescriptor[] descriptors = root.getWizards(); for (IWizardDescriptor descriptor : descriptors) { if (StringUtil.existInList(list, descriptor.getId())) { WorkbenchWizardElement wizard = (WorkbenchWizardElement) descriptor; IExtension extension = wizard.getConfigurationElement() .getDeclaringExtension(); if (registry instanceof ImportWizardRegistry) { ((ImportWizardRegistry) registry).removeExtension(extension, new Object[] { descriptor }); } else if (registry instanceof ExportWizardRegistry) { ((ExportWizardRegistry) registry).removeExtension(extension, new Object[] { descriptor }); } else if (registry instanceof NewWizardRegistry) { ((NewWizardRegistry) registry).removeExtension(extension, new Object[] { descriptor }); } } } IWizardCategory[] categorys = root.getCategories(); for (IWizardCategory category : categorys) { segmentRemoveWizardRegistrys(registry, category,list); } } }
发表评论
-
关于博客更新
2012-12-10 23:52 955由于不再从事IDE的开发,以后这个博客不会继续更新了,希望上面 ... -
给GEF拖放功能
2012-03-27 13:08 1109本文来自刘刚的博客 我们知道SWT支持Native的拖 ... -
Eclipse插件开发之获得当前项目
2012-03-20 22:05 7821在进行eclipse插件开发的时候,我们经常需要知道当前选中的 ... -
获取当前活动的编辑器
2012-05-14 01:12 1262最近在写编辑器的时候,发现出现一个问题,很多东西焦点在编辑器上 ... -
Eclipse中UTF-8字符集配置
2012-02-02 16:08 1508如果要使插件开发应用能有更好的国际化支持,能够最大程度的支持中 ... -
IExtensionPoint和IExtension
2011-12-09 17:11 1671eclipse的核心框架是OSGi,在这个基础之上发展出ecl ... -
eclipse开源的一些项目的介绍
2011-11-15 16:34 34281.M2T:模型生成文本 JET:生成代码的工具,根本模型定 ... -
IDE相关有价值的链接
2011-11-09 15:01 949Eclipse 程序界面美化技术: http:/ ... -
Eclipse的开源应用的详细介绍
2011-11-09 13:33 1329Eclipse 生态系统非常大,有时候甚至达到了恐怖的地步 ... -
关于IFigure相关的文章的链接的收集
2011-11-07 09:18 959序言: http://www.4ucode.com/Study ... -
扩展点中的表达式总结
2011-10-10 14:23 1370本文来自:http://www.ceclipse.org/re ... -
自定义 RCP 编辑器和视图标题菜单关闭操作
2011-09-30 15:07 1486编辑器和视图标题的关闭操作特指标题栏 最右方的关闭按钮操 ... -
RCP View右键弹出菜单的使用
2011-09-30 15:02 1552在RCP里,Viewer可以拥有自己的右键弹出菜单,Ecl ... -
自定义 RCP 编辑器和视图标题菜单
2011-09-30 14:24 1800编辑器和视图标题中有许多默认的菜单,这些菜单不是由 IEdit ... -
Eclipse中类型扩展机制分析
2011-07-29 16:03 28931.标准的适配器模式 适 ... -
Eclipse RCP 中的常用小技巧
2011-07-25 14:56 36671.实现窗口的透明功能 通过函数Shell.setAlpha ... -
XML解析(一)
2011-07-20 14:43 503在eclipse中很多时候都需要对XML文件进行解析,解析xm ... -
在RCP中使用package explorer视图
2011-07-19 17:14 1721在workbenchadvisor中的initialize方法 ... -
eclipse中扩展点的添加和删除
2011-07-19 16:48 1306ExtensionTracker是IExtensionTra ... -
eclipse扩展点清单
2011-07-19 14:31 1807Platform runtime org.ecl ...
相关推荐
Teamcenter二次开发培训教程(RCP,ITK).pdf
teamcenter基于eclipse RCP二次开发的环境配置,需安装teamcenter和eclipse
如何在Eclipse进行设置后可以对TeamCenter2007二次开发
二个简单的RCP入门例子程序和一个进阶例子程序设计
最近抽些时间,更新到eclipse3.6上来,既作为为广大Eclipser入门plugin/RCP开发的一个方便之门,也是对自己近年来学习的一个总结吧。 每一章都会单独提取出来,并尽可能的独立于其他章节,更新中的源代码工程也会...
eclipse plug-in/rcp 开发方法详解第二部分
1.3 RCP与PLUGIN ................................................................................................................................ 9 2 创建第一个RCP程序 ....................................
Eclipse从入门到精通第二版六章 RCP相关章节 清晰版 未加密
Teamcenter软件RCP端一、二级主菜单开发,文件菜单下的二级菜单开发,代码为plugin.xml的配置。
内含视频教程,教你通过在绘图软件中如何加载点云数据,然后实现在绘图软件中,进行现代建筑或者历史建筑绘图。
学习SWT,RCP的笔记.doc
先看一下成果:图一、图二:带有菜单和工具条的RCP程序图三:工具栏上的按钮的提示文本图四:点击菜单项或者工具栏按钮后,弹出一个简单的对话框。这里需要说明一点,为什么要在讲菜单和工具栏的时候一起讲对话框,...
Eclipse+RCP深入浅出第2版,是我之前上传的英文版的翻译版本,本文档为word文档,内容是从原书的第二部分开始,即从第三章到第十四章,全文完整介绍了如何开发一个完整的rcp程序。欢迎下载
手把手教你怎么发布你的eclipseRCP产品。
陈刚老师《Eclipse RCP 系统开发与实战》全书1~12章pdf文档,很经典。但扫描的不是很清晰,看起来不爽,准备去买书,希望陈刚老师可以出第二版,第一版里的有些应用已经被eclipse淘汰了。
基于这项工作的第二次演讲将在。 致谢 非常感谢Simon Templer出色的。 请注意David Akehurst在p2和Gradle上的工作(有关Powerpoint的详细信息)。 安德烈·希洛夫斯基(Andrey Hihlovskiy)出色的和库对于试图使...
评估了以下参数:通过血流介导的扩张(FMD)测量的内皮功能,通过脉搏波速度(PWV)测量的颈股,通过国际肌炎评估和临床研究组(IMACS)设置得分的疾病状态,通气性厌氧三倍(VAT) ),呼吸补偿点(RCP),最大...
ECLIPSE从入门到精通最新高清版本,第二版!这本书找了好久,终于找到了非常优秀的资源,是学习swt、jface、rcp的优秀辅导书!
本书的主要内容是介绍Eclipse插件开发的相关知识和技巧,包括Eclipse的系统结构、SWT/JFace技术、插件开发方法、RCP开发方法以及其他一些相关的技术专题。本书覆盖了Eclipse平台技术的核心领域,是目前市场上讲述...
第二次rs = 0.592,P <0.05)。 MPV与体积呈正相关(rs = 0.582,P <0.05)。 持续时间疾病与第二个MPV呈负相关(rs = -0.399,P <0.05),而扩展的残疾状态量表(EDSS)与体积变化呈负相关(rs = -0.745,...