Eclipse源码分析.doc_第1页
Eclipse源码分析.doc_第2页
Eclipse源码分析.doc_第3页
Eclipse源码分析.doc_第4页
Eclipse源码分析.doc_第5页
免费预览已结束,剩余3页可下载查看

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

ECLIPSE3.4源码分析最近由于工作需要,对Eclipse3.4的源代码进行了一些分析,觉得这是件很有意义的事,希望能与大家交流交流。分析的源码版本为Eclipse3.4官网下载的文件名为“eclipse-sourceBuild-srcIncluded-3.4.2.zip”接下来一步一步开始对Eclipse进行解剖源码包的结构:eclipse-sourceBuild-srcIncluded-3.4.2 features jdtcoresrc plugins 其他的XML文件和instructions.html,还有一个bat这里主要分析下plugins下的一些常见的plugin的源码,以作为对基于Eclipse的插件程序修改的参考。plugins下有很多的Eclipse项目,可以直接导入到Eclipse中,但绝大部分的项目都是生成plugIn.jar的,不能直接执行。当然可以将jar打包后覆盖到原Eclipse中,那么新打开的Eclipse就是我们修改以后的效果了。这里采取更直接的办法。打开org.eclispe.ui.ide.application包,导入这里包下的Eclipse工程,发现这里工程下包含IDEApplication.java、IDEWorkbenchAdvisor.java、IDEWorkbenchWindowAdvisor.java、ResourcePerspective.java,这里表明这是一个可执行的Eclipse插件。运行后显示为基本的Resource透视图,没有其他任何的插件效果。一下就将这个作为修改为的参考界面。这是一个基本的资源透视图任何对它的修改几乎都要通过对内置的Eclipse 的包的修改来实现。比如修改菜单栏,修改视图等等。首先来修改菜单栏。导入org.eclipse.ui.ide包下的工程。这是个Eclipse 的基本的IDE的环境界面的创建主要源文件包括src和extensions两部分。先看看菜单栏是怎么生成的,跟踪一下源码。File-New-Project1)打开ernal.ide包中的WorkbenchActionBuilder.java文件。 fillMenuBar()是创建菜单来的主要方法,其他2个fillActionBars()和fillCoolBar()则分别是刷新菜单项和创建工具栏的主要方法。fillMenuBar()方法中有很多 menuBar.add(createFileMenu() 这种方法,调用了createXXX来创建各自的菜单项。不妨进入createFileMenu()看看,里面又有很多add方法,其中涉及到New的就是newWizardMenu,添加如下语句后New菜单消失。 /* * Modified by LiXP * add newMenu.remove(this.newWizardMenu); */ /newMenu.remove(this.newWizardMenu);2)newWizardMenu是创建New子菜单的关键变量,为NewWizardMenu(包org.eclipse.ui.ide中的extensions下的org.eclipse.ui.actions中)类的实例,类NewWizardMenu又继承自BaseNewWizardMenu(包org.eclipse.ui.workbench中的org.eclipse.ui.actions),所以对New子菜单的修改就比较麻烦了,涉及到对这两个类的修改。NewWizardMenu 中有2个变量,分别为newExampleAction和newProjectAction,注释掉这2个后再次打开application,发现New下面的子菜单项中的Example和Project已经不见了。(注意,注释以后要去掉所有关于这2个变量的引用,包括import都要去掉,否则会报错,不知道为什么)这个类中比较重要的方法是addItems(),它是用来向New子菜单添加菜单项的,有兴趣的可以去修改一下,效果很明显。去掉others菜单项就比较麻烦了,需要修改BaseNewWizardMenu类,注释掉private ActionFactory.IWorkbenchAction showDlgAction;以及相关语句,再次启动发现others没了。接着来修改菜单栏下的某个菜单项的显示文字例:Help - About 改为 Help - About Vire导入org.eclispe.ui.workbench包下的工程打开Eclipse UI下org.eclipse.ui.actions下的ActionFactory.java这个类很重要,为创建菜单项的主要类。修改菜单项的文字就可以通过它来实现。上例中主要修改ABOUT变量,在ABOUT下面的create()中加入 action.setText(&About Vire); /$NON-NLS-1$同时注释掉以前的 action.setText(NLS.bind(WorkbenchMessages.AboutAction_text,productName);再次打开application发现About已经变成About Vire了。或者更改对应的常量定义类,上例中WorkbenchMessages类,注意常量的定义一般包含在properties文件中,这时候需要进到对应的porperties文件进行修改。接下来准备看看Eclipse里面处理事务的Action这个就比较复杂了单是WorkbenchActionBuilder.java就声明了61个常用的Action,这些Actions一般是由ActionFactory或者IDEActionFactory生成的因此重点在ActionFactory和IDEActionFactoryActionFactoryorg.eclipse.ui.workbench Eclipse UI org.eclipse.ui.actions下里面有很多静态类实例供外面调用,比如: public static final ActionFactory ABOUT = new ActionFactory(about) /$NON-NLS-1$ /* * (non-Javadoc) * * see org.eclipse.ui.actions.ActionFactory#create(org.eclipse.ui.IWorkbenchWindow) */ public IWorkbenchAction create(IWorkbenchWindow window) if (window = null) throw new IllegalArgumentException(); WorkbenchCommandAction action = new WorkbenchCommandAction( org.eclipse.ui.help.aboutAction, window); /$NON-NLS-1$ action.setId(getId(); IProduct product = Platform.getProduct(); String productName = null; if (product != null) productName = product.getName(); if (productName = null) productName = ; /$NON-NLS-1$ /* * Modified by */ action.setText(&About Vire); /$NON-NLS-1$ /*action.setText(NLS.bind(WorkbenchMessages.AboutAction_text, productName);*/ action.setToolTipText(NLS.bind( WorkbenchMessages.AboutAction_toolTip, productName); window.getWorkbench().getHelpSystem().setHelp(action, IWorkbenchHelpContextIds.ABOUT_ACTION); return action; ;上面提到的修改菜单项显示文字可用修改这里的代码,但是这个类不仅仅提供了修改显示文字,甚至可以对Action进行改头换面,比如: WorkbenchCommandAction action = new WorkbenchCommandAction( org.eclipse.ui.help.aboutAction, window); /$NON-NLS-1$将这段代码改改,就可以实现自己的About菜单的事件处理了。 WorkbenchCommandAction action = new MyWorkbenchCommandAction(.);/自定义的Action还有一个类IDEActionFactory org.eclipse.ui.ide下 org.eclipse.ui.ide包下这里实际上也是调用了ActionFactoy来生成Action不同的是这里的Action都是用于IDE相关的。有些Action是自定义的,比如public static final ActionFactory BUILD_CLEAN = new ActionFactory( buildClean) /$NON-NLS-1$ /* (non-javadoc) method declared on ActionFactory */ public IWorkbenchAction create(IWorkbenchWindow window) if (window = null) throw new IllegalArgumentException(); IWorkbenchAction action = new BuildCleanAction(window); action.setId(getId(); return action; ;有些Action是基于一类Action的,比如:public static final ActionFactory BOOKMARK = new ActionFactory(bookmark) /$NON-NLS-1$ /* (non-javadoc) method declared on ActionFactory */ public IWorkbenchAction create(IWorkbenchWindow window) if (window = null) throw new IllegalArgumentException(); RetargetAction action = new RetargetAction(getId(), IDEWorkbenchMessages.Workbench_addBoo

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论